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

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