Mercurial > p > roundup > code
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 5168:9e41254430fe | 5169:7b74a5addfea |
|---|---|
| 26 'link': hyperdb.Link('test'), | 26 'link': hyperdb.Link('test'), |
| 27 'linkkeyonly': hyperdb.Link('test', try_id_parsing='no'), | 27 'linkkeyonly': hyperdb.Link('test', try_id_parsing='no'), |
| 28 'link2': hyperdb.Link('test2'), | 28 'link2': hyperdb.Link('test2'), |
| 29 'multilink': hyperdb.Multilink('test'), | 29 'multilink': hyperdb.Multilink('test'), |
| 30 'multilink2': hyperdb.Multilink('test2'), | 30 'multilink2': hyperdb.Multilink('test2'), |
| 31 'multilink3': hyperdb.Multilink('test', try_id_parsing='no'), | |
| 31 } | 32 } |
| 32 def getkey(self): | 33 def getkey(self): |
| 33 return 'string' | 34 return 'string' |
| 34 def lookup(self, value): | 35 def lookup(self, value): |
| 35 if value == 'valid': | 36 if value == 'valid': |
| 36 return '1' | 37 return '1' |
| 38 if value == '2valid': | |
| 39 return '2' | |
| 37 raise KeyError | 40 raise KeyError |
| 38 def get(self, nodeid, propname): | 41 def get(self, nodeid, propname): |
| 39 assert propname.startswith('multilink') | 42 assert propname.startswith('multilink') |
| 40 assert nodeid is not None | 43 assert nodeid is not None |
| 41 return ['2', '3'] | 44 return ['2', '3'] |
| 137 self.assertEqual(self._test('multilink', '+valid,-3', '1'), ['1', '2']) | 140 self.assertEqual(self._test('multilink', '+valid,-3', '1'), ['1', '2']) |
| 138 self.assertEqual(self._test('multilink', '+1', None), ['1']) | 141 self.assertEqual(self._test('multilink', '+1', None), ['1']) |
| 139 self.assertEqual(self._test('multilink', '+valid', None), ['1']) | 142 self.assertEqual(self._test('multilink', '+valid', None), ['1']) |
| 140 self.assertEqual(self._test('multilink', '', None), []) | 143 self.assertEqual(self._test('multilink', '', None), []) |
| 141 | 144 |
| 145 def testMultilink3(self): | |
| 146 # note that all +1, -2 type references will fail with exceptions | |
| 147 # '+1' is an id and try_id_parsing is set to no for multilink3 | |
| 148 # and the 'name/key' 1 or 2 doesn't exist. | |
| 149 | |
| 150 self.assertEqual(self._test('multilink3', '', '1'), []) | |
| 151 | |
| 152 with self.assertRaises(hyperdb.HyperdbValueError) as cm: | |
| 153 self._test('multilink3', '1', '1') | |
| 154 self.assertEqual(cm.exception.message, | |
| 155 "property multilink3: '1' is not a test.") | |
| 156 | |
| 157 self.assertEqual(self._test('multilink3', 'valid', '1'), ['1']) | |
| 158 | |
| 159 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'multilink3', | |
| 160 'invalid', '1') | |
| 161 | |
| 162 with self.assertRaises(hyperdb.HyperdbValueError) as cm: | |
| 163 self._test('multilink3', '+1', '1') | |
| 164 self.assertEqual(cm.exception.message, | |
| 165 "property multilink3: '1' is not a test.") | |
| 166 | |
| 167 self.assertEqual(self._test('multilink3', '+valid', '1'), | |
| 168 ['1', '2', '3']) | |
| 169 | |
| 170 with self.assertRaises(hyperdb.HyperdbValueError) as cm: | |
| 171 self._test('multilink3', '+1,-2', '1') | |
| 172 self.assertEqual(cm.exception.message, | |
| 173 "property multilink3: '1' is not a test.") | |
| 174 | |
| 175 with self.assertRaises(hyperdb.HyperdbValueError) as cm: | |
| 176 self._test('multilink3', '+valid,-2', '1') | |
| 177 self.assertEqual(cm.exception.message, | |
| 178 "property multilink3: '2' is not a test.") | |
| 179 | |
| 180 self.assertEqual(self._test('multilink3', '+valid,-2valid', '1'), ['1', '3']) | |
| 181 | |
| 182 self.assertEqual(self._test('multilink3', '+valid', None), ['1']) | |
| 183 | |
| 184 self.assertEqual(self._test('multilink3', '', None), []) | |
| 185 | |
| 186 with self.assertRaises(hyperdb.HyperdbValueError) as cm: | |
| 187 result = self._test('multilink3', '-valid', None) | |
| 188 self.assertEqual(cm.exception.message, | |
| 189 "property multilink3: 'valid' is not currently an element") | |
| 190 | |
| 142 # vim: set filetype=python ts=4 sw=4 et si | 191 # vim: set filetype=python ts=4 sw=4 et si |
