diff options
author | emerks | 2011-04-07 23:41:07 +0000 |
---|---|---|
committer | emerks | 2011-04-07 23:41:07 +0000 |
commit | 0ae8a236fda1a4a75a38e7c0f720a49a12e952e8 (patch) | |
tree | e37a2664aa90df6879a97a577332445e39df4c45 /tests | |
parent | 94e3331cb459e64100dbfa061d19982ff958b867 (diff) | |
download | org.eclipse.emf-0ae8a236fda1a4a75a38e7c0f720a49a12e952e8.tar.gz org.eclipse.emf-0ae8a236fda1a4a75a38e7c0f720a49a12e952e8.tar.xz org.eclipse.emf-0ae8a236fda1a4a75a38e7c0f720a49a12e952e8.zip |
[342229] Support producing a forward delta.
Diffstat (limited to 'tests')
6 files changed, 543 insertions, 12 deletions
diff --git a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeAllSuites.java b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeAllSuites.java index 36cb4676b..17c07a608 100644 --- a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeAllSuites.java +++ b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeAllSuites.java @@ -12,7 +12,7 @@ * * </copyright> * - * $Id: ChangeAllSuites.java,v 1.2 2007/01/31 16:33:29 marcelop Exp $ + * $Id: ChangeAllSuites.java,v 1.3 2011/04/07 23:41:07 emerks Exp $ */ package org.eclipse.emf.test.core.change; @@ -25,6 +25,8 @@ public class ChangeAllSuites extends TestSuite { private static Test[] suites = new Test [] { + ListDifferenceAnalyzerTest.suite(), + ChangeDescriptionReverseTest.suite(), ChangeRecordTest.suite(false) ,ChangeRecordTest.suite(true) ,ChangeDescriptionTest.suite() diff --git a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeDescriptionReverseTest.java b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeDescriptionReverseTest.java new file mode 100644 index 000000000..e78a8a75d --- /dev/null +++ b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeDescriptionReverseTest.java @@ -0,0 +1,312 @@ +/** + * <copyright> + * + * Copyright (c) 2010-2011 Ed Merks and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Ed Merks - Initial API and implementation + * + * </copyright> + * + * $Id: ChangeDescriptionReverseTest.java,v 1.1 2011/04/07 23:41:08 emerks Exp $ + */ +package org.eclipse.emf.test.core.change; + + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EcoreFactory; +import org.eclipse.emf.ecore.change.ChangeDescription; +import org.eclipse.emf.ecore.change.util.ChangeRecorder; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; + + +public class ChangeDescriptionReverseTest extends TestCase +{ + public ChangeDescriptionReverseTest(String name) + { + super(name); + } + + public static Test suite() + { + TestSuite ts = new TestSuite("ChangeDescription copyAndReverse Test"); + ts.addTest(new ChangeDescriptionReverseTest("testOne")); + ts.addTest(new ChangeDescriptionReverseTest("testTwo")); + ts.addTest(new ChangeDescriptionReverseTest("testThree")); + ts.addTest(new ChangeDescriptionReverseTest("testFour")); + ts.addTest(new ChangeDescriptionReverseTest("testFive")); + ts.addTest(new ChangeDescriptionReverseTest("testSix")); + ts.addTest(new ChangeDescriptionReverseTest("testSeven")); + return ts; + } + + abstract class TestHelper + { + void doit() throws Exception + { + ResourceSet originalResourceSet = new ResourceSetImpl(); + + loadResources(originalResourceSet); + + Map<EObject, URI> eObjectToProxyURIMap = new HashMap<EObject, URI>(); + ChangeRecorder changeRecorder = new ChangeRecorder(); + changeRecorder.setRecordingTransientFeatures(false); + changeRecorder.setEObjectToProxyURIMap(eObjectToProxyURIMap); + changeRecorder.beginRecording(Collections.singleton(originalResourceSet)); + + makeChanges(); + + ChangeDescription changeDescription = changeRecorder.endRecording(); + changeDescription.copyAndReverse(eObjectToProxyURIMap); + + ResourceSet finalResourceSet = new ResourceSetImpl(); + Resource changeDescriptionResource = finalResourceSet.createResource(URI.createURI("changes.change")); + changeDescriptionResource.getContents().add(changeDescription); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + changeDescriptionResource.save(System.out, null); + changeDescriptionResource.save(out, null); + changeDescriptionResource.getContents().clear(); + changeDescriptionResource.unload(); + changeDescriptionResource.load(new ByteArrayInputStream(out.toByteArray()), null); + + ChangeDescription finalChangeDescription = (ChangeDescription)changeDescriptionResource.getContents().get(0); + finalChangeDescription.apply(); + + finalResourceSet.getResources().remove(0); + + assertEquals(originalResourceSet, finalResourceSet); + } + + abstract void loadResources(ResourceSet resourceSet); + abstract void makeChanges(); + } + + public void testOne() throws Exception + { + new TestHelper() + { + Resource ecoreResource; + + @Override + void loadResources(ResourceSet resourceSet) + { + ecoreResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"), true); + } + + @Override + void makeChanges() + { + EPackage ePackage = (EPackage)ecoreResource.getContents().get(0); + ePackage.getEClassifiers().remove(1); + } + }.doit(); + } + + public void testTwo() throws Exception + { + new TestHelper() + { + Resource ecoreResource; + + @Override + void loadResources(ResourceSet resourceSet) + { + ecoreResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"), true); + } + + @Override + void makeChanges() + { + EPackage ePackage = (EPackage)ecoreResource.getContents().get(0); + EClass eClass = EcoreFactory.eINSTANCE.createEClass(); + ePackage.getEClassifiers().add(5, eClass); + eClass.setName("NewClass"); + EAnnotation eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); + eClass.getEAnnotations().add(eAnnotation); + eAnnotation.getContents().add(0, ePackage.getEClassifiers().get(2)); + } + }.doit(); + } + + public void testThree() throws Exception + { + new TestHelper() + { + Resource ecoreResource; + + @Override + void loadResources(ResourceSet resourceSet) + { + ecoreResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"), true); + } + + @Override + void makeChanges() + { + EPackage ePackage = (EPackage)ecoreResource.getContents().get(0); + ePackage.getEClassifiers().move(10, 5); + } + }.doit(); + } + + public void testFour() throws Exception + { + new TestHelper() + { + Resource ecoreResource; + Resource xmlTypeResource; + + @Override + void loadResources(ResourceSet resourceSet) + { + ecoreResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"), true); + xmlTypeResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/XMLType.ecore"), true); + } + + @Override + void makeChanges() + { + EPackage ecorePackage = (EPackage)ecoreResource.getContents().get(0); + EPackage xmlTypePackage = (EPackage)xmlTypeResource.getContents().get(0); + xmlTypePackage.getEClassifiers().add(2, ecorePackage.getEClassifiers().get(2)); + } + }.doit(); + } + + public void testFive() throws Exception + { + new TestHelper() + { + Resource ecoreResource; + Resource xmlTypeResource; + + @Override + void loadResources(ResourceSet resourceSet) + { + ecoreResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"), true); + xmlTypeResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/XMLType.ecore"), true); + } + + @Override + void makeChanges() + { + EPackage ecorePackage = (EPackage)ecoreResource.getContents().get(0); + EPackage xmlTypePackage = (EPackage)xmlTypeResource.getContents().get(0); + xmlTypeResource.getContents().add(ecorePackage.getEClassifiers().get(0)); + ecoreResource.getContents().add(xmlTypePackage.getEClassifiers().get(0)); + } + }.doit(); + } + + public void testSix() throws Exception + { + new TestHelper() + { + Resource ecoreResource; + Resource xmlTypeResource; + + @Override + void loadResources(ResourceSet resourceSet) + { + ecoreResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"), true); + xmlTypeResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/XMLType.ecore"), true); + } + + @Override + void makeChanges() + { + EPackage ecorePackage = (EPackage)ecoreResource.getContents().get(0); + EPackage xmlTypePackage = (EPackage)xmlTypeResource.getContents().get(0); + EClassifier eClassifier = ecorePackage.getEClassifiers().get(10); + eClassifier.setName(eClassifier.getName() + "Suffix"); + xmlTypePackage.getEClassifiers().get(0).getEAnnotations().get(0).getContents().add(eClassifier); + eClassifier.setName(eClassifier.getName() + "Suffix"); + xmlTypePackage.getEClassifiers().get(0).setName("BadName"); + xmlTypePackage.getEClassifiers().remove(12); + xmlTypePackage.getEClassifiers().move(10, 20); + } + }.doit(); + } + + public void testSeven() throws Exception + { + new TestHelper() + { + Resource ecoreResource; + Resource xmlTypeResource; + + @Override + void loadResources(ResourceSet resourceSet) + { + ecoreResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"), true); + xmlTypeResource = resourceSet.getResource(URI.createURI("platform:/plugin/org.eclipse.emf.ecore/model/XMLType.ecore"), true); + } + + @Override + void makeChanges() + { + EPackage ecorePackage = (EPackage)ecoreResource.getContents().get(0); + EPackage xmlTypePackage = (EPackage)xmlTypeResource.getContents().get(0); + EClassifier eClassifier = ecorePackage.getEClassifiers().get(10); + eClassifier.setName(eClassifier.getName() + "Suffix"); + xmlTypePackage.getEClassifiers().get(0).getEAnnotations().get(0).getContents().add(eClassifier); + eClassifier.setName(eClassifier.getName() + "Suffix"); + xmlTypePackage.getEClassifiers().get(0).setName("BadName"); + xmlTypePackage.getEClassifiers().remove(12); + EDataType myEDataType = EcoreFactory.eINSTANCE.createEDataType(); + myEDataType.setName("My"); + xmlTypePackage.getEClassifiers().add(myEDataType); + myEDataType.setInstanceTypeName("java.util.List<?>"); + xmlTypePackage.getEClassifiers().move(10, 20); + xmlTypePackage.getEClassifiers().get(12).setName(xmlTypePackage.getEClassifiers().get(10).getName() + "Extension"); + xmlTypePackage.getEClassifiers().remove(12); + } + }.doit(); + } + + void assertEquals(ResourceSet resourceSet1, ResourceSet resourceSet2) + { + EcoreUtil.resolveAll(resourceSet1); + EcoreUtil.resolveAll(resourceSet2); + EList<Resource> resources2 = resourceSet2.getResources(); + for (Resource resource2 : resources2) + { + assertEquals(resourceSet1.getResource(resource2.getURI(), false), resource2); + } + } + + void assertEquals(Resource resource1, Resource resource2) + { + EList<EObject> eObjects1 = resource1.getContents(); + EList<EObject> eObjects2 = resource2.getContents(); + assertEquals(eObjects1.size(), eObjects2.size()); + for (int i = 0, size = eObjects1.size(); i < size; ++i) + { + assertTrue(EcoreUtil.equals(eObjects1.get(i), eObjects2.get(i))); + } + } +}
\ No newline at end of file diff --git a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeRecordTest.java b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeRecordTest.java index 5ec242b37..d2f246d03 100644 --- a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeRecordTest.java +++ b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeRecordTest.java @@ -12,7 +12,7 @@ * * </copyright> * - * $Id: ChangeRecordTest.java,v 1.19 2008/05/04 10:59:07 emerks Exp $ + * $Id: ChangeRecordTest.java,v 1.20 2011/04/07 23:41:07 emerks Exp $ */ package org.eclipse.emf.test.core.change; @@ -174,6 +174,10 @@ extends TestCase assertEquals(EcorePackage.Literals.EANNOTATION__CONTENTS, featureChange.getFeature()); assertEquals(2, featureChange.getListChanges().size()); + // With the latest algorithm we always expect to removes to be first. + // + assertEquals(ChangeKind.REMOVE_LITERAL, featureChange.getListChanges().get(0).getKind()); + int checker = 0; for (ListChange listChange : featureChange.getListChanges()) { @@ -181,14 +185,14 @@ extends TestCase { case ChangeKind.ADD: assertEquals(0, listChange.getIndex()); - assertEquals(1, listChange.getValues().size()); - assertEquals(eClass0, listChange.getValues().get(0)); - checker += 1; + assertEquals(1, listChange.getValues().size()); + assertEquals(eClass0, listChange.getValues().get(0)); + checker += 1; break; case ChangeKind.REMOVE: - assertEquals(1, listChange.getIndex()); - assertEquals(0, listChange.getReferenceValues().size()); + assertEquals(0, listChange.getIndex()); + assertEquals(0, listChange.getReferenceValues().size()); checker += 4; break; } diff --git a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ListDifferenceAnalyzerTest.java b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ListDifferenceAnalyzerTest.java new file mode 100644 index 000000000..0327a6066 --- /dev/null +++ b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ListDifferenceAnalyzerTest.java @@ -0,0 +1,177 @@ +/** + * <copyright> + * + * Copyright (c) 2011 Ed Merks and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Ed Merks - Initial API and implementation + * + * </copyright> + * + * $Id: ListDifferenceAnalyzerTest.java,v 1.1 2011/04/07 23:41:08 emerks Exp $ + */ +package org.eclipse.emf.test.core.change; + +import java.util.Random; + +import org.eclipse.emf.common.util.BasicEList; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.change.ChangeKind; +import org.eclipse.emf.ecore.change.ListChange; +import org.eclipse.emf.ecore.change.impl.ListChangeImpl; +import org.eclipse.emf.ecore.change.util.ListDifferenceAnalyzer; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +public class ListDifferenceAnalyzerTest extends TestCase +{ + public ListDifferenceAnalyzerTest(String name) + { + super(name); + } + + public static Test suite() + { + TestSuite ts = new TestSuite("ListDifferenceAnalyzer Test"); + ts.addTest(new ListDifferenceAnalyzerTest("testRandom")); + return ts; + } + + public void testRandom() + { + ListDifferenceAnalyzer listDifferenceAnalyzer = + new ListDifferenceAnalyzer() + { + @Override + protected ListChange createListChange(EList<ListChange> listChanges, ChangeKind kind, int index) + { + ListChange listChange = + new ListChangeImpl() + { + @Override + public EStructuralFeature getFeature() + { + return EcorePackage.Literals.ETYPED_ELEMENT__LOWER_BOUND; + } + }; + listChange.setKind(kind); + listChange.setIndex(index); + listChanges.add(listChange); + return listChange; + } + }; + + Random random = + new Random(0) + { + private static final long serialVersionUID = 1L; + + @Override + public int nextInt() + { + int result = super.nextInt(); + return result < 0 ? -result : result; + } + }; + + int repetitions = 50000; + for (int repeat = 0; repeat < repetitions; ++repeat) + { + EList<Object> oldList = new BasicEList<Object>(); + int size = random.nextInt() % 100; + for (int i = 0; i < size; ++i) + { + oldList.add(random.nextInt() % size); + } + EList<Object> newList = new BasicEList<Object>(oldList); + + int removeCount = 0; + int addCount = 0; + for (int i = 0; i < size; i += 2) + { + switch (random.nextInt() % 3) + { + case 0: + { + newList.remove(random.nextInt() % newList.size()); + ++removeCount; + break; + } + case 1: + { + newList.move(random.nextInt() % newList.size(), random.nextInt() % newList.size()); + break; + } + case 2: + { + newList.add(random.nextInt() % (newList.size() + 1), random.nextInt() % size); + ++addCount; + break; + } + } + } + + int deltaRemoveCount = 0; + int deltaAddCount = 0; + EList<ListChange> changes = listDifferenceAnalyzer.analyzeLists(oldList, newList); + for (ListChange listChange : changes) + { + switch (listChange.getKind()) + { + case REMOVE_LITERAL: + { + ++deltaRemoveCount; + break; + } + case MOVE_LITERAL: + { + break; + } + case ADD_LITERAL: + { + ++deltaAddCount; + break; + } + + } + listChange.apply(oldList); + } + + assertTrue(deltaRemoveCount <= removeCount); + assertTrue(deltaAddCount <= addCount); + + /* + try + { + // Create a resource set to hold the resources. + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Register the appropriate resource factory to handle all file extensions. + // + resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put + (Resource.Factory.Registry.DEFAULT_EXTENSION, + new XMIResourceFactoryImpl()); + + Resource changeResource = resourceSet.createResource(URI.createURI("http:///My.test")); + changeResource.getContents().addAll(changes); + changeResource.save(System.out, null); + } + catch (Exception exception) + { + } + */ + + assertEquals(newList, oldList); + } + } + +} diff --git a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/SpecialCasesTest.java b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/SpecialCasesTest.java index d51622e9b..3f0ab8762 100644 --- a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/SpecialCasesTest.java +++ b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/SpecialCasesTest.java @@ -12,7 +12,7 @@ * * </copyright> * - * $Id: SpecialCasesTest.java,v 1.28 2010/02/04 20:56:00 emerks Exp $ + * $Id: SpecialCasesTest.java,v 1.29 2011/04/07 23:41:08 emerks Exp $ */ package org.eclipse.emf.test.core.change; @@ -611,8 +611,10 @@ public class SpecialCasesTest extends TestCase assertEquals("Mary", copiedMary.eGet(name)); assertNotNull(copiedChangeDescription); - assert copiedChangeDescription != null; - copiedChangeDescription.applyAndReverse(); + if (copiedChangeDescription != null) + { + copiedChangeDescription.applyAndReverse(); + } // State 0 assertNull(copiedJohn.eGet(name)); @@ -620,7 +622,10 @@ public class SpecialCasesTest extends TestCase assertEquals("Mary", copiedMary.eGet(name)); assertTrue(friendsOfCopiedJohn.isEmpty()); - copiedChangeDescription.apply(); + if (copiedChangeDescription != null) + { + copiedChangeDescription.apply(); + } // State 1 assertEquals("John", copiedJohn.eGet(name)); diff --git a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/ecore/BinaryResourceTest.java b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/ecore/BinaryResourceTest.java index 6457381aa..ed90c004b 100644 --- a/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/ecore/BinaryResourceTest.java +++ b/tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/ecore/BinaryResourceTest.java @@ -12,7 +12,7 @@ * * </copyright> * - * $Id: BinaryResourceTest.java,v 1.1 2010/02/27 17:10:03 marcelop Exp $ + * $Id: BinaryResourceTest.java,v 1.2 2011/04/07 23:41:08 emerks Exp $ */ package org.eclipse.emf.test.core.ecore; @@ -37,6 +37,8 @@ import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.URIConverter; import org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl; import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; import org.eclipse.emf.test.models.ppo.Item; import org.eclipse.emf.test.models.ppo.PPOFactory; import org.eclipse.emf.test.models.ppo.PurchaseOrder; @@ -61,6 +63,7 @@ public class BinaryResourceTest extends TestCase TestSuite ts = new TestSuite("BinaryResourceTest"); ts.addTest(new BinaryResourceTest("testSaveAndLoad1")); ts.addTest(new BinaryResourceTest("testSaveAndLoad2")); + ts.addTest(new BinaryResourceTest("testSaveAndLoadWithXMIResource")); ts.addTest(new BinaryResourceTest("testSaveAndLoadNoCache1")); ts.addTest(new BinaryResourceTest("testSaveAndLoadNoCache2")); return ts; @@ -151,6 +154,34 @@ public class BinaryResourceTest extends TestCase assertTrue(equalityHelper.equals(rootObjects, resource.getContents())); } + public void testSaveAndLoadWithXMIResource() throws Exception + { + XMLResource savedResource = + new XMIResourceImpl(resourceURI) + { + @Override + protected boolean useUUIDs() + { + return true; + } + }; + savedResource.getDefaultSaveOptions().put(XMLResource.OPTION_BINARY, Boolean.TRUE); + savedResource.getContents().addAll(rootObjects); + savedResource.save(null); + assertTrue(resourceURI.toString(), URIConverter.INSTANCE.exists(resourceURI, null)); + + XMLResource loadedResource = new XMIResourceImpl(resourceURI); + loadedResource.getDefaultLoadOptions().put(XMLResource.OPTION_BINARY, Boolean.TRUE); + loadedResource.load(null); + assertTrue(equalityHelper.equals(rootObjects, loadedResource.getContents())); + for (int i = 0, size = rootObjects.size(); i < size; ++i) + { + String loadedID = loadedResource.getID(loadedResource.getContents().get(i)); + assertNotNull(loadedID); + assertEquals(savedResource.getID(rootObjects.get(i)), loadedID); + } + } + public void testSaveAndLoadNoCache1() throws Exception { Map<String, Object> options = new HashMap<String, Object>(); |