Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authoremerks2011-04-07 23:41:07 +0000
committeremerks2011-04-07 23:41:07 +0000
commit0ae8a236fda1a4a75a38e7c0f720a49a12e952e8 (patch)
treee37a2664aa90df6879a97a577332445e39df4c45 /tests
parent94e3331cb459e64100dbfa061d19982ff958b867 (diff)
downloadorg.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')
-rw-r--r--tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeAllSuites.java4
-rw-r--r--tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeDescriptionReverseTest.java312
-rw-r--r--tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ChangeRecordTest.java16
-rw-r--r--tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/ListDifferenceAnalyzerTest.java177
-rw-r--r--tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/change/SpecialCasesTest.java13
-rw-r--r--tests/org.eclipse.emf.test.core/src/org/eclipse/emf/test/core/ecore/BinaryResourceTest.java33
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>();

Back to the top