package de.hub.emffrag.fragmentation; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.EcorePackage; import org.junit.Before; import de.hub.emffrag.datastore.IDataStore; import de.hub.emffrag.model.emffrag.EmfFragPackage; import de.hub.emffrag.model.emffrag.Root; import de.hub.emffrag.testmodels.testmodel.TestObject; import de.hub.emffrag.testmodels.testmodel.frag.meta.TestModelPackage; public class AbstractFragmentationTests extends AbstractTests { protected IDataStore dataStore = null; protected FragmentedModel model = null; protected TestModelPackage metaModel = null; protected Root root = null; protected TestObject object1 = null; protected TestObject object2 = null; protected TestObject object3 = null; protected TestObject object4 = null; protected TestModelPackage getMetaModel() { return TestModelPackage.eINSTANCE; } @Before public void registerPackages() { if (!EPackage.Registry.INSTANCE.containsKey(EmfFragPackage.eINSTANCE.getNsURI())) { EPackage.Registry.INSTANCE.put(TestModelPackage.eINSTANCE.getNsURI(), EmfFragPackage.eINSTANCE); } if (!EPackage.Registry.INSTANCE.containsKey(TestModelPackage.eINSTANCE.getNsURI())) { EPackage.Registry.INSTANCE.put(TestModelPackage.eINSTANCE.getNsURI(), getMetaModel()); } if (!EPackage.Registry.INSTANCE.containsKey(EcorePackage.eINSTANCE.getNsURI())) { EPackage.Registry.INSTANCE.put(EcorePackage.eINSTANCE.getNsURI(), EcorePackage.eINSTANCE); } } protected boolean doInitializeModel() { return true; } @Before public void standardInitialization() { dataStore = createTestDataStore(); metaModel = getMetaModel(); ReflectiveMetaModelRegistry.instance.registerUserMetaModel(metaModel); if (doInitializeModel()) { model = createFragmentedModel(dataStore, metaModel); root = model.root(); } object1 = createTestObject(1); object2 = createTestObject(2); object3 = createTestObject(3); object4 = createTestObject(4); } protected TestObject createTestObject(int index) { return Assertions.createTestObject(index); } protected final FragmentedModel createFragmentedModel(IDataStore dataStore, EPackage metaModel) { return createFragmentedModel(dataStore, -1, metaModel); } protected FragmentedModel createFragmentedModel(IDataStore dataStore, int cacheSize, EPackage metaModel) { return new FragmentedModel(dataStore, cacheSize); } protected void reinitializeModel() { model = createFragmentedModel(dataStore, TestModelPackage.eINSTANCE); } protected TestObject addObject(TestObject container, boolean fragmented) { TestObject contents = Assertions.createTestObject(4); if (container != null) { if (fragmented) { container.getFragmentedContents().add(contents); } else { container.getRegularContents().add(contents); } } return contents; } @SuppressWarnings("unchecked") protected boolean removeObject(TestObject contents) { EStructuralFeature containingFeature = contents.eContainingFeature(); ((EList<EObject>) contents.eContainer().eGet(containingFeature)).remove(contents); return containingFeature.getName().equals(TestModelPackage.eINSTANCE.getTestObject_FragmentedContents().getName()); } }