Mercurial > p > roundup > code
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
