/[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 482 by jonathan, Thu Mar 6 16:47:02 2003 UTC revision 691 by jonathan, Wed Apr 16 14:06:17 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="2" fill="None"/>
94                    </clnull>
95                    <clrange min="0" max="1">
96                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
97                    </clrange>
98                    <clpoint value=".5">
99                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
100                    </clpoint>
101                    <clrange min="-1" max="0">
102                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
103                    </clrange>
104                    <clpoint value="-.5">
105                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
106                    </clpoint>
107                </classification>
108            </layer>
109            </map>
110    </session>
111    '''
112    
113    contents_test_labels = '''\
114    <?xml version="1.0" encoding="UTF-8"?>
115    <!DOCTYPE session SYSTEM "thuban.dtd">
116    <session title="single map&amp;layer">
117            <map title="Test Map">
118                    <projection>
119                            <parameter value="zone=26"/>
120                            <parameter value="proj=utm"/>
121                            <parameter value="ellps=clrk66"/>
122                    </projection>
123                    <layer title="My Layer" stroke_width="1" fill="None"
124                        filename="../../Data/iceland/political.shp"
125                        stroke="#000000">
126                <classification field="POPYREG" field_type="string">
127                    <clnull label="hallo">
128                        <cldata stroke="#000000" stroke_width="1" fill="None"/>
129                    </clnull>
130                    <clpoint label="welt" value="1">
131                        <cldata stroke="#000000" stroke_width="2" fill="None"/>
132                    </clpoint>
133                </classification>
134            </layer>
135        </map>
136    </session>
137    '''
138    
139  class LoadSessionTest(unittest.TestCase, support.FileTestMixin):  class LoadSessionTest(unittest.TestCase, support.FileTestMixin):
140    
# Line 63  class LoadSessionTest(unittest.TestCase, Line 143  class LoadSessionTest(unittest.TestCase,
143          file = open(self.temp_file_name("load_singlelayer.thuban"), "w")          file = open(self.temp_file_name("load_singlelayer.thuban"), "w")
144          file.write(contents_single_map)          file.write(contents_single_map)
145          file.close()          file.close()
146    
147            file = open(self.temp_file_name("load_classified_v0_2.thuban"), "w")
148            file.write(contents_classified_map_v0_2)
149            file.close()
150    
151            file = open(self.temp_file_name("load_labels.thuban"), "w")
152            file.write(contents_test_labels)
153            file.close()
154          self.session = None          self.session = None
155    
156      def tearDown(self):      def tearDown(self):
# Line 98  class LoadSessionTest(unittest.TestCase, Line 186  class LoadSessionTest(unittest.TestCase,
186                                                       os.pardir, os.pardir,                                                       os.pardir, os.pardir,
187                                                       "Data", "iceland",                                                       "Data", "iceland",
188                                                       "political.shp")))                                                       "political.shp")))
189          eq(layer.GetClassification().GetDefaultFill(), Color.None)          eq(layer.GetClassification().GetDefaultFill(), Color.Transparent)
190          eq(layer.GetClassification().GetDefaultLineColor().hex(), "#000000")          eq(layer.GetClassification().GetDefaultLineColor().hex(), "#000000")
191    
192            self.session.Destroy()
193            self.session = None
194    
195        def testClassification(self):
196            """Load a session with a map and classified layers."""
197    
198            session = load_session(self.temp_file_name("load_classified_v0_2.thuban"))
199            self.session = session
200    
201            map = self.session.Maps()[0] # only one map in the sample
202    
203            expected = [("My Layer", 2,
204                            [("default", (), "",
205                                ("#000000", 1, "None")),
206                             ("single", "1", "",
207                                ("#000000", 2, "None")),
208                             ("single", "1", "",
209                                ("#000000", 10, "None"))]),
210                         ("My Layer 2", 4,
211                             [("default", (), "",
212                                ("#000000", 2, "None")),
213                              ("range", (0, 1), "",
214                                ("#000000", 1, "None")),
215                              ("single", .5, "",
216                                ("#000000", 1, "None")),
217                              ("range", (-1, 0), "",
218                                ("#000000", 1, "None")),
219                              ("single", -.5, "",
220                                ("#000000", 1, "None"))])]
221    
222            self.TestLayers(map.Layers(), expected)
223    
224        def TestLayers(self, layers, expected):
225    
226            TITLE = 0
227            NUM_GROUPS = 1
228            CLASSES = 2
229            GROUP_TYPE = 0
230            GROUP_DATA = 1
231            GROUP_LABEL = 2
232            GROUP_PROPS = 3
233    
234            eq = self.assertEquals
235    
236            eq(len(layers), len(expected))
237    
238            for layer, data in zip(layers, expected):
239                eq(layer.Title(), data[TITLE])
240    
241                clazz = layer.GetClassification()
242                eq(clazz.GetNumGroups(), data[NUM_GROUPS])
243                eq(clazz.GetNumGroups() + 1, len(data[CLASSES]))
244    
245                i = 0
246                for group in clazz:
247                    
248                    props = ClassGroupProperties()
249                    props.SetLineColor(
250                        parse_color(data[CLASSES][i][GROUP_PROPS][0]))
251                    props.SetLineWidth(data[CLASSES][i][GROUP_PROPS][1])
252                    props.SetFill(
253                        parse_color(data[CLASSES][i][GROUP_PROPS][2]))
254    
255                    if data[CLASSES][i][GROUP_TYPE] == "default":
256                        g = ClassGroupDefault(props, data[CLASSES][i][GROUP_LABEL])
257                    elif data[CLASSES][i][GROUP_TYPE] == "range":
258                        g = ClassGroupRange(data[CLASSES][i][GROUP_DATA][0],
259                                            data[CLASSES][i][GROUP_DATA][1],
260                                            props, data[CLASSES][i][GROUP_LABEL])
261                    elif data[CLASSES][i][GROUP_TYPE] == "single":
262                        g = ClassGroupSingleton(data[CLASSES][i][GROUP_DATA],
263                                              props, data[CLASSES][i][GROUP_LABEL])
264    
265                    eq(group, g)
266    
267                    i += 1
268    
269        def testLabels(self):
270            """Load a session and test for reading the group labels."""
271    
272            eq = self.assertEquals
273            session = load_session(self.temp_file_name("load_labels.thuban"))
274            self.session = session
275    
276            map = self.session.Maps()[0] # only one map in the sample
277    
278            expected = [("My Layer", 1,
279                            [("default", (), "hallo",
280                                ("#000000", 1, "None")),
281                             ("single", "1", "welt",
282                                ("#000000", 2, "None"))])]
283    
284            self.TestLayers(map.Layers(), expected)
285    
286  if __name__ == "__main__":  if __name__ == "__main__":
287      unittest.main()      unittest.main()
288    
289    
290    

Legend:
Removed from v.482  
changed lines
  Added in v.691

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26