blob: 257c0da02d2dce4a880eef59fad7f0236232272d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.jsdt.core.tests.model;
import junit.framework.Test;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.wst.jsdt.core.IJavaScriptUnit;
import org.eclipse.wst.jsdt.core.IField;
import org.eclipse.wst.jsdt.core.IFunction;
import org.eclipse.wst.jsdt.core.IType;
import org.eclipse.wst.jsdt.core.JavaScriptModelException;
public class CreateMembersTests extends AbstractJavaModelTests {
public CreateMembersTests(String name) {
super(name);
}
public static Test suite() {
return buildModelTestSuite(CreateMembersTests.class, 1/*sort ascending order*/);
}
public void setUpSuite() throws Exception {
super.setUpSuite();
setUpJavaProject("CreateMembers", "1.5");
}
public void tearDownSuite() throws Exception {
deleteProject("CreateMembers");
super.tearDownSuite();
}
public void test001() throws JavaScriptModelException {
IJavaScriptUnit compilationUnit = getCompilationUnit("CreateMembers", "src", "", "A.js");
assertNotNull("No compilation unit", compilationUnit);
// IType[] types = compilationUnit.getTypes();
// assertNotNull("No types", types);
// assertEquals("Wrong size", 1, types.length);
// IType type = types[0];
compilationUnit.createMethod("\tfunction foo() {\n\t\tSystem.out.println(\"Hello World\");\n\t}\n", null, true, new NullProgressMonitor());
String expectedSource =
"var aVar;\n" +
"\n" +
"function foo() {\n" +
"\tSystem.out.println(\"Hello World\");\n" +
"}" +
"";
assertSourceEquals("Unexpected source", expectedSource, compilationUnit.getSource());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=86906
public void test002() throws JavaScriptModelException {
IJavaScriptUnit compilationUnit = getCompilationUnit("CreateMembers", "src", "", "A2.js");
assertNotNull("No compilation unit", compilationUnit);
// IType[] types = compilationUnit.getTypes();
// assertNotNull("No types", types);
// assertEquals("Wrong size", 1, types.length);
// IType type = types[0];
IField sibling = compilationUnit.getField("aVar");
compilationUnit.createField("var i;", sibling, true, null);
String expectedSource =
"var i;\n" +
"\n" +
"var aVar;" +
"";
assertSourceEquals("Unexpected source", expectedSource, compilationUnit.getSource());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=86906
public void test003() throws JavaScriptModelException {
IJavaScriptUnit compilationUnit = getCompilationUnit("CreateMembers", "src", "", "Annot.js");
assertNotNull("No compilation unit", compilationUnit);
IType[] types = compilationUnit.getTypes();
assertNotNull("No types", types);
assertEquals("Wrong size", 1, types.length);
IType type = types[0];
IFunction sibling = type.getFunction("foo", new String[]{});
type.createMethod("String bar();", sibling, true, null);
String expectedSource =
"public @interface Annot {\n" +
" String bar();\n" +
"\n" +
" String foo();\n" +
"}";
assertSourceEquals("Unexpected source", expectedSource, type.getSource());
}
/*
* Ensures that the handle for a created method that has varargs type arguments is correct.
* (regression test for bug 93487 IType#findMethods fails on vararg methods)
*/
public void test004() throws JavaScriptModelException {
IType type = getCompilationUnit("/CreateMembers/src/A.js").getType("A");
IFunction method = type.createMethod(
"void bar(String... args) {}",
null, // no siblings
false, // don't force
null // no progress monitor
);
assertTrue("Method should exist", method.exists());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=95580
public void test005() throws JavaScriptModelException {
IJavaScriptUnit compilationUnit = getCompilationUnit("CreateMembers", "src", "", "E2.js");
assertNotNull("No compilation unit", compilationUnit);
IType[] types = compilationUnit.getTypes();
assertNotNull("No types", types);
assertEquals("Wrong size", 1, types.length);
IType type = types[0];
type.createField("int i;", null, true, null);
String expectedSource =
"public enum E2 {\n" +
" A, B, C;\n\n" +
" int i;\n" +
"}";
assertSourceEquals("Unexpected source", expectedSource, type.getSource());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=95580
public void test006() throws JavaScriptModelException {
IJavaScriptUnit compilationUnit = getCompilationUnit("CreateMembers", "src", "", "E3.js");
assertNotNull("No compilation unit", compilationUnit);
IType[] types = compilationUnit.getTypes();
assertNotNull("No types", types);
assertEquals("Wrong size", 1, types.length);
IType type = types[0];
type.createType("class DD {}", null, true, null);
String expectedSource =
"public enum E3 {\n" +
" A, B, C;\n\n" +
" class DD {}\n" +
"}";
assertSourceEquals("Unexpected source", expectedSource, type.getSource());
}
}