summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/expressions/tests.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py
index 1e6d4c967c..180153f555 100644
--- a/tests/expressions/tests.py
+++ b/tests/expressions/tests.py
@@ -1427,6 +1427,16 @@ class FTimeDeltaTests(TestCase):
self.assertIsNone(queryset.first().shifted)
@skipUnlessDBFeature('supports_temporal_subtraction')
+ def test_date_subquery_subtraction(self):
+ subquery = Experiment.objects.filter(pk=OuterRef('pk')).values('completed')
+ queryset = Experiment.objects.annotate(
+ difference=ExpressionWrapper(
+ subquery - F('completed'), output_field=models.DurationField(),
+ ),
+ ).filter(difference=datetime.timedelta())
+ self.assertTrue(queryset.exists())
+
+ @skipUnlessDBFeature('supports_temporal_subtraction')
def test_time_subtraction(self):
Time.objects.create(time=datetime.time(12, 30, 15, 2345))
queryset = Time.objects.annotate(
@@ -1453,6 +1463,17 @@ class FTimeDeltaTests(TestCase):
self.assertIsNone(queryset.first().shifted)
@skipUnlessDBFeature('supports_temporal_subtraction')
+ def test_time_subquery_subtraction(self):
+ Time.objects.create(time=datetime.time(12, 30, 15, 2345))
+ subquery = Time.objects.filter(pk=OuterRef('pk')).values('time')
+ queryset = Time.objects.annotate(
+ difference=ExpressionWrapper(
+ subquery - F('time'), output_field=models.DurationField(),
+ ),
+ ).filter(difference=datetime.timedelta())
+ self.assertTrue(queryset.exists())
+
+ @skipUnlessDBFeature('supports_temporal_subtraction')
def test_datetime_subtraction(self):
under_estimate = [
e.name for e in Experiment.objects.filter(estimated_time__gt=F('end') - F('start'))
@@ -1477,6 +1498,16 @@ class FTimeDeltaTests(TestCase):
self.assertIsNone(queryset.first().shifted)
@skipUnlessDBFeature('supports_temporal_subtraction')
+ def test_datetime_subquery_subtraction(self):
+ subquery = Experiment.objects.filter(pk=OuterRef('pk')).values('start')
+ queryset = Experiment.objects.annotate(
+ difference=ExpressionWrapper(
+ subquery - F('start'), output_field=models.DurationField(),
+ ),
+ ).filter(difference=datetime.timedelta())
+ self.assertTrue(queryset.exists())
+
+ @skipUnlessDBFeature('supports_temporal_subtraction')
def test_datetime_subtraction_microseconds(self):
delta = datetime.timedelta(microseconds=8999999999999999)
Experiment.objects.update(end=F('start') + delta)