summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFlorian Hahn <flo@fhahn.com>2013-02-21 23:02:18 +0100
committerTim Graham <timograham@gmail.com>2013-10-22 10:29:57 -0400
commit5240b83462ba4887b67da8d493dfdc23fec5df97 (patch)
tree7bae13c499bc84b5f4bcf79c592aa2a9b8008033 /tests
parent1597503a017a9ced422a81d314cb4097d53c3dfd (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.py2
-rw-r--r--tests/expressions_regress/tests.py14
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):