source: pyson/test/JsonToolsTest.py@ 830

Last change on this file since 830 was 567, checked in by wouter, 17 months ago

#189 fixed what seemed a bug in JsonDeserialize. Pending tests with GeniusWeb

File size: 1.4 KB
RevLine 
[175]1from abc import ABC
2from pyson.JsonSubTypes import JsonSubTypes
[567]3from pyson.JsonTools import getInitArgs, getListClass, str_to_class
[192]4import unittest
[134]5
[175]6
7@JsonSubTypes(["test.JsonToolsTest.B"])
8class A:
9 pass
10
11class B(A):
12 pass
13
14
[134]15class JsonToolsTest(unittest.TestCase):
[158]16
17
[134]18 def testGetInitArgs(self):
19 class ClassWithInitVars:
20 def __init__(self, x:int):
21 y=2
22
[192]23 self.assertEqual({"x":int}, getInitArgs(ClassWithInitVars))
[149]24
25 def testGetInitArgsAbc(self):
26 class BaseClass(ABC):
27 pass
28
29 class ClassWithInitVars2(BaseClass):
30 def __init__(self, x:int):
31 y=2
32
[192]33 self.assertEqual({"x":int}, getInitArgs(ClassWithInitVars2))
[158]34
35 def testGetListTypePrimitiveMixed(self):
36 self.assertEqual(None, getListClass([3, True]))
37
38 def testGetListTypePolymorphicNMixed(self):
[175]39 self.assertEqual(A, getListClass([B(), A(),B()]))
[567]40
41 def testStrToClassLocal(self):
42 str_to_class("test.JsonToolsTest.A")
43
44 def testStrToClassRemoteWrongName(self):
45 # twrong name ValueDeserializer, see next test with correct name
46 self.assertRaises(AttributeError, lambda:str_to_class("test.MyDeserializer.ValueDeserializer"))
47
48
49 def testStrToClassRemote(self):
50 str_to_class("test.MyDeserializer.ValueDeserializer2")
Note: See TracBrowser for help on using the repository browser.