1from grass.gunittest.case import TestCase 2from grass.gunittest.main import test 3from grass.gunittest.gmodules import SimpleModule 4import grass.script.core as gcore 5 6# not used yet 7LOCATION = 'nc_spm' 8 9output1 = """ 10 0.000000 88.370453 11 10.000000 88.397057 12 20.000000 89.526253 13 30.000000 89.677551 14 40.000000 91.297195 15 50.000000 91.297195 16 60.000000 92.330658 17 70.000000 93.069199 18 80.000000 94.768280 19 90.000000 95.524551 20 100.000000 96.770805 21 110.000000 96.770805 22 120.000000 97.418869 23""" 24 25output2 = """ 26637656.000000 224222.000000 0.000000 88.370453 27637664.540486 224227.201932 10.000000 88.397057 28637673.080972 224232.403865 20.000000 89.526253 29637681.621458 224237.605797 30.000000 89.677551 30637690.161944 224242.807729 40.000000 91.297195 31637698.702430 224248.009662 50.000000 91.297195 32637707.242916 224253.211594 60.000000 92.330658 33637715.783402 224258.413526 70.000000 93.069199 34637724.323887 224263.615459 80.000000 94.768280 35637732.864373 224268.817391 90.000000 95.524551 36637741.404859 224274.019323 100.000000 96.770805 37637749.945345 224279.221256 110.000000 96.770805 38637758.485831 224284.423188 120.000000 97.418869 39""" 40 41output3 = """ 42 0.000000 91.071831 43 10.000000 91.431198 44 20.000000 91.746628 45 30.000000 91.746628 46 40.000000 91.748047 47 50.000000 91.872192 48 60.000000 91.730049 49 70.000000 91.690292 50 80.000000 91.341331 51 86.533231 91.341331 52 96.533231 91.639000 53 106.533231 nodata 54 116.533231 nodata 55 126.533231 nodata 56 136.533231 nodata 57 146.533231 nodata 58 156.533231 nodata 59 166.533231 nodata 60 176.533231 nodata 61 186.533231 nodata 62 196.533231 nodata 63 206.533231 nodata 64 216.533231 nodata 65""" 66 67output4 = """ 68 0.000000 88.370453 69 25.000000 89.526253 70 50.000000 91.297195 71 75.000000 94.768280 72 100.000000 96.770805 73 125.000000 97.646629 74""" 75 76output5 = """ 77635747.000000 222664.000000 0.000000 117.672462 78635738.870095 222669.822770 10.000000 116.417213 79635730.740190 222675.645539 20.000000 115.639481 80635722.610285 222681.468309 30.000000 112.835342 81635714.480381 222687.291079 40.000000 111.324890 82635706.350476 222693.113848 50.000000 108.612282 83635698.220571 222698.936618 60.000000 106.313347 84635690.090666 222704.759388 70.000000 104.915665 85635681.960761 222710.582158 80.000000 102.878601 86635673.830856 222716.404927 90.000000 102.935074 87635673.000000 222717.000000 91.021975 102.935074 88635665.017450 222710.976803 101.021975 102.932213 89635657.034900 222704.953607 111.021975 102.931152 90635649.052351 222698.930410 121.021975 102.932213 91635641.069801 222692.907213 131.021975 102.932213 92635633.087251 222686.884017 141.021975 102.931648 93635625.104701 222680.860820 151.021975 102.936768 94635617.122151 222674.837623 161.021975 102.903358 95635609.139601 222668.814427 171.021975 105.447823 96635601.157052 222662.791230 181.021975 105.447823 97635593.174502 222656.768033 191.021975 108.423523 98635585.191952 222650.744836 201.021975 109.192360 99635577.209402 222644.721640 211.021975 112.042763 100635569.226852 222638.698443 221.021975 114.321136 101635563.000000 222634.000000 228.822556 114.321136 102635569.507914 222626.407434 238.822556 115.357292 103635576.015827 222618.814868 248.822556 114.609100 104635582.523741 222611.222302 258.822556 111.636292 105635589.031655 222603.629736 268.822556 112.355431 106635595.539569 222596.037170 278.822556 110.162842 107635602.047482 222588.444604 288.822556 109.172668 108635608.555396 222580.852038 298.822556 109.172668 109635615.063310 222573.259472 308.822556 108.030540 110635621.571224 222565.666906 318.822556 105.670113 111635628.079137 222558.074340 328.822556 105.770287 112635634.587051 222550.481774 338.822556 105.169937 113635641.000000 222543.000000 348.676634 105.416862 114635647.589446 222550.521915 358.676634 105.011185 115635654.178892 222558.043830 368.676634 104.854263 116635660.768338 222565.565744 378.676634 104.573921 117635667.357784 222573.087659 388.676634 103.413361 118635673.947230 222580.609574 398.676634 105.485588 119635680.536676 222588.131489 408.676634 109.791016 120635687.126122 222595.653403 418.676634 109.701485 121635693.715568 222603.175318 428.676634 112.104370 122635700.305014 222610.697233 438.676634 113.684036 123635706.894460 222618.219148 448.676634 113.684036 124635713.483906 222625.741062 458.676634 114.252579 125635720.073352 222633.262977 468.676634 114.115379 126635726.662798 222640.784892 478.676634 114.123955 127635733.252244 222648.306807 488.676634 115.766998 128635739.841690 222655.828721 498.676634 116.547440 129635746.431136 222663.350636 508.676634 117.672462 130""" 131 132 133class TestProfileNCSPM(TestCase): 134 135 @classmethod 136 def setUpClass(cls): 137 gcore.use_temp_region() 138 gcore.run_command('g.region', raster='elevation') 139 140 @classmethod 141 def tearDownClass(cls): 142 gcore.del_temp_region() 143 144 def test_profile_default(self): 145 rprofile = SimpleModule('r.profile', input='elevation', 146 coordinates=[637656, 224222, 637766, 224289]) 147 self.assertModule(rprofile) 148 self.assertMultiLineEqual(rprofile.outputs.stdout.strip(), output1.strip()) 149 self.assertIn('128.798292 [meters]', rprofile.outputs.stderr) # distance 150 self.assertIn('10 [meters]', rprofile.outputs.stderr) # resolution 151 152 def test_profile_m(self): 153 rprofile = SimpleModule('r.profile', input='elevation', units='meters', 154 coordinates=[637656, 224222, 637766, 224289]) 155 self.assertModule(rprofile) 156 self.assertIn('128.798292 [meters]', rprofile.outputs.stderr) # distance 157 self.assertIn('10 [meters]', rprofile.outputs.stderr) # resolution 158 159 def test_profile_resolution(self): 160 rprofile = SimpleModule('r.profile', input='elevation', resolution=25, 161 coordinates=[637656, 224222, 637766, 224289]) 162 self.assertModule(rprofile) 163 self.assertMultiLineEqual(rprofile.outputs.stdout.strip(), output4.strip()) 164 self.assertIn('128.798292 [meters]', rprofile.outputs.stderr) # distance 165 self.assertIn('25 [meters]', rprofile.outputs.stderr) # resolution 166 167 def test_profile_ne(self): 168 rprofile = SimpleModule('r.profile', input='elevation', flags='g', 169 coordinates=[637656, 224222, 637766, 224289]) 170 self.assertModule(rprofile) 171 self.assertMultiLineEqual(rprofile.outputs.stdout.strip(), output2.strip()) 172 173 def test_profile_region(self): 174 rprofile = SimpleModule('r.profile', input='elevation', null_value='nodata', 175 coordinates=[644914, 224579, 644986, 176 224627, 645091, 224549]) 177 self.assertModule(rprofile) 178 self.assertMultiLineEqual(rprofile.outputs.stdout.strip(), output3.strip()) 179 self.assertIn("WARNING: Endpoint coordinates are outside of current region settings", 180 rprofile.outputs.stderr) 181 182 def test_profile_directions(self): 183 rprofile = SimpleModule('r.profile', input='elevation', flags='g', 184 coordinates=[635747, 222664, 635673, 222717, 635563, 185 222634, 635641, 222543, 635747, 222664]) 186 self.assertModule(rprofile) 187 self.assertMultiLineEqual(rprofile.outputs.stdout.strip(), output5.strip()) 188 189 190if __name__ == '__main__': 191 test() 192