diff options
Diffstat (limited to 'org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java')
-rw-r--r-- | org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java | 329 |
1 files changed, 329 insertions, 0 deletions
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java new file mode 100644 index 000000000..52e2d21b8 --- /dev/null +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/bugzilla/tests/BugzillaSearchPluginTest.java @@ -0,0 +1,329 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2005 University Of British Columbia 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: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +/* + * Created on Nov 19, 2004 + */ +package org.eclipse.mylar.tasks.bugzilla.tests; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IType; +import org.eclipse.mylar.core.search.IActiveSearchListener; +import org.eclipse.mylar.core.tests.support.WorkspaceSetupHelper; +import org.eclipse.mylar.core.tests.support.search.SearchPluginTestHelper; +import org.eclipse.mylar.tasks.BugzillaTask; +import org.eclipse.mylar.tasks.ITask; +import org.eclipse.mylar.tasks.MylarTasksPlugin; +import org.eclipse.mylar.tasks.Task; +import org.eclipse.mylar.tasks.TaskList; +import org.eclipse.mylar.tasks.BugzillaTask.BugTaskState; +import org.eclipse.mylar.tasks.bugzilla.BugzillaReportNode; +import org.eclipse.mylar.tasks.bugzilla.search.BugzillaMylarSearch; + +/*TEST CASES TO HANDLE + * 1. what is here + * 2. different scopes ( local and remote ) + * 3. no bugs + * 4. offline bugs + * + * DEGREE OF SEPARATIONS + * 1 Local bug, qualified reference + * 2 local bug, unqualified reference + * 3 remote bug, qualified reference + * 4 remote bug, unqualified reference + * 5 NONE + */ + +/** + * Test the bugzilla search functionality of the bridge + * @author sminto + */ +public class BugzillaSearchPluginTest extends TestCase{ + + //SHAWNTODO Add tests for the different types of searches (local qual, local unqual, fully qual, unqual) and mock up a bugs db for testing + + /** The expected number of results when searching for astNode */ +// SHAWNTODO add back in when we have a test server mocked up +// private static final int NUM_AST_RESULTS = 302; +// +// private static final int NUM_AST_SETSOURCERANGE_RESULTS = 15; + + /** list to add collectors to when notified */ + private List<List<?>> lists = new ArrayList<List<?>>(); + + private IType astNodeType; + + @Override + protected void setUp() throws Exception { + WorkspaceSetupHelper.setupWorkspace(); + IJavaProject jp = WorkspaceSetupHelper.getJdtCoreDomProject(); + astNodeType = WorkspaceSetupHelper.getType(jp, "org.eclipse.jdt.core.dom.ASTNode"); + } + + @Override + protected void tearDown() throws Exception { + WorkspaceSetupHelper.clearDoiModel(); + } + + /** + * Test adding and removing ISearchCompletedListeners + */ + public void testSearchCompletedListenerAddAndRemove(){ + lists.clear(); + + // create 2 listeners + IActiveSearchListener l1 =new IActiveSearchListener() { + private boolean gathered = false; + + public void searchCompleted(List<?> l) + { + lists.add(l); + gathered = true; + } + + public boolean resultsGathered() { + return gathered; + } + }; + IActiveSearchListener l2 =new IActiveSearchListener() { + private boolean gathered = false; + + public void searchCompleted(List<?> l) + { + lists.add(l); + gathered = true; + } + + public boolean resultsGathered() { + return gathered; + } + }; + + BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.UNQUAL, astNodeType); + + // add the first listener + s.addListener(l1); + // remove the first listener + s.removeListener(l1); + + // perform the search + SearchPluginTestHelper.search(s, l2); + + // make sure that only the second listener added has any results left + assertTrue("listener was not removed", lists.size() >= 1 && !l1.resultsGathered()); + assertTrue("listener was not added", lists.size() == 1); + + // display the time it took for the search +// System.err.println("Search Took About " + time + " seconds"); + MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType); + } + + /** + * Tests that the bridge gets the right data for us + * This test is wierd because it waits on results. + */ + public void testBridge() { + lists.clear(); + BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.UNQUAL, astNodeType); + + IActiveSearchListener l = new IActiveSearchListener() { + private boolean gathered = false; + + public void searchCompleted(List<?> results) + { + lists.add(results); + gathered = true; + } + + public boolean resultsGathered() { + return gathered; + } + }; + + // perform the search + SearchPluginTestHelper.search(s, l); + + // make sure we got the right number of bugs back + assertTrue("No collector returned", lists.size() != 0); + List<?> c = lists.get(0); + assertTrue("Results not the right size", c.size() > 0); // TODO should be assertEquals on expected size + + // display the time it took for the search and the results returned +// System.err.println("Search Took About " + time + " seconds"); +// System.err.println(c); + MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType); + + } + + + /** + * Tests that the bridge saves the results of a search so that it + * can be used later + */ + public void testSaveResults() { + lists.clear(); + BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.UNQUAL, astNodeType); + + IActiveSearchListener l = new IActiveSearchListener() { + private boolean gathered = false; + + public void searchCompleted(List<?> results) + { + lists.add(results); + gathered = true; + } + + public boolean resultsGathered() { + return gathered; + } + }; + + // perform the search + SearchPluginTestHelper.search(s, l); +// System.err.println("Search Took About " + time + " seconds"); + + // do an inital search + assertTrue("No collectors returned", lists.size() != 0); + List<?> c = lists.get(0); + assertTrue("Results not the right size", c.size() > 0); // TODO should be assertEquals on expected size + + // check that the search has been saved + List<BugzillaReportNode> saved = MylarTasksPlugin.getBridge().getFromLandmarksHash(astNodeType, BugzillaMylarSearch.UNQUAL); + assertTrue("Results not cached", saved != null); + assertTrue("Results not the right size", saved.size() > 0); // TODO should be assertEquals on expected size + + assertTrue(c.containsAll(saved) && saved.containsAll(c)); + MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType); + } + + public void testLocalBugUnqual() throws InterruptedException { + lists.clear(); + + String bugPrefix = "Bugzilla-"; + + TaskList t = MylarTasksPlugin.getTaskListManager().createNewTaskList(); + MylarTasksPlugin.getTaskListManager().setTaskList(t); + ITask cat = new Task(MylarTasksPlugin.getTaskListManager().genUniqueTaskId(), "Testing Category"); + t.addRootTask(cat); + BugzillaTask bugTask1 = new BugzillaTask(bugPrefix +94185, "<bugzilla info>"); + cat.addSubtask(bugTask1); + while(bugTask1.getState() != BugTaskState.FREE){ + Thread.sleep(500); + } + BugzillaTask bugTask2 = new BugzillaTask(bugPrefix + 3692, "<bugzilla info>"); + bugTask1.addSubtask(bugTask2); + while(bugTask2.getState() != BugTaskState.FREE){ + Thread.sleep(500); + } + BugzillaTask bugTask3 = new BugzillaTask(bugPrefix + 3693, "<bugzilla info>"); + cat.addSubtask(bugTask3); + while(bugTask3.getState() != BugTaskState.FREE){ + Thread.sleep(500); + } + + BugzillaTask bugTask4 = new BugzillaTask(bugPrefix + 9583, "<bugzilla info>"); + bugTask3.addSubtask(bugTask4); + while(bugTask4.getState() != BugTaskState.FREE){ + Thread.sleep(500); + } + + BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.LOCAL_UNQUAL, astNodeType); + + IActiveSearchListener l = new IActiveSearchListener() { + private boolean gathered = false; + + public void searchCompleted(List<?> results) + { + lists.add(results); + gathered = true; + } + + public boolean resultsGathered() { + return gathered; + } + }; + + // perform the search + SearchPluginTestHelper.search(s, l); +// System.err.println("Search Took About " + time + " seconds"); + + // do an inital search + assertTrue("No collectors returned", lists.size() != 0); + List<?> c = lists.get(0); + assertEquals("Results not the right size", 3, c.size()); + + MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType); + MylarTasksPlugin.getTaskListManager().deleteTask(cat); + } + + //TODO need to test a bug that wraps...should fail since we can only search on a single line + public void testLocalBugFullyQual() throws InterruptedException{ + lists.clear(); + + String bugPrefix = "Bugzilla-"; + + + TaskList t = MylarTasksPlugin.getTaskListManager().createNewTaskList(); + MylarTasksPlugin.getTaskListManager().setTaskList(t); + ITask cat = new Task(MylarTasksPlugin.getTaskListManager().genUniqueTaskId(), "Testing Category"); + t.addRootTask(cat); + BugzillaTask bugTask1 = new BugzillaTask(bugPrefix + 94185, "<bugzilla info>"); + cat.addSubtask(bugTask1); + while(bugTask1.getState() != BugTaskState.FREE){ + Thread.sleep(500); + } + + BugzillaTask bugTask2 = new BugzillaTask(bugPrefix + 9583, "<bugzilla info>"); + bugTask1.addSubtask(bugTask2); + while(bugTask2.getState() != BugTaskState.FREE){ + Thread.sleep(500); + } + BugzillaTask bugTask3 = new BugzillaTask(bugPrefix + 3693, "<bugzilla info>"); + cat.addSubtask(bugTask3); + while(bugTask3.getState() != BugTaskState.FREE){ + Thread.sleep(500); + } + + + BugzillaMylarSearch s = new BugzillaMylarSearch(BugzillaMylarSearch.LOCAL_QUAL, astNodeType); + + IActiveSearchListener l = new IActiveSearchListener() { + private boolean gathered = false; + + public void searchCompleted(List<?> results) + { + lists.add(results); + gathered = true; + } + + public boolean resultsGathered() { + return gathered; + } + }; + + // perform the search + SearchPluginTestHelper.search(s, l); +// System.err.println("Search Took About " + time + " seconds"); + + // do an inital search + assertTrue("No collectors returned", lists.size() != 0); + List<?> c = lists.get(0); + assertEquals("Results not the right size", 1, c.size()); + + MylarTasksPlugin.getBridge().removeFromLandmarksHash(astNodeType); + MylarTasksPlugin.getTaskListManager().deleteTask(cat); + } + +} |