def test_class_with_derived_features(pygen_output_dir): rootpkg = EPackage('simpleClasses') MyClass = EClass('MyClass') rootpkg.eClassifiers.append(MyClass) any_feature = EAttribute('any', EString, derived=True) MyClass.eStructuralFeatures.append(any_feature) mm = generate_meta_model(rootpkg, pygen_output_dir) generated_class = mm.eClassifiers['MyClass'] assert mm.MyClass is generated_class assert isinstance(mm.MyClass._any, EAttribute) assert mm.MyClass._any.derived is True assert mm.MyClass._any.name == 'any'
def test_eoperation_with_documentation(pygen_output_dir): rootpkg = EPackage('eoperation_with_documentation') c1 = EClass('MyClass') rootpkg.eClassifiers.append(c1) operation = EOperation('do_it') doc = EAnnotation('http://www.eclipse.org/emf/2002/GenModel') operation.eAnnotations.append(doc) doc.details['documentation'] = 'This is a documentation test' c1.eOperations.append(operation) mm = generate_meta_model(rootpkg, pygen_output_dir) instance = mm.MyClass() with pytest.raises(NotImplementedError): instance.do_it()
def test_class_with_features(pygen_output_dir): rootpkg = EPackage('class_features') class_ = EClass('MyClass') rootpkg.eClassifiers.append(class_) class_.eStructuralFeatures.append(EAttribute('number', EInt, changeable=False)) class_.eStructuralFeatures.append(EReference('ref', class_)) mm = generate_meta_model(rootpkg, pygen_output_dir) generated_class = mm.eClassifiers['MyClass'] instance = generated_class(number=7) assert instance.number == 7 assert not instance.ref instance.ref = instance assert instance.ref is instance
def test_eattribute_derived_not_changeable(pygen_output_dir): rootpkg = EPackage('changeable_attribute') c1 = EClass('MyClass') rootpkg.eClassifiers.append(c1) att1 = EAttribute('att1', EString, derived=True, changeable=True) att2 = EAttribute('att2', EString, derived=True, changeable=False) c1.eStructuralFeatures.extend([att2, att1]) mm = generate_meta_model(rootpkg, pygen_output_dir) instance = mm.MyClass() assert instance.att1 is None assert instance.att2 is None instance.att1 = "test_value" assert instance.att1 == "test_value" with pytest.raises(AttributeError): instance.att2 = "test_value2"
def test_user_module_default_values(pygen_output_dir): rootpkg = EPackage('with_default_values') e1 = EEnum('MyEnum', literals=('None_', 'A', 'B')) rootpkg.eClassifiers.append(e1) c1 = EClass('MyClass') a1 = EAttribute('a1', EString) a1.defaultValueLiteral = 'my_str' a2 = EAttribute('a2', EInt) a2.defaultValueLiteral = '7654321' a3 = EAttribute('a3', e1) a3.defaultValueLiteral = 'None' c1.eStructuralFeatures.extend([a1, a2, a3]) rootpkg.eClassifiers.append(c1) mm = generate_meta_model(rootpkg, pygen_output_dir) assert mm.MyClass.a1.default_value == 'my_str' assert mm.MyClass.a2.default_value == 7654321 assert mm.MyClass.a3.default_value == mm.MyEnum.None_