package org.eclipse.emf.compare.ide.ui.tests.unit.incoming; import static com.google.common.collect.ImmutableSet.of; import static org.eclipse.emf.compare.ide.ui.internal.logical.resolver.CrossReferenceResolutionScope.CONTAINER; import static org.eclipse.emf.compare.ide.ui.internal.logical.resolver.CrossReferenceResolutionScope.OUTGOING; import static org.eclipse.emf.compare.ide.ui.internal.logical.resolver.CrossReferenceResolutionScope.PROJECT; import static org.eclipse.emf.compare.ide.ui.internal.logical.resolver.CrossReferenceResolutionScope.SELF; import static org.eclipse.emf.compare.ide.ui.internal.logical.resolver.CrossReferenceResolutionScope.WORKSPACE; import java.io.File; import java.util.Arrays; import java.util.Set; import org.eclipse.core.resources.IProject; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.compare.ide.ui.internal.logical.resolver.CrossReferenceResolutionScope; import org.eclipse.emf.compare.ide.ui.tests.unit.LocalResolutionTest; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; /** * This checks the logical model in the following configuration: * * <pre> * /project-2/types.ecore * /project-2/model.ecore -> 1-ary EReference non-containment to types.ecore * </pre> * * The file for which the logical model is computed is "types.ecore". NOTE: This test differs from * {@link IncomingSingleEReferenceTest} because the files read are serialized with an old version of EMF, with * a format that is valid, but apparently not used anymore. * * @see Bugzilla 473997 * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a> */ @RunWith(Parameterized.class) public class IncomingSingleEReferenceOldSerializationTest extends LocalResolutionTest { protected static final String FILE1_NAME = "types.ecore"; //$NON-NLS-1$ protected static final String FILE2_NAME = "model.ecore"; //$NON-NLS-1$ public IncomingSingleEReferenceOldSerializationTest(CrossReferenceResolutionScope scopeToUse, Set<? extends Set<URI>> uriSets, Set<String> traversalPaths) { super(scopeToUse, uriSets, traversalPaths); } @Parameters(name = "{index}: scope {0} -> graph {1}, traversal {2}") public static Iterable<Object[]> data1() { return Arrays .asList(new Object[][] { {WORKSPACE, of(of(resourceURI(file1()), resourceURI(file2()))), of(file1(), file2()) }, {PROJECT, of(of(resourceURI(file1()), resourceURI(file2()))), of(file1(), file2()) }, {CONTAINER, of(of(resourceURI(file1()), resourceURI(file2()))), of(file1(), file2()) }, {OUTGOING, of(of(resourceURI(file1()))), of(file1()) }, {SELF, of(of(resourceURI(file1()))), of(file1()) }, }); } private static String file1() { return "/" + PROJECT2_NAME + "/" + FILE1_NAME; //$NON-NLS-1$ //$NON-NLS-2$ } private static String file2() { return "/" + PROJECT2_NAME + "/" + FILE2_NAME; //$NON-NLS-1$ //$NON-NLS-2$ } @Override protected void setUpModel() throws Exception { final IProject iProject = project2.getProject(); final File file1 = project.getOrCreateFile(iProject, FILE1_NAME); final File file2 = project.getOrCreateFile(iProject, FILE2_NAME); iFile1 = project.getIFile(iProject, file1); iFile2 = project.getIFile(iProject, file2); iFile1.setContents(this.getClass().getResourceAsStream(FILE1_NAME), true, false, null); iFile2.setContents(this.getClass().getResourceAsStream(FILE2_NAME), true, false, null); } }