blob: a6238d698dfd1260b1017e89c409db84f52cab02 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* jfaltermeier - initial API and implementation
******************************************************************************/
package org.eclipse.emf.ecp.view.edapt;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.emf.ecp.view.edapt.util.test.model.a.EdaptTestAPackage;
import org.eclipse.emf.ecp.view.edapt.util.test.model.b.EdaptTestBPackage;
import org.eclipse.emf.ecp.view.edapt.util.test.model.c.EdaptTestCPackage;
import org.eclipse.emf.ecp.view.edapt.util.test.model.d.EdaptTestDPackage;
import org.eclipse.emf.ecp.view.edapt.util.test.model.e.EdaptTestEPackage;
import org.eclipse.emf.ecp.view.edapt.util.test.model.f.EdaptTestFPackage;
import org.eclipse.emf.ecp.view.edapt.util.test.model.w.EdaptTestWPackage;
import org.eclipse.emf.ecp.view.edapt.util.test.model.x.EdaptTestXPackage;
import org.eclipse.emf.ecp.view.edapt.util.test.model.y.EdaptTestYPackage;
import org.eclipse.emf.ecp.view.edapt.util.test.model.z.EdaptTestZPackage;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Tests the {@link PackageDependencyIterator}. Setup is performed via {@link PackageDependencyTree}, so this is a
* integration test between the two components.
*
* @author jfaltermeier
*
*/
public class PackageDependencyTreeIterator_Test {
@BeforeClass
public static void beforeClass() {
// non osgi -> register epackages by hand
EdaptTestAPackage.eINSTANCE.eClass();
EdaptTestBPackage.eINSTANCE.eClass();
EdaptTestCPackage.eINSTANCE.eClass();
EdaptTestDPackage.eINSTANCE.eClass();
EdaptTestEPackage.eINSTANCE.eClass();
EdaptTestFPackage.eINSTANCE.eClass();
EdaptTestWPackage.eINSTANCE.eClass();
EdaptTestXPackage.eINSTANCE.eClass();
EdaptTestYPackage.eINSTANCE.eClass();
EdaptTestZPackage.eINSTANCE.eClass();
}
@Test
public void testIteratorWithCircles() {
final PackageDependencyTree packageDependencyTree = new PackageDependencyTree();
packageDependencyTree.addPackage(EdaptTestFPackage.eNS_URI);
final Iterator<Set<String>> iterator = packageDependencyTree.getIerator();
// A
assertTrue(iterator.hasNext());
final Set<String> aSet = iterator.next();
assertEquals(1, aSet.size());
assertTrue(aSet.contains(EdaptTestAPackage.eNS_URI));
// B C D
assertTrue(iterator.hasNext());
final Set<String> bcdSet = iterator.next();
assertEquals(3, bcdSet.size());
assertTrue(bcdSet.contains(EdaptTestBPackage.eNS_URI));
assertTrue(bcdSet.contains(EdaptTestCPackage.eNS_URI));
assertTrue(bcdSet.contains(EdaptTestDPackage.eNS_URI));
// E F
assertTrue(iterator.hasNext());
final Set<String> efSet = iterator.next();
assertEquals(2, efSet.size());
assertTrue(efSet.contains(EdaptTestEPackage.eNS_URI));
assertTrue(efSet.contains(EdaptTestFPackage.eNS_URI));
assertFalse(iterator.hasNext());
}
@Test
public void testIteratorWithCircleAtStart() {
final PackageDependencyTree packageDependencyTree = new PackageDependencyTree();
packageDependencyTree.addPackage(EdaptTestZPackage.eNS_URI);
final Iterator<Set<String>> iterator = packageDependencyTree.getIerator();
// W X
assertTrue(iterator.hasNext());
final Set<String> wxSet = iterator.next();
assertEquals(2, wxSet.size());
assertTrue(wxSet.contains(EdaptTestWPackage.eNS_URI));
assertTrue(wxSet.contains(EdaptTestXPackage.eNS_URI));
// Y Z
assertTrue(iterator.hasNext());
final Set<String> yzSet = iterator.next();
assertEquals(2, yzSet.size());
assertTrue(yzSet.contains(EdaptTestYPackage.eNS_URI));
assertTrue(yzSet.contains(EdaptTestZPackage.eNS_URI));
}
}