[GRASS-SVN] r67314 - in grass/trunk/vector/v.in.lidar: . testsuite

svn_grass at osgeo.org svn_grass at osgeo.org
Mon Dec 21 17:33:42 PST 2015


Author: wenzeslaus
Date: 2015-12-21 17:33:42 -0800 (Mon, 21 Dec 2015)
New Revision: 67314

Added:
   grass/trunk/vector/v.in.lidar/testsuite/
   grass/trunk/vector/v.in.lidar/testsuite/basic_test.py
   grass/trunk/vector/v.in.lidar/testsuite/decimation_test.py
Log:
v.in.lidar: basic and decimation test

Added: grass/trunk/vector/v.in.lidar/testsuite/basic_test.py
===================================================================
--- grass/trunk/vector/v.in.lidar/testsuite/basic_test.py	                        (rev 0)
+++ grass/trunk/vector/v.in.lidar/testsuite/basic_test.py	2015-12-22 01:33:42 UTC (rev 67314)
@@ -0,0 +1,68 @@
+"""
+Name:      decimation_test
+Purpose:   v.in.lidar decimation test
+
+Author:    Vaclav Petras
+Copyright: (C) 2015 by Vaclav Petras and the GRASS Development Team
+Licence:   This program is free software under the GNU General Public
+           License (>=v2). Read the file COPYING that comes with GRASS
+           for details.
+"""
+
+import os
+from grass.gunittest.case import TestCase
+from grass.gunittest.main import test
+
+
+class BasicTest(TestCase):
+    """Test case for watershed module
+
+    This tests expects v.random and v.out.lidar to work properly.
+    """
+
+    # Setup variables to be used for outputs
+    vector_points = 'vinlidar_decimation_original'
+    imported_points = 'vinlidar_decimation_imported'
+    las_file = 'vinlidar_decimation_points.las'
+    npoints = 300
+
+    @classmethod
+    def setUpClass(cls):
+        """Ensures expected computational region and generated data"""
+        cls.use_temp_region()
+        cls.runModule('g.region', n=20, s=10, e=25, w=15, res=1)
+        cls.runModule('v.random', flags='zb', output=cls.vector_points,
+            npoints=cls.npoints, zmin=200, zmax=500, seed=100)
+        cls.runModule('v.out.lidar', input=cls.vector_points,
+            output=cls.las_file)
+
+    @classmethod
+    def tearDownClass(cls):
+        """Remove the temporary region and generated data"""
+        cls.runModule('g.remove', flags='f', type='vector',
+            name=cls.vector_points)
+        if os.path.isfile(cls.las_file):
+            os.remove(cls.las_file)
+        cls.del_temp_region()
+
+    def tearDown(self):
+        """Remove the outputs created by the import
+
+        This is executed after each test run.
+        """
+        self.runModule('g.remove', flags='f', type='vector',
+            name=self.imported_points)
+
+    def test_output_identical(self):
+        """Test to see if the standard outputs are created"""
+        self.assertModule('v.in.lidar', input=self.las_file,
+            output=self.imported_points, flags='bt')
+        self.assertVectorExists(self.imported_points)
+        self.assertVectorEqualsVector(
+            actual=self.imported_points,
+            reference=self.vector_points,
+            digits=2, precision=.01)
+
+
+if __name__ == '__main__':
+    test()

Added: grass/trunk/vector/v.in.lidar/testsuite/decimation_test.py
===================================================================
--- grass/trunk/vector/v.in.lidar/testsuite/decimation_test.py	                        (rev 0)
+++ grass/trunk/vector/v.in.lidar/testsuite/decimation_test.py	2015-12-22 01:33:42 UTC (rev 67314)
@@ -0,0 +1,161 @@
+"""
+Name:      decimation_test
+Purpose:   v.in.lidar decimation test
+
+Author:    Vaclav Petras
+Copyright: (C) 2015 by Vaclav Petras and the GRASS Development Team
+Licence:   This program is free software under the GNU General Public
+           License (>=v2). Read the file COPYING that comes with GRASS
+           for details.
+"""
+
+import os
+from grass.gunittest.case import TestCase
+from grass.gunittest.main import test
+
+
+class TestCountBasedDecimation(TestCase):
+    """Test case for watershed module
+
+    This tests expects v.random and v.out.lidar to work properly.
+    """
+
+    # Setup variables to be used for outputs
+    vector_points = 'vinlidar_decimation_original'
+    imported_points = 'vinlidar_decimation_imported'
+    las_file = 'vinlidar_decimation_points.las'
+    npoints = 300  # the values works well for 300 without rounding
+
+    @classmethod
+    def setUpClass(cls):
+        """Ensures expected computational region and generated data"""
+        cls.use_temp_region()
+        cls.runModule('g.region', n=20, s=10, e=25, w=15, res=1)
+        cls.runModule('v.random', flags='zb', output=cls.vector_points,
+            npoints=cls.npoints, zmin=200, zmax=500, seed=100)
+        cls.runModule('v.out.lidar', input=cls.vector_points,
+            output=cls.las_file)
+
+    @classmethod
+    def tearDownClass(cls):
+        """Remove the temporary region and generated data"""
+        cls.runModule('g.remove', flags='f', type='vector',
+            name=cls.vector_points)
+        if os.path.isfile(cls.las_file):
+            os.remove(cls.las_file)
+        cls.del_temp_region()
+
+    def tearDown(self):
+        """Remove the outputs created by the import
+
+        This is executed after each test run.
+        """
+        self.runModule('g.remove', flags='f', type='vector',
+            name=self.imported_points)
+
+    def test_identical(self):
+        """Test to see if the standard outputs are created"""
+        self.assertModule('v.in.lidar', input=self.las_file,
+            output=self.imported_points, flags='bt')
+        self.assertVectorExists(self.imported_points)
+        self.assertVectorFitsTopoInfo(
+            vector=self.imported_points,
+            reference=dict(points=self.npoints))
+
+    def skip_number(self, number, expect):
+        """Test to see if the outputs are created"""
+        self.assertModule('v.in.lidar', input=self.las_file,
+            output=self.imported_points, flags='bt', skip=number)
+        self.assertVectorExists(self.imported_points)
+        self.assertVectorFitsTopoInfo(
+            vector=self.imported_points,
+            reference=dict(points=expect))
+
+    def preserve_number(self, number, expect):
+        """Test to see if the outputs are created"""
+        self.assertModule('v.in.lidar', input=self.las_file,
+            output=self.imported_points, flags='bt', preserve=number)
+        self.assertVectorExists(self.imported_points)
+        self.assertVectorFitsTopoInfo(
+            vector=self.imported_points,
+            reference=dict(points=expect))
+
+    def offset_number(self, number, expect):
+        """Test to see if the outputs are created"""
+        self.assertModule('v.in.lidar', input=self.las_file,
+            output=self.imported_points, flags='bt', offset=number)
+        self.assertVectorExists(self.imported_points)
+        self.assertVectorFitsTopoInfo(
+            vector=self.imported_points,
+            reference=dict(points=expect))
+
+    def limit_number(self, number, expect):
+        """Test to see if the outputs are created"""
+        self.assertModule('v.in.lidar', input=self.las_file,
+            output=self.imported_points, flags='bt', limit=number)
+        self.assertVectorExists(self.imported_points)
+        self.assertVectorFitsTopoInfo(
+            vector=self.imported_points,
+            reference=dict(points=expect))
+
+    def test_decimated_skip_2(self):
+        """Test to see if the outputs are created"""
+        self.skip_number(number=2, expect=self.npoints / 2)
+
+    def test_decimated_skip_4(self):
+        """Test to see if the outputs are created"""
+        self.skip_number(number=4, expect=0.75 * self.npoints)
+
+    def test_decimated_skip_10(self):
+        """Test to see if the outputs are created"""
+        self.skip_number(number=10, expect=0.9 * self.npoints)
+
+    def test_decimated_preserve_2(self):
+        """Test to see if the outputs are created"""
+        self.preserve_number(number=2, expect=self.npoints / 2)
+
+    def test_decimated_preserve_10(self):
+        """Test to see if the outputs are created"""
+        self.preserve_number(number=10, expect=self.npoints / 10)
+
+    def test_decimated_offset_105(self):
+        """Test to see if the outputs are created"""
+        self.offset_number(number=105, expect=self.npoints - 105)
+
+    def test_decimated_limit_105(self):
+        """Test to see if the outputs are created"""
+        self.limit_number(number=105, expect=105)
+
+    def test_offset_preserve(self):
+        """Test to see if the outputs are created"""
+        self.assertModule('v.in.lidar', input=self.las_file,
+            output=self.imported_points, flags='bt',
+            offset=105, preserve=10)
+        self.assertVectorExists(self.imported_points)
+        self.assertVectorFitsTopoInfo(
+            vector=self.imported_points,
+            reference=dict(points=(self.npoints - 105) / 10))
+
+    def test_limit_skip(self):
+        """Test to see if the outputs are created"""
+        self.assertModule('v.in.lidar', input=self.las_file,
+            output=self.imported_points, flags='bt',
+            limit=105, skip=10)
+        self.assertVectorExists(self.imported_points)
+        self.assertVectorFitsTopoInfo(
+            vector=self.imported_points,
+            reference=dict(points=105))
+
+    def test_offset_limit_skip(self):
+        """Test to see if the outputs are created"""
+        self.assertModule('v.in.lidar', input=self.las_file,
+            output=self.imported_points, flags='bt',
+            offset=50, skip=5, limit=self.npoints - 1)
+        self.assertVectorExists(self.imported_points)
+        self.assertVectorFitsTopoInfo(
+            vector=self.imported_points,
+            reference=dict(points=0.8 * (self.npoints - 50)))
+
+
+if __name__ == '__main__':
+    test()



More information about the grass-commit mailing list