diff options
| author | Claude Paroz <claude@2xlibre.net> | 2012-12-13 22:11:06 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2013-03-02 10:29:02 +0100 |
| commit | 8ee1eddb7e148de89aebde9e68da495633fc1ec9 (patch) | |
| tree | 36b83db0cf15b0be47557449b9ed056646099542 /tests/model_fields | |
| parent | 0f306cad8442f9808e4410f190f434144ff6376a (diff) | |
Add a BinaryField model field
Thanks Michael Jung, Charl Botha and Florian Apolloner for review
and help on the patch.
Diffstat (limited to 'tests/model_fields')
| -rw-r--r-- | tests/model_fields/models.py | 4 | ||||
| -rw-r--r-- | tests/model_fields/tests.py | 26 |
2 files changed, 28 insertions, 2 deletions
diff --git a/tests/model_fields/models.py b/tests/model_fields/models.py index 1d20f44fae..c3b2f7fccb 100644 --- a/tests/model_fields/models.py +++ b/tests/model_fields/models.py @@ -106,6 +106,10 @@ class VerboseNameField(models.Model): class DecimalLessThanOne(models.Model): d = models.DecimalField(max_digits=3, decimal_places=3) +class DataModel(models.Model): + short_data = models.BinaryField(max_length=10, default=b'\x08') + data = models.BinaryField() + ############################################################################### # FileField diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py index 8c596ed4f5..eaf84773e3 100644 --- a/tests/model_fields/tests.py +++ b/tests/model_fields/tests.py @@ -12,8 +12,8 @@ from django.utils import six from django.utils import unittest from .models import (Foo, Bar, Whiz, BigD, BigS, Image, BigInt, Post, - NullBooleanModel, BooleanModel, Document, RenamedField, VerboseNameField, - FksToBooleans) + NullBooleanModel, BooleanModel, DataModel, Document, RenamedField, + VerboseNameField, FksToBooleans) from .imagefield import (ImageFieldTests, ImageFieldTwoDimensionsTests, TwoImageFieldTests, ImageFieldNoDimensionsTests, @@ -424,3 +424,25 @@ class FileFieldTests(unittest.TestCase): field = d._meta.get_field('myfile') field.save_form_data(d, 'else.txt') self.assertEqual(d.myfile, 'else.txt') + + +class BinaryFieldTests(test.TestCase): + binary_data = b'\x00\x46\xFE' + + def test_set_and_retrieve(self): + data_set = (self.binary_data, six.memoryview(self.binary_data)) + for bdata in data_set: + dm = DataModel(data=bdata) + dm.save() + dm = DataModel.objects.get(pk=dm.pk) + self.assertEqual(bytes(dm.data), bytes(bdata)) + # Resave (=update) + dm.save() + dm = DataModel.objects.get(pk=dm.pk) + self.assertEqual(bytes(dm.data), bytes(bdata)) + # Test default value + self.assertEqual(bytes(dm.short_data), b'\x08') + + def test_max_length(self): + dm = DataModel(short_data=self.binary_data*4) + self.assertRaises(ValidationError, dm.full_clean) |
