diff --git a/.classpath b/.classpath index 1aa47e8..b640121 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,17 @@ + + + + + + - diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index f890698..a698e59 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,12 @@ -#Thu Aug 19 14:41:32 BRT 2010 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/lib/cglib-nodep-2.2.2.jar b/lib/cglib-nodep-2.2.2.jar new file mode 100644 index 0000000..02d81e8 Binary files /dev/null and b/lib/cglib-nodep-2.2.2.jar differ diff --git a/lib/hamcrest-core-1.3.jar b/lib/hamcrest-core-1.3.jar new file mode 100644 index 0000000..9d5fe16 Binary files /dev/null and b/lib/hamcrest-core-1.3.jar differ diff --git a/lib/javassist-3.21.0-GA.jar b/lib/javassist-3.21.0-GA.jar new file mode 100644 index 0000000..64549c4 Binary files /dev/null and b/lib/javassist-3.21.0-GA.jar differ diff --git a/lib/mockito-core-1.10.19.jar b/lib/mockito-core-1.10.19.jar new file mode 100644 index 0000000..d94e289 Binary files /dev/null and b/lib/mockito-core-1.10.19.jar differ diff --git a/lib/objenesis-2.4.jar b/lib/objenesis-2.4.jar new file mode 100644 index 0000000..f76ea51 Binary files /dev/null and b/lib/objenesis-2.4.jar differ diff --git a/lib/powermock-mockito-1.6.6-full.jar b/lib/powermock-mockito-1.6.6-full.jar new file mode 100644 index 0000000..8dfbafe Binary files /dev/null and b/lib/powermock-mockito-1.6.6-full.jar differ diff --git a/src/besouro/classification/zorro/ZorroEpisodeClassification.java b/src/besouro/classification/zorro/ZorroEpisodeClassification.java index ef7a89d..15524b4 100644 --- a/src/besouro/classification/zorro/ZorroEpisodeClassification.java +++ b/src/besouro/classification/zorro/ZorroEpisodeClassification.java @@ -67,7 +67,7 @@ protected QueryResult queryjessRules(Episode episode) { engine.run(); - //debugFacts(); + debugFacts(); QueryResult result = engine.runQueryStar("episode-classification-query", new ValueVector()); return result; @@ -81,9 +81,11 @@ protected QueryResult queryjessRules(Episode episode) { private void debugFacts() { Iterator it = engine.listFacts(); - while (it.hasNext()) { - System.out.println(it.next()); - } + try { + while (it.hasNext()) { + System.out.println(it.next()); + } + } catch(Exception e) {} } public void assertJessFact(int index, Action action){ diff --git a/src/besouro/listeners/BesouroListenerSet.java b/src/besouro/listeners/BesouroListenerSet.java index fb35af6..5a2fd97 100644 --- a/src/besouro/listeners/BesouroListenerSet.java +++ b/src/besouro/listeners/BesouroListenerSet.java @@ -8,10 +8,13 @@ import besouro.plugin.Activator; import besouro.model.Action; import besouro.stream.ActionOutputStream; +import java.util.Date; public class BesouroListenerSet implements ActionOutputStream { private static BesouroListenerSet singleton; + private String actualEditedFile = ""; + private Date actualEditedDate; public static BesouroListenerSet getSingleton() { if (singleton==null) { @@ -67,4 +70,19 @@ public void addAction(Action action) { } + public String getActualEditedFile() { + return this.actualEditedFile; + } + + public void setActualEditedFile(String actualEditedFile) { + this.actualEditedFile = actualEditedFile; + } + + public Date getActualEditedDate() { + return this.actualEditedDate; + } + + public void setActualEditedDate(Date actualEditedDate) { + this.actualEditedDate = actualEditedDate; + } } diff --git a/src/besouro/listeners/JUnitListener.java b/src/besouro/listeners/JUnitListener.java index 6d89a9e..8509bb5 100644 --- a/src/besouro/listeners/JUnitListener.java +++ b/src/besouro/listeners/JUnitListener.java @@ -5,7 +5,9 @@ import java.util.Date; import java.util.List; +import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.IJavaElement; @@ -19,6 +21,8 @@ import org.eclipse.jdt.junit.model.ITestRunSession; import org.eclipse.jdt.junit.model.ITestSuiteElement; +import besouro.measure.JavaStatementMeter; +import besouro.model.EditAction; import besouro.model.UnitTestAction; import besouro.model.UnitTestCaseAction; import besouro.model.UnitTestSessionAction; @@ -28,6 +32,7 @@ public class JUnitListener extends TestRunListener { private ActionOutputStream stream; + private JavaStatementMeter measurer = new JavaStatementMeter(); public JUnitListener(ActionOutputStream stream) { this.stream = stream; @@ -36,6 +41,35 @@ public JUnitListener(ActionOutputStream stream) { @Override public void sessionFinished(ITestRunSession session) { + // Get Last edited file + BesouroListenerSet listeners = BesouroListenerSet.getSingleton(); + String actualEditedFile = listeners.getActualEditedFile(); + + // Add last edited file + if (!actualEditedFile.isEmpty()) { + Date actualEditedDate = listeners.getActualEditedDate(); + + Path path = new Path(actualEditedFile); + IFile changedFile = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + + EditAction action = new EditAction(actualEditedDate, changedFile.getName()); + + JavaStatementMeter meter = this.measurer.measureJavaFile(changedFile); + + action.setFileSize((int) changedFile.getLocation().toFile().length()); + action.setIsTestEdit(meter.isTest()); + action.setMethodsCount(meter.getNumOfMethods()); + action.setStatementsCount(meter.getNumOfStatements()); + action.setTestMethodsCount(meter.getNumOfTestMethods()); + action.setTestAssertionsCount(meter.getNumOfTestAssertions()); + + stream.addAction(action); + } + + listeners.setActualEditedFile(""); + // END - Get Last edited file + + boolean isSuccessfull = true; for (UnitTestAction action: getTestFileActions(session, session.getLaunchedProject())) { stream.addAction(action); @@ -105,6 +139,13 @@ private IResource findTestResource(IJavaProject project, String className) { throw new RuntimeException(e); } } + + /** + * for testing purposes + */ + public void setMeasurer(JavaStatementMeter meter) { + this.measurer = meter; + } // private void print(ITestElement session) { diff --git a/src/besouro/listeners/JavaStructureChangeListener.java b/src/besouro/listeners/JavaStructureChangeListener.java index a37c16c..90b39b9 100644 --- a/src/besouro/listeners/JavaStructureChangeListener.java +++ b/src/besouro/listeners/JavaStructureChangeListener.java @@ -5,13 +5,21 @@ import java.util.Iterator; import java.util.List; +import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.ElementChangedEvent; import org.eclipse.jdt.core.IElementChangedListener; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaElementDelta; +import besouro.measure.JavaStatementMeter; +import besouro.model.EditAction; import besouro.model.RefactoringAction; import besouro.stream.ActionOutputStream; @@ -37,12 +45,16 @@ public class JavaStructureChangeListener implements IElementChangedListener { protected static final String PROP_CURRENT_TEST_ASSERTIONS = "Current-Test-Assertions"; private ActionOutputStream stream; + private JavaStatementMeter measurer = new JavaStatementMeter(); public JavaStructureChangeListener(ActionOutputStream stream) { this.stream = stream; } public void elementChanged(ElementChangedEvent event) { + + addToEditedFiles(event.getDelta()); + // IJavaElementDelta jed = event.getDelta().getAffectedChildren()[0]; IJavaElementDelta[] childrenChanges = event.getDelta().getAffectedChildren(); @@ -261,4 +273,63 @@ private void traverse(IJavaElementDelta delta, List additions traverse(children[i], additions, deletions); } } + + private void addToEditedFiles(IJavaElementDelta delta) { + IResource resource = delta.getElement().getResource(); + int flag = delta.getFlags(); + int kind = delta.getKind(); + + // :RESOLVED: 28 Mar 2017 + // Author: Adonis Figueroa + // Note that the 540673 and 540680 enumeration types are not listed in the IJavaElementDelta static filed. + // However, these numbers are generated when a File is edited so that it is checked in the logical condition. + int EDITED_FLAG = 540673; + int METHOD_UPDATED_FLAG = 540680; //Method Name Updated | Added | Deleted + + if ((kind == IJavaElementDelta.CHANGED) && resource instanceof IFile && + (flag == EDITED_FLAG || flag == METHOD_UPDATED_FLAG)) { + if (JAVA.equals(resource.getFileExtension())) { + String fullPath = resource.getFullPath().toString(); + + BesouroListenerSet listeners = BesouroListenerSet.getSingleton(); + String previousEditedFile = listeners.getActualEditedFile(); + + // If edited file is different --> add Action + if (!previousEditedFile.isEmpty() && !previousEditedFile.equals(fullPath)) { + Date previousEditedDate = listeners.getActualEditedDate(); + Path path = new Path(previousEditedFile); + + IFile changedFile = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + EditAction action = new EditAction(previousEditedDate, changedFile.getName()); + + JavaStatementMeter meter = this.measurer.measureJavaFile(changedFile); + + action.setFileSize((int) changedFile.getLocation().toFile().length()); + action.setIsTestEdit(meter.isTest()); + action.setMethodsCount(meter.getNumOfMethods()); + action.setStatementsCount(meter.getNumOfStatements()); + action.setTestMethodsCount(meter.getNumOfTestMethods()); + action.setTestAssertionsCount(meter.getNumOfTestAssertions()); + + stream.addAction(action); + } + + listeners.setActualEditedFile(fullPath); + listeners.setActualEditedDate(new Date()); + } + } + + // Recursively look for changes on children elements. + IJavaElementDelta[] children = delta.getAffectedChildren(); + for (int i = 0; i < children.length; i++) { + addToEditedFiles(children[i]); + } + } + + /** + * for testing purposes + */ + public void setMeasurer(JavaStatementMeter meter) { + this.measurer = meter; + } } \ No newline at end of file diff --git a/src/besouro/listeners/ResourceChangeListener.java b/src/besouro/listeners/ResourceChangeListener.java index 0d8afd2..aa829d0 100644 --- a/src/besouro/listeners/ResourceChangeListener.java +++ b/src/besouro/listeners/ResourceChangeListener.java @@ -56,7 +56,7 @@ public boolean visit(IResourceDelta delta) throws CoreException { IResource resource = delta.getResource(); int flag = delta.getFlags(); - int kind = delta.getKind(); + //int kind = delta.getKind(); // If there is compilation problem with the current java file then send out the activity data. // do not catch errors in other files @@ -76,26 +76,6 @@ public boolean visit(IResourceDelta delta) throws CoreException { // do not visit the children return false; - } else if ((kind == IResourceDelta.CHANGED) && resource instanceof IFile && flag == IResourceDelta.CONTENT) { - - if (resource.getLocation().toString().endsWith(".java")) { - - IFile changedFile = (IFile) resource; - EditAction action = new EditAction(new Date(), changedFile.getName()); - - JavaStatementMeter meter = this.measurer.measureJavaFile(changedFile); - - action.setFileSize((int) changedFile.getLocation().toFile().length()); - action.setIsTestEdit(meter.isTest()); - action.setMethodsCount(meter.getNumOfMethods()); - action.setStatementsCount(meter.getNumOfStatements()); - action.setTestMethodsCount(meter.getNumOfTestMethods()); - action.setTestAssertionsCount(meter.getNumOfTestAssertions()); - - sensor.addAction(action); - - } - } // visit the children diff --git a/test/besouro/classification/TDDMeasureTest.java b/test/besouro/classification/TDDMeasureTest.java index 360a470..0de04de 100644 --- a/test/besouro/classification/TDDMeasureTest.java +++ b/test/besouro/classification/TDDMeasureTest.java @@ -1,7 +1,6 @@ package besouro.classification; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; import besouro.model.Episode; diff --git a/test/besouro/classification/besouro/BesouroEpisodeClassifierTest.java b/test/besouro/classification/besouro/BesouroEpisodeClassifierTest.java index f2e32aa..a5187c9 100644 --- a/test/besouro/classification/besouro/BesouroEpisodeClassifierTest.java +++ b/test/besouro/classification/besouro/BesouroEpisodeClassifierTest.java @@ -1,23 +1,17 @@ package besouro.classification.besouro; -import static org.mockito.Mockito.when; - import java.util.Iterator; import jess.QueryResult; import jess.ValueVector; -import junit.framework.Assert; -import org.eclipse.jdt.junit.model.ITestElement.Result; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import besouro.classification.zorro.TestEpisodesFactory; import besouro.classification.zorro.ZorroEpisodeClassifierTest; -import besouro.listeners.mock.JUnitEventFactory; -import besouro.listeners.mock.ResourceChangeEventFactory; import besouro.model.EditAction; -import besouro.model.RefactoringAction; import besouro.model.UnitTestCaseAction; /** @@ -54,10 +48,8 @@ public void productionCategory2WithTestBreak() throws Exception { zorro.assertJessFact(1, editAction); - // Unit test failue + // Unit test failure UnitTestCaseAction unitTestAction = new UnitTestCaseAction(clock, TestEpisodesFactory.testFile); - unitTestAction.setFailureMessage("Failed to import"); - zorro.assertJessFact(2, unitTestAction); // Edit on production code (corrects the error) editAction = new EditAction(clock, TestEpisodesFactory.productionFile); diff --git a/test/besouro/classification/besouro/BesouroTDDConformanceTest.java b/test/besouro/classification/besouro/BesouroTDDConformanceTest.java index 58ccc29..a9e3a16 100644 --- a/test/besouro/classification/besouro/BesouroTDDConformanceTest.java +++ b/test/besouro/classification/besouro/BesouroTDDConformanceTest.java @@ -1,7 +1,6 @@ package besouro.classification.besouro; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/test/besouro/classification/randomHeuristic/RandomHeuristicTDDConformanceTest.java b/test/besouro/classification/randomHeuristic/RandomHeuristicTDDConformanceTest.java index 440e7ff..9d8cf9f 100644 --- a/test/besouro/classification/randomHeuristic/RandomHeuristicTDDConformanceTest.java +++ b/test/besouro/classification/randomHeuristic/RandomHeuristicTDDConformanceTest.java @@ -1,7 +1,6 @@ package besouro.classification.randomHeuristic; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; import besouro.model.Episode; diff --git a/test/besouro/classification/zorro/JessTemplatesTest.java b/test/besouro/classification/zorro/JessTemplatesTest.java index 69343ea..84c02c0 100644 --- a/test/besouro/classification/zorro/JessTemplatesTest.java +++ b/test/besouro/classification/zorro/JessTemplatesTest.java @@ -1,6 +1,4 @@ package besouro.classification.zorro; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import java.util.Date; @@ -12,7 +10,6 @@ import jess.Value; import jess.ValueVector; -import org.eclipse.core.resources.IResource; import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/test/besouro/classification/zorro/OneWayTDDHeuristicAlgorithmTest.java b/test/besouro/classification/zorro/OneWayTDDHeuristicAlgorithmTest.java index cc861e4..7d0e1bf 100644 --- a/test/besouro/classification/zorro/OneWayTDDHeuristicAlgorithmTest.java +++ b/test/besouro/classification/zorro/OneWayTDDHeuristicAlgorithmTest.java @@ -1,5 +1,7 @@ package besouro.classification.zorro; +import org.junit.Assert; + import jess.Batch; import jess.Fact; import jess.JessException; @@ -45,19 +47,19 @@ public void testPatternOne() throws Exception { engine.run(); QueryResult result = engine.runQueryStar("episode-tdd-conformance-query-by-index",(new ValueVector()).add(new Value(1, RU.INTEGER))); - assertTrue("Result to episode 1", result.next()); - assertEquals("Test episode 1", "True", result.getString("isTDD")); + Assert.assertTrue("Result to episode 1", result.next()); + Assert.assertEquals("Test episode 1", "True", result.getString("isTDD")); result = engine.runQueryStar("episode-tdd-conformance-query-by-index",(new ValueVector()).add(new Value(2, RU.INTEGER))); - assertTrue("Result to episode 2", result.next()); - assertEquals("Test episode 2", "True", result.getString("isTDD")); + Assert.assertTrue("Result to episode 2", result.next()); + Assert.assertEquals("Test episode 2", "True", result.getString("isTDD")); result = engine.runQueryStar("episode-tdd-conformance-query-by-index",(new ValueVector()).add(new Value(3, RU.INTEGER))); - assertTrue("Result to episode 3", result.next()); - assertEquals("Test episode 3", "True", result.getString("isTDD")); + Assert.assertTrue("Result to episode 3", result.next()); + Assert.assertEquals("Test episode 3", "True", result.getString("isTDD")); result = engine.runQueryStar("episode-tdd-conformance-query-by-index",(new ValueVector()).add(new Value(4, RU.INTEGER))); - assertTrue("Result to episode 4", result.next()); - assertEquals("Test episode 4", "True", result.getString("isTDD")); + Assert.assertTrue("Result to episode 4", result.next()); + Assert.assertEquals("Test episode 4", "True", result.getString("isTDD")); } } \ No newline at end of file diff --git a/test/besouro/classification/zorro/ZorroTDDConformanceTest.java b/test/besouro/classification/zorro/ZorroTDDConformanceTest.java index 442b027..0dea844 100644 --- a/test/besouro/classification/zorro/ZorroTDDConformanceTest.java +++ b/test/besouro/classification/zorro/ZorroTDDConformanceTest.java @@ -1,7 +1,6 @@ package besouro.classification.zorro; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; import besouro.model.Episode; diff --git a/test/besouro/integration/IntegrationTestBaseClass.java b/test/besouro/integration/IntegrationTestBaseClass.java index 763b065..2fddd42 100644 --- a/test/besouro/integration/IntegrationTestBaseClass.java +++ b/test/besouro/integration/IntegrationTestBaseClass.java @@ -4,16 +4,10 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import java.io.File; - -import junit.framework.Assert; - import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.junit.model.ITestElement.Result; -import org.junit.After; import org.junit.Before; -import org.junit.Test; import besouro.classification.zorro.ZorroEpisodeClassifierStream; import besouro.listeners.JUnitListener; @@ -25,8 +19,6 @@ import besouro.listeners.mock.ResourceChangeEventFactory; import besouro.listeners.mock.WindowEventsFactory; import besouro.measure.JavaStatementMeter; -import besouro.persistence.ActionFileStorage; -import besouro.stream.ActionOutputStream; import besouro.stream.EpisodesRecognizerActionStream; @@ -55,14 +47,17 @@ public void setup(EpisodesRecognizerActionStream stream) throws Exception { resourceListener = new ResourceChangeListener(stream); junitListener = new JUnitListener(stream); winListener = new WindowListener(stream); + junitListener = new JUnitListener(stream); // its strange yet, i know meter = mock(JavaStatementMeter.class); measurer = mock(JavaStatementMeter.class); when(measurer.measureJavaFile(any(IFile.class))).thenReturn(meter); - resourceListener.setMeasurer(measurer); + //resourceListener.setMeasurer(measurer); + javaListener.setMeasurer(measurer); winListener.setMeasurer(measurer); + junitListener.setMeasurer(measurer); // Open file (calculates the first file metrics) when(meter.getNumOfMethods()).thenReturn(3); @@ -86,28 +81,37 @@ protected void addTestFirst1Actions() throws Exception { javaListener.elementChanged(JavaStructureChangeEventFactory.createAddMethodAction("TestFile.java", "TestFile", "aTestMethod")); // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "elementChanged" when(meter.hasTest()).thenReturn(true); when(meter.getNumOfTestAssertions()).thenReturn(3); when(meter.getNumOfTestMethods()).thenReturn(10); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); // Compile error on test resourceListener.resourceChanged(ResourceChangeEventFactory.createBuildErrorEvent("TestFile.java", "error message")); // Work on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 35)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); when(meter.getNumOfStatements()).thenReturn(0); when(meter.getNumOfMethods()).thenReturn(0); when(meter.getNumOfTestAssertions()).thenReturn(0); when(meter.getNumOfTestMethods()).thenReturn(0); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",35)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 35); - // Unit test failue + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.ERROR)); - // Edit on prodction code - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java", 37)); + // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 37)); + //To get previous edited file, used in next "sessionFinished" + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 37); + // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); } @@ -116,23 +120,28 @@ protected void addTestFirt2Events() throws CoreException, Exception { // Add test method javaListener.elementChanged(JavaStructureChangeEventFactory.createAddMethodAction("TestFile.java", "TestFile", "aTestMethod")); - // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "elementChanged" when(meter.hasTest()).thenReturn(true); when(meter.getNumOfTestAssertions()).thenReturn(3); when(meter.getNumOfTestMethods()).thenReturn(5); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); // Compile error on test resourceListener.resourceChanged(ResourceChangeEventFactory.createBuildErrorEvent("TestFile.java", "error message")); // Work on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 35)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); when(meter.getNumOfStatements()).thenReturn(0); when(meter.getNumOfMethods()).thenReturn(0); when(meter.getNumOfTestAssertions()).thenReturn(0); when(meter.getNumOfTestMethods()).thenReturn(0); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",35)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 35); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); @@ -143,23 +152,32 @@ protected void addTestFirst3Events() throws CoreException, Exception { javaListener.elementChanged(JavaStructureChangeEventFactory.createAddMethodAction("TestFile.java", "TestFile", "aTestMethod")); // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "elementChanged" when(meter.hasTest()).thenReturn(true); when(meter.getNumOfTestAssertions()).thenReturn(3); when(meter.getNumOfTestMethods()).thenReturn(5); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); // Work on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 35)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); when(meter.getNumOfTestAssertions()).thenReturn(0); when(meter.getNumOfTestMethods()).thenReturn(0); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",35)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 35); - // Unit test failue + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("TestFile.java", "TestFile", Result.ERROR)); // Work on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 37)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",37)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 37); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); @@ -170,18 +188,27 @@ protected void addTestFirst4() throws CoreException, Exception { javaListener.elementChanged(JavaStructureChangeEventFactory.createAddMethodAction("TestFile.java", "TestFile", "aTestMethod")); // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "elementChanged" when(meter.hasTest()).thenReturn(true); when(meter.getNumOfTestAssertions()).thenReturn(3); when(meter.getNumOfTestMethods()).thenReturn(5); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); // Work on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 37)); + + //To get previous edited file, used in next "elementChanged" when(meter.hasTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",37)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 37); // Work on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 39)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",39)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 39); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); @@ -189,49 +216,67 @@ protected void addTestFirst4() throws CoreException, Exception { protected void addTestFirstRealCase() throws CoreException, Exception { // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(true); when(meter.getNumOfTestAssertions()).thenReturn(1); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); - // Unit test failue + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("TestFile.java", "TestFile", Result.ERROR)); // Edit on production code - when(meter.hasTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",33)); + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 33)); + //To get previous edited file, used in next "elementChanged" + when(meter.hasTest()).thenReturn(false); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 33); + // Add test method javaListener.elementChanged(JavaStructureChangeEventFactory.createAddMethodAction("TestFile.java", "TestFile", "aTestMethod")); // Edit on test - when(meter.hasTest()).thenReturn(true); - when(meter.getNumOfTestMethods()).thenReturn(1); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",133)); + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 133)); // Compile error on test resourceListener.resourceChanged(ResourceChangeEventFactory.createBuildErrorEvent("TestFile.java", "error message")); + + //To get previous edited file, used in next "elementChanged" + when(meter.hasTest()).thenReturn(true); + when(meter.getNumOfTestMethods()).thenReturn(1); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 133); // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 135)); + + //To get previous edited file, used in next "elementChanged" when(meter.hasTest()).thenReturn(true); //TODO [rule] review substancial concept when(meter.getNumOfMethods()).thenReturn(1); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",135)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 135); // Add prod method // in the original test, it was an ADD CLASS javaListener.elementChanged(JavaStructureChangeEventFactory.createRemoveMethodAction("ProductionFile.java", "ProductionFile", "aMethod")); // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 35)); + + //To get previous edited file, used in next "elementChanged" when(meter.hasTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",35)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 35); // Add prod method javaListener.elementChanged(JavaStructureChangeEventFactory.createRemoveMethodAction("ProductionFile.java", "ProductionFile", "aMethod")); // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 38)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); when(meter.getNumOfMethods()).thenReturn(1); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",38)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 38); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); @@ -239,36 +284,51 @@ protected void addTestFirstRealCase() throws CoreException, Exception { protected void addTestLast1Actions() throws Exception { // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 34)); + + //To get previous edited file, used in next "elementChanged" when(meter.isTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",34)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 34); // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "sessionFinished" when(meter.isTest()).thenReturn(true); when(meter.getNumOfTestAssertions()).thenReturn(3); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); } protected void addTestLast2Events() throws CoreException, Exception { - // Edit on production code + // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 34)); + + //To get previous edited file, used in next "elementChanged" when(meter.hasTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",34)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 34); // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "sessionFinished" when(meter.isTest()).thenReturn(true); when(meter.getNumOfTestAssertions()).thenReturn(3); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); - // Unit test failue + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("TestFile.java", "MyTest", Result.ERROR)); // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "sessionFinished" when(meter.isTest()).thenReturn(true); //TODO [rule] review substancial concept when(meter.getNumOfTestMethods()).thenReturn(3); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); @@ -276,9 +336,12 @@ protected void addTestLast2Events() throws CoreException, Exception { protected void addRefactoring1A_Actions() throws Exception { // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "sessionFinished" when(meter.isTest()).thenReturn(true); when(meter.getNumOfTestMethods()).thenReturn(1); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); @@ -286,17 +349,23 @@ protected void addRefactoring1A_Actions() throws Exception { protected void addRefactoringCategory1a_2_events() throws Exception { // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "sessionFinished" when(meter.isTest()).thenReturn(true); when(meter.getNumOfTestMethods()).thenReturn(1); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); - // Unit test failue + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("TestFile.java", "MyTest", Result.ERROR)); // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 37)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(true); when(meter.getNumOfTestMethods()).thenReturn(2); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",37)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 37); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); @@ -313,16 +382,21 @@ protected void addRefactoringCategory1B_events() throws Exception { protected void addRefactoringCategory2A_events() throws Exception { // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 34)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",34)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 34); - // Unit test failue + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("TestFile", "MyTest", Result.ERROR)); // Edit on production code - when(meter.hasTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",35)); + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 35)); + //To get previous edited file, used in next "sessionFinished" + when(meter.hasTest()).thenReturn(false); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 35); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); @@ -332,7 +406,7 @@ protected void addRefactoringCategory2B_events() throws Exception { // Add prod method javaListener.elementChanged(JavaStructureChangeEventFactory.createRemoveMethodAction("ProductionFile.java", "ProductionFile", "aMethod")); - // Unit test failue + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("TestFile", "MyTest", Result.ERROR)); // rename prod method @@ -344,10 +418,13 @@ protected void addRefactoringCategory2B_events() throws Exception { protected void addRefactoringCategory3_1_events() throws CoreException, Exception { // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 34)); + + //To get previous edited file, used in next "sessionFinished" when(meter.isTest()).thenReturn(false); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",34)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 34); - // Unit test failue + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("TestFile", "MyTest", Result.ERROR)); addRefactoring1A_Actions(); @@ -364,9 +441,12 @@ protected void addRefactoringCategory3_2_events() throws CoreException, protected void addProductionCategory1Events() throws CoreException, Exception { // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 34)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); when(meter.getNumOfStatements()).thenReturn(14); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",34)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 34); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile.java", Result.OK)); @@ -375,15 +455,21 @@ protected void addProductionCategory1Events() throws CoreException, Exception { protected void addProductionCategory1WithTestBreakEvents() throws Exception { // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 34)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); when(meter.getNumOfStatements()).thenReturn(14); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",34)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 34); - // Unit test failue + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("sesionname", "TestFile.java", Result.FAILURE)); // Edit on production code (corrects the error) - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",34)); + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 34)); + + //To get previous edited file, used in next "sessionFinished" + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 34); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile.java", Result.OK)); @@ -394,10 +480,13 @@ protected void addProductionCategory2Events() throws CoreException, Exception { // method increase but byte size decrease // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 5)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); when(meter.getNumOfStatements()).thenReturn(2); when(meter.getNumOfMethods()).thenReturn(5); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",5)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 5); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile.java", Result.OK)); @@ -407,11 +496,14 @@ protected void addProductionCategory2_2_events() throws Exception { // method increase but byte statement decrease // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 15)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); when(meter.getNumOfMethods()).thenReturn(5); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",15)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 15); - // Unit test failue + // Unit test failure // TODO [rule] redundancy between prod/refact // its a strange case without an edit after the test failure :-/ @@ -428,10 +520,13 @@ protected void addProductionCategory3Events() throws Exception { // method increase, and size increase and LARGE byte increase // Edit on production code + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("ProductionFile.java", 133)); + + //To get previous edited file, used in next "sessionFinished" when(meter.hasTest()).thenReturn(false); when(meter.getNumOfMethods()).thenReturn(5); when(meter.getNumOfStatements()).thenReturn(5); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("ProductionFile.java",133)); + JavaStructureChangeEventFactory.eclipseMock("ProductionFile.java", 133); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile.java", Result.OK)); @@ -463,9 +558,12 @@ protected void addRegressionCategory2Events() throws CoreException, Exception { protected void addTestAddCategory1Events() throws CoreException, Exception { // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "sessionFinished" when(meter.isTest()).thenReturn(true); when(meter.getNumOfTestAssertions()).thenReturn(3); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); @@ -473,18 +571,24 @@ protected void addTestAddCategory1Events() throws CoreException, Exception { protected void addTestAddCategory2Events() throws CoreException, Exception { // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "sessionFinished" when(meter.isTest()).thenReturn(true); when(meter.getNumOfTestAssertions()).thenReturn(3); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); - - // Unit test failue + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); + + // Unit test failure junitListener.sessionFinished(JUnitEventFactory.createJunitSession("TestFile.java", "TestFile", Result.ERROR)); // Edit on test + javaListener.elementChanged(JavaStructureChangeEventFactory.createEditMethodAction("TestFile.java", 33)); + + //To get previous edited file, used in next "sessionFinished" when(meter.isTest()).thenReturn(true); //TODO [rule] review substancial concept when(meter.getNumOfTestMethods()).thenReturn(3); - resourceListener.resourceChanged(ResourceChangeEventFactory.createEditAction("TestFile.java",33)); + JavaStructureChangeEventFactory.eclipseMock("TestFile.java", 33); // Unit test pass junitListener.sessionFinished(JUnitEventFactory.createJunitSession("testSessionName", "TestFile", Result.OK)); diff --git a/test/besouro/integration/ProductionRecognition.java b/test/besouro/integration/ProductionRecognition.java index 7e2ace8..9f52315 100644 --- a/test/besouro/integration/ProductionRecognition.java +++ b/test/besouro/integration/ProductionRecognition.java @@ -1,16 +1,15 @@ package besouro.integration; -import static org.mockito.Mockito.when; -import junit.framework.Assert; +import org.junit.Assert; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.junit.model.ITestElement.Result; +import org.eclipse.core.resources.ResourcesPlugin; import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; -import besouro.listeners.mock.JUnitEventFactory; -import besouro.listeners.mock.ResourceChangeEventFactory; - - +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class ProductionRecognition extends IntegrationTestBaseClass { @Test diff --git a/test/besouro/integration/RefactoringRecognition.java b/test/besouro/integration/RefactoringRecognition.java index 41bcc42..789505c 100644 --- a/test/besouro/integration/RefactoringRecognition.java +++ b/test/besouro/integration/RefactoringRecognition.java @@ -1,17 +1,15 @@ package besouro.integration; -import static org.mockito.Mockito.when; -import junit.framework.Assert; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.junit.model.ITestElement.Result; +import org.eclipse.core.resources.ResourcesPlugin; +import org.junit.Assert; import org.junit.Test; - -import besouro.listeners.mock.JUnitEventFactory; -import besouro.listeners.mock.JavaStructureChangeEventFactory; -import besouro.listeners.mock.ResourceChangeEventFactory; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class RefactoringRecognition extends IntegrationTestBaseClass { @Test diff --git a/test/besouro/integration/RegressionRecognition.java b/test/besouro/integration/RegressionRecognition.java index db98fac..522ce67 100644 --- a/test/besouro/integration/RegressionRecognition.java +++ b/test/besouro/integration/RegressionRecognition.java @@ -1,16 +1,15 @@ package besouro.integration; -import static org.mockito.Mockito.when; -import junit.framework.Assert; +import org.junit.Assert; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.junit.model.ITestElement.Result; +import org.eclipse.core.resources.ResourcesPlugin; import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; -import besouro.listeners.mock.JUnitEventFactory; -import besouro.listeners.mock.ResourceChangeEventFactory; - - +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class RegressionRecognition extends IntegrationTestBaseClass { @Test diff --git a/test/besouro/integration/TDDMeasureTest.java b/test/besouro/integration/TDDMeasureTest.java index 9158054..49a4b3d 100644 --- a/test/besouro/integration/TDDMeasureTest.java +++ b/test/besouro/integration/TDDMeasureTest.java @@ -1,12 +1,17 @@ package besouro.integration; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.eclipse.core.resources.ResourcesPlugin; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + import besouro.classification.zorro.ZorroEpisodeClassifierStream; -import besouro.classification.zorro.ZorroTDDConformance; +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class TDDMeasureTest extends IntegrationTestBaseClass { @Test diff --git a/test/besouro/integration/TestAditionRecognition.java b/test/besouro/integration/TestAditionRecognition.java index 2f58c10..8fb0903 100644 --- a/test/besouro/integration/TestAditionRecognition.java +++ b/test/besouro/integration/TestAditionRecognition.java @@ -1,16 +1,14 @@ package besouro.integration; -import static org.mockito.Mockito.when; -import junit.framework.Assert; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.junit.model.ITestElement.Result; +import org.eclipse.core.resources.ResourcesPlugin; +import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; -import besouro.listeners.mock.JUnitEventFactory; -import besouro.listeners.mock.ResourceChangeEventFactory; - - +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class TestAditionRecognition extends IntegrationTestBaseClass { @Test diff --git a/test/besouro/integration/TestFirstRecognition.java b/test/besouro/integration/TestFirstRecognition.java index 10eda61..ff160e8 100644 --- a/test/besouro/integration/TestFirstRecognition.java +++ b/test/besouro/integration/TestFirstRecognition.java @@ -1,18 +1,14 @@ package besouro.integration; -import static org.mockito.Mockito.when; -import junit.framework.Assert; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.junit.model.ITestElement.Result; +import org.eclipse.core.resources.ResourcesPlugin; +import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; -import besouro.listeners.mock.JUnitEventFactory; -import besouro.listeners.mock.JavaStructureChangeEventFactory; -import besouro.listeners.mock.ResourceChangeEventFactory; -import besouro.persistence.ActionFileStorage; - - +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class TestFirstRecognition extends IntegrationTestBaseClass { @Test diff --git a/test/besouro/integration/TestLastRecognition.java b/test/besouro/integration/TestLastRecognition.java index 1c2c9b5..f8632a4 100644 --- a/test/besouro/integration/TestLastRecognition.java +++ b/test/besouro/integration/TestLastRecognition.java @@ -1,16 +1,15 @@ package besouro.integration; -import static org.mockito.Mockito.when; -import junit.framework.Assert; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.junit.model.ITestElement.Result; +import org.eclipse.core.resources.ResourcesPlugin; +import org.junit.Assert; import org.junit.Test; - -import besouro.listeners.mock.JUnitEventFactory; -import besouro.listeners.mock.ResourceChangeEventFactory; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class TestLastRecognition extends IntegrationTestBaseClass { @Test diff --git a/test/besouro/integration/besouro/ProductionRecognition.java b/test/besouro/integration/besouro/ProductionRecognition.java index 694a4cb..e9e8f01 100644 --- a/test/besouro/integration/besouro/ProductionRecognition.java +++ b/test/besouro/integration/besouro/ProductionRecognition.java @@ -1,13 +1,15 @@ package besouro.integration.besouro; -import junit.framework.Assert; +import org.junit.Assert; -import org.junit.Before; +import org.eclipse.core.resources.ResourcesPlugin; import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; -import besouro.classification.besouro.BesouroEpisodeClassifierStream; -import besouro.integration.IntegrationTestBaseClass; - +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class ProductionRecognition extends BesouroBaseIntegrationTest { diff --git a/test/besouro/integration/besouro/RefactoringRecognition.java b/test/besouro/integration/besouro/RefactoringRecognition.java index 8b68333..b27f1f2 100644 --- a/test/besouro/integration/besouro/RefactoringRecognition.java +++ b/test/besouro/integration/besouro/RefactoringRecognition.java @@ -1,13 +1,14 @@ package besouro.integration.besouro; -import junit.framework.Assert; - -import org.junit.Before; +import org.eclipse.core.resources.ResourcesPlugin; +import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; -import besouro.classification.besouro.BesouroEpisodeClassifierStream; -import besouro.integration.IntegrationTestBaseClass; - +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class RefactoringRecognition extends BesouroBaseIntegrationTest { diff --git a/test/besouro/integration/besouro/RegressionRecognition.java b/test/besouro/integration/besouro/RegressionRecognition.java index 163c9f4..fade790 100644 --- a/test/besouro/integration/besouro/RegressionRecognition.java +++ b/test/besouro/integration/besouro/RegressionRecognition.java @@ -1,14 +1,14 @@ package besouro.integration.besouro; -import junit.framework.Assert; - -import org.junit.Before; +import org.eclipse.core.resources.ResourcesPlugin; +import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; -import besouro.classification.besouro.BesouroEpisodeClassifierStream; -import besouro.integration.IntegrationTestBaseClass; - - +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class RegressionRecognition extends BesouroBaseIntegrationTest { @Test diff --git a/test/besouro/integration/besouro/TestAdditionRecognition.java b/test/besouro/integration/besouro/TestAdditionRecognition.java index 3a35cf4..6540316 100644 --- a/test/besouro/integration/besouro/TestAdditionRecognition.java +++ b/test/besouro/integration/besouro/TestAdditionRecognition.java @@ -1,13 +1,14 @@ package besouro.integration.besouro; -import junit.framework.Assert; - -import org.junit.Before; +import org.eclipse.core.resources.ResourcesPlugin; +import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; -import besouro.classification.besouro.BesouroEpisodeClassifierStream; -import besouro.integration.IntegrationTestBaseClass; - +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class TestAdditionRecognition extends BesouroBaseIntegrationTest { diff --git a/test/besouro/integration/besouro/TestFirstRecognition.java b/test/besouro/integration/besouro/TestFirstRecognition.java index 6bf5634..b2c0893 100644 --- a/test/besouro/integration/besouro/TestFirstRecognition.java +++ b/test/besouro/integration/besouro/TestFirstRecognition.java @@ -1,14 +1,15 @@ package besouro.integration.besouro; -import junit.framework.Assert; - -import org.junit.Before; +import org.eclipse.core.resources.ResourcesPlugin; +import org.junit.Assert; import org.junit.Test; - -import besouro.classification.besouro.BesouroEpisodeClassifierStream; -import besouro.integration.IntegrationTestBaseClass; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class TestFirstRecognition extends BesouroBaseIntegrationTest { @Test diff --git a/test/besouro/integration/besouro/TestLastRecognition.java b/test/besouro/integration/besouro/TestLastRecognition.java index 2cd6074..16fb9d4 100644 --- a/test/besouro/integration/besouro/TestLastRecognition.java +++ b/test/besouro/integration/besouro/TestLastRecognition.java @@ -1,14 +1,15 @@ package besouro.integration.besouro; -import junit.framework.Assert; - -import org.junit.Before; +import org.eclipse.core.resources.ResourcesPlugin; +import org.junit.Assert; import org.junit.Test; - -import besouro.classification.besouro.BesouroEpisodeClassifierStream; -import besouro.integration.IntegrationTestBaseClass; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class TestLastRecognition extends BesouroBaseIntegrationTest { @Test diff --git a/test/besouro/listeners/JUnitListenerTest.java b/test/besouro/listeners/JUnitListenerTest.java index 8168e39..00a577a 100644 --- a/test/besouro/listeners/JUnitListenerTest.java +++ b/test/besouro/listeners/JUnitListenerTest.java @@ -2,10 +2,9 @@ import java.util.ArrayList; -import junit.framework.Assert; - import org.eclipse.jdt.junit.model.ITestElement.Result; import org.eclipse.jdt.junit.model.ITestRunSession; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/test/besouro/listeners/JavaMeasurerTest.java b/test/besouro/listeners/JavaMeasurerTest.java index 9d211b6..77484fe 100644 --- a/test/besouro/listeners/JavaMeasurerTest.java +++ b/test/besouro/listeners/JavaMeasurerTest.java @@ -4,8 +4,7 @@ import java.util.Date; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/test/besouro/listeners/JavaStructureListenerTest.java b/test/besouro/listeners/JavaStructureListenerTest.java index e6cf7b1..822ee03 100644 --- a/test/besouro/listeners/JavaStructureListenerTest.java +++ b/test/besouro/listeners/JavaStructureListenerTest.java @@ -5,11 +5,10 @@ import java.util.ArrayList; -import junit.framework.Assert; - import org.eclipse.jdt.core.ElementChangedEvent; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaElementDelta; +import org.junit.Assert; import org.junit.Test; import besouro.listeners.mock.FakeActionStream; @@ -49,8 +48,8 @@ public void shouldGenerateARemoveEvent() { IJavaElement parentElement = JavaStructureChangeEventFactory.createJavaElement(null,"AnyClass.java","AnyClass", IJavaElement.CLASS_FILE); IJavaElement fieldElement = JavaStructureChangeEventFactory.createJavaElement(parentElement,"AnyClass.java","AnyClass#aMethod", IJavaElement.FIELD); - IJavaElementDelta childDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(fieldElement,IJavaElementDelta.REMOVED); - IJavaElementDelta parentDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElement, IJavaElementDelta.CHANGED); + IJavaElementDelta childDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(fieldElement,IJavaElementDelta.REMOVED, -1); + IJavaElementDelta parentDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElement, IJavaElementDelta.CHANGED, -1); when(parentDelta.getAffectedChildren()).thenReturn(new IJavaElementDelta[]{childDelta}); ElementChangedEvent event = mock(ElementChangedEvent.class); @@ -105,13 +104,13 @@ public void shouldGenerateAMoveEvent() { IJavaElement fromElement = JavaStructureChangeEventFactory.createJavaElement(parentElementFrom,"AnyClass.java", "aMethod",IJavaElement.FIELD); IJavaElement toElement = JavaStructureChangeEventFactory.createJavaElement(parentElementTo,"AnyOtherClass.java", "aMethod",IJavaElement.FIELD); - IJavaElementDelta childDelta1 = JavaStructureChangeEventFactory.createJavaChangeDelta(fromElement, IJavaElementDelta.REMOVED); - IJavaElementDelta childDelta2 = JavaStructureChangeEventFactory.createJavaChangeDelta(toElement, IJavaElementDelta.ADDED); + IJavaElementDelta childDelta1 = JavaStructureChangeEventFactory.createJavaChangeDelta(fromElement, IJavaElementDelta.REMOVED, -1); + IJavaElementDelta childDelta2 = JavaStructureChangeEventFactory.createJavaChangeDelta(toElement, IJavaElementDelta.ADDED, -1); - IJavaElementDelta classDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElementFrom, IJavaElementDelta.CHANGED); + IJavaElementDelta classDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElementFrom, IJavaElementDelta.CHANGED, -1); when(classDelta.getAffectedChildren()).thenReturn(new IJavaElementDelta[]{childDelta1, childDelta2}); - IJavaElementDelta parentDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElementFrom, IJavaElementDelta.CHANGED); + IJavaElementDelta parentDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElementFrom, IJavaElementDelta.CHANGED, -1); when(parentDelta.getAffectedChildren()).thenReturn(new IJavaElementDelta[]{classDelta}); ElementChangedEvent event = mock(ElementChangedEvent.class); diff --git a/test/besouro/listeners/ListenerSetTest.java b/test/besouro/listeners/ListenerSetTest.java index 9262439..dfb0c7f 100644 --- a/test/besouro/listeners/ListenerSetTest.java +++ b/test/besouro/listeners/ListenerSetTest.java @@ -4,12 +4,11 @@ import java.util.List; import org.eclipse.core.resources.IFile; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import static org.mockito.Mockito.*; -import junit.framework.Assert; - import besouro.listeners.BesouroListenerSet; import besouro.listeners.mock.WindowEventsFactory; import besouro.measure.JavaStatementMeter; diff --git a/test/besouro/listeners/ResourceListenerTest.java b/test/besouro/listeners/ResourceListenerTest.java index 518b2d8..8dc6d0e 100644 --- a/test/besouro/listeners/ResourceListenerTest.java +++ b/test/besouro/listeners/ResourceListenerTest.java @@ -5,10 +5,8 @@ import java.util.ArrayList; -import junit.framework.Assert; - import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResourceChangeEvent; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -18,7 +16,6 @@ import besouro.measure.JavaStatementMeter; import besouro.model.Action; import besouro.model.CompilationAction; -import besouro.model.EditAction; import besouro.stream.ActionOutputStream; diff --git a/test/besouro/listeners/WindowEventsTest.java b/test/besouro/listeners/WindowEventsTest.java index 91447ed..da693fc 100644 --- a/test/besouro/listeners/WindowEventsTest.java +++ b/test/besouro/listeners/WindowEventsTest.java @@ -2,9 +2,8 @@ import java.util.ArrayList; -import junit.framework.Assert; - import org.eclipse.core.resources.IFile; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import static org.mockito.Mockito.*; diff --git a/test/besouro/listeners/mock/JUnitEventFactory.java b/test/besouro/listeners/mock/JUnitEventFactory.java index 80f2797..bc4ad19 100644 --- a/test/besouro/listeners/mock/JUnitEventFactory.java +++ b/test/besouro/listeners/mock/JUnitEventFactory.java @@ -14,9 +14,6 @@ import org.eclipse.jdt.junit.model.ITestElementContainer; import org.eclipse.jdt.junit.model.ITestRunSession; import org.eclipse.jdt.junit.model.ITestSuiteElement; -import org.mockito.ArgumentCaptor; -import org.mockito.internal.matchers.Any; -import org.mockito.internal.matchers.Equals; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; diff --git a/test/besouro/listeners/mock/JavaStructureChangeEventFactory.java b/test/besouro/listeners/mock/JavaStructureChangeEventFactory.java index f158e91..75be5c3 100644 --- a/test/besouro/listeners/mock/JavaStructureChangeEventFactory.java +++ b/test/besouro/listeners/mock/JavaStructureChangeEventFactory.java @@ -2,18 +2,35 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import static org.powermock.api.mockito.PowerMockito.mockStatic; +import static org.mockito.Matchers.any; + + +import java.io.File; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.ElementChangedEvent; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaElementDelta; + + public class JavaStructureChangeEventFactory { + + public static final int EDITED_FLAG = 540673; + public static final int METHOD_UPDATED_FLAG = 540680; public static IJavaElement createJavaElement(IJavaElement parentElement, String resourceName, String elementName, int type) { IJavaElement fromElement = mock(IJavaElement.class); - IFile resource = ResourceChangeEventFactory.createMockResource(resourceName, (long)33); + + IFile resource = createMockResource(resourceName, (long)33); when(fromElement.getParent()).thenReturn(parentElement); when(fromElement.toString()).thenReturn(elementName); @@ -25,10 +42,11 @@ public static IJavaElement createJavaElement(IJavaElement parentElement, String - public static IJavaElementDelta createJavaChangeDelta(IJavaElement element, int op_type) { + public static IJavaElementDelta createJavaChangeDelta(IJavaElement element, int op_type, int op_flag) { IJavaElementDelta delta = mock(IJavaElementDelta.class); when(delta.getElement()).thenReturn(element); when(delta.getKind()).thenReturn(op_type); + when(delta.getFlags()).thenReturn(op_flag); when(delta.getAffectedChildren()).thenReturn(new IJavaElementDelta[]{}); return delta; } @@ -36,10 +54,10 @@ public static IJavaElementDelta createJavaChangeDelta(IJavaElement element, int public static ElementChangedEvent createAddMethodAction(String filename, String className, String methodName) { IJavaElement classElement = JavaStructureChangeEventFactory.createJavaElement(null,filename,className,IJavaElement.CLASS_FILE); - IJavaElementDelta delta = JavaStructureChangeEventFactory.createJavaChangeDelta(classElement,IJavaElementDelta.CHANGED); + IJavaElementDelta delta = JavaStructureChangeEventFactory.createJavaChangeDelta(classElement,IJavaElementDelta.CHANGED, -1); IJavaElement addedElement = JavaStructureChangeEventFactory.createJavaElement(null,filename,className + "#" + methodName, IJavaElement.METHOD); - IJavaElementDelta childDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(addedElement,IJavaElementDelta.ADDED); + IJavaElementDelta childDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(addedElement,IJavaElementDelta.ADDED, -1); ElementChangedEvent event = mock(ElementChangedEvent.class); @@ -54,9 +72,9 @@ public static ElementChangedEvent createRemoveMethodAction(String filename, Stri IJavaElement classElement = JavaStructureChangeEventFactory.createJavaElement(null,filename,className,IJavaElement.CLASS_FILE); IJavaElement addedElement = JavaStructureChangeEventFactory.createJavaElement(null,filename,className + "#" + methodName, IJavaElement.METHOD); - IJavaElementDelta childDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(addedElement,IJavaElementDelta.REMOVED); + IJavaElementDelta childDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(addedElement,IJavaElementDelta.REMOVED, -1); - IJavaElementDelta delta = JavaStructureChangeEventFactory.createJavaChangeDelta(classElement,IJavaElementDelta.CHANGED); + IJavaElementDelta delta = JavaStructureChangeEventFactory.createJavaChangeDelta(classElement,IJavaElementDelta.CHANGED, -1); ElementChangedEvent event = mock(ElementChangedEvent.class); when(delta.getAffectedChildren()).thenReturn(new IJavaElementDelta[]{childDelta}); @@ -71,11 +89,11 @@ public static ElementChangedEvent createRenameMethodEvent(String filename, Strin IJavaElement renamedFromElement = JavaStructureChangeEventFactory.createJavaElement(parentElement,filename, classname + "#" + fromMethod, IJavaElement.FIELD); IJavaElement renamedToElement = JavaStructureChangeEventFactory.createJavaElement(parentElement,filename, classname + "#" + toMethod, IJavaElement.FIELD); - IJavaElementDelta removedDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(renamedFromElement, IJavaElementDelta.REMOVED); - IJavaElementDelta addedDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(renamedToElement, IJavaElementDelta.ADDED); + IJavaElementDelta removedDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(renamedFromElement, IJavaElementDelta.REMOVED, -1); + IJavaElementDelta addedDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(renamedToElement, IJavaElementDelta.ADDED, -1); - IJavaElementDelta classDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElement,IJavaElementDelta.CHANGED); - IJavaElementDelta parentDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElement,IJavaElementDelta.CHANGED); + IJavaElementDelta classDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElement,IJavaElementDelta.CHANGED, -1); + IJavaElementDelta parentDelta = JavaStructureChangeEventFactory.createJavaChangeDelta(parentElement,IJavaElementDelta.CHANGED, -1); ElementChangedEvent event = mock(ElementChangedEvent.class); when(classDelta.getAffectedChildren()).thenReturn(new IJavaElementDelta[]{removedDelta, addedDelta}); @@ -85,4 +103,61 @@ public static ElementChangedEvent createRenameMethodEvent(String filename, Strin return event; } + public static ElementChangedEvent createEditMethodAction(String filename, int fileSize) throws CoreException { + IJavaElement classElement = JavaStructureChangeEventFactory.createJavaElement(null,filename,null,IJavaElement.CLASS_FILE); + IJavaElementDelta delta = JavaStructureChangeEventFactory.createJavaChangeDelta(classElement,IJavaElementDelta.CHANGED, EDITED_FLAG); + + ElementChangedEvent event = mock(ElementChangedEvent.class); + when(event.getDelta()).thenReturn(delta); + + return event; + } + + public static IFile createMockResource(String filename, long fileSIze) { + + String[] split = filename.split("\\."); + + IFile resource = mock(IFile.class); + + IPath path = mock(IPath.class); + when(path.toString()).thenReturn(filename); + + File file = mock(File.class); + when(file.getName()).thenReturn(filename); + when(file.getPath()).thenReturn(filename); + when(file.length()).thenReturn(fileSIze); + + when(path.toFile()).thenReturn(file); + + if (split.length>1) + when(path.getFileExtension()).thenReturn(split[1]); + + when(resource.getLocation()).thenReturn(path); + + // separates "filename" of ".java" + when(resource.getName()).thenReturn(filename); + + if (split.length>1) + when(resource.getFileExtension()).thenReturn(split[1]); + + when(resource.getFullPath()).thenReturn(path); + + return resource; + } + + public static void eclipseMock(String filename, long fileSIze) { + mockStatic(ResourcesPlugin.class); + + IWorkspace workspace = mock(IWorkspace.class); + when(ResourcesPlugin.getWorkspace()).thenReturn(workspace); + + IWorkspaceRoot workspaceRoot = mock(IWorkspaceRoot.class); + when(workspace.getRoot()).thenReturn(workspaceRoot); + + IPath workspaceRootLocation = mock(IPath.class); + when(workspaceRoot.getLocation()).thenReturn(workspaceRootLocation); + + IFile file = createMockResource(filename, (long)fileSIze); + when(workspaceRoot.getFile(any(Path.class))).thenReturn(file); + } } diff --git a/test/besouro/listeners/mock/ResourceChangeEventFactory.java b/test/besouro/listeners/mock/ResourceChangeEventFactory.java index 1db7331..ea467b1 100644 --- a/test/besouro/listeners/mock/ResourceChangeEventFactory.java +++ b/test/besouro/listeners/mock/ResourceChangeEventFactory.java @@ -18,8 +18,6 @@ import org.eclipse.jdt.core.dom.PackageDeclaration; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.TypeDeclaration; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; public class ResourceChangeEventFactory { diff --git a/test/besouro/persistence/ActionFileStorageTest.java b/test/besouro/persistence/ActionFileStorageTest.java index 04eb52e..f1733a1 100644 --- a/test/besouro/persistence/ActionFileStorageTest.java +++ b/test/besouro/persistence/ActionFileStorageTest.java @@ -5,17 +5,17 @@ import java.text.SimpleDateFormat; import java.util.Date; -import junit.framework.Assert; - -import org.eclipse.core.resources.IFile; -import org.eclipse.ui.views.navigator.RefactorActionGroup; +import org.eclipse.core.resources.ResourcesPlugin; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; import besouro.classification.zorro.ZorroEpisodeClassifierStream; import besouro.integration.TestFirstRecognition; -import besouro.listeners.mock.ResourceChangeEventFactory; import besouro.model.Action; import besouro.model.CompilationAction; import besouro.model.EditAction; @@ -28,6 +28,8 @@ import besouro.model.UnitTestSessionAction; import besouro.persistence.ActionFileStorage; +@RunWith(PowerMockRunner.class) +@PrepareForTest(ResourcesPlugin.class) public class ActionFileStorageTest { private File file; diff --git a/test/besouro/persistence/EpisodeFileStorageTest.java b/test/besouro/persistence/EpisodeFileStorageTest.java index eaf5d79..ba046b5 100644 --- a/test/besouro/persistence/EpisodeFileStorageTest.java +++ b/test/besouro/persistence/EpisodeFileStorageTest.java @@ -1,14 +1,12 @@ package besouro.persistence; import java.io.File; -import java.io.FileWriter; import java.util.ArrayList; import java.util.Date; import java.util.List; -import junit.framework.Assert; - import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/test/besouro/persistence/GitRecorderTest.java b/test/besouro/persistence/GitRecorderTest.java index 28ab3bc..5f8f951 100644 --- a/test/besouro/persistence/GitRecorderTest.java +++ b/test/besouro/persistence/GitRecorderTest.java @@ -10,15 +10,11 @@ import org.eclipse.jgit.api.CommitCommand; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.util.Base64; import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.mockito.exceptions.verification.NeverWantedButInvoked; -import org.mockito.verification.VerificationMode; import besouro.model.EditAction; -import besouro.model.UnitTestAction; import besouro.model.UnitTestCaseAction; public class GitRecorderTest { diff --git a/test/besouro/persistence/JGitTest.java b/test/besouro/persistence/JGitTest.java index 39bac94..eacfe13 100644 --- a/test/besouro/persistence/JGitTest.java +++ b/test/besouro/persistence/JGitTest.java @@ -2,8 +2,6 @@ import java.io.File; -import junit.framework.Assert; - import org.eclipse.jgit.api.Git; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Repository; @@ -11,6 +9,7 @@ import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/test/besouro/plugin/ProgrammingSessionTest.java b/test/besouro/plugin/ProgrammingSessionTest.java index bcf3fe8..a76b7e1 100644 --- a/test/besouro/plugin/ProgrammingSessionTest.java +++ b/test/besouro/plugin/ProgrammingSessionTest.java @@ -7,9 +7,8 @@ import java.io.File; import java.util.Date; -import junit.framework.Assert; - import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/test/besouro/stream/EpisodeDurationTest.java b/test/besouro/stream/EpisodeDurationTest.java index 391623c..12d7443 100644 --- a/test/besouro/stream/EpisodeDurationTest.java +++ b/test/besouro/stream/EpisodeDurationTest.java @@ -4,17 +4,13 @@ import static org.mockito.Mockito.when; import java.util.Date; -import java.util.List; - -import junit.framework.Assert; import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import besouro.classification.zorro.ZorroEpisodeClassifierStream; -import besouro.listeners.mock.ResourceChangeEventFactory; import besouro.measure.JavaStatementMeter; import besouro.model.EditAction; import besouro.model.Episode; diff --git a/test/besouro/stream/JavaActionsLinkerTest.java b/test/besouro/stream/JavaActionsLinkerTest.java index 3ec7428..f160d88 100644 --- a/test/besouro/stream/JavaActionsLinkerTest.java +++ b/test/besouro/stream/JavaActionsLinkerTest.java @@ -1,20 +1,11 @@ package besouro.stream; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.File; import java.util.Date; -import junit.framework.Assert; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.IPath; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import besouro.listeners.mock.ResourceChangeEventFactory; import besouro.model.EditAction; import besouro.model.FileOpenedAction;