test_parser_json.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. """Test the JSON extension of the GRASS parser
  2. (C) 2014 by the GRASS Development Team
  3. This program is free software under the GNU General Public
  4. License (>=v2). Read the file COPYING that comes with GRASS
  5. for details.
  6. @author Soeren Gebbert
  7. """
  8. import subprocess
  9. from grass.gunittest.case import TestCase
  10. from grass.script import decode
  11. import json
  12. class TestParserJson(TestCase):
  13. def test_r_slope_aspect_json(self):
  14. args = ["r.slope.aspect",
  15. "elevation=elevation+https://storage.googleapis.com/graas-geodata/elev_ned_30m.tif",
  16. "slope=slope+GTiff",
  17. "aspect=aspect+GTiff", "--json"]
  18. inputs = [
  19. {"param": "elevation", "value": "elevation+https://storage.googleapis.com/graas-geodata/elev_ned_30m.tif"},
  20. {"param": "format", "value": "degrees"},
  21. {"param": "precision", "value": "FCELL"},
  22. {"param": "zscale", "value": "1.0"},
  23. {"param": "min_slope", "value": "0.0"}
  24. ]
  25. outputs = [
  26. {"export": {"format": "GTiff", "type": "raster"},
  27. "param": "slope", "value": "slope"},
  28. {"export": {"format": "GTiff", "type": "raster"},
  29. "param": "aspect", "value": "aspect"}
  30. ]
  31. stdout, stderr = subprocess.Popen(args, stdout=subprocess.PIPE).communicate()
  32. print(stdout)
  33. json_code = json.loads(decode(stdout))
  34. self.assertEqual(json_code["module"], "r.slope.aspect")
  35. self.assertEqual(len(json_code["inputs"]), 5)
  36. self.assertEqual(json_code["inputs"], inputs)
  37. self.assertEqual(json_code["outputs"], outputs)
  38. def test_v_out_ascii(self):
  39. args = ["v.out.ascii",
  40. "input=hospitals@PERMANENT",
  41. "output=myfile+TXT",
  42. "--json"]
  43. inputs = [
  44. {"param": "input", "value": "hospitals@PERMANENT"},
  45. {"param": "layer", "value": "1"},
  46. {"param": "type", "value": "point,line,boundary,centroid,area,face,kernel"},
  47. {"param": "format", "value": "point"},
  48. {"param": "separator", "value": "pipe"},
  49. {"param": "precision", "value": "8"}
  50. ]
  51. outputs = [
  52. {"export": {"format": "TXT", "type": "file"},
  53. "param": "output", "value": "$file::myfile"}
  54. ]
  55. stdout, stderr = subprocess.Popen(args, stdout=subprocess.PIPE).communicate()
  56. print(stdout)
  57. json_code = json.loads(decode(stdout))
  58. self.assertEqual(json_code["module"], "v.out.ascii")
  59. self.assertEqual(len(json_code["inputs"]), 6)
  60. self.assertEqual(json_code["inputs"], inputs)
  61. self.assertEqual(json_code["outputs"], outputs)
  62. def test_v_info(self):
  63. args = ["v.info",
  64. "map=hospitals@PERMANENT",
  65. "-c",
  66. "--json"]
  67. inputs = [
  68. {"param": "map", "value": "hospitals@PERMANENT"},
  69. {"param": "layer", "value": "1"}
  70. ]
  71. stdout, stderr = subprocess.Popen(args, stdout=subprocess.PIPE).communicate()
  72. print(stdout)
  73. json_code = json.loads(decode(stdout))
  74. self.assertEqual(json_code["module"], "v.info")
  75. self.assertEqual(len(json_code["inputs"]), 2)
  76. self.assertEqual(json_code["inputs"], inputs)
  77. if __name__ == '__main__':
  78. from grass.gunittest.main import test
  79. test()