Index: geniuswebcore/test/geniusweb/issuevalue/DiscreteValueSetTest.py
===================================================================
--- geniuswebcore/test/geniusweb/issuevalue/DiscreteValueSetTest.py	(revision 66)
+++ geniuswebcore/test/geniusweb/issuevalue/DiscreteValueSetTest.py	(revision 67)
@@ -1,2 +1,4 @@
+import json
+from typing import List
 import unittest
 
@@ -9,29 +11,76 @@
 
 class DiscreteValueSetTest(unittest.TestCase):
-    pyson=ObjectMapper()
-    val = DiscreteValueSet([DiscreteValue("a"), DiscreteValue("b")])
-    val1 = DiscreteValueSet([DiscreteValue("a"), DiscreteValue("b")])
-    val2 = DiscreteValueSet([DiscreteValue("a"), DiscreteValue("c")])
-    valjson = {"values":["a","b"]}
 
-    def testSerialize(self):
-        print(str(self.pyson.toJson(self.val)))
-        self.assertEqual(self.valjson, self.pyson.toJson(self.val))
-        
+    A = DiscreteValue("a");
+    A1 = DiscreteValue("a");
+    B = DiscreteValue("b");
+    values:List[DiscreteValue]  = [A, B]
+    valuesReverse = [B, A]
+
+    set1 = DiscreteValueSet(values)
+    setReverse = DiscreteValueSet(valuesReverse)
+    asString = "{\"values\":[\"a\",\"b\"]}"
+    # String asString = "{\"DiscreteValueSet
+    # \":[\"a\",\"b\"]}";
+    asString1 = "[\"a\",\"b\"]"
+
+    # SPECIAL. note that the "numbers" have no leading "=" and therefore are
+    # parsed as discrete values.
+    discretenumbers = "{\"values\":[\"0\",\"1\"]}"
+    jackson = ObjectMapper()
+
+    def  testSerialize(self) :
+        jsonobj = self.jackson.toJson(self.set1)
+        print(jsonobj)
+        self.assertEqual(json.loads(self.asString), jsonobj)
+
     def testDeserialize(self):
-        self.assertEqual(self.val, self.pyson.parse(self.valjson, ValueSet))
-        
-        
-    def testIterator(self):
-        self.assertTrue(DiscreteValue("a") in self.val)
-        
-            
-    def testRepr(self):
-        self.assertEqual("DiscreteValueSet[a, b]", repr(self.val))
-        
-    def testEqual(self):
-        self.assertEqual(self.val, self.val1)
-        self.assertNotEqual(self.val, self.val2)
-        self.assertEqual(hash(self.val), hash(self.val1))
-        self.assertNotEqual(hash(self.val), hash(self.val2))
-        
+        p = self.jackson.parse(json.loads(self.asString), DiscreteValueSet)
+        print(p)
+        self.assertEqual(self.set1, p)
+
+    def testDeserializeNumberValues(self):
+        p = self.jackson.parse(json.loads(self.discretenumbers), DiscreteValueSet)
+        print(p)
+        self.assertEqual("0", p.get(0).getValue()) # not the number but string
+        self.assertEquals("1", p.get(1).getValue())
+
+    def testEquality(self):
+        self.assertEqual(self.set1, self.setReverse)
+
+    def testHashCodeInsensitiveToOrder(self):
+        self.assertEqual(hash(self.set1), hash(self.setReverse))
+
+    def testSize(self):
+        self.assertEqual(2, self.set1.size())
+
+    def testGet(self): 
+        self.assertEqual(self.A, self.set1.get(0))
+        self.assertEqual(self.B, self.set1.get(1))
+        self.assertEqual(self.A, self.set1.get(0))
+        self.assertEqual(self.B, self.set1.get(1))
+
+    def testgetValues(self):
+        self.assertEqual(self.values, self.set1.getValues())
+
+    def testConstructor2(self):
+        self.assertEqual(self.set1, DiscreteValueSet([self.A, self.B]))
+
+    def testContains(self):
+        self.assertTrue(self.set1.contains(self.A))
+        self.assertTrue(self.set1.contains(self.A1))
+        self.assertTrue(self.set1.contains(self.B))
+        self.assertFalse(self.set1.contains(DiscreteValue("c")))
+        self.assertFalse(self.set1.contains(None))
+
+    def testiterator1(self) :
+        it = iter(self.set1);
+        self.assertEqual(self.A, next(it));
+        self.assertEqual(self.B, next(it));
+        self.assertRaises(StopIteration, lambda: next(it))
+
+    def testiterator2(self): 
+        it = iter(self.setReverse)
+        self.assertEqual(self.B, next(it))
+        self.assertEqual(self.A, next(it));
+        self.assertRaises(StopIteration,lambda: next(it))
