package de.hub.emffrag.fragmentation; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EStructuralFeature; import org.junit.Assert; import org.junit.Test; import de.hub.emffrag.EmfFragActivator; import de.hub.emffrag.testmodels.testmodel.TestObject; import de.hub.emffrag.testmodels.testmodel.TestObjectWithIndexes; import de.hub.emffrag.testmodels.testmodel.frag.meta.TestModelPackage; public class IndexedContentsValueSetTests extends IndexedReferenceValueSetTests { @Override protected EList<TestObject> valueSet() { return ((TestObjectWithIndexes)testObject).getIndexedContents(); } @Override protected EStructuralFeature testFeature() { return TestModelPackage.eINSTANCE.getTestObjectWithIndexes_IndexedContents(); } @Override protected void assertIdIndex() { model.assertIdIndex(0l, 0l); } @Override protected void assertFragmentsIndex() { model.assertFragmentsIndex(0l, 1l); } @Override protected TestObject assertTestObject() { return Assertions.root(model).assertId(0).value(); } @Test public void moveValueTest1() { root.getContents().add(testObject); root.getContents().add(testObject2); root.getContents().add(object1); object1.getFragmentedContents().add(object2); object1.getRegularContents().add(object3); valueSet().add(object1); valueSet().add(object2); valueSet().add(object3); ((TestObjectWithIndexes)testObject2).getIndexedContents().add(object2); Assert.assertEquals(0, valueSet().indexOf(object1)); Assert.assertEquals(-1, valueSet().indexOf(object2)); Assert.assertEquals(2, valueSet().indexOf(object3)); boolean exceptionThrown = false; try { valueSet().get(1); } catch (IndexOutOfBoundsException e) { exceptionThrown = true; } Assert.assertTrue(exceptionThrown); Assert.assertEquals(0, ((TestObjectWithIndexes)testObject2).getIndexedContents().indexOf(object2)); EmfFragActivator.instance.assertWarningsAndErrors(true); } @Test public void addTest() { root.getContents().add(testObject); testObject.getFragmentedContents().add(object1); testObject.getFragmentedContents().add(object2); testObject.getFragmentedContents().add(object3); valueSet().add(object1); valueSet().add(object2); valueSet().add(object3); model.save(null); reinitializeModel(); testObject = Assertions.root(model).assertId(0).value(); assertValueSet(valueSet(), 3); assertObjectInValueSet(valueSet(), 0); assertObjectInValueSet(valueSet(), 1); assertObjectInValueSet(valueSet(), 2); assertFragmentsIndex(); assertIdIndex(); model.assertValueSetIndex(testObject, testFeature(), 0, 3); } }