diff options
| author | David Smith <smithdc@gmail.com> | 2024-09-23 18:21:02 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2025-11-25 10:10:06 +0100 |
| commit | d86802f13fd821f006371b95d888d294297874fd (patch) | |
| tree | 7487556b06689ca860f4ee0e1fbdc26caf125973 /tests | |
| parent | e3d8f557ff3bab2b37a55db83f71ceb90bc4ebc8 (diff) | |
Fixed #35783 -- Added NumDimensions GIS database function and __num_dimensions lookup.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/gis_tests/geoapp/test_functions.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/tests/gis_tests/geoapp/test_functions.py b/tests/gis_tests/geoapp/test_functions.py index 917e63cd57..a6b072542c 100644 --- a/tests/gis_tests/geoapp/test_functions.py +++ b/tests/gis_tests/geoapp/test_functions.py @@ -17,7 +17,7 @@ from django.contrib.gis.geos import ( from django.contrib.gis.geos.libgeos import geos_version_tuple from django.contrib.gis.measure import Area from django.db import NotSupportedError, connection -from django.db.models import IntegerField, Sum, Value +from django.db.models import F, IntegerField, Sum, Value from django.test import TestCase, skipUnlessDBFeature from ..utils import FuncTestMixin @@ -28,6 +28,7 @@ from .models import ( Feature, ManyPointModel, State, + ThreeDimensionalFeature, Track, ) @@ -608,6 +609,28 @@ class GISFunctionsTests(FuncTestMixin, TestCase): else: self.assertEqual(1, city.num_geom) + @skipUnlessDBFeature("has_NumDimensions_function") + def test_num_dimensions(self): + for c in Country.objects.annotate(num_dims=functions.NumDimensions("mpoly")): + self.assertEqual(2, c.num_dims) + + ThreeDimensionalFeature.objects.create( + name="London", geom=Point(-0.126418, 51.500832, 0) + ) + qs = ThreeDimensionalFeature.objects.annotate( + num_dims=functions.NumDimensions("geom") + ) + self.assertEqual(qs[0].num_dims, 3) + + qs = ThreeDimensionalFeature.objects.annotate( + num_dims=F("geom__num_dimensions") + ) + self.assertEqual(qs[0].num_dims, 3) + + msg = "'NumDimensions' takes exactly 1 argument (2 given)" + with self.assertRaisesMessage(TypeError, msg): + Country.objects.annotate(num_dims=functions.NumDimensions("point", "error")) + @skipUnlessDBFeature("has_NumPoints_function") def test_num_points(self): coords = [(-95.363151, 29.763374), (-95.448601, 29.713803)] |
