source: grass-addons/grass7/vector/v.stream.order/testsuite/test_stream_order.py

Last change on this file was 68383, checked in by neteler, 8 years ago

addons: svn propset

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-python
File size: 7.9 KB
Line 
1"""Test v.stream.order
2
3@author
4IGB-Berlin,Johannes Radinger; Implementation: Geoinformatikbuero Dassau GmbH , Soeren Gebbert
5This tool was developed as part of the BiodivERsA-net project 'FISHCON'
6and has been funded by the German Federal Ministry for Education and
7Research (grant number 01LC1205).
8
9(C) 2014 by the GRASS Development Team
10This program is free software under the GNU General Public
11License (>=v2). Read the file COPYING that comes with GRASS
12for details.
13
14"""
15
16from grass.gunittest.case import TestCase
17from grass.pygrass.vector import VectorTopo
18
19
20class TestStreamOrder(TestCase):
21
22 @classmethod
23 def setUpClass(cls):
24 cls.runModule("v.in.ascii", input="data/stream_network.txt",
25 output="stream_network", format="standard",
26 overwrite=True)
27
28 cls.runModule("v.in.ascii", input="data/stream_network_outlets.txt",
29 output="stream_network_outlets", format="standard")
30
31 @classmethod
32 def tearDownClass(cls):
33 cls.runModule("g.remove", flags="f", type="vector",
34 name="stream_network,stream_network_outlets")
35
36 def tearDown(self):
37 pass
38 self.runModule("g.remove", flags="f", type="vector",
39 pattern="stream_network_order_test_*")
40
41 def test_strahler(self):
42 self.assertModule("v.stream.order", input="stream_network",
43 points="stream_network_outlets",
44 output="stream_network_order_test_strahler",
45 threshold=25,
46 order=["strahler"],
47 overwrite=True, verbose=True)
48
49 # Check the strahler value
50 v = VectorTopo(name="stream_network_order_test_strahler",
51 mapset="")
52 v.open(mode="r")
53
54 self.assertTrue(v.exist(), True)
55 self.assertEqual(v.num_primitive_of("line"), 101)
56 # feature 4
57 self.assertEqual(v.read(4).attrs.cat, 41)
58 self.assertEqual(v.read(4).attrs["outlet_cat"], 1)
59 self.assertEqual(v.read(4).attrs["network"], 1)
60 self.assertEqual(v.read(4).attrs["reversed"], 0)
61 self.assertEqual(v.read(4).attrs["strahler"], 4)
62
63 v.close()
64
65 def test_all(self):
66 self.assertModule("v.stream.order", input="stream_network",
67 points="stream_network_outlets",
68 output="stream_network_order_test_all",
69 threshold=25,
70 order=["strahler", "shreve", "drwal", "scheidegger"],
71 overwrite=True, verbose=True)
72
73 # Check all values
74 v = VectorTopo(name="stream_network_order_test_all",
75 mapset="")
76 v.open(mode="r")
77 self.assertTrue(v.exist(), True)
78 self.assertEqual(v.num_primitive_of("line"), 101)
79 # feature 4
80 self.assertEqual(v.read(4).attrs.cat, 41)
81 self.assertEqual(v.read(4).attrs["outlet_cat"], 1)
82 self.assertEqual(v.read(4).attrs["network"], 1)
83 self.assertEqual(v.read(4).attrs["reversed"], 0)
84 self.assertEqual(v.read(4).attrs["strahler"], 4)
85 self.assertEqual(v.read(4).attrs["shreve"], 32)
86 self.assertEqual(v.read(4).attrs["drwal"], 6)
87 self.assertEqual(v.read(4).attrs["scheidegger"], 64)
88 v.close()
89
90 # Check for column copy
91 self.assertModule("v.stream.order",
92 input="stream_network_order_test_all",
93 points="stream_network_outlets",
94 output="stream_network_order_test_all_2",
95 threshold=25,
96 order=["strahler", "shreve", "drwal", "scheidegger"],
97 columns=["strahler", "shreve", "drwal", "scheidegger"],
98 overwrite=True, verbose=True)
99
100 # Check all values and their copies
101 v = VectorTopo(name="stream_network_order_test_all_2",
102 mapset="")
103 v.open(mode="r")
104 self.assertTrue(v.exist(), True)
105 self.assertEqual(v.num_primitive_of("line"), 101)
106 # feature 4
107 self.assertEqual(v.read(4).attrs.cat, 4)
108 self.assertEqual(v.read(4).attrs["outlet_cat"], 1)
109 self.assertEqual(v.read(4).attrs["network"], 1)
110 self.assertEqual(v.read(4).attrs["reversed"], 0)
111 self.assertEqual(v.read(4).attrs["strahler"], 4)
112 self.assertEqual(v.read(4).attrs["shreve"], 32)
113 self.assertEqual(v.read(4).attrs["drwal"], 6)
114 self.assertEqual(v.read(4).attrs["scheidegger"], 64)
115 self.assertEqual(v.read(4).attrs["strahler_1"], 4)
116 self.assertEqual(v.read(4).attrs["shreve_1"], 32)
117 self.assertEqual(v.read(4).attrs["drwal_1"], 6)
118 self.assertEqual(v.read(4).attrs["scheidegger_1"], 64)
119 # feature 7
120 self.assertEqual(v.read(7).attrs.cat, 7)
121 self.assertEqual(v.read(7).attrs["outlet_cat"], 1)
122 self.assertEqual(v.read(7).attrs["network"], 1)
123 self.assertEqual(v.read(7).attrs["reversed"], 0)
124 self.assertEqual(v.read(7).attrs["strahler"], 2)
125 self.assertEqual(v.read(7).attrs["strahler_1"], 2)
126 self.assertEqual(v.read(7).attrs["shreve"], 4)
127 self.assertEqual(v.read(7).attrs["drwal"], 3)
128 self.assertEqual(v.read(7).attrs["scheidegger"], 8)
129 v.close()
130
131
132class TestStreamOrderFails(TestCase):
133
134 @classmethod
135 def setUpClass(cls):
136 cls.runModule("v.in.ascii", input="data/stream_network.txt",
137 output="stream_network", format="standard",
138 overwrite=True)
139
140 cls.runModule("v.in.ascii", input="data/stream_network_outlets.txt",
141 output="stream_network_outlets", format="standard")
142
143 @classmethod
144 def tearDownClass(cls):
145 cls.runModule("g.remove", flags="f", type="vector",
146 name="stream_network,stream_network_outlets")
147
148 def test_error_handling_1(self):
149 # No input points
150 self.assertModuleFail("v.stream.order", input="stream_network",
151 output="stream_network_order", threshold=25,
152 order=["strahler", "shreve", "drwal", "scheidegger"])
153
154 def test_error_handling_2(self):
155 # No input network
156 self.assertModuleFail("v.stream.order",
157 points="stream_network_outlets",
158 output="stream_network_order", threshold=25,
159 order=["strahler", "shreve", "drwal", "scheidegger"])
160
161 def test_error_handling_3(self):
162 # No output
163 self.assertModuleFail("v.stream.order", input="stream_network",
164 points="stream_network_outlets",
165 threshold=25,
166 order=["strahler", "shreve", "drwal", "scheidegger"],
167 overwrite=True, verbose=True)
168
169 def test_error_handling_4(self):
170 # Recursion limit is below 1000
171 self.assertModuleFail("v.stream.order", input="stream_network",
172 points="stream_network_outlets",
173 output="stream_network_order", threshold=25,
174 order=["strahler", "shreve", "drwal", "scheidegger"],
175 recursionlimit=0,
176 overwrite=True, verbose=True)
177
178 def test_error_handling_5(self):
179 # Horton order is not implemented
180 self.assertModuleFail("v.stream.order", input="stream_network",
181 points="stream_network_outlets",
182 output="stream_network_order", threshold=25,
183 order=["horton"],
184 overwrite=True, verbose=True)
185
186if __name__ == '__main__':
187 from grass.gunittest.main import test
188 test()
Note: See TracBrowser for help on using the repository browser.