diff options
| author | Florian Hahn <flo@fhahn.com> | 2013-02-21 23:02:18 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2013-10-22 10:29:57 -0400 |
| commit | 5240b83462ba4887b67da8d493dfdc23fec5df97 (patch) | |
| tree | 7bae13c499bc84b5f4bcf79c592aa2a9b8008033 /tests | |
| parent | 1597503a017a9ced422a81d314cb4097d53c3dfd (diff) | |
Fixed #17027 -- Added support for the power operator in F expressions.
Thanks dan at dlo.me for the initial patch.
- Added __pow__ and __rpow__ to ExpressionNode
- Added oracle and mysql specific power expressions
- Added used-defined power function for sqlite
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/expressions_regress/models.py | 2 | ||||
| -rw-r--r-- | tests/expressions_regress/tests.py | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/tests/expressions_regress/models.py b/tests/expressions_regress/models.py index 4679dcd567..bd3e52f54d 100644 --- a/tests/expressions_regress/models.py +++ b/tests/expressions_regress/models.py @@ -8,7 +8,7 @@ from django.db import models @python_2_unicode_compatible class Number(models.Model): - integer = models.IntegerField(db_column='the_integer') + integer = models.BigIntegerField(db_column='the_integer') float = models.FloatField(null=True, db_column='the_float') def __str__(self): diff --git a/tests/expressions_regress/tests.py b/tests/expressions_regress/tests.py index 6d96e0cd7e..470ab7c8e5 100644 --- a/tests/expressions_regress/tests.py +++ b/tests/expressions_regress/tests.py @@ -145,6 +145,13 @@ class ExpressionOperatorTests(TestCase): self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 58) self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(15.500, places=3)) + def test_lefthand_power(self): + # LH Powert arithmetic operation on floats and integers + Number.objects.filter(pk=self.n.pk).update(integer=F('integer') ** 2, + float=F('float') ** 1.5) + self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 1764) + self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(61.02, places=2)) + def test_right_hand_addition(self): # Right hand operators Number.objects.filter(pk=self.n.pk).update(integer=15 + F('integer'), @@ -185,6 +192,13 @@ class ExpressionOperatorTests(TestCase): self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 27) self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(15.500, places=3)) + def test_righthand_power(self): + # RH Powert arithmetic operation on floats and integers + Number.objects.filter(pk=self.n.pk).update(integer=2 ** F('integer'), + float=1.5 ** F('float')) + self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 4398046511104) + self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(536.308, places=3)) + class FTimeDeltaTests(TestCase): |
