source: pyson/test/JsonToolsTest.py@ 1353

Last change on this file since 1353 was 1285, checked in by wouter, 3 weeks ago

#403 switched pyson to uniform class name

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