From 306efc8e454cec9e522fda6528313c689fdf4dfd Mon Sep 17 00:00:00 2001 From: Sergey Fedoseev Date: Tue, 3 Nov 2015 00:35:50 +0500 Subject: [PATCH] [1.9.x] Fixed #25661 -- Fixed checking number of points during list assignment for `LinearRing`. Backport of 1b598b4b4 from master. --- django/contrib/gis/geos/linestring.py | 2 +- tests/gis_tests/geos_tests/test_geos.py | 32 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/django/contrib/gis/geos/linestring.py b/django/contrib/gis/geos/linestring.py index f1c26af72e..df2a8145c7 100644 --- a/django/contrib/gis/geos/linestring.py +++ b/django/contrib/gis/geos/linestring.py @@ -167,5 +167,5 @@ class LineString(ProjectInterpolateMixin, GEOSGeometry): # LinearRings are LineStrings used within Polygons. class LinearRing(LineString): - _minLength = 4 + _minlength = 4 _init_func = capi.create_linearring diff --git a/tests/gis_tests/geos_tests/test_geos.py b/tests/gis_tests/geos_tests/test_geos.py index 90d34bbad7..702a0465b2 100644 --- a/tests/gis_tests/geos_tests/test_geos.py +++ b/tests/gis_tests/geos_tests/test_geos.py @@ -736,6 +736,38 @@ class GEOSTest(unittest.TestCase, TestDataMixin): # self.assertEqual((3.14, 2.71), mpoly[0].shell[0]) # del mpoly + def test_point_list_assignment(self): + p = Point(0, 0) + + p[:] = (1, 2, 3) + self.assertEqual(p, Point(1, 2, 3)) + + p[:] = (1, 2) + self.assertEqual(p.wkt, Point(1, 2)) + + with self.assertRaises(ValueError): + p[:] = (1,) + with self.assertRaises(ValueError): + p[:] = (1, 2, 3, 4, 5) + + def test_linestring_list_assignment(self): + ls = LineString((0, 0), (1, 1)) + + ls[:] = ((0, 0), (1, 1), (2, 2)) + self.assertEqual(ls, LineString((0, 0), (1, 1), (2, 2))) + + with self.assertRaises(ValueError): + ls[:] = (1,) + + def test_linearring_list_assignment(self): + ls = LinearRing((0, 0), (0, 1), (1, 1), (0, 0)) + + ls[:] = ((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)) + self.assertEqual(ls, LinearRing((0, 0), (0, 1), (1, 1), (1, 0), (0, 0))) + + with self.assertRaises(ValueError): + ls[:] = ((0, 0), (1, 1), (2, 2)) + def test_threed(self): "Testing three-dimensional geometries." # Testing a 3D Point