diff 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
line wrap: on
line diff
--- a/test/db_test_base.py	Fri Dec 09 10:52:59 2016 +0100
+++ b/test/db_test_base.py	Mon Dec 12 13:53:47 2016 +0100
@@ -80,9 +80,11 @@
     status.setkey("name")
     priority = module.Class(db, "priority", name=String(), order=String())
     priority.setkey("name")
-    user = module.Class(db, "user", username=String(), password=Password(quiet=True),
-                        assignable=Boolean(quiet=True), age=Number(quiet=True), roles=String(), address=String(),
-                        rating=Integer(quiet=True), supervisor=Link('user'),realname=String(quiet=True))
+    user = module.Class(db, "user", username=String(),
+        password=Password(quiet=True), assignable=Boolean(quiet=True),
+        age=Number(quiet=True), roles=String(), address=String(),
+        rating=Integer(quiet=True), supervisor=Link('user'),
+        realname=String(quiet=True), longnumber=Number(use_double=True))
     user.setkey("username")
     file = module.FileClass(db, "file", name=String(), type=String(),
         comment=String(indexme="yes"), fooz=Password())
@@ -92,18 +94,16 @@
     mynosy = Multilink("user")
     mynosy.quiet = True
     issue = module.IssueClass(db, "issue", title=String(indexme="yes"),
-                              status=Link("status"), nosy=mynosy, deadline=Date(quiet=True),
-                              foo=Interval(quiet=True, default_value=date.Interval('-1w')), files=Multilink("file"), assignedto=Link('user', quiet=True),
-        priority=Link('priority'), spam=Multilink('msg'),
-        feedback=Link('msg'))
+        status=Link("status"), nosy=mynosy, deadline=Date(quiet=True),
+        foo=Interval(quiet=True, default_value=date.Interval('-1w')),
+        files=Multilink("file"), assignedto=Link('user', quiet=True),
+        priority=Link('priority'), spam=Multilink('msg'), feedback=Link('msg'))
     stuff = module.Class(db, "stuff", stuff=String())
     session = module.Class(db, 'session', title=String())
     msg = module.FileClass(db, "msg", date=Date(),
-                           author=Link("user", do_journal='no'),
-                           files=Multilink('file'), inreplyto=String(),
-                           messageid=String(),
-                           recipients=Multilink("user", do_journal='no')
-                           )
+        author=Link("user", do_journal='no'), files=Multilink('file'),
+        inreplyto=String(), messageid=String(),
+        recipients=Multilink("user", do_journal='no'))
     session.disableJournalling()
     db.post_init()
     if create:
@@ -538,6 +538,34 @@
         self.db.user.set(nid, age=None)
         self.assertEqual(self.db.user.get(nid, "age"), None)
 
+    # Long number
+    def testDoubleChange(self):
+        lnl = 100.12345678
+        ln  = 100.123456789
+        lng = 100.12345679
+        nid = self.db.user.create(username='foo', longnumber=ln)
+        self.assertEqual(self.db.user.get(nid, 'longnumber') < lng, True)
+        self.assertEqual(self.db.user.get(nid, 'longnumber') > lnl, True)
+        lnl = 1.0012345678e55
+        ln  = 1.00123456789e55
+        lng = 1.0012345679e55
+        self.db.user.set(nid, longnumber=ln)
+        self.assertEqual(self.db.user.get(nid, 'longnumber') < lng, True)
+        self.assertEqual(self.db.user.get(nid, 'longnumber') > lnl, True)
+        self.db.user.set(nid, longnumber=-1)
+        self.assertEqual(self.db.user.get(nid, 'longnumber'), -1)
+        self.db.user.set(nid, longnumber=0)
+        self.assertEqual(self.db.user.get(nid, 'longnumber'), 0)
+
+        nid = self.db.user.create(username='bar', longnumber=0)
+        self.assertEqual(self.db.user.get(nid, 'longnumber'), 0)
+
+    def testDoubleUnset(self):
+        nid = self.db.user.create(username='foo', longnumber=1.2345)
+        self.db.user.set(nid, longnumber=None)
+        self.assertEqual(self.db.user.get(nid, "longnumber"), None)
+
+
     # Integer
     def testIntegerChange(self):
         nid = self.db.user.create(username='foo', rating=100)

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