1# -*- coding: utf-8 -*- 2""" 3Created on Thu Jul 30 18:27:22 2015 4 5@author: lucadelu 6""" 7from grass.gunittest.case import TestCase 8from grass.gunittest.main import test 9from numpy.random import random 10from grass.pygrass.raster import raster2numpy, numpy2raster, RasterRow 11 12 13def check_raster(name): 14 r = RasterRow(name) 15 try: 16 r.open(mode='r') 17 r.close() 18 return True 19 except: 20 return False 21 22 23class NumpyTestCase(TestCase): 24 25 name = "RasterRowTestCase_map" 26 27 @classmethod 28 def setUpClass(cls): 29 """Create test raster map and region""" 30 cls.use_temp_region() 31 cls.runModule("g.region", n=40, s=0, e=60, w=0, res=1) 32 cls.runModule("r.mapcalc", 33 expression="%s = float(row() + (10.0 * col()))" % (cls.name), 34 overwrite=True) 35 cls.numpy_obj = raster2numpy(cls.name) 36 37 @classmethod 38 def tearDownClass(cls): 39 """Remove the generated vector map, if exist""" 40 cls.runModule("g.remove", flags='f', type='raster', 41 name=cls.name) 42 cls.del_temp_region() 43 44 def test_type(self): 45 self.assertTrue(str(self.numpy_obj.dtype), 'float32') 46 47 def test_len(self): 48 self.assertTrue(len(self.numpy_obj), 40) 49 self.assertTrue(len(self.numpy_obj[0]), 60) 50 51 def test_write(self): 52 ran = random([40, 60]) 53 numpy2raster(ran, 'FCELL', self.name, True) 54 self.assertTrue(check_raster(self.name)) 55 56if __name__ == '__main__': 57 test() 58