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

Diff of /branches/WIP-pyshapelib-bramz/test/test_load.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 409 by jonathan, Wed Feb 19 16:50:39 2003 UTC revision 690 by jonathan, Wed Apr 16 13:47:22 2003 UTC
# Line 19  import unittest Line 19  import unittest
19  import support  import support
20  support.initthuban()  support.initthuban()
21    
22  from Thuban.Model.load import load_session  from Thuban.Model.load import load_session, parse_color
23  from Thuban.Model.session import Session  from Thuban.Model.session import Session
24  from Thuban.Model.map import Map  from Thuban.Model.map import Map
25  from Thuban.Model.layer import Layer  from Thuban.Model.layer import Layer
26  from Thuban.Model.proj import Projection  from Thuban.Model.proj import Projection
27  from Thuban.Model.color import Color  from Thuban.Model.color import Color
28    
29    from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_DOUBLE, FIELDTYPE_STRING
30    
31    from Thuban.Model.classification import ClassGroupProperties, ClassGroupRange,\
32        ClassGroupSingleton, ClassGroupDefault
33    
34  def filenames_equal(name1, name2):  def filenames_equal(name1, name2):
35      """Return true if the filenames name1 and name2 are equal.      """Return true if the filenames name1 and name2 are equal.
36    
# Line 55  contents_single_map = '''\ Line 60  contents_single_map = '''\
60  </session>  </session>
61  '''  '''
62    
63    contents_classified_map_v0_2 = '''\
64    <?xml version="1.0" encoding="UTF-8"?>
65    <!DOCTYPE session SYSTEM "thuban.dtd">
66    <session title="single map&amp;layer">
67            <map title="Test Map">
68                    <projection>
69                            <parameter value="zone=26"/>
70                            <parameter value="proj=utm"/>
71                            <parameter value="ellps=clrk66"/>
72                    </projection>
73                    <layer title="My Layer" stroke_width="1" fill="None"
74                        filename="../../Data/iceland/political.shp"
75                        stroke="#000000">
76                <classification field="POPYREG" field_type="string">
77                    <clnull>
78                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
79                    </clnull>
80                    <clpoint value="1">
81                        <cldata stroke="#000000" stroke_width="2" fill="None"/>
82                    </clpoint>
83                    <clpoint value="1">
84                        <cldata stroke="#000000" stroke_width="10" fill="None"/>
85                    </clpoint>
86                </classification>
87            </layer>
88                    <layer title="My Layer 2" stroke_width="1" fill="None"
89                        filename="../../Data/iceland/political.shp"
90                        stroke="#000000">
91                <classification field="AREA" field_type="double">
92                    <clnull>
93                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
94                    </clnull>
95                    <clnull>
96                        <cldata stroke="#000000" stroke_width="2" fill="None"/>
97                    </clnull>
98                    <clrange min="0" max="1">
99                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
100                    </clrange>
101                    <clpoint value=".5">
102                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
103                    </clpoint>
104                    <clrange min="-1" max="0">
105                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
106                    </clrange>
107                    <clpoint value="-.5">
108                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
109                    </clpoint>
110                </classification>
111            </layer>
112            </map>
113    </session>
114    '''
115    
116    contents_test_labels = '''\
117    <?xml version="1.0" encoding="UTF-8"?>
118    <!DOCTYPE session SYSTEM "thuban.dtd">
119    <session title="single map&amp;layer">
120            <map title="Test Map">
121                    <projection>
122                            <parameter value="zone=26"/>
123                            <parameter value="proj=utm"/>
124                            <parameter value="ellps=clrk66"/>
125                    </projection>
126                    <layer title="My Layer" stroke_width="1" fill="None"
127                        filename="../../Data/iceland/political.shp"
128                        stroke="#000000">
129                <classification field="POPYREG" field_type="string">
130                    <clnull label="hallo">
131                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
132                    </clnull>
133                    <clpoint label="welt" value="1">
134                        <cldata stroke="#000000" stroke_width="2" fill="None"/>
135                    </clpoint>
136                </classification>
137            </layer>
138        </map>
139    </session>
140    '''
141    
142  class LoadSessionTest(unittest.TestCase, support.FileTestMixin):  class LoadSessionTest(unittest.TestCase, support.FileTestMixin):
143    
# Line 63  class LoadSessionTest(unittest.TestCase, Line 146  class LoadSessionTest(unittest.TestCase,
146          file = open(self.temp_file_name("load_singlelayer.thuban"), "w")          file = open(self.temp_file_name("load_singlelayer.thuban"), "w")
147          file.write(contents_single_map)          file.write(contents_single_map)
148          file.close()          file.close()
149    
150            file = open(self.temp_file_name("load_classified_v0_2.thuban"), "w")
151            file.write(contents_classified_map_v0_2)
152            file.close()
153    
154            file = open(self.temp_file_name("load_labels.thuban"), "w")
155            file.write(contents_test_labels)
156            file.close()
157          self.session = None          self.session = None
158    
159      def tearDown(self):      def tearDown(self):
# Line 98  class LoadSessionTest(unittest.TestCase, Line 189  class LoadSessionTest(unittest.TestCase,
189                                                       os.pardir, os.pardir,                                                       os.pardir, os.pardir,
190                                                       "Data", "iceland",                                                       "Data", "iceland",
191                                                       "political.shp")))                                                       "political.shp")))
192          eq(layer.GetClassification().GetDefaultFill(), Color.None)          eq(layer.GetClassification().GetDefaultFill(), Color.Transparent)
193          eq(layer.GetClassification().GetDefaultStroke().hex(), "#000000")          eq(layer.GetClassification().GetDefaultLineColor().hex(), "#000000")
194    
195            self.session.Destroy()
196            self.session = None
197    
198        def testClassification(self):
199            """Load a session with a map and classified layers."""
200    
201            session = load_session(self.temp_file_name("load_classified_v0_2.thuban"))
202            self.session = session
203    
204            map = self.session.Maps()[0] # only one map in the sample
205    
206            expected = [("My Layer", 2,
207                            [("default", (), "",
208                                ("#000000", 1, "None")),
209                             ("single", "1", "",
210                                ("#000000", 2, "None")),
211                             ("single", "1", "",
212                                ("#000000", 10, "None"))]),
213                         ("My Layer 2", 4,
214                             [("default", (), "",
215                                ("#000000", 2, "None")),
216                              ("range", (0, 1), "",
217                                ("#000000", 1, "None")),
218                              ("single", .5, "",
219                                ("#000000", 1, "None")),
220                              ("range", (-1, 0), "",
221                                ("#000000", 1, "None")),
222                              ("single", -.5, "",
223                                ("#000000", 1, "None"))])]
224    
225            self.TestLayers(map.Layers(), expected)
226    
227        def TestLayers(self, layers, expected):
228    
229            TITLE = 0
230            NUM_GROUPS = 1
231            CLASSES = 2
232            GROUP_TYPE = 0
233            GROUP_DATA = 1
234            GROUP_LABEL = 2
235            GROUP_PROPS = 3
236    
237            eq = self.assertEquals
238    
239            eq(len(layers), len(expected))
240    
241            for layer, data in zip(layers, expected):
242                eq(layer.Title(), data[TITLE])
243    
244                clazz = layer.GetClassification()
245                eq(clazz.GetNumGroups(), data[NUM_GROUPS])
246                eq(clazz.GetNumGroups() + 1, len(data[CLASSES]))
247    
248                i = 0
249                for group in clazz:
250                    
251                    props = ClassGroupProperties()
252                    props.SetLineColor(
253                        parse_color(data[CLASSES][i][GROUP_PROPS][0]))
254                    props.SetLineWidth(data[CLASSES][i][GROUP_PROPS][1])
255                    props.SetFill(
256                        parse_color(data[CLASSES][i][GROUP_PROPS][2]))
257    
258                    if data[CLASSES][i][GROUP_TYPE] == "default":
259                        g = ClassGroupDefault(props, data[CLASSES][i][GROUP_LABEL])
260                    elif data[CLASSES][i][GROUP_TYPE] == "range":
261                        g = ClassGroupRange(data[CLASSES][i][GROUP_DATA][0],
262                                            data[CLASSES][i][GROUP_DATA][1],
263                                            props, data[CLASSES][i][GROUP_LABEL])
264                    elif data[CLASSES][i][GROUP_TYPE] == "single":
265                        g = ClassGroupSingleton(data[CLASSES][i][GROUP_DATA],
266                                              props, data[CLASSES][i][GROUP_LABEL])
267    
268                    eq(group, g)
269    
270                    i += 1
271    
272        def testLabels(self):
273            """Load a session and test for reading the group labels."""
274    
275            eq = self.assertEquals
276            session = load_session(self.temp_file_name("load_labels.thuban"))
277            self.session = session
278    
279            map = self.session.Maps()[0] # only one map in the sample
280    
281            expected = [("My Layer", 1,
282                            [("default", (), "hallo",
283                                ("#000000", 1, "None")),
284                             ("single", "1", "welt",
285                                ("#000000", 2, "None"))])]
286    
287            self.TestLayers(map.Layers(), expected)
288    
289  if __name__ == "__main__":  if __name__ == "__main__":
290      unittest.main()      unittest.main()
291    
292    
293    

Legend:
Removed from v.409  
changed lines
  Added in v.690

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26