@@ -28,12 +28,15 @@ def getprops(self):
2828 'link2' : hyperdb .Link ('test2' ),
2929 'multilink' : hyperdb .Multilink ('test' ),
3030 'multilink2' : hyperdb .Multilink ('test2' ),
31+ 'multilink3' : hyperdb .Multilink ('test' , try_id_parsing = 'no' ),
3132 }
3233 def getkey (self ):
3334 return 'string'
3435 def lookup (self , value ):
3536 if value == 'valid' :
3637 return '1'
38+ if value == '2valid' :
39+ return '2'
3740 raise KeyError
3841 def get (self , nodeid , propname ):
3942 assert propname .startswith ('multilink' )
@@ -139,4 +142,50 @@ def testMultilink(self):
139142 self .assertEqual (self ._test ('multilink' , '+valid' , None ), ['1' ])
140143 self .assertEqual (self ._test ('multilink' , '' , None ), [])
141144
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+
142191# vim: set filetype=python ts=4 sw=4 et si
0 commit comments