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 == {}
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))
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