test_pygrass_raster.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # -*- coding: utf-8 -*-
  2. from grass.exceptions import OpenError
  3. from grass.gunittest.case import TestCase
  4. from grass.gunittest.main import test
  5. from grass.pygrass.raster import RasterRow
  6. class RasterRowTestCase(TestCase):
  7. name = "RasterRowTestCase_map"
  8. @classmethod
  9. def setUpClass(cls):
  10. """Create test raster map and region"""
  11. cls.use_temp_region()
  12. cls.runModule("g.region", n=40, s=0, e=40, w=0, res=10)
  13. cls.runModule("r.mapcalc", expression="%s = row() + (10.0 * col())" % (cls.name),
  14. overwrite=True)
  15. @classmethod
  16. def tearDownClass(cls):
  17. """Remove the generated vector map, if exist"""
  18. cls.runModule("g.remove", flags='f', type='raster',
  19. name=cls.name)
  20. cls.del_temp_region()
  21. def test_type(self):
  22. r = RasterRow(self.name)
  23. r.open(mode='r')
  24. self.assertTrue(r.mtype, 'DCELL')
  25. r.close()
  26. def test_isopen(self):
  27. r = RasterRow(self.name)
  28. self.assertFalse(r.is_open())
  29. r.open(mode='r')
  30. self.assertTrue(r.is_open())
  31. r.close()
  32. self.assertFalse(r.is_open())
  33. def test_name(self):
  34. r = RasterRow(self.name)
  35. r.open(mode='r')
  36. self.assertEqual(r.name, self.name)
  37. fullname = "{name}@{mapset}".format(name=r.name, mapset=r.mapset)
  38. self.assertEqual(r.fullname(), fullname)
  39. r.close()
  40. def test_exist(self):
  41. notexist = RasterRow(self.name + 'notexist')
  42. self.assertFalse(notexist.exist())
  43. exist = RasterRow(self.name)
  44. self.assertTrue(exist.exist())
  45. def test_open_r(self):
  46. notexist = RasterRow(self.name + 'notexist')
  47. with self.assertRaises(OpenError):
  48. # raster does not exist
  49. notexist.open(mode='r')
  50. r = RasterRow(self.name)
  51. r.open(mode='r', mtype='FCELL')
  52. # ignore the mtype if is open in read mode
  53. self.assertEqual(r.mtype, 'DCELL')
  54. r.close()
  55. def test_open_w(self):
  56. r = RasterRow(self.name)
  57. with self.assertRaises(OpenError):
  58. # raster type is not defined!
  59. r.open(mode='w')
  60. with self.assertRaises(OpenError):
  61. # raster already exist
  62. r.open(mode='w', mtype='DCELL')
  63. # open in write mode and overwrite
  64. r.open(mode='w', mtype='DCELL', overwrite=True)
  65. self.assertTrue(r.mtype, 'DCELL')
  66. r.close()
  67. def test_row_range(self):
  68. r = RasterRow(self.name)
  69. with self.assertRaises(IndexError):
  70. # Map is not open yet
  71. r[1]
  72. with self.assertRaises(IndexError):
  73. # Index is out of range
  74. r.open()
  75. r[9999]
  76. r.close()
  77. if __name__ == '__main__':
  78. test()