summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-12-13 22:11:06 +0100
committerClaude Paroz <claude@2xlibre.net>2013-03-02 10:29:02 +0100
commit8ee1eddb7e148de89aebde9e68da495633fc1ec9 (patch)
tree36b83db0cf15b0be47557449b9ed056646099542 /tests
parent0f306cad8442f9808e4410f190f434144ff6376a (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')
-rw-r--r--tests/model_fields/models.py4
-rw-r--r--tests/model_fields/tests.py26
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)