Index: geniuswebcore/test/geniusweb/issuevalue/NumberValueTest.py
===================================================================
--- geniuswebcore/test/geniusweb/issuevalue/NumberValueTest.py	(revision 66)
+++ geniuswebcore/test/geniusweb/issuevalue/NumberValueTest.py	(revision 67)
@@ -1,6 +1,9 @@
 from _decimal import Decimal
+import json
+from typing import List, Any
 import unittest
 
 from pyson.ObjectMapper import ObjectMapper
+from unitpy.GeneralTests import GeneralTests
 
 from geniusweb.issuevalue.NumberValue import NumberValue
@@ -8,28 +11,71 @@
 
 
-class NumberValueTest(unittest.TestCase):
-    pyson=ObjectMapper()
-    val = NumberValue(Decimal('0.1237'))
-    val2 = NumberValue(Decimal('2'))
-    valjson = 0.1237
+class NumberValueTest(unittest.TestCase, GeneralTests[NumberValue]):
+    value =  NumberValue(Decimal("12.31"))
+    value1 =  NumberValue(Decimal("12.31"))
+    value1c = NumberValue(Decimal("1.231E+1"))
+    valueb =  NumberValue(Decimal("12.310000000000000001"))
+    serialized = "12.31"
 
-    def testSerialize(self):
-        print(str(self.pyson.toJson(self.val)))
-        self.assertEqual(self.valjson, self.pyson.toJson(self.val))
+    bigserialized = "8748703924870439218876954320948372058"
+    bigvalue = NumberValue(Decimal(bigserialized))
+    jackson = ObjectMapper()
+
+    def getGeneralTestData(self)->List[List[NumberValue]]:
+        return [ [self.value, self.value1, self.value1c], [self.valueb]]
+    
+    def  getGeneralTestStrings(self)->List[str]:
+        return ["12.31", "12.310000000000000001"]
+
+    def testSerialize(self) :
+        self.assertEquals(json.loads(self.serialized), self.jackson.toJson(self.value))
+
+    def testDeserialize(self):
+        self.assertEqual(self.value, self.jackson.parse(json.loads(self.serialized), NumberValue))
+
+    def  testDeserializeFromValue(self):
+        self.assertEqual(self.value, self.jackson.parse(json.loads(self.serialized), Value))
+
+    def testBigSerialize(self):
+        self.assertEqual(json.loads(self.bigserialized), self.jackson.toJson(self.bigvalue))
+
+    def testBigDeserialize(self):
+        self.assertEquals(self.bigvalue,
+                self.jackson.parse(json.loads(self.bigserialized), NumberValue))
+
+    def testSerializeShorts(self):
+        print(self.jackson.toJson([ 1, 2, 3, 4, 5 ]))
+
+    def testDeserializeShorts(self) :
+        list = self.jackson.parse(json.loads("[1,2,3,4,5]"),List[Any])
+        print(list)
+        print(list[0].__class__)
+
+    def testDeserializeMix(self):
+        list = self.jackson.parse(json.loads('["short",1,2,3,4,5]'), List[Any])
+        print(list)
+        print(list[0].__class__)
+
+    def testDeserializePlainNumber(self):
+        '''
+        Showing that we CAN deserialize big numbers without double quotes
+        correctly, if we tell jackson upfront that it's a BigDecimal.
+        '''
+        valstr = "483958743698732691487326987569213874694328974329874328947320984372498327493827432987231874681273648127";
+        val = self.jackson.parse(valstr, Decimal)
+        self.assertEqual(valstr, str(val))
+
+
+    def testNumberBlab(self):
+        # jackson.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
+        self.assertEqual(self.value, self.jackson.parse(json.loads("12.31"), Value))
         
-    def testDeserialize(self):
-        self.assertEqual(self.val, self.pyson.parse(self.valjson, Value))
-        
-    def testSerialize2(self):
-        print(str(self.pyson.toJson(NumberValue(Decimal("900")))))
-        
-    def testNonDecimal(self):
-        self.assertRaises(ValueError, lambda:NumberValue(1200))
+    def testNonNumber(self):
+        self.assertRaises(ValueError, lambda: NumberValue("abc"))
 
-    def testHash(self):
-        self.assertEqual(self.val,self.val)
-        self.assertNotEqual(self.val,self.val2)
-        self.assertNotEqual(hash(self.val), hash(self.val2))
-        
-    def testRepr(self):
-        self.assertEqual('2', repr(self.val2))
+    def testDeserializeScientificNotation(self):
+        valstr = "9E+2";
+        val = self.jackson.parse(json.loads(valstr), Value)
+        # self.assertEqual(valstr, str(val)) FIXME? 
+        self.assertEqual(val, NumberValue(Decimal("900")))
+    
