This commit is contained in:
chacha
2025-09-21 10:47:53 +02:00
parent 616a53578c
commit b9f5b83690
3 changed files with 77 additions and 8 deletions

View File

@@ -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 (

View File

@@ -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):

View File

@@ -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 ----------