// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.core.internal.proportions; import static org.eclipse.core.resources.ResourcesPlugin.getWorkspace; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.junit.After; import org.junit.Rule; import org.junit.Test; import org.projectusus.adapter.ICodeProportionComputationTarget; import org.projectusus.core.internal.JavaProject; import org.projectusus.core.internal.Workspace; import org.projectusus.core.project2.IUSUSProject; public class ProjectChangeNotificationsPDETest { @Rule public Workspace workspace = new Workspace(); @Rule public JavaProject project = new JavaProject(); @Rule public JavaProject otherProject = new JavaProject(); private TestResourceChangeListener listener = new TestResourceChangeListener(); @After public void tearDown() throws CoreException { getWorkspace().removeResourceChangeListener( listener ); } @Test public void projectWithoutFileCreated_IsNotRecognizedAsProject() throws Exception { otherProject.delete(); getWorkspace().addResourceChangeListener( listener ); otherProject.create(); assertTrue( otherProject.get().isAccessible() ); assertTrue( otherProject.as( IUSUSProject.class ).isUsusProject() ); listener.assertNoException(); ICodeProportionComputationTarget target = listener.getTarget(); assertEquals( 0, target.getRemovedProjects().size() ); assertEquals( 0, target.getProjects().size() ); } @Test public void projectClosed_IsRecognizedAsRemovedProject() throws Exception { getWorkspace().addResourceChangeListener( listener ); project.close(); listener.assertNoException(); ICodeProportionComputationTarget target = listener.getTarget(); assertEquals( 0, target.getProjects().size() ); assertEquals( 1, target.getRemovedProjects().size() ); IProject removedProject = target.getRemovedProjects().iterator().next(); assertEquals( project.get(), removedProject ); } @Test public void projectWithFileOpened_IsRecognizedAsProject() throws Exception { project.createFile( "someFile.java", "some content" ); project.close(); workspace.buildFullyAndWait(); getWorkspace().addResourceChangeListener( listener ); project.open(); listener.assertNoException(); ICodeProportionComputationTarget target = listener.getTarget(); assertEquals( 1, target.getProjects().size() ); assertEquals( 0, target.getRemovedProjects().size() ); IProject affectedProject = target.getProjects().iterator().next(); assertEquals( project.get(), affectedProject ); } @Test public void projectDeleted_IsRecognizedAsRemovedProject() throws Exception { getWorkspace().addResourceChangeListener( listener ); project.delete(); listener.assertNoException(); ICodeProportionComputationTarget target = listener.getTarget(); assertEquals( 0, target.getProjects().size() ); assertEquals( 1, target.getRemovedProjects().size() ); IProject removedProject = target.getRemovedProjects().iterator().next(); assertEquals( project.get(), removedProject ); } }