/******************************************************************************* * Copyright (c) 2004, 2011 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.debug.tests.sourcelookup; import org.eclipse.core.resources.IProject; import org.eclipse.debug.core.sourcelookup.ISourceContainer; import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector; import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer; import org.eclipse.jdt.debug.tests.AbstractDebugTest; import org.eclipse.jdt.internal.launching.JavaSourceLookupDirector; /** * Tests project source containers */ public class ProjectSourceContainerTests extends AbstractDebugTest { public ProjectSourceContainerTests(String name) { super(name); } /** * Returns a project source container. */ protected ProjectSourceContainer getContainer(boolean referenced, boolean duplicates) throws Exception { ISourceLookupDirector director = new JavaSourceLookupDirector(); director.initializeParticipants(); director.setFindDuplicates(duplicates); IProject project = get14Project().getProject(); ProjectSourceContainer container = new ProjectSourceContainer(project, referenced); director.setSourceContainers(new ISourceContainer[]{container}); return container; } /** * Tests creation and restoring from a memento. * * @throws Exception */ public void testProjectSourceContainerMemento() throws Exception { ProjectSourceContainer container = getContainer(true, true); assertTrue(container.isSearchReferencedProjects()); String memento = container.getType().getMemento(container); ProjectSourceContainer restore = (ProjectSourceContainer) container.getType().createSourceContainer(memento); assertEquals("Project source container memento failed", container, restore); assertTrue(restore.isSearchReferencedProjects()); } public void testSimpleSourceLookupPositive() throws Exception { ProjectSourceContainer container = getContainer(false, false); Object[] objects = container.findSourceElements("Breakpoints.java"); assertEquals("Expected 1 result", 1, objects.length); assertEquals("Wrong file", container.getProject().getFile("src/Breakpoints.java"), objects[0]); } public void testSimpleRootSourceLookupPositive() throws Exception { ProjectSourceContainer container = getContainer(false, false); Object[] objects = container.findSourceElements(".classpath"); assertEquals("Expected 1 result", 1, objects.length); assertEquals("Wrong file", container.getProject().getFile(".classpath"), objects[0]); } public void testSimpleSourceLookupNegative() throws Exception { ProjectSourceContainer container = getContainer(false, false); Object[] objects = container.findSourceElements("FileNotFound.java"); assertEquals("Expected 0 files", 0, objects.length); } public void testQualifiedSourceLookupPositive() throws Exception { ProjectSourceContainer container = getContainer(false, false); Object[] objects = container.findSourceElements("org/eclipse/debug/tests/targets/InfiniteLoop.java"); assertEquals("Expected 1 result", 1, objects.length); assertEquals("Wrong file", container.getProject().getFile("src/org/eclipse/debug/tests/targets/InfiniteLoop.java"), objects[0]); } public void testQualifiedSourceLookupNegative() throws Exception { ProjectSourceContainer container = getContainer(false, false); Object[] objects = container.findSourceElements("a/b/c/InfiniteLoop.java"); assertEquals("Expected 0 files", 0, objects.length); } public void testCaseSensitiveQualifiedSourceLookup() throws Exception { ProjectSourceContainer container = getContainer(false, false); Object[] objects = container.findSourceElements("oRg/eClIpSe/dEbUg/tEsTs/tArGeTs/INfInItELOop.jaVa"); if (isFileSystemCaseSensitive()) { // case sensitive - should not find the file assertEquals("Expected 0 files", 0, objects.length); } else { // case insensitive - should find the file assertEquals("Expected 1 result", 1, objects.length); assertEquals("Wrong file", container.getProject().getFile("src/org/eclipse/debug/tests/targets/InfiniteLoop.java"), objects[0]); } } }