/[thuban]/branches/WIP-pyshapelib-bramz/test/test_derivedshapestore.py
ViewVC logotype

Annotation of /branches/WIP-pyshapelib-bramz/test/test_derivedshapestore.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1593 - (hide annotations)
Fri Aug 15 14:10:27 2003 UTC (21 years, 6 months ago) by bh
Original Path: trunk/thuban/test/test_derivedshapestore.py
File MIME type: text/x-python
File size: 4641 byte(s)
Change the way shapes are returned by a shape store. The
ShapesInRegion method returns an iterator over actual shape
objects instead of a list of shape ids.

* Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
id.
(ShapefileStore.ShapesInRegion): Return an iterator over the
shapes which yields shape objects instead of returning a list of
shape ids
(ShapefileStore.AllShapes): New. Return an iterator over all
shapes in the shape store
(DerivedShapeStore.AllShapes): New. Like in ShapefileStore

* Thuban/Model/layer.py (Layer.ShapesInRegion): Update
doc-string.

* Thuban/UI/baserenderer.py
(BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
layer_shapes and make it return an iterator containg shapes
instead of a list of ids.
(BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
layer_shapes() change

* Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
(ScreenRenderer.layer_shapes): Rename as in BaseRenderer

* Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
changes in the ShapesInRegion return value.
(ViewPort._get_hit_tester): Remove commented out code

* test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
new return value.
(SimpleShapeStore.AllShapes): New. Implement this method too.

* test/test_layer.py (TestLayer.test_arc_layer)
(TestLayer.test_polygon_layer, TestLayer.test_point_layer)
(TestLayer.test_point_layer_with_projection)
(TestLayer.test_derived_store): Adapt to changes in the
ShapesInRegion return value.

* test/test_shapefilestore.py
(TestShapefileStoreArc.test_shapes_in_region)
(TestShapefileStorePolygon.test_shapes_in_region)
(TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
in the ShapesInRegion return value.
(TestShapefileStorePoint.test_all_shapes)
(TestShapefileStoreArc.test_shape_shapeid): New tests for the new
methods

* test/test_derivedshapestore.py
(TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
the ShapesInRegion return value.
(TestDerivedShapeStore.test_all_shapes)
(TestDerivedShapeStore.test_shape_shapeid): New tests for the new
methods

1 bh 1536 # Copyright (C) 2003 by Intevation GmbH
2     # Authors:
3     # Bernhard Herzog <[email protected]>
4     #
5     # This program is free software under the GPL (>=v2)
6     # Read the file COPYING coming with the software for details.
7    
8     """Tests for DerivedShapeStore"""
9    
10     __version__ = "$Revision$"
11     # $Source$
12     # $Id$
13    
14     import os
15    
16     import unittest
17    
18     import support
19     support.initthuban()
20    
21 bh 1564 from Thuban.Model.data import DerivedShapeStore, ShapefileStore, \
22     SHAPETYPE_ARC, RAW_SHAPEFILE
23 bh 1593
24 bh 1536 from Thuban.Model.session import Session
25     from Thuban.Model.table import MemoryTable, \
26     FIELDTYPE_DOUBLE, FIELDTYPE_INT, FIELDTYPE_STRING
27    
28    
29     class TestDerivedShapeStore(unittest.TestCase, support.FloatComparisonMixin):
30    
31     def setUp(self):
32     """Initialize self.session"""
33     self.session = Session("Test Session")
34     self.filename = os.path.join("..", "Data", "iceland",
35     "roads-line.shp")
36     self.store = ShapefileStore(self.session, self.filename)
37    
38     self.table = MemoryTable([("type", FIELDTYPE_STRING),
39     ("value", FIELDTYPE_DOUBLE),
40     ("code", FIELDTYPE_INT)],
41     [("UNKNOWN", 0.0, 0)] * 839)
42     self.derived = DerivedShapeStore(self.store, self.table)
43    
44     def tearDown(self):
45     """Call self.session.Destroy() and reset self.session to None"""
46     self.session.Destroy()
47     self.session = None
48    
49     def test_dependencies(self):
50     """Test DerivedShapeStore dependencies"""
51     # The shapestore itself depends on nothing else
52     self.assertEquals(self.derived.Dependencies(),
53     (self.store, self.table))
54    
55     def test_orig_shapestore(self):
56     """Test DerivedShapeStore.OrigShapeStore()"""
57     self.assertEquals(self.derived.OrigShapeStore(), self.store)
58    
59     def test_shape_type(self):
60     """Test DerivedShapeStore.ShapeType() with arc shapes"""
61     self.assertEquals(self.derived.ShapeType(), SHAPETYPE_ARC)
62    
63 bh 1564 def test_raw_format(self):
64     """Test DerivedShapeStore.RawShapeFormat() with shapefiles"""
65     self.assertEquals(self.derived.RawShapeFormat(), RAW_SHAPEFILE)
66    
67 bh 1536 def test_boundingbox(self):
68     """Test DerivedShapeStore.BoundingBox() with arc shapes"""
69     self.assertFloatSeqEqual(self.derived.BoundingBox(),
70     [-24.450359344482422, 63.426830291748047,
71     -13.55668830871582, 66.520111083984375])
72    
73     def test_num_shapes(self):
74     """Test DerivedShapeStore.NumShapes() with arc shapes"""
75     self.assertEquals(self.derived.NumShapes(), 839)
76    
77     def test_shapes_in_region(self):
78     """Test DerivedShapeStore.ShapesInRegion() with arc shapes"""
79 bh 1593 shapes = self.derived.ShapesInRegion((-24.0, 64.0, -23.75, 64.25))
80     self.assertEquals([s.ShapeID() for s in shapes],
81 bh 1536 [613, 726, 838])
82    
83 bh 1593 def test_all_shapes(self):
84     """Test DerivedShapeStore.AllShapes()"""
85     self.assertEquals([s.ShapeID() for s in self.store.AllShapes()],
86     range(self.store.NumShapes()))
87    
88 bh 1536 def test_shape(self):
89     """Test DerivedShapeStore.Shape() with arc shapes"""
90 bh 1551 self.assertPointListEquals(self.derived.Shape(32).Points(),
91 bh 1593 [[(-15.08217430114746, 66.2773818969726),
92     (-15.02635002136230, 66.2733917236328)]])
93     def test_shape_shapeid(self):
94     """Test DerivedShapeStore.Shape(i).ShapeID()"""
95     self.assertEquals(self.store.Shape(5).ShapeID(), 5)
96 bh 1536
97    
98    
99     class TestDerivedShapeStoreExceptions(unittest.TestCase):
100    
101     """Test DerivedShapeStore exceptions"""
102    
103     def test_table_with_wrong_size(self):
104     """Test DerivedShapeStore() with a table with the wrong number of lines
105     """
106     filename = os.path.join("..", "Data", "iceland", "roads-line.shp")
107     session = Session("TestDerivedShapeStore Session")
108     store = session.OpenShapefile(filename)
109    
110     table = MemoryTable([("type", FIELDTYPE_STRING),
111     ("value", FIELDTYPE_DOUBLE),
112     ("code", FIELDTYPE_INT)],
113     [("UNKNOWN", 0.0, 0),
114     ("Foo", 0.5, -1),
115     ("Foo", 0.25, 100),
116     ("bar", 1e10, 17)])
117    
118     # Trying to create a DerivedShapeStore where the number of lines
119     # in the table is not the same as the number of shapes in the
120     # shapefile raises a ValueError
121     self.assertRaises(ValueError, DerivedShapeStore, store, table)

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26