Browse Source

pygrass: Add tests for geometry attrs (set/get item methods)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@66471 15284696-431f-4ddb-bdfa-cd5b030d7da7
Pietro Zambelli 9 years ago
parent
commit
85898a19ee
1 changed files with 81 additions and 0 deletions
  1. 81 0
      lib/python/pygrass/vector/testsuite/test_geometry_attrs.py

+ 81 - 0
lib/python/pygrass/vector/testsuite/test_geometry_attrs.py

@@ -0,0 +1,81 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Thu Jun 19 14:13:53 2014
+
+@author: pietro
+"""
+import sys
+import unittest
+import numpy as np
+
+from grass.gunittest.case import TestCase
+from grass.gunittest.main import test
+
+import grass.lib.vector as libvect
+from grass.script.core import run_command
+
+from grass.pygrass.vector import VectorTopo
+
+
+class GeometryAttrsTestCase(TestCase):
+
+    tmpname = "GeometryAttrsCase_map"
+
+    @classmethod
+    def setUpClass(cls):
+
+        from grass.pygrass import utils
+        utils.create_test_vector_map(cls.tmpname)
+
+        cls.vect = None
+        cls.vect = VectorTopo(cls.tmpname)
+        cls.vect.open('r')
+        cls.c_mapinfo = cls.vect.c_mapinfo
+
+        cls.attrs = cls.vect[1].attrs
+
+    @classmethod
+    def tearDownClass(cls):
+        cls.attrs = None
+        if cls.vect is not None:
+            cls.vect.close()
+            cls.c_mapinfo = None
+
+        """Remove the generated vector map, if exist"""
+        cls.runModule("g.remove", flags='f', type='vector',
+                      name=cls.tmpname)
+
+    def test_getitem(self):
+        """Test __getitem__ magic method"""
+        self.assertEqual(self.attrs['name'], u'point')
+        self.assertEqual(self.attrs['value'], 1.0)
+        self.assertTupleEqual(self.attrs['name', 'value'], (u'point', 1.0))
+
+        with self.assertRaises(ValueError) as cm:
+            self.attrs['not_existing_column_name']
+
+        self.assertEqual(cm.exception.message,
+                         u"The SQL is not correct:\n"
+                         u"'SELECT not_existing_column_name FROM "
+                         u"GeometryAttrsCase_map WHERE cat=1;',"
+                         u"\nvalues: None,\n"
+                         u"SQL error: no such column: "
+                         u"not_existing_column_name")
+
+
+    def test_setitem(self):
+        """Test __setitem__ magic method"""
+        newname = 'setitem_point_1'
+        newvalue = 100.0
+        newpairs = ('setitem_point_2', 1000.)
+
+        self.attrs.__setitem__('name', newname)
+        self.assertEqual(self.attrs['name'], newname)
+        self.attrs.__setitem__('value', newvalue)
+        self.assertEqual(self.attrs['value'], newvalue)
+        self.attrs.__setitem__(('name', 'value'), newpairs)
+        self.assertEqual(self.attrs['name', 'value'], newpairs)
+
+
+if __name__ == '__main__':
+    test()