| package org.eclipse.wst.common.project.facet.core.tests; |
| |
| import java.io.IOException; |
| import java.util.ArrayList; |
| import java.util.Collections; |
| |
| import junit.framework.Test; |
| import junit.framework.TestCase; |
| import junit.framework.TestSuite; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.wst.common.project.facet.core.IProjectFacet; |
| import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; |
| import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; |
| import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action; |
| import org.eclipse.wst.common.project.facet.core.tests.support.TestUtils; |
| |
| public class FacetActionSortTests |
| |
| extends TestCase |
| |
| { |
| private static IProjectFacet f1; |
| private static IProjectFacetVersion f1v10; |
| private static IProjectFacetVersion f1v12; |
| private static IProjectFacetVersion f1v121; |
| private static IProjectFacetVersion f1v13; |
| private static IProjectFacetVersion f1v20; |
| |
| private static IProjectFacet f2; |
| private static IProjectFacetVersion f2v35; |
| private static IProjectFacetVersion f2v35a; |
| private static IProjectFacetVersion f2v47; |
| private static IProjectFacetVersion f2v47b; |
| private static IProjectFacetVersion f2v47c; |
| |
| private static IProjectFacet f2ext; |
| private static IProjectFacetVersion f2extv10; |
| |
| private static IProjectFacet f3a; |
| private static IProjectFacetVersion f3av10; |
| private static IProjectFacetVersion f3av20; |
| |
| private static IProjectFacet f3b; |
| private static IProjectFacetVersion f3bv10; |
| private static IProjectFacetVersion f3bv20; |
| |
| private static IProjectFacet f3c; |
| private static IProjectFacetVersion f3cv10; |
| private static IProjectFacetVersion f3cv20; |
| |
| static |
| { |
| try |
| { |
| f1 = ProjectFacetsManager.getProjectFacet( "facet1" ); |
| f1v10 = f1.getVersion( "1.0" ); |
| f1v12 = f1.getVersion( "1.2" ); |
| f1v121 = f1.getVersion( "1.2.1" ); |
| f1v13 = f1.getVersion( "1.3" ); |
| f1v20 = f1.getVersion( "2.0" ); |
| |
| f2 = ProjectFacetsManager.getProjectFacet( "facet2" ); |
| f2v35 = f2.getVersion( "3.5" ); |
| f2v35a = f2.getVersion( "3.5#a" ); |
| f2v47 = f2.getVersion( "4.7" ); |
| f2v47b = f2.getVersion( "4.7#b" ); |
| f2v47c = f2.getVersion( "4.7#c" ); |
| |
| f2ext = ProjectFacetsManager.getProjectFacet( "facet2ext" ); |
| f2extv10 = f2ext.getVersion( "1.0" ); |
| |
| f3a = ProjectFacetsManager.getProjectFacet( "facet3a" ); |
| f3av10 = f3a.getVersion( "1.0" ); |
| f3av20 = f3a.getVersion( "2.0" ); |
| |
| f3b = ProjectFacetsManager.getProjectFacet( "facet3b" ); |
| f3bv10 = f3b.getVersion( "1.0" ); |
| f3bv20 = f3b.getVersion( "2.0" ); |
| |
| f3c = ProjectFacetsManager.getProjectFacet( "facet3c" ); |
| f3cv10 = f3c.getVersion( "1.0" ); |
| f3cv20 = f3c.getVersion( "2.0" ); |
| } |
| catch( Exception e ) |
| { |
| // Ignore failures. This api is tested explicitly. |
| } |
| } |
| |
| private FacetActionSortTests( final String name ) |
| { |
| super( name ); |
| } |
| |
| public static Test suite() |
| { |
| final TestSuite suite = new TestSuite(); |
| |
| suite.setName( "Facet Action Sort Tests" ); |
| |
| suite.addTest( new FacetActionSortTests( "testUninstallComesFirst1" ) ); |
| suite.addTest( new FacetActionSortTests( "testUninstallComesFirst2" ) ); |
| suite.addTest( new FacetActionSortTests( "testSortStability1" ) ); |
| suite.addTest( new FacetActionSortTests( "testSortStability2" ) ); |
| |
| return suite; |
| } |
| |
| /** |
| * Tests whether the sort places uninstall actions first. This is the |
| * control test case. The input already places uninstall first. |
| */ |
| |
| public void testUninstallComesFirst1() |
| { |
| final Action a1 = new Action( Action.Type.INSTALL, f1v12, null ); |
| final Action a2 = new Action( Action.Type.UNINSTALL, f3av10, null ); |
| |
| final ArrayList actions = new ArrayList(); |
| |
| actions.add( a2 ); |
| actions.add( a1 ); |
| |
| ProjectFacetsManager.sort( TestUtils.asSet( f3av10 ), actions ); |
| assertEquals( actions, TestUtils.asList( a2, a1 ) ); |
| } |
| |
| /** |
| * Tests whether the sort places uninstall actions first. The test case |
| * places an install action in front of the uninstall action and checks |
| * whether the sort algorithm reverses the order. |
| */ |
| |
| public void testUninstallComesFirst2() |
| { |
| final Action a1 = new Action( Action.Type.INSTALL, f1v12, null ); |
| final Action a2 = new Action( Action.Type.UNINSTALL, f3av10, null ); |
| |
| final ArrayList actions = new ArrayList(); |
| |
| actions.add( a1 ); |
| actions.add( a2 ); |
| |
| ProjectFacetsManager.sort( TestUtils.asSet( f3av10 ), actions ); |
| assertEquals( actions, TestUtils.asList( a2, a1 ) ); |
| } |
| |
| /** |
| * Tests whether the sort produces "stable" results given unrelated facets. |
| * This is the control test case. The input is already in the correct order. |
| */ |
| |
| public void testSortStability1() |
| { |
| final Action a1 = new Action( Action.Type.INSTALL, f1v12, null ); |
| final Action a2 = new Action( Action.Type.INSTALL, f3av10, null ); |
| |
| final ArrayList actions = new ArrayList(); |
| |
| actions.add( a1 ); |
| actions.add( a2 ); |
| |
| ProjectFacetsManager.sort( Collections.EMPTY_SET, actions ); |
| assertEquals( actions, TestUtils.asList( a1, a2 ) ); |
| } |
| |
| /** |
| * Tests whether the sort produces "stable" results given unrelated facets. |
| * The input facets are in the reverse order. |
| */ |
| |
| public void testSortStability2() |
| { |
| final Action a1 = new Action( Action.Type.INSTALL, f1v12, null ); |
| final Action a2 = new Action( Action.Type.INSTALL, f3av10, null ); |
| |
| final ArrayList actions = new ArrayList(); |
| |
| actions.add( a2 ); |
| actions.add( a1 ); |
| |
| ProjectFacetsManager.sort( Collections.EMPTY_SET, actions ); |
| assertEquals( actions, TestUtils.asList( a1, a2 ) ); |
| } |
| |
| } |