""" Name: v.clip test Purpose: Tests v.clip input parsing. Uses NC Basic data set. Author: Luca Delucchi Copyright: (C) 2017 by Luca Delucchi 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 TestClipling(TestCase): inpclip = "zipcodes" inpoint = "hospitals" inlines = "roadsmajor" inpoly = "geology" outreg = "hospreg" outclip = "hospzip" outline = "roadsgarner" outpoly = "geogarner" outdiss = "geodiss" garner = "garner" @classmethod def setUpClass(cls): """Ensures expected computational region and generated data""" cls.use_temp_region() cls.runModule("g.region", vector=cls.inpclip) cls.runModule( "v.extract", input=cls.inpclip, output=cls.garner, where="ZIPNAME = '{na}'".format(na=cls.garner.upper()), ) @classmethod def tearDownClass(cls): """Remove the temporary region and generated data""" cls.runModule( "g.remove", flags="f", type="vector", name=( cls.outclip, cls.outreg, cls.garner, cls.outline, cls.outpoly, cls.outdiss, ), ) cls.del_temp_region() def test_points(self): """Test clipping points""" self.assertModule( "v.clip", input=self.inpoint, clip=self.inpclip, output=self.outclip ) self.assertVectorExists(self.outclip) topology = dict(points=8) self.assertVectorFitsTopoInfo(self.outclip, topology) def test_region(self): """Test clipping point by region""" self.assertModule( "v.clip", input=self.inpoint, clip=self.inpclip, output=self.outreg, flags="r", ) self.assertVectorExists(self.outreg) topology = dict(points=13) self.assertVectorFitsTopoInfo(self.outreg, topology) def test_lines(self): """Test clipping lines""" self.assertModule( "v.clip", input=self.inlines, clip=self.garner, output=self.outline ) self.assertVectorExists(self.outline) topology = dict(lines=13, nodes=16) self.assertVectorFitsTopoInfo(self.outline, topology) def test_poly(self): """Test clipping polygon without dissolve""" self.assertModule( "v.clip", input=self.inpoly, clip=self.inpclip, output=self.outpoly ) self.assertVectorExists(self.outpoly) topology = dict(areas=275) self.assertVectorFitsTopoInfo(self.outpoly, topology) def test_poly_diss(self): """Test clipping polygon without dissolve""" self.assertModule( "v.clip", input=self.inpoly, clip=self.inpclip, output=self.outdiss, flags="d", ) self.assertVectorExists(self.outdiss) topology = dict(areas=276) self.assertVectorFitsTopoInfo(self.outdiss, topology) if __name__ == "__main__": test()