package de.hub.emffrag.fragmentation; import junit.framework.Assert; import org.junit.Test; import de.hub.emffrag.EmfFragActivator; import de.hub.emffrag.testmodels.testmodel.TestObject; public class CrossReferenceTests extends AbstractFragmentationTests { @Test public void testIdPersitence() { root.getContents().add(object1); String id = ((IndexBasedIdSemantics)EmfFragActivator.instance.idSemantics).getId(((FObjectImpl)object1).fInternalObject(), true); model.save(null); reinitializeModel(); TestObject value = Assertions.root(model).assertId(1).value(); String newId = ((IndexBasedIdSemantics)EmfFragActivator.instance.idSemantics).getId(((FObjectImpl)value).fInternalObject(), false); Assert.assertNotNull("ID not persisted.", newId); Assert.assertEquals("Wrong ID.", id, newId); } @Test public void testAddCrossReference() { root.getContents().add(object1); object1.getRegularContents().add(object2); object1.getCrossReferences().add(object2); model.save(null); reinitializeModel(); model.assertFragmentsIndex(0l, 1l); model.assertIdIndex(0l, 0l); Assertions .root(model).assertId(1) .getRegularContents().assertSize(1).get(0).assertId(2).save() .eContainer().assertId(1).getCrossReferences().assertSize(1).assertContains() .get(0).assertId(2); } @Test public void testAddCrossFragmentReference() { root.getContents().add(object1); object1.getFragmentedContents().add(object2); object2.getFragmentedContents().add(object3); object1.getCrossReferences().add(object3); model.save(null); reinitializeModel(); model.assertFragmentsIndex(0l, 3l); model.assertIdIndex(0l, 0l); Assertions .root(model).assertId(1).save().getCrossReferences().assertSize(1).get(0).assertId(3) .load().getFragmentedContents().assertSize(1).get(0).getFragmentedContents().assertSize(1).get(0).assertId(3); } @Test public void testRemoveCrossReference() { root.getContents().add(object1); object1.getRegularContents().add(object2); object1.getCrossReferences().add(object2); object1.getCrossReferences().clear(); model.save(null); reinitializeModel(); model.assertFragmentsIndex(0l, 1l); model.assertIdIndex(0l, 0l); Assertions .root(model).assertId(1) .getCrossReferences().assertSize(0) .getRegularContents().assertSize(1).get(0).assertId(2); } @Test public void testMoveCrossReferenceWithInFragment() { root.getContents().add(object1); object1.getRegularContents().add(object2); object2.getRegularContents().add(object3); object1.getCrossReferences().add(object3); object1.getRegularContents().add(object3); object1.getRegularContents().remove(object2); model.save(null); reinitializeModel(); model.assertFragmentsIndex(0l, 1l); model.assertIdIndex(0l, 0l); Assertions .root(model).assertId(1).save().getRegularContents().assertSize(1).get(0).assertId(3) .load().getCrossReferences().assertSize(1).get(0).assertId(3); } @Test public void testMoveCrossReferenceOverFragments() { root.getContents().add(object1); object1.getFragmentedContents().add(object2); object2.getFragmentedContents().add(object3); object1.getCrossReferences().add(object3); object1.getFragmentedContents().add(object3); object1.getFragmentedContents().remove(object2); model.save(null); reinitializeModel(); model.assertFragmentsIndex(0l, 3l); model.assertIdIndex(0l, 0l); Assertions .root(model).assertId(1).save().getFragmentedContents().assertSize(1).get(0).assertId(3) .load().getCrossReferences().assertSize(1).get(0).assertId(3); } @Test public void testIncrementalFragmentChange() { model.root().getContents().add(object1); object1.getRegularContents().add(object2); object2.getRegularContents().add(object3); object1.getCrossReferences().add(object3); object1.getFragmentedContents().add(object2); TestObject object3New = Assertions .root(model).assertId(1).getCrossReferences().assertSize(1) .get(0).assertId(3).value(); Assert.assertEquals(object3, object3New); model.save(null); reinitializeModel(); Assertions .root(model).assertId(1).getCrossReferences().assertSize(1) .get(0).assertId(3); } }