diff test/test_hyperdbvals.py @ 5169:7b74a5addfea

fix multilink support of try_id_parsing=no and add test for multilink cases.
author John Rouillard <rouilj@ieee.org>
date Fri, 02 Sep 2016 23:45:57 -0400
parents e424987d294a
children 2b4f606d8e72
line wrap: on
line diff
--- a/test/test_hyperdbvals.py	Thu Sep 01 21:26:59 2016 -0400
+++ b/test/test_hyperdbvals.py	Fri Sep 02 23:45:57 2016 -0400
@@ -28,12 +28,15 @@
             'link2': hyperdb.Link('test2'),
             'multilink': hyperdb.Multilink('test'),
             'multilink2': hyperdb.Multilink('test2'),
+            'multilink3': hyperdb.Multilink('test', try_id_parsing='no'),
         }
     def getkey(self):
         return 'string'
     def lookup(self, value):
         if value == 'valid':
             return '1'
+        if value == '2valid':
+            return '2'
         raise KeyError
     def get(self, nodeid, propname):
         assert propname.startswith('multilink')
@@ -139,4 +142,50 @@
         self.assertEqual(self._test('multilink', '+valid', None), ['1'])
         self.assertEqual(self._test('multilink', '', None), [])
 
+    def testMultilink3(self):
+        # note that all +1, -2 type references will fail with exceptions
+        # '+1' is an id and try_id_parsing is set to no for multilink3
+        # and the 'name/key' 1 or 2 doesn't exist.
+
+        self.assertEqual(self._test('multilink3', '', '1'), [])
+
+        with self.assertRaises(hyperdb.HyperdbValueError) as cm:
+            self._test('multilink3', '1', '1')
+        self.assertEqual(cm.exception.message,
+                         "property multilink3: '1' is not a test.")
+
+        self.assertEqual(self._test('multilink3', 'valid', '1'), ['1'])
+
+        self.assertRaises(hyperdb.HyperdbValueError, self._test, 'multilink3',
+            'invalid', '1')
+
+        with self.assertRaises(hyperdb.HyperdbValueError) as cm:
+            self._test('multilink3', '+1', '1')
+        self.assertEqual(cm.exception.message,
+                         "property multilink3: '1' is not a test.")
+
+        self.assertEqual(self._test('multilink3', '+valid', '1'),
+                         ['1', '2', '3'])
+
+        with self.assertRaises(hyperdb.HyperdbValueError) as cm:
+            self._test('multilink3', '+1,-2', '1')
+        self.assertEqual(cm.exception.message,
+                         "property multilink3: '1' is not a test.")
+
+        with self.assertRaises(hyperdb.HyperdbValueError) as cm:
+            self._test('multilink3', '+valid,-2', '1')
+        self.assertEqual(cm.exception.message,
+                         "property multilink3: '2' is not a test.")
+
+        self.assertEqual(self._test('multilink3', '+valid,-2valid', '1'), ['1', '3'])
+
+        self.assertEqual(self._test('multilink3', '+valid', None), ['1'])
+
+        self.assertEqual(self._test('multilink3', '', None), [])
+
+        with self.assertRaises(hyperdb.HyperdbValueError) as cm:
+            result = self._test('multilink3', '-valid', None)
+        self.assertEqual(cm.exception.message,
+                   "property multilink3: 'valid' is not currently an element")
+
 # vim: set filetype=python ts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/