org.eclipse.che.jdt.search.FindReferencesTest.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.che.jdt.search.FindReferencesTest.java

Source

/*******************************************************************************
 * Copyright (c) 2012-2015 Codenvy, S.A.
 * 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:
 *   Codenvy, S.A. - initial API and implementation
 *******************************************************************************/

package org.eclipse.che.jdt.search;

import org.eclipse.che.ide.ext.java.BaseTest;
import org.eclipse.che.ide.ext.java.shared.dto.model.CompilationUnit;
import org.eclipse.che.ide.ext.java.shared.dto.model.PackageFragment;
import org.eclipse.che.ide.ext.java.shared.dto.model.PackageFragmentRoot;
import org.eclipse.che.ide.ext.java.shared.dto.search.FindUsagesResponse;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.internal.core.JavaProject;
import org.eclipse.jdt.internal.ui.search.JavaSearchQuery;
import org.eclipse.jdt.internal.ui.search.JavaSearchResult;
import org.eclipse.search.ui.ISearchResult;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.List;

import static org.fest.assertions.Assertions.assertThat;

/**
 * @author Evgen Vidolob
 */
public class FindReferencesTest extends BaseTest {
    private final JUnitSourceSetup setup;

    public FindReferencesTest() {
        setup = new JUnitSourceSetup();
    }

    @Override
    @Before
    public void setUp() throws Exception {
        super.setUp();
        setup.setUp();
    }

    @After
    public void tearDown() throws Exception {
        setup.tearDown();
    }

    @Test
    public void testFind() throws Exception {
        JavaSearchQuery query = SearchTestHelper.runMethodRefQuery("junit.framework.Test", "countTestCases",
                new String[0]);
        ISearchResult result = query.getSearchResult();
        JavaSearchResult javaResult = ((JavaSearchResult) result);
        assertThat(javaResult.getElements()).hasSize(9);
    }

    @Test
    public void testFind2() throws Exception {
        IPackageFragmentRoot root = ((JavaProject) JUnitSourceSetup.getProject())
                .getPackageFragmentRoot(new Path(JUnitSourceSetup.SRC_CONTAINER));
        IPackageFragment packageFragment = root.createPackageFragment("che", true, null);
        StringBuilder a = new StringBuilder();
        a.append("package che;\n");
        a.append("public class A{}\n");
        packageFragment.createCompilationUnit("A.java", a.toString(), true, null);
        StringBuilder b = new StringBuilder();
        b.append("package che;\n");
        b.append("import java.util.Comparator;\n");
        b.append("public class B extends A implements Comparator<A>{\n");
        b.append("   @Override\n");
        b.append("   public int compare(A o1, A o2) {\n");
        b.append("       A bb = null;\n");
        b.append("       return 0;\n");
        b.append("   }\n");
        b.append("}\n");
        packageFragment.createCompilationUnit("B.java", b.toString(), true, null);

        JavaSearchQuery query = SearchTestHelper.runTypeRefQuery("che.A");
        ISearchResult result = query.getSearchResult();
        JavaSearchResult javaResult = ((JavaSearchResult) result);
        assertThat(javaResult.getElements()).hasSize(2);
    }

    @Test(expected = SearchException.class)
    public void testSearchCantFindElement() throws Exception {
        IPackageFragmentRoot root = ((JavaProject) JUnitSourceSetup.getProject())
                .getPackageFragmentRoot(new Path(JUnitSourceSetup.SRC_CONTAINER));
        IPackageFragment packageFragment = root.createPackageFragment("che", true, null);
        StringBuilder a = new StringBuilder();
        a.append("package che;\n");
        a.append("public class A{}\n");
        ICompilationUnit compilationUnitA = packageFragment.createCompilationUnit("A.java", a.toString(), true,
                null);
        SearchManager manager = new SearchManager();
        manager.findUsage(JUnitSourceSetup.getProject(), compilationUnitA.getResource().getFullPath().toOSString(),
                24);

    }

    @Test
    public void testSearchManagerFindUsage() throws Exception {
        IJavaProject aProject = JUnitSourceSetup.getProject();
        IPackageFragmentRoot root = ((JavaProject) aProject)
                .getPackageFragmentRoot(new Path(JUnitSourceSetup.SRC_CONTAINER));
        IPackageFragment packageFragment = root.createPackageFragment("che", true, null);
        StringBuilder a = new StringBuilder();
        a.append("package che;\n");
        a.append("public class A{}\n");
        ICompilationUnit compilationUnitA = packageFragment.createCompilationUnit("A.java", a.toString(), true,
                null);
        StringBuilder b = new StringBuilder();
        b.append("package che;\n");
        b.append("import java.util.Comparator;\n");
        b.append("import che.A;\n");
        b.append("public class B extends A implements Comparator<A>{\n");
        b.append("   private A a = null;\n");
        b.append("   static{\n");
        b.append("       A ddd = null;\n");
        b.append("   }\n");
        b.append("   @Override\n");
        b.append("   public int compare(A o1, A o2) {\n");
        b.append("       A bb = null;\n");
        b.append("       return 0;\n");
        b.append("   }\n");
        b.append("   class SubB{\n");
        b.append("     public A ccc = null;\n");
        b.append("   }\n");
        b.append("}\n");
        b.append("class SubB2{\n");
        b.append("    private final A foo = null;\n");
        b.append("}\n");
        packageFragment.createCompilationUnit("B.java", b.toString(), true, null);

        SearchManager manager = new SearchManager();
        FindUsagesResponse response = manager.findUsage(aProject, "che.A", 26);

        assertThat(response.getSearchElementLabel()).isEqualTo("A");
        List<org.eclipse.che.ide.ext.java.shared.dto.model.JavaProject> projects = response.getProjects();
        assertThat(projects).isNotNull().isNotEmpty().hasSize(1);

        String expectedProjectPath = JUnitSourceSetup.getProject().getPath().toOSString();

        org.eclipse.che.ide.ext.java.shared.dto.model.JavaProject project = projects.get(0);
        assertThat(project.getName()).isEqualTo(JUnitSourceSetup.PROJECT_NAME);
        assertThat(project.getPath()).isEqualTo(expectedProjectPath);
        assertThat(project.getPackageFragmentRoots()).isNotNull().isNotEmpty().hasSize(1);

        PackageFragmentRoot fragmentRoot = project.getPackageFragmentRoots().get(0);
        assertThat(fragmentRoot.getElementName()).isEqualTo(JUnitSourceSetup.SRC_CONTAINER);
        assertThat(fragmentRoot.getProjectPath()).isEqualTo(expectedProjectPath);
        assertThat(fragmentRoot.getPackageFragments()).isNotNull().isNotEmpty().hasSize(1);

        PackageFragment fragment = fragmentRoot.getPackageFragments().get(0);

        assertThat(fragment.getElementName()).isEqualTo("che");
        assertThat(fragment.getProjectPath()).isEqualTo(expectedProjectPath);
        assertThat(fragment.getPath())
                .isEqualTo(expectedProjectPath + "/" + JUnitSourceSetup.SRC_CONTAINER + "/che");
        assertThat(fragment.getClassFiles()).isNotNull().isEmpty();
        assertThat(fragment.getCompilationUnits()).isNotNull().isNotEmpty().hasSize(1);

        CompilationUnit compilationUnit = fragment.getCompilationUnits().get(0);
        assertThat(compilationUnit.getElementName()).isEqualTo("B.java");
        assertThat(compilationUnit.getPath())
                .isEqualTo(expectedProjectPath + "/" + JUnitSourceSetup.SRC_CONTAINER + "/che/B.java");
        assertThat(compilationUnit.getImports()).hasSize(1);
        assertThat(compilationUnit.getTypes()).hasSize(2);

    }
}