Skip to content

Commit 4cebf53

Browse files
committed
Add tests for derived features and EDataType generation
1 parent 8189962 commit 4cebf53

File tree

1 file changed

+37
-1
lines changed

1 file changed

+37
-1
lines changed

tests/test_templates.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pytest
55

66
from pyecore.ecore import EPackage, EClass, EReference, EEnum, EAttribute, EInt, EOperation, \
7-
EParameter
7+
EParameter, EString, EDataType
88
from pyecoregen.ecore import EcoreGenerator
99

1010

@@ -143,3 +143,39 @@ def test_operation(pygen_output_dir):
143143
# missing required argument:
144144
with pytest.raises(TypeError):
145145
instance.do_it(p2=2)
146+
147+
148+
def test_class_with_derived_features(pygen_output_dir):
149+
rootpkg = EPackage('simpleClasses')
150+
MyClass = EClass('MyClass')
151+
rootpkg.eClassifiers.append(MyClass)
152+
any_feature = EAttribute('any', EString, derived=True)
153+
MyClass.eStructuralFeatures.append(any_feature)
154+
155+
mm = generate_meta_model(rootpkg, pygen_output_dir)
156+
157+
generated_class = mm.eClassifiers['MyClass']
158+
159+
assert mm.MyClass is generated_class
160+
assert isinstance(mm.MyClass._any, EAttribute)
161+
assert mm.MyClass._any.derived is True
162+
assert mm.MyClass._any.name == 'any'
163+
164+
165+
def test_various_datatypes(pygen_output_dir):
166+
rootpkg = EPackage('datatypes')
167+
data1 = EDataType('Data1', instanceClassName='java.lang.Integer')
168+
data2 = EDataType('Data2', instanceClassName='Unknown')
169+
rootpkg.eClassifiers.extend([data1, data2])
170+
171+
mm = generate_meta_model(rootpkg, pygen_output_dir)
172+
173+
gendata1 = mm.eClassifiers['Data1']
174+
gendata2 = mm.eClassifiers['Data2']
175+
176+
assert gendata1 is mm.Data1
177+
assert mm.Data1.eType is int
178+
assert mm.Data1.default_value is 0
179+
assert gendata2 is mm.Data2
180+
assert mm.Data2.eType is None
181+
assert mm.Data2.default_value is None

0 commit comments

Comments
 (0)