[90] | 1 | import json
|
---|
| 2 | from typing import List
|
---|
| 3 | import unittest
|
---|
| 4 |
|
---|
| 5 | from pyson.ObjectMapper import ObjectMapper
|
---|
| 6 | from unitpy.GeneralTests import GeneralTests
|
---|
| 7 |
|
---|
| 8 | from geniusweb.references.Parameters import Parameters
|
---|
| 9 |
|
---|
| 10 |
|
---|
| 11 | class ParametersTest (unittest.TestCase, GeneralTests[Parameters]) :
|
---|
| 12 | pyson=ObjectMapper()
|
---|
| 13 | params1=Parameters()
|
---|
| 14 | params1a=Parameters()
|
---|
| 15 | params2=Parameters({'a':1, 'b':2.0})
|
---|
| 16 |
|
---|
| 17 | paramsjson='{"a":1, "b":2.0}'
|
---|
| 18 |
|
---|
| 19 | def getGeneralTestData(self)-> List[List[Parameters]] :
|
---|
| 20 | return [[ self.params1, self.params1a],[self.params2]]
|
---|
| 21 |
|
---|
| 22 | def getGeneralTestStrings(self)->List[str]:
|
---|
| 23 | return ["\\{\\}", "\\{a=1, b=2.0\\}"]
|
---|
| 24 |
|
---|
| 25 |
|
---|
| 26 | def testGet(self):
|
---|
| 27 | self.assertEqual({'a':1, 'b':2.0}, self.params2.getParameters())
|
---|
| 28 |
|
---|
| 29 |
|
---|
| 30 | def testGetWrongClass(self):
|
---|
| 31 | self.assertRaises(ValueError, lambda:self.params2.getType("a", str))
|
---|
| 32 |
|
---|
| 33 | def testGetInteger(self) :
|
---|
| 34 | self.assertEqual(1, self.params2.getType("a", int))
|
---|
| 35 | self.assertEqual(2.0, self.params2.getType("b", float))
|
---|
| 36 |
|
---|
| 37 | def testGetDouble(self):
|
---|
| 38 | self.assertEquals( 2., self.params2.getDouble("b", 7.0, None, None))
|
---|
| 39 | self.assertEquals(2., self.params2.getDouble("b", 7.0, 0., 4.))
|
---|
| 40 |
|
---|
| 41 | # test outside range
|
---|
| 42 | self.assertEqual(7., self.params2.getDouble("b", 7., 4., 6.))
|
---|
| 43 | self.assertEqual(7., self.params2.getDouble("b", 7., -2., 1.))
|
---|
| 44 |
|
---|
| 45 | # test fallback None
|
---|
| 46 | self.assertEqual(None, self.params2.getDouble("b", None, 4., 6.))
|
---|
| 47 | # a is integer!
|
---|
| 48 | self.assertEqual(1, self.params2.getDouble("a", 0., -0., 2.))
|
---|
| 49 |
|
---|
| 50 | def testGetDoubleWithErrors(self):
|
---|
| 51 | # a does not contain a double
|
---|
| 52 | self.assertEqual(7., self.params2.getDouble("a", 7., 4., 6.));
|
---|
| 53 | # c does not exist
|
---|
| 54 | self.assertEqual(7., self.params2.getDouble("c", 7., 4., 6.));
|
---|
| 55 |
|
---|
| 56 | def testWith(self):
|
---|
| 57 | p = self.params2.With("a", 2)
|
---|
| 58 | self.assertEqual(1, self.params2.get("a"))
|
---|
| 59 | self.assertEqual(2., self.params2.get("b"))
|
---|
| 60 | self.assertEqual(2, p.get("a"))
|
---|
| 61 | self.assertEqual(2., p.get("b"))
|
---|
| 62 |
|
---|
| 63 | def testWithParams(self):
|
---|
| 64 | upd = Parameters().With("a", 2)
|
---|
| 65 | p = self.params2.WithParameters(upd)
|
---|
| 66 | self.assertEqual(1, self.params2.get("a"))
|
---|
| 67 | self.assertEqual(2., self.params2.get("b"))
|
---|
| 68 | self.assertEqual(2, p.get("a"))
|
---|
| 69 | self.assertEqual(2., p.get("b"))
|
---|
| 70 |
|
---|
| 71 | def testIsEmpty(self) :
|
---|
| 72 | self.assertTrue(self.params1.isEmpty())
|
---|
| 73 | self.assertFalse(self.params2.isEmpty())
|
---|
| 74 |
|
---|
| 75 | def testContainsKey(self):
|
---|
| 76 | self.assertTrue(self.params2.containsKey("a"))
|
---|
| 77 | self.assertFalse(self.params2.containsKey("c"))
|
---|
| 78 |
|
---|
| 79 |
|
---|
| 80 | def testSerialize(self):
|
---|
| 81 | print(str(self.pyson.toJson(self.params2)))
|
---|
| 82 | self.assertEqual(json.loads(self.paramsjson), self.pyson.toJson(self.params2))
|
---|
| 83 |
|
---|
| 84 | def testDeserialize(self):
|
---|
| 85 | self.assertEqual(self.params2, self.pyson.parse(json.loads(self.paramsjson), Parameters))
|
---|
| 86 |
|
---|
| 87 |
|
---|
| 88 | def testWith2(self):
|
---|
| 89 | p=Parameters({'a':1}).With('b', 2)
|
---|
| 90 | self.assertEqual({'a':1, 'b':2}, p.getParameters())
|
---|
| 91 |
|
---|
| 92 | def testParamNotAvailable(self):
|
---|
| 93 | self.assertEqual(None, self.params1.get("nosuchkey"))
|
---|
| 94 | |
---|