work
This commit is contained in:
@@ -442,6 +442,8 @@ class _MetaElement(type):
|
||||
pass
|
||||
elif isinstance(_fvalue, classmethod):
|
||||
pass
|
||||
elif isinstance(_fvalue, FunctionType):
|
||||
pass
|
||||
else:
|
||||
print(f"Parsing Field: {_fname} / {_fvalue}")
|
||||
if (
|
||||
|
||||
@@ -1531,7 +1531,7 @@ class ApplianceTest(unittest.TestCase):
|
||||
with self.assertRaises(dm.ImportForbidden):
|
||||
|
||||
class test(dm.Appliance):
|
||||
_: int = 0
|
||||
my: int = 0
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
@@ -1540,7 +1540,7 @@ class ApplianceTest(unittest.TestCase):
|
||||
with self.assertRaises(NameError):
|
||||
|
||||
class _(dm.Appliance):
|
||||
_: int = 0
|
||||
my: int = 0
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
@@ -1549,7 +1549,7 @@ class ApplianceTest(unittest.TestCase):
|
||||
with self.assertRaises(NameError):
|
||||
|
||||
class _(dm.Appliance):
|
||||
_: int = 0
|
||||
my: int = 0
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
@@ -1558,7 +1558,7 @@ class ApplianceTest(unittest.TestCase):
|
||||
with self.assertRaises(NameError):
|
||||
|
||||
class _(dm.Appliance):
|
||||
_: int = 0
|
||||
my: int = 0
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
@@ -1567,7 +1567,7 @@ class ApplianceTest(unittest.TestCase):
|
||||
with self.assertRaises(NameError):
|
||||
|
||||
class _(dm.Appliance):
|
||||
_: int = 0
|
||||
my: int = 0
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
@@ -1576,7 +1576,7 @@ class ApplianceTest(unittest.TestCase):
|
||||
with self.assertRaises(NameError):
|
||||
|
||||
class _(dm.Appliance):
|
||||
_: int = 0
|
||||
my: int = 0
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
@@ -1588,7 +1588,7 @@ class ApplianceTest(unittest.TestCase):
|
||||
with self.assertRaises(dm.FunctionForbidden):
|
||||
|
||||
class _(dm.Appliance):
|
||||
_: int = 0
|
||||
my: int = 0
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
@@ -1596,8 +1596,20 @@ class ApplianceTest(unittest.TestCase):
|
||||
|
||||
with self.assertRaises(dm.FunctionForbidden):
|
||||
|
||||
def test_func_int() -> int:
|
||||
return 12
|
||||
|
||||
class _(dm.Appliance):
|
||||
_: int = 0
|
||||
my: int = 0
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
cls.my = test_func_int()
|
||||
|
||||
with self.assertRaises(dm.FunctionForbidden):
|
||||
|
||||
class _(dm.Appliance):
|
||||
my: int = 0
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
|
||||
@@ -286,6 +286,61 @@ class ElementTest(unittest.TestCase):
|
||||
self.assertIsInstance(b.elems[1].ar_int2, tuple)
|
||||
self.assertEqual(b.elems[1].ar_int2, (1, 54, 65))
|
||||
|
||||
def test_method(self):
|
||||
class E(dm.Element):
|
||||
ivalue: int = 43
|
||||
|
||||
def get_increment(self) -> int:
|
||||
return self.ivalue + 1
|
||||
|
||||
def increment(self) -> int:
|
||||
return type(self)(ivalue=self.ivalue + 1)
|
||||
|
||||
class A(dm.Appliance):
|
||||
elem: E = E(ivalue=45)
|
||||
|
||||
a = A()
|
||||
|
||||
self.assertIsInstance(a.elem, E)
|
||||
self.assertEqual(a.elem.ivalue, 45)
|
||||
self.assertEqual(a.elem.get_increment(), 46)
|
||||
|
||||
class B(A):
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
cls.elem = cls.elem.increment()
|
||||
|
||||
b = B()
|
||||
|
||||
self.assertEqual(b.elem.ivalue, 46)
|
||||
self.assertEqual(b.elem.get_increment(), 47)
|
||||
|
||||
def test_initializer_appliance_function_forbidden(self):
|
||||
def test_fun() -> int:
|
||||
return 12
|
||||
|
||||
class E(dm.Element):
|
||||
ivalue: int = 43
|
||||
|
||||
with self.assertRaises(dm.FunctionForbidden):
|
||||
|
||||
class B(dm.Element):
|
||||
elem: E = E()
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
cls.elem.ivalue = test_fun()
|
||||
|
||||
with self.assertRaises(dm.FunctionForbidden):
|
||||
|
||||
class B(dm.Element):
|
||||
elem: E = E()
|
||||
|
||||
@classmethod
|
||||
def __initializer(cls):
|
||||
cls.elem = E(ivalue=test_fun())
|
||||
|
||||
|
||||
# ---------- main ----------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user