source: pyson/test/JsonToolsTest.py@ 187

Last change on this file since 187 was 175, checked in by wouter, 3 years ago

Allow polymorphic list - type of list is the (possibly abstract) superclass type

File size: 989 bytes
RevLine 
[175]1from abc import ABC
[134]2import unittest
[175]3
4from pyson.JsonSubTypes import JsonSubTypes
[158]5from pyson.JsonTools import getInitArgs, getListClass
[134]6
[175]7
8@JsonSubTypes(["test.JsonToolsTest.B"])
9class A:
10 pass
11
12class B(A):
13 pass
14
15
[134]16class JsonToolsTest(unittest.TestCase):
[158]17
18
[134]19 def testGetInitArgs(self):
20 class ClassWithInitVars:
21 def __init__(self, x:int):
22 y=2
23
24 self.assertEquals({"x":int}, getInitArgs(ClassWithInitVars))
[149]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.assertEquals({"x":int}, getInitArgs(ClassWithInitVars2))
[158]35
36 def testGetListTypePrimitiveMixed(self):
37 self.assertEqual(None, getListClass([3, True]))
38
39 def testGetListTypePolymorphicNMixed(self):
[175]40 self.assertEqual(A, getListClass([B(), A(),B()]))
[158]41
Note: See TracBrowser for help on using the repository browser.