|
12 | 12 | from django.utils import unittest |
13 | 13 |
|
14 | 14 | from .models import (Foo, Bar, Whiz, BigD, BigS, Image, BigInt, Post, |
15 | | - NullBooleanModel, BooleanModel, Document, RenamedField, VerboseNameField, |
16 | | - FksToBooleans) |
| 15 | + NullBooleanModel, BooleanModel, DataModel, Document, RenamedField, |
| 16 | + VerboseNameField, FksToBooleans) |
17 | 17 |
|
18 | 18 | from .imagefield import (ImageFieldTests, ImageFieldTwoDimensionsTests, |
19 | 19 | TwoImageFieldTests, ImageFieldNoDimensionsTests, |
@@ -424,3 +424,25 @@ def test_changed(self): |
424 | 424 | field = d._meta.get_field('myfile') |
425 | 425 | field.save_form_data(d, 'else.txt') |
426 | 426 | self.assertEqual(d.myfile, 'else.txt') |
| 427 | + |
| 428 | + |
| 429 | +class BinaryFieldTests(test.TestCase): |
| 430 | + binary_data = b'\x00\x46\xFE' |
| 431 | + |
| 432 | + def test_set_and_retrieve(self): |
| 433 | + data_set = (self.binary_data, six.memoryview(self.binary_data)) |
| 434 | + for bdata in data_set: |
| 435 | + dm = DataModel(data=bdata) |
| 436 | + dm.save() |
| 437 | + dm = DataModel.objects.get(pk=dm.pk) |
| 438 | + self.assertEqual(bytes(dm.data), bytes(bdata)) |
| 439 | + # Resave (=update) |
| 440 | + dm.save() |
| 441 | + dm = DataModel.objects.get(pk=dm.pk) |
| 442 | + self.assertEqual(bytes(dm.data), bytes(bdata)) |
| 443 | + # Test default value |
| 444 | + self.assertEqual(bytes(dm.short_data), b'\x08') |
| 445 | + |
| 446 | + def test_max_length(self): |
| 447 | + dm = DataModel(short_data=self.binary_data*4) |
| 448 | + self.assertRaises(ValidationError, dm.full_clean) |
0 commit comments