comparison test/db_test_base.py @ 3869:16faac822fe5

Allow Multilinks to take any iterable Change create_inner & set_inner to allow any iterable for Multilinks. Added a test to make sure they work and that we raise an exception for non-iterables.
author Justus Pendleton <jpend@users.sourceforge.net>
date Wed, 29 Aug 2007 16:40:20 +0000
parents cf8b716d9ac2
children f0eb93f25d1c
comparison
equal deleted inserted replaced
3868:483c3e335a54 3869:16faac822fe5
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
17 # 17 #
18 # $Id: db_test_base.py,v 1.85 2007-04-11 20:04:06 forsberg Exp $ 18 # $Id: db_test_base.py,v 1.86 2007-08-29 16:40:20 jpend Exp $
19 19
20 import unittest, os, shutil, errno, imp, sys, time, pprint, sets 20 import unittest, os, shutil, errno, imp, sys, time, pprint, sets
21 21
22 from roundup.hyperdb import String, Password, Link, Multilink, Date, \ 22 from roundup.hyperdb import String, Password, Link, Multilink, Date, \
23 Interval, DatabaseError, Boolean, Number, Node 23 Interval, DatabaseError, Boolean, Number, Node
250 self.db.issue.set(nid, nosy=[u1,u2]) 250 self.db.issue.set(nid, nosy=[u1,u2])
251 if commit: self.db.commit() 251 if commit: self.db.commit()
252 l = [u1,u2]; l.sort() 252 l = [u1,u2]; l.sort()
253 m = self.db.issue.get(nid, "nosy"); m.sort() 253 m = self.db.issue.get(nid, "nosy"); m.sort()
254 self.assertEqual(l, m) 254 self.assertEqual(l, m)
255
256 def testMultilinkChangeIterable(self):
257 for commit in (0,1):
258 # invalid nosy value assertion
259 self.assertRaises(IndexError, self.db.issue.create, title='spam',
260 nosy=['foo%s'%commit])
261 # invalid type for nosy create
262 self.assertRaises(TypeError, self.db.issue.create, title='spam',
263 nosy=1)
264 u1 = self.db.user.create(username='foo%s'%commit)
265 u2 = self.db.user.create(username='bar%s'%commit)
266 nid = self.db.issue.create(title="spam", nosy=set(u1)) # set
267 if commit: self.db.commit()
268 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1])
269 self.assertRaises(TypeError, self.db.issue.set, nid,
270 nosy='invalid type')
271 self.db.issue.set(nid, nosy=tuple()) # tuple
272 if commit: self.db.commit()
273 self.assertEqual(self.db.issue.get(nid, "nosy"), [])
274 self.db.issue.set(nid, nosy=frozenset([u1,u2])) # frozenset
275 if commit: self.db.commit()
276 l = [u1,u2]; l.sort()
277 m = self.db.issue.get(nid, "nosy"); m.sort()
278 self.assertEqual(l, m)
279
255 280
256 # XXX one day, maybe... 281 # XXX one day, maybe...
257 # def testMultilinkOrdering(self): 282 # def testMultilinkOrdering(self):
258 # for i in range(10): 283 # for i in range(10):
259 # self.db.user.create(username='foo%s'%i) 284 # self.db.user.create(username='foo%s'%i)

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