Example #1
0
def test_ecoreinheritance_loading():
    rset = ResourceSet()
    ecore_file = path.join('tests', 'xmi', 'xmi-tests', 'EcoreInheritance.ecore')
    resource = rset.get_resource(URI(ecore_file))
    root = DynamicEPackage(resource.contents[0])
    assert Ecore.EModelElement.eAnnotations in root.A.eAllStructuralFeatures()
    a = root.A()
    assert isinstance(a, Ecore.EModelElement)
    assert Ecore.EModelElement.eAnnotations in root.B.eAllStructuralFeatures()
    b = root.B()
    assert isinstance(b, Ecore.EModelElement)
    assert a.eAnnotations == {}
    assert b.eAnnotations == {}
Example #2
0
def test_xmi_with_iD_attribute(tmpdir):
    mm_file = os.path.join('tests', 'xmi', 'xmi-tests', 'A.ecore')
    rset = ResourceSet()
    mm = rset.get_resource(mm_file).contents[0]
    rset.metamodel_registry[mm.nsURI] = mm

    mm_dyn = DynamicEPackage(mm)
    root = mm_dyn.Root()
    a = mm_dyn.A()
    b = mm_dyn.B()
    b.nameID = 'uniqueNameForB'
    a.tob = b

    root.a.append(a)
    root.b.append(b)

    localdir = tmpdir.mkdir('pyecore-tmp')
    f1 = localdir.join('model_iD_simple.xmi')
    resource = rset.create_resource(str(f1))
    resource.append(root)
    resource.save()

    root2 = mm_dyn.Root()
    root2.b.append(b)

    f2 = localdir.join('model_iD.xmi')
    f3 = localdir.join('model_iD.xmi')
    resource = rset.create_resource(str(f2))
    resource2 = rset.create_resource(str(f3))

    resource.append(root)
    resource2.append(root2)

    resource2.save()
    resource.save()

    rset = ResourceSet()
    rset.metamodel_registry[mm.nsURI] = mm
    rset.get_resource(str(f1))
    rset.get_resource(str(f2))
    rset.get_resource(str(f3))
Example #3
0
def test_xmi_save_none_value_for_containement(tmpdir):
    rset = ResourceSet()
    ecore_path = os.path.join('tests', 'xmi', 'xmi-tests', 'root.ecore')
    resource = rset.get_resource(ecore_path)
    root = resource.contents[0]
    rset.metamodel_registry[root.nsURI] = root
    mm = DynamicEPackage(root)

    a = mm.A()
    a.b = None

    f = tmpdir.mkdir('pyecore-tmp').join('none_in_containment.xmi')
    resource = rset.create_resource(URI(str(f)))
    resource.append(a)
    resource.save()

    rset = ResourceSet()
    rset.metamodel_registry[root.nsURI] = root
    resource = rset.get_resource(URI(str(f)))

    assert resource.contents[0] is not None
    assert resource.contents[0].b is None
    assert len(resource.contents[0]._isset) == 0

    # We save with the explicit option fo saving none values
    resource = rset.create_resource(URI(str(f)))
    resource.append(a)
    resource.save()
    resource.save(options={XMIOptions.SERIALIZE_DEFAULT_VALUES: True})

    rset = ResourceSet()
    rset.metamodel_registry[root.nsURI] = root
    resource = rset.get_resource(URI(str(f)))

    assert resource.contents[0] is not None
    assert resource.contents[0].b is None
    assert len(resource.contents[0]._isset) == 1