test_pygrass_raster.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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(
  14. "r.mapcalc",
  15. expression="%s = row() + (10.0 * col())" % (cls.name),
  16. overwrite=True,
  17. )
  18. @classmethod
  19. def tearDownClass(cls):
  20. """Remove the generated vector map, if exist"""
  21. cls.runModule("g.remove", flags="f", type="raster", name=cls.name)
  22. cls.del_temp_region()
  23. def test_type(self):
  24. r = RasterRow(self.name)
  25. r.open(mode="r")
  26. self.assertTrue(r.mtype, "DCELL")
  27. r.close()
  28. def test_isopen(self):
  29. r = RasterRow(self.name)
  30. self.assertFalse(r.is_open())
  31. r.open(mode="r")
  32. self.assertTrue(r.is_open())
  33. r.close()
  34. self.assertFalse(r.is_open())
  35. def test_name(self):
  36. r = RasterRow(self.name)
  37. r.open(mode="r")
  38. self.assertEqual(r.name, self.name)
  39. fullname = "{name}@{mapset}".format(name=r.name, mapset=r.mapset)
  40. self.assertEqual(r.fullname(), fullname)
  41. r.close()
  42. def test_exist(self):
  43. notexist = RasterRow(self.name + "notexist")
  44. self.assertFalse(notexist.exist())
  45. exist = RasterRow(self.name)
  46. self.assertTrue(exist.exist())
  47. def test_open_r(self):
  48. notexist = RasterRow(self.name + "notexist")
  49. with self.assertRaises(OpenError):
  50. # raster does not exist
  51. notexist.open(mode="r")
  52. r = RasterRow(self.name)
  53. r.open(mode="r", mtype="FCELL")
  54. # ignore the mtype if is open in read mode
  55. self.assertEqual(r.mtype, "DCELL")
  56. r.close()
  57. def test_open_w(self):
  58. r = RasterRow(self.name)
  59. with self.assertRaises(OpenError):
  60. # raster type is not defined!
  61. r.open(mode="w")
  62. with self.assertRaises(OpenError):
  63. # raster already exist
  64. r.open(mode="w", mtype="DCELL")
  65. # open in write mode and overwrite
  66. r.open(mode="w", mtype="DCELL", overwrite=True)
  67. self.assertTrue(r.mtype, "DCELL")
  68. r.close()
  69. def test_row_range(self):
  70. r = RasterRow(self.name)
  71. with self.assertRaises(IndexError):
  72. # Map is not open yet
  73. r[1]
  74. with self.assertRaises(IndexError):
  75. # Index is out of range
  76. r.open()
  77. r[9999]
  78. r.close()
  79. if __name__ == "__main__":
  80. test()