package de.hub.emffrag.fragmentation; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import de.hub.emffrag.EmfFragActivator; import de.hub.emffrag.fragmentation.IndexBasedIdSemantics.IdBehaviour; import de.hub.emffrag.testmodels.testmodel.TestObject; public class ConfigurationTests extends AbstractFragmentationTests { @Before public void ensureDefaultConfiguration() { EmfFragActivator.instance.idSemantics = new IndexBasedIdSemantics(IdBehaviour.strict); EmfFragActivator.instance.defaultModel = null; } @Override protected TestObject createTestObject(int id) { return Assertions.createTestObjectWithIndexes(id); } @Test public void testStrictIdBehavior() { model.root().getContents().add(object1); try { object1.getCrossReferences().add(object2); } catch (NotInAFragmentedModelException e) { return; } catch (Exception e) { e.printStackTrace(); Assert.fail("Wrong exception thrown: " + e.getClass().getCanonicalName()); } Assert.fail("Exception not thrown"); } @Test public void testPreliminaryIdBehavior() { EmfFragActivator.instance.idSemantics = new IndexBasedIdSemantics(IdBehaviour.preliminary); model.root().getContents().add(object1); try { object1.getCrossReferences().add(object2); FInternalObjectImpl fInternalObject = ((FObjectImpl)object2).fInternalObject(); ((IndexBasedIdSemantics)EmfFragActivator.instance.idSemantics).assertHasPreliminary(fInternalObject); } catch (Exception e) { Assert.fail("Exception thrown: " + e.getClass().getCanonicalName()); } object1.getFragmentedContents().add(object2); model.save(null); reinitializeModel(); Assertions.root(model).getCrossReferences().assertSize(1).get(0).assertId(2); Assertions.root(model).getFragmentedContents().assertSize(1).get(0).assertId(2); } @Test public void testDefaultModelIdBehavior1() { EmfFragActivator.instance.idSemantics = new IndexBasedIdSemantics(IdBehaviour.defaultModel); EmfFragActivator.instance.defaultModel = model; model.root().getContents().add(object1); try { object1.getCrossReferences().add(object2); FInternalObjectImpl fInternalObject = ((FObjectImpl)object2).fInternalObject(); ((IndexBasedIdSemantics)EmfFragActivator.instance.idSemantics).assertHasNotPreliminary(fInternalObject); } catch (Exception e) { Assert.fail("Exception thrown: " + e.getClass().getCanonicalName()); } object1.getFragmentedContents().add(object2); model.save(null); reinitializeModel(); Assertions.root(model).getCrossReferences().assertSize(1).get(0).assertId(2); Assertions.root(model).getFragmentedContents().assertSize(1).get(0).assertId(2); } @Test public void testDefaultModelIdBehavior2() { EmfFragActivator.instance.idSemantics = new IndexBasedIdSemantics(IdBehaviour.defaultModel); EmfFragActivator.instance.defaultModel = model; model.root().getContents().add(object1); try { object1.getCrossReferences().add(object2); FInternalObjectImpl fInternalObject = ((FObjectImpl)object2).fInternalObject(); ((IndexBasedIdSemantics)EmfFragActivator.instance.idSemantics).assertHasNotPreliminary(fInternalObject); } catch (Exception e) { Assert.fail("Exception thrown: " + e.getClass().getCanonicalName()); } object1.getRegularContents().add(object2); model.save(null); reinitializeModel(); Assertions.root(model).getCrossReferences().assertSize(1).get(0).assertId(2); Assertions.root(model).getRegularContents().assertSize(1).get(0).assertId(2); } }