diff options
| author | Karen Tracey <kmtracey@gmail.com> | 2009-12-17 15:10:38 +0000 |
|---|---|---|
| committer | Karen Tracey <kmtracey@gmail.com> | 2009-12-17 15:10:38 +0000 |
| commit | 5bd63663a9754ef783aa21402f534fe6ed45ef57 (patch) | |
| tree | e12689d4bf10f59b135dbb627b1ecb0b9d5a092c /tests/regressiontests | |
| parent | fd4cc65baf7055e7815513756a3d3f6940c1d2ab (diff) | |
Fixed #399: Added big integer field. Thanks to Tomáš Kopeček for persistently maintaining a patch for this.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@11887 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests')
| -rw-r--r-- | tests/regressiontests/introspection/models.py | 1 | ||||
| -rw-r--r-- | tests/regressiontests/introspection/tests.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/model_fields/models.py | 3 | ||||
| -rw-r--r-- | tests/regressiontests/model_fields/tests.py | 31 | ||||
| -rw-r--r-- | tests/regressiontests/serializers_regress/models.py | 3 | ||||
| -rw-r--r-- | tests/regressiontests/serializers_regress/tests.py | 5 |
6 files changed, 43 insertions, 2 deletions
diff --git a/tests/regressiontests/introspection/models.py b/tests/regressiontests/introspection/models.py index 3227067bd8..ef485e3a3c 100644 --- a/tests/regressiontests/introspection/models.py +++ b/tests/regressiontests/introspection/models.py @@ -4,6 +4,7 @@ class Reporter(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) email = models.EmailField() + facebook_user_id = models.BigIntegerField() def __unicode__(self): return u"%s %s" % (self.first_name, self.last_name) diff --git a/tests/regressiontests/introspection/tests.py b/tests/regressiontests/introspection/tests.py index 1454e1e3e5..de6381fc29 100644 --- a/tests/regressiontests/introspection/tests.py +++ b/tests/regressiontests/introspection/tests.py @@ -77,7 +77,7 @@ class IntrospectionTests(TestCase): cursor = connection.cursor() desc = connection.introspection.get_table_description(cursor, Reporter._meta.db_table) self.assertEqual([datatype(r[1], r) for r in desc], - ['IntegerField', 'CharField', 'CharField', 'CharField']) + ['IntegerField', 'CharField', 'CharField', 'CharField', 'BigIntegerField']) # Regression test for #9991 - 'real' types in postgres if settings.DATABASE_ENGINE.startswith('postgresql'): diff --git a/tests/regressiontests/model_fields/models.py b/tests/regressiontests/model_fields/models.py index 81e6c22f09..ab841ce409 100644 --- a/tests/regressiontests/model_fields/models.py +++ b/tests/regressiontests/model_fields/models.py @@ -51,6 +51,9 @@ class BigD(models.Model): class BigS(models.Model): s = models.SlugField(max_length=255) +class BigInt(models.Model): + value = models.BigIntegerField() + null_value = models.BigIntegerField(null = True, blank = True) ############################################################################### # ImageField diff --git a/tests/regressiontests/model_fields/tests.py b/tests/regressiontests/model_fields/tests.py index 7a6fee5a2a..b8d0f7ef0e 100644 --- a/tests/regressiontests/model_fields/tests.py +++ b/tests/regressiontests/model_fields/tests.py @@ -6,7 +6,7 @@ from django import forms from django.db import models from django.core.exceptions import ValidationError -from models import Foo, Bar, Whiz, BigD, BigS, Image +from models import Foo, Bar, Whiz, BigD, BigS, Image, BigInt try: from decimal import Decimal @@ -144,3 +144,32 @@ class SlugFieldTests(django.test.TestCase): bs = BigS.objects.create(s = 'slug'*50) bs = BigS.objects.get(pk=bs.pk) self.assertEqual(bs.s, 'slug'*50) + +class BigIntegerFieldTests(django.test.TestCase): + def test_limits(self): + # Ensure that values that are right at the limits can be saved + # and then retrieved without corruption. + maxval = 9223372036854775807 + minval = -maxval - 1 + BigInt.objects.create(value=maxval) + qs = BigInt.objects.filter(value__gte=maxval) + self.assertEqual(qs.count(), 1) + self.assertEqual(qs[0].value, maxval) + BigInt.objects.create(value=minval) + qs = BigInt.objects.filter(value__lte=minval) + self.assertEqual(qs.count(), 1) + self.assertEqual(qs[0].value, minval) + + def test_types(self): + b = BigInt(value = 0) + self.assertTrue(isinstance(b.value, (int, long))) + b.save() + self.assertTrue(isinstance(b.value, (int, long))) + b = BigInt.objects.all()[0] + self.assertTrue(isinstance(b.value, (int, long))) + + def test_coercing(self): + BigInt.objects.create(value ='10') + b = BigInt.objects.get(value = '10') + self.assertEqual(b.value, 10) + diff --git a/tests/regressiontests/serializers_regress/models.py b/tests/regressiontests/serializers_regress/models.py index 313ed8fc3a..ccd850326d 100644 --- a/tests/regressiontests/serializers_regress/models.py +++ b/tests/regressiontests/serializers_regress/models.py @@ -43,6 +43,9 @@ class FloatData(models.Model): class IntegerData(models.Model): data = models.IntegerField(null=True) +class BigIntegerData(models.Model): + data = models.BigIntegerField(null=True) + # class ImageData(models.Model): # data = models.ImageField(null=True) diff --git a/tests/regressiontests/serializers_regress/tests.py b/tests/regressiontests/serializers_regress/tests.py index de7ddcc9f7..f0781d78b1 100644 --- a/tests/regressiontests/serializers_regress/tests.py +++ b/tests/regressiontests/serializers_regress/tests.py @@ -321,6 +321,11 @@ The end."""), (inherited_obj, 900, InheritAbstractModel, {'child_data':37,'parent_data':42}), (inherited_obj, 910, ExplicitInheritBaseModel, {'child_data':37,'parent_data':42}), (inherited_obj, 920, InheritBaseModel, {'child_data':37,'parent_data':42}), + + (data_obj, 1000, BigIntegerData, 9223372036854775807), + (data_obj, 1001, BigIntegerData, -9223372036854775808), + (data_obj, 1002, BigIntegerData, 0), + (data_obj, 1003, BigIntegerData, None), ] # Because Oracle treats the empty string as NULL, Oracle is expected to fail |
