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