123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- #!/usr/bin/env python3
- ############################################################################
- #
- # MODULE: test_small_data
- # AUTHOR: Vaclav Petras
- # PURPOSE: Fast test using a small example
- # COPYRIGHT: (C) 2016 by Vaclav Petras and the GRASS Development Team
- #
- # This program is free software under the GNU General Public
- # License (>=v2). Read the file COPYING that comes with GRASS
- # for details.
- #
- #############################################################################
- from grass.gunittest.case import TestCase
- from grass.gunittest.main import test
- from grass.script import list_strings
- # generated by
- # g.region n=12 s=9 e=21 w=18 t=8 b=4 res=1 res3=1 -p3
- # r3.mapcalc "x = rand(0,10)" seed=100 && r3.out.ascii x prec=0
- INPUT = """\
- version: grass7
- order: nsbt
- north: 12
- south: 9
- east: 21
- west: 18
- top: 8
- bottom: 4
- rows: 3
- cols: 3
- levels: 4
- 6 5 1
- 0 7 5
- 1 7 1
- 8 2 1
- 3 4 2
- 8 5 6
- 1 2 8
- 1 5 5
- 1 1 3
- 1 8 3
- 6 5 1
- 5 1 7
- """
- # created from the above and template from
- # r.mapcalc "x = rand(0,10)" seed=100 && r.out.ascii x prec=0
- OUTPUTS = [
- """\
- north: 12
- south: 9
- east: 21
- west: 18
- rows: 3
- cols: 3
- 12.5 10.5 2.5
- 0.5 14.5 10.5
- 2.5 14.5 2.5
- """,
- """\
- north: 12
- south: 9
- east: 21
- west: 18
- rows: 3
- cols: 3
- 16.5 4.5 2.5
- 6.5 8.5 4.5
- 16.5 10.5 12.5
- """,
- """\
- north: 12
- south: 9
- east: 21
- west: 18
- rows: 3
- cols: 3
- 2.5 4.5 16.5
- 2.5 10.5 10.5
- 2.5 2.5 6.5
- """,
- """\
- north: 12
- south: 9
- east: 21
- west: 18
- rows: 3
- cols: 3
- 2.5 16.5 6.5
- 12.5 10.5 2.5
- 10.5 2.5 14.5
- """,
- ]
- class TestR3ToRast(TestCase):
- # TODO: replace by unified handing of maps
- # mixing class and object attributes
- to_remove_3d = []
- to_remove_2d = []
- rast3d = "r3_to_rast_test_a_b_coeff"
- rast2d = "r3_to_rast_test_a_b_coeff"
- rast2d_ref = "r3_to_rast_test_a_b_coeff_ref"
- rast2d_refs = []
- def setUp(self):
- self.use_temp_region()
- self.runModule("r3.in.ascii", input="-", stdin_=INPUT, output=self.rast3d)
- self.to_remove_3d.append(self.rast3d)
- self.runModule("g.region", raster_3d=self.rast3d)
- for i, data in enumerate(OUTPUTS):
- rast = "%s_%d" % (self.rast2d_ref, i)
- self.runModule("r.in.ascii", input="-", stdin_=data, output=rast)
- self.to_remove_2d.append(rast)
- self.rast2d_refs.append(rast)
- def tearDown(self):
- if self.to_remove_3d:
- self.runModule(
- "g.remove",
- flags="f",
- type="raster_3d",
- name=",".join(self.to_remove_3d),
- verbose=True,
- )
- if self.to_remove_2d:
- self.runModule(
- "g.remove",
- flags="f",
- type="raster",
- name=",".join(self.to_remove_2d),
- verbose=True,
- )
- self.del_temp_region()
- def test_a_b_coeff(self):
- self.assertModule(
- "r3.to.rast", input=self.rast3d, output=self.rast2d, multiply=2, add=0.5
- )
- rasts = list_strings(
- "raster",
- mapset=".",
- pattern="%s_*" % self.rast2d,
- exclude="%s_*" % self.rast2d_ref,
- )
- self.assertEquals(
- len(rasts), 4, msg="Wrong number of 2D rasters present" " in the mapset"
- )
- ref_info = dict(cells=9)
- ref_univar = dict(cells=9, null_cells=0)
- for rast in rasts:
- self.assertRasterExists(rast)
- # the following doesn't make much sense because we just listed them
- self.to_remove_2d.append(rast)
- self.assertRasterFitsInfo(raster=rast, reference=ref_info, precision=0)
- self.assertRasterFitsUnivar(raster=rast, reference=ref_univar, precision=0)
- # check the actual values
- for rast_ref, rast in zip(self.rast2d_refs, rasts):
- self.assertRastersNoDifference(
- actual=rast, reference=rast_ref, precision=0.1
- )
- if __name__ == "__main__":
- test()
|