blob: f7843f667f8d999667f83b39a34bcc3b63a87092 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017 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.ui.tests.quickfix;
import java.util.ArrayList;
import org.eclipse.jdt.testplugin.JavaProjectHelper;
import org.eclipse.core.runtime.CoreException;
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.core.dom.CompilationUnit;
import org.eclipse.jdt.internal.corext.util.Messages;
import org.eclipse.jdt.ui.tests.core.Java9ProjectTestSetup;
import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
import org.eclipse.jdt.internal.ui.text.correction.CorrectionMessages;
import junit.framework.Test;
import junit.framework.TestSuite;
public class QuickFixTest9 extends QuickFixTest {
private static final Class<QuickFixTest9> THIS= QuickFixTest9.class;
private IJavaProject fJProject1;
private IJavaProject fJProject2;
private IPackageFragmentRoot fSourceFolder;
public QuickFixTest9(String name) {
super(name);
}
public static Test suite() {
return new Java9ProjectTestSetup(new TestSuite(THIS));
}
public static Test setUpTest(Test test) {
Test testToReturn= new Java9ProjectTestSetup(test);
return testToReturn;
}
@Override
protected void setUp() throws CoreException {
fJProject2= JavaProjectHelper.createJavaProject("TestProject2", "bin");
JavaProjectHelper.set9CompilerOptions(fJProject2);
JavaProjectHelper.addRequiredProject(fJProject2, Java9ProjectTestSetup.getProject());
IPackageFragmentRoot java9Src= JavaProjectHelper.addSourceContainer(fJProject2, "src");
IPackageFragment def= java9Src.createPackageFragment("", false, null);
IPackageFragment pkgFrag= java9Src.createPackageFragment("java.defaultProject", false, null);
StringBuffer buf= new StringBuffer();
buf.append("module java.defaultProject {\n");
buf.append(" exports java.defaultProject; \n");
buf.append("}\n");
def.createCompilationUnit("module-info.java", buf.toString(), false, null);
StringBuffer buf2= new StringBuffer();
buf2.append("package java.defaultProject; \n\n public class One { \n\n");
buf2.append("}\n");
pkgFrag.createCompilationUnit("One.java", buf2.toString(), false, null);
fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
JavaProjectHelper.set9CompilerOptions(fJProject1);
JavaProjectHelper.addRequiredProject(fJProject1, fJProject2);
JavaProjectHelper.addRequiredProject(fJProject1, Java9ProjectTestSetup.getProject());
fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
}
@Override
protected void tearDown() throws Exception {
if (fJProject1 != null) {
JavaProjectHelper.clear(fJProject1, Java9ProjectTestSetup.getDefaultClasspath());
}
if (fJProject2 != null) {
JavaProjectHelper.clear(fJProject2, Java9ProjectTestSetup.getDefaultClasspath());
}
super.tearDown();
}
public void testAddModuleRequiresAndImportProposal() throws Exception {
StringBuffer buf= new StringBuffer();
buf.append("module test {\n");
buf.append("}\n");
IPackageFragment def= fSourceFolder.createPackageFragment("", false, null);
def.createCompilationUnit("module-info.java", buf.toString(), false, null);
IPackageFragment pack= fSourceFolder.createPackageFragment("test", false, null);
buf= new StringBuffer();
buf.append("package test;\n");
buf.append("public class Cls {\n");
buf.append(" One one;\n");
buf.append("}\n");
ICompilationUnit cu= pack.createCompilationUnit("Cls.java", buf.toString(), false, null);
CompilationUnit astRoot= getASTRoot(cu);
ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot);
String[] args= { "java.defaultProject" };
String requiresStr= Messages.format(CorrectionMessages.UnresolvedElementsSubProcessor_add_requires_module_info, args);
requiresStr= requiresStr.substring(0, 1).toLowerCase() + requiresStr.substring(1);
String[] args2= { "One", "java.defaultProject" };
final String importStr= Messages.format(CorrectionMessages.UnresolvedElementsSubProcessor_importtype_description, args2);
String proposalStr= Messages.format(CorrectionMessages.UnresolvedElementsSubProcessor_combine_two_proposals_info, new String[] { importStr, requiresStr });
assertProposalExists(proposals, proposalStr);
}
public void testAddModuleRequiresProposal() throws Exception {
StringBuffer buf= new StringBuffer();
buf.append("module test {\n");
buf.append("}\n");
IPackageFragment def= fSourceFolder.createPackageFragment("", false, null);
def.createCompilationUnit("module-info.java", buf.toString(), false, null);
IPackageFragment pack= fSourceFolder.createPackageFragment("test", false, null);
buf= new StringBuffer();
buf.append("package test;\n\n");
buf.append("import java.defaultProject.One;\n\n");
buf.append("public class Cls {\n");
buf.append(" One one;\n");
buf.append("}\n");
ICompilationUnit cu= pack.createCompilationUnit("Cls.java", buf.toString(), false, null);
CompilationUnit astRoot= getASTRoot(cu);
ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 2, 0);
String[] args= { "java.defaultProject" };
final String proposalStr= Messages.format(CorrectionMessages.UnresolvedElementsSubProcessor_add_requires_module_info, args);
assertProposalExists(proposals, proposalStr);
proposals= collectCorrections(cu, astRoot, 2, 1);
assertProposalExists(proposals, proposalStr);
}
}