comparison test/db_test_base.py @ 5175:e1e40674a0bc

Implement double-precision Number .. as an option to the 'Number' property.
author Ralf Schlatterbeck <rsc@runtux.com>
date Mon, 12 Dec 2016 13:53:47 +0100
parents 6ae426092d7d
children 462b0f76fce8
comparison
equal deleted inserted replaced
5174:a76fbb9f5535 5175:e1e40674a0bc
78 mls.setkey("name") 78 mls.setkey("name")
79 status = module.Class(db, "status", name=String(), mls=Multilink("mls")) 79 status = module.Class(db, "status", name=String(), mls=Multilink("mls"))
80 status.setkey("name") 80 status.setkey("name")
81 priority = module.Class(db, "priority", name=String(), order=String()) 81 priority = module.Class(db, "priority", name=String(), order=String())
82 priority.setkey("name") 82 priority.setkey("name")
83 user = module.Class(db, "user", username=String(), password=Password(quiet=True), 83 user = module.Class(db, "user", username=String(),
84 assignable=Boolean(quiet=True), age=Number(quiet=True), roles=String(), address=String(), 84 password=Password(quiet=True), assignable=Boolean(quiet=True),
85 rating=Integer(quiet=True), supervisor=Link('user'),realname=String(quiet=True)) 85 age=Number(quiet=True), roles=String(), address=String(),
86 rating=Integer(quiet=True), supervisor=Link('user'),
87 realname=String(quiet=True), longnumber=Number(use_double=True))
86 user.setkey("username") 88 user.setkey("username")
87 file = module.FileClass(db, "file", name=String(), type=String(), 89 file = module.FileClass(db, "file", name=String(), type=String(),
88 comment=String(indexme="yes"), fooz=Password()) 90 comment=String(indexme="yes"), fooz=Password())
89 file_nidx = module.FileClass(db, "file_nidx", content=String(indexme='no')) 91 file_nidx = module.FileClass(db, "file_nidx", content=String(indexme='no'))
90 92
91 # initialize quiet mode a second way without using Multilink("user", quiet=True) 93 # initialize quiet mode a second way without using Multilink("user", quiet=True)
92 mynosy = Multilink("user") 94 mynosy = Multilink("user")
93 mynosy.quiet = True 95 mynosy.quiet = True
94 issue = module.IssueClass(db, "issue", title=String(indexme="yes"), 96 issue = module.IssueClass(db, "issue", title=String(indexme="yes"),
95 status=Link("status"), nosy=mynosy, deadline=Date(quiet=True), 97 status=Link("status"), nosy=mynosy, deadline=Date(quiet=True),
96 foo=Interval(quiet=True, default_value=date.Interval('-1w')), files=Multilink("file"), assignedto=Link('user', quiet=True), 98 foo=Interval(quiet=True, default_value=date.Interval('-1w')),
97 priority=Link('priority'), spam=Multilink('msg'), 99 files=Multilink("file"), assignedto=Link('user', quiet=True),
98 feedback=Link('msg')) 100 priority=Link('priority'), spam=Multilink('msg'), feedback=Link('msg'))
99 stuff = module.Class(db, "stuff", stuff=String()) 101 stuff = module.Class(db, "stuff", stuff=String())
100 session = module.Class(db, 'session', title=String()) 102 session = module.Class(db, 'session', title=String())
101 msg = module.FileClass(db, "msg", date=Date(), 103 msg = module.FileClass(db, "msg", date=Date(),
102 author=Link("user", do_journal='no'), 104 author=Link("user", do_journal='no'), files=Multilink('file'),
103 files=Multilink('file'), inreplyto=String(), 105 inreplyto=String(), messageid=String(),
104 messageid=String(), 106 recipients=Multilink("user", do_journal='no'))
105 recipients=Multilink("user", do_journal='no')
106 )
107 session.disableJournalling() 107 session.disableJournalling()
108 db.post_init() 108 db.post_init()
109 if create: 109 if create:
110 user.create(username="admin", roles='Admin', 110 user.create(username="admin", roles='Admin',
111 password=password.Password('sekrit')) 111 password=password.Password('sekrit'))
535 535
536 def testNumberUnset(self): 536 def testNumberUnset(self):
537 nid = self.db.user.create(username='foo', age=1) 537 nid = self.db.user.create(username='foo', age=1)
538 self.db.user.set(nid, age=None) 538 self.db.user.set(nid, age=None)
539 self.assertEqual(self.db.user.get(nid, "age"), None) 539 self.assertEqual(self.db.user.get(nid, "age"), None)
540
541 # Long number
542 def testDoubleChange(self):
543 lnl = 100.12345678
544 ln = 100.123456789
545 lng = 100.12345679
546 nid = self.db.user.create(username='foo', longnumber=ln)
547 self.assertEqual(self.db.user.get(nid, 'longnumber') < lng, True)
548 self.assertEqual(self.db.user.get(nid, 'longnumber') > lnl, True)
549 lnl = 1.0012345678e55
550 ln = 1.00123456789e55
551 lng = 1.0012345679e55
552 self.db.user.set(nid, longnumber=ln)
553 self.assertEqual(self.db.user.get(nid, 'longnumber') < lng, True)
554 self.assertEqual(self.db.user.get(nid, 'longnumber') > lnl, True)
555 self.db.user.set(nid, longnumber=-1)
556 self.assertEqual(self.db.user.get(nid, 'longnumber'), -1)
557 self.db.user.set(nid, longnumber=0)
558 self.assertEqual(self.db.user.get(nid, 'longnumber'), 0)
559
560 nid = self.db.user.create(username='bar', longnumber=0)
561 self.assertEqual(self.db.user.get(nid, 'longnumber'), 0)
562
563 def testDoubleUnset(self):
564 nid = self.db.user.create(username='foo', longnumber=1.2345)
565 self.db.user.set(nid, longnumber=None)
566 self.assertEqual(self.db.user.get(nid, "longnumber"), None)
567
540 568
541 # Integer 569 # Integer
542 def testIntegerChange(self): 570 def testIntegerChange(self):
543 nid = self.db.user.create(username='foo', rating=100) 571 nid = self.db.user.create(username='foo', rating=100)
544 self.assertEqual(100, self.db.user.get(nid, 'rating')) 572 self.assertEqual(100, self.db.user.get(nid, 'rating'))

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