# -*- coding: utf-8 -*- from grass.exceptions import OpenError from grass.gunittest.case import TestCase from grass.gunittest.main import test from grass.pygrass.raster import RasterRow class RasterRowTestCase(TestCase): name = "RasterRowTestCase_map" @classmethod def setUpClass(cls): """Create test raster map and region""" cls.use_temp_region() cls.runModule("g.region", n=40, s=0, e=40, w=0, res=10) cls.runModule("r.mapcalc", expression="%s = row() + (10.0 * col())" % (cls.name), overwrite=True) @classmethod def tearDownClass(cls): """Remove the generated vector map, if exist""" cls.runModule("g.remove", flags='f', type='raster', name=cls.name) cls.del_temp_region() def test_type(self): r = RasterRow(self.name) r.open(mode='r') self.assertTrue(r.mtype, 'DCELL') r.close() def test_isopen(self): r = RasterRow(self.name) self.assertFalse(r.is_open()) r.open(mode='r') self.assertTrue(r.is_open()) r.close() self.assertFalse(r.is_open()) def test_name(self): r = RasterRow(self.name) r.open(mode='r') self.assertEqual(r.name, self.name) fullname = "{name}@{mapset}".format(name=r.name, mapset=r.mapset) self.assertEqual(r.fullname(), fullname) r.close() def test_exist(self): notexist = RasterRow(self.name + 'notexist') self.assertFalse(notexist.exist()) exist = RasterRow(self.name) self.assertTrue(exist.exist()) def test_open_r(self): notexist = RasterRow(self.name + 'notexist') with self.assertRaises(OpenError): # raster does not exist notexist.open(mode='r') r = RasterRow(self.name) r.open(mode='r', mtype='FCELL') # ignore the mtype if is open in read mode self.assertEqual(r.mtype, 'DCELL') r.close() def test_open_w(self): r = RasterRow(self.name) with self.assertRaises(OpenError): # raster type is not defined! r.open(mode='w') with self.assertRaises(OpenError): # raster already exist r.open(mode='w', mtype='DCELL') # open in write mode and overwrite r.open(mode='w', mtype='DCELL', overwrite=True) self.assertTrue(r.mtype, 'DCELL') r.close() def test_row_range(self): r = RasterRow(self.name) with self.assertRaises(IndexError): # Map is not open yet r[1] with self.assertRaises(IndexError): # Index is out of range r.open() r[9999] r.close() if __name__ == '__main__': test()