Example #1
0
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'
Example #2
0
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()
Example #3
0
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
Example #4
0
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"
Example #5
0
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_