blob: 90ca36671b01ecc41beb91e71c58dc7807af6105 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2007 Oracle. 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:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.core.tests.internal.jdtutility;
import org.eclipse.jpt.core.internal.ITextRange;
import org.eclipse.jpt.core.internal.jdtutility.ASTNodeTextRange;
import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
import org.eclipse.jpt.core.internal.jdtutility.BooleanStringExpressionConverter;
import org.eclipse.jpt.core.internal.jdtutility.CharacterStringExpressionConverter;
import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
import org.eclipse.jpt.core.internal.jdtutility.MemberAnnotationElementAdapter;
import org.eclipse.jpt.core.internal.jdtutility.NestedDeclarationAnnotationAdapter;
import org.eclipse.jpt.core.internal.jdtutility.NestedIndexedDeclarationAnnotationAdapter;
import org.eclipse.jpt.core.internal.jdtutility.NumberStringExpressionConverter;
import org.eclipse.jpt.core.internal.jdtutility.PrimitiveTypeStringExpressionConverter;
import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
import org.eclipse.jpt.core.internal.jdtutility.SimpleTypeStringExpressionConverter;
public class MemberAnnotationElementAdapterTests extends AnnotationTestCase {
public MemberAnnotationElementAdapterTests(String name) {
super(name);
}
private void createAnnotationAndMembers(String annotationName, String annotationBody) throws Exception {
this.javaProject.createType("annot", annotationName + ".java", "public @interface " + annotationName + " { " + annotationBody + " }");
}
private void createEnum(String enumName, String enumBody) throws Exception {
this.javaProject.createType("enums", enumName + ".java", "public enum " + enumName + " { " + enumBody + " }");
}
public void testGetValue1() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar();");
this.createTestType("@annot.Foo(bar=\"xxx\")");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("xxx", aea.getValue());
}
public void testGetValue2() throws Exception {
this.createAnnotationAndMembers("Foo", "int bar();");
this.createTestType("@annot.Foo(bar=48)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", NumberStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("48", aea.getValue());
}
public void testGetValue3() throws Exception {
this.createAnnotationAndMembers("Foo", "char bar();");
this.createTestType("@annot.Foo(bar='c')");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", CharacterStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("c", aea.getValue());
}
public void testGetValue4() throws Exception {
this.createAnnotationAndMembers("Foo", "boolean bar();");
this.createTestType("@annot.Foo(bar=false)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", BooleanStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("false", aea.getValue());
}
public void testGetValue5() throws Exception {
this.createAnnotationAndMembers("Baz", "boolean fred();");
this.createAnnotationAndMembers("Bar", "annot.Baz jimmy();");
this.createAnnotationAndMembers("Foo", "annot.Bar value();");
this.createTestType("@annot.Foo(@annot.Bar(jimmy=@annot.Baz(fred=false)))");
DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa3, "fred", BooleanStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("false", aea.getValue());
}
public void testGetValue6() throws Exception {
this.createAnnotationAndMembers("Foo", "boolean value();");
this.createTestType("@annot.Foo(false)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, BooleanStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("false", aea.getValue());
}
public void testGetValueNull1() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar();");
this.createTestType("@annot.Foo");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertNull(aea.getValue());
}
public void testGetValueNull2() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar();");
this.createTestType();
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertNull(aea.getValue());
}
public void testGetValueNull3() throws Exception {
this.createAnnotationAndMembers("Baz", "String fred();");
this.createAnnotationAndMembers("Bar", "annot.Baz jimmy();");
this.createAnnotationAndMembers("Foo", "annot.Bar value();");
this.createTestType("@annot.Foo(@annot.Bar(jimmy=@annot.Baz))");
DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa3, "fred");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertNull(aea.getValue());
}
public void testASTNode1() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar();");
String value = "\"xxx\"";
String element = "bar=" + value;
String annotation = "@annot.Foo(" + element + ")";
this.createTestType(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
ITextRange textRange = new ASTNodeTextRange(aea.astNode());
assertEquals(this.source().indexOf(value), textRange.getOffset());
assertEquals(value.length(), textRange.getLength());
assertEquals(7, textRange.getLineNumber());
}
public void testASTNode2() throws Exception {
this.createAnnotationAndMembers("Baz", "boolean fred();");
this.createAnnotationAndMembers("Bar", "annot.Baz jimmy();");
this.createAnnotationAndMembers("Foo", "annot.Bar value();");
String value = "false";
String element = "fred=" + value;
String annotation = "@annot.Foo(@annot.Bar(jimmy=@annot.Baz(" + element + ")))";
this.createTestType(annotation);
DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa3, "fred", BooleanStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("false", aea.getValue());
ITextRange textRange = new ASTNodeTextRange(aea.astNode());
assertEquals(value.length(), textRange.getLength());
}
public void testASTNode3() throws Exception {
this.createAnnotationAndMembers("Foo", "String value();");
String element = "\"xxx\"";
String annotation = "@annot.Foo(" + element + ")";
this.createTestType(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa);
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
ITextRange textRange = new ASTNodeTextRange(aea.astNode());
assertEquals(this.source().indexOf(element), textRange.getOffset());
assertEquals(element.length(), textRange.getLength());
}
public void testASTNode4() throws Exception {
this.createAnnotationAndMembers("Foo", "String value();");
String annotation = "@annot.Foo";
this.createTestType(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa);
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
ITextRange textRange = new ASTNodeTextRange(aea.astNode());
assertEquals(this.source().indexOf(annotation), textRange.getOffset());
assertEquals(annotation.length(), textRange.getLength());
}
public void testSetValue1() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar();");
String annotation = "@annot.Foo(bar=\"xxx\")";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue(null);
this.assertSourceDoesNotContain("Foo");
}
public void testSetValue2() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar();");
String annotation = "@annot.Foo(bar=\"xxx\")";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", false);
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue(null);
this.assertSourceDoesNotContain(annotation);
this.assertSourceContains("@Foo");
}
public void testSetValue3() throws Exception {
this.createAnnotationAndMembers("Baz", "boolean fred();");
this.createAnnotationAndMembers("Bar", "annot.Baz jimmy();");
this.createAnnotationAndMembers("Foo", "annot.Bar value();");
String annotation = "@annot.Foo(@annot.Bar(jimmy=@annot.Baz(fred=false)))";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa3, "fred", BooleanStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue(null);
this.assertSourceDoesNotContain(annotation);
this.assertSourceDoesNotContain("Foo");
this.assertSourceDoesNotContain("Bar");
}
public void testSetValue3a() throws Exception {
this.createAnnotationAndMembers("Baz", "boolean fred();");
this.createAnnotationAndMembers("Bar", "annot.Baz jimmy();");
this.createAnnotationAndMembers("Foo", "annot.Bar value();");
String annotation = "@annot.Foo(@annot.Bar(jimmy=@annot.Baz(fred=false)))";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar", false);
DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz", false);
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa3, "fred", BooleanStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue(null);
this.assertSourceDoesNotContain(annotation);
this.assertSourceContains("@annot.Foo(@Bar)");
}
public void testSetValue4() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar();");
this.createTestType();
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("xxx");
this.assertSourceContains("@Foo(bar=\"xxx\")");
}
public void testSetValue5() throws Exception {
this.createAnnotationAndMembers("Baz", "boolean fred();");
this.createAnnotationAndMembers("Bar", "annot.Baz jimmy();");
this.createAnnotationAndMembers("Foo", "annot.Bar value();");
String annotation = "@annot.Foo(@annot.Bar(jimmy=@annot.Baz(fred=false)))";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa3, "fred", BooleanStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("true");
this.assertSourceDoesNotContain(annotation);
this.assertSourceContains("@annot.Foo(@annot.Bar(jimmy=@annot.Baz(fred=true)))");
}
public void testSetValue6() throws Exception {
this.createAnnotationAndMembers("Baz", "boolean fred();");
this.createAnnotationAndMembers("Bar", "annot.Baz jimmy();");
this.createAnnotationAndMembers("Foo", "annot.Bar value();");
this.createTestType();
DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa3, "fred", BooleanStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("true");
this.assertSourceContains("@Foo(@Bar(jimmy=@Baz(fred=true)))");
}
public void testSetValue7() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar();");
String annotation = "@annot.Foo(bar=\"xxx\")";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("yyy");
this.assertSourceDoesNotContain(annotation);
this.assertSourceContains("@annot.Foo(bar=\"yyy\")");
}
public void testSetValue8() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar();");
String annotation = "@annot.Foo";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("xxx");
this.assertSourceContains("@Foo(bar=\"xxx\")");
}
public void testSetValue9() throws Exception {
this.createAnnotationAndMembers("Foo", "String value(); String bar();");
String annotation = "@annot.Foo(\"zzz\")";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("xxx");
this.assertSourceDoesNotContain(annotation);
this.assertSourceContains("@Foo(value=\"zzz\", bar=\"xxx\")");
}
public void testSetValue10() throws Exception {
this.createAnnotationAndMembers("Foo", "String bar(); String baz();");
String annotation = "@annot.Foo(bar=\"xxx\")";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "baz");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("yyy");
this.assertSourceDoesNotContain(annotation);
this.assertSourceContains("@annot.Foo(bar=\"xxx\", baz = \"yyy\")");
}
public void testSetValue11() throws Exception {
this.createAnnotationAndMembers("Baz", "int fred();");
this.createAnnotationAndMembers("Bar", "annot.Baz[] jimmy();");
this.createAnnotationAndMembers("Foo", "annot.Bar value();");
String annotation = "@annot.Foo(@annot.Bar(jimmy={@annot.Baz(fred=0), @annot.Baz(fred=1), @annot.Baz(fred=2), @annot.Baz(fred=3)}))";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
DeclarationAnnotationAdapter daa3 = new NestedIndexedDeclarationAnnotationAdapter(daa2, "jimmy", 2, "annot.Baz");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa3, "fred", NumberStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("2", aea.getValue());
aea.setValue("48");
this.assertSourceContains("@annot.Foo(@annot.Bar(jimmy={@annot.Baz(fred=0), @annot.Baz(fred=1), @annot.Baz(fred=48), @annot.Baz(fred=3)}))");
}
public void testSetValue12() throws Exception {
this.createAnnotationAndMembers("Foo", "String value();");
String annotation = "@annot.Foo";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "value");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("xxx");
this.assertSourceContains("@Foo(\"xxx\")");
}
public void testSetValue13() throws Exception {
this.createAnnotationAndMembers("Foo", "String value();");
String annotation = "@annot.Foo(\"zzz\")";
this.createTestType(annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "value");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("xxx");
this.assertSourceDoesNotContain(annotation);
this.assertSourceContains("@annot.Foo(\"xxx\")");
}
public void testSimpleTypeLiteral1() throws Exception {
this.createAnnotationAndMembers("Foo", "Class bar();");
this.createTestType("@annot.Foo(bar=java.lang.Object.class)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", SimpleTypeStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("java.lang.Object", aea.getValue());
}
public void testSimpleTypeLiteral2() throws Exception {
this.createAnnotationAndMembers("Foo", "Class bar();");
this.createTestType();
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", SimpleTypeStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("java.lang.Object");
this.assertSourceContains("@Foo(bar=java.lang.Object.class)");
}
public void testSimpleTypeLiteral3() throws Exception {
this.createAnnotationAndMembers("Foo", "Class bar();");
this.createTestType("@annot.Foo(bar=int.class)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", SimpleTypeStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertNull(aea.getValue());
}
public void testSimpleTypeLiteral4() throws Exception {
this.createAnnotationAndMembers("Foo", "Class bar();");
this.createTestType("@annot.Foo(bar=java.util.Map.Entry.class)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", SimpleTypeStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("java.util.Map.Entry", aea.getValue());
}
public void testPrimitiveTypeLiteral1() throws Exception {
this.createAnnotationAndMembers("Foo", "Class bar();");
this.createTestType("@annot.Foo(bar=int.class)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("int", aea.getValue());
}
public void testPrimitiveTypeLiteral2() throws Exception {
this.createAnnotationAndMembers("Foo", "Class bar();");
this.createTestType();
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("int");
this.assertSourceContains("@Foo(bar=int.class)");
}
public void testPrimitiveTypeLiteral3() throws Exception {
this.createAnnotationAndMembers("Foo", "Class bar();");
this.createTestType("@annot.Foo(bar=java.lang.Object.class)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertNull(aea.getValue());
}
public void testPrimitiveTypeLiteral4() throws Exception {
this.createAnnotationAndMembers("Foo", "Class bar();");
this.createTestType("@annot.Foo(bar=void.class)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new ConversionDeclarationAnnotationElementAdapter(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("void", aea.getValue());
}
public void testGetValueEnum1() throws Exception {
this.createEnum("TestEnum", "XXX, YYY, ZZZ");
this.createAnnotationAndMembers("Foo", "enums.TestEnum bar();");
this.createTestType("@annot.Foo(bar=enums.TestEnum.XXX)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new EnumDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("enums.TestEnum.XXX", aea.getValue());
}
public void testGetValueEnum2() throws Exception {
this.createEnum("TestEnum", "XXX, YYY, ZZZ");
this.createAnnotationAndMembers("Foo", "enums.TestEnum bar();");
this.createTestType("static enums.TestEnum.XXX", "@annot.Foo(bar=XXX)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new EnumDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("enums.TestEnum.XXX", aea.getValue());
}
public void testGetValueEnum3() throws Exception {
this.createEnum("TestEnum", "XXX, YYY, ZZZ");
this.createAnnotationAndMembers("Foo", "enums.TestEnum bar();");
this.createTestType("@annot.Foo");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new EnumDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertNull(aea.getValue());
}
public void testGetValueEnum4() throws Exception {
this.createEnum("TestEnum", "XXX, YYY, ZZZ");
this.createAnnotationAndMembers("Foo", "enums.TestEnum bar();");
this.createTestType("enums.TestEnum", "@annot.Foo(bar=TestEnum.XXX)");
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new EnumDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
assertEquals("enums.TestEnum.XXX", aea.getValue());
}
public void testSetValueEnum1() throws Exception {
this.createEnum("TestEnum", "XXX, YYY, ZZZ");
this.createAnnotationAndMembers("Foo", "enums.TestEnum bar();");
String annotation = "@annot.Foo(bar=XXX)";
this.createTestType("static enums.TestEnum.XXX", annotation);
this.assertSourceContains(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new EnumDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue(null);
this.assertSourceDoesNotContain("Foo");
}
public void testSetValueEnum2() throws Exception {
this.createEnum("TestEnum", "XXX, YYY, ZZZ");
this.createAnnotationAndMembers("Foo", "enums.TestEnum bar();");
String annotation = "@Foo(bar=XXX)";
this.createTestType();
this.assertSourceDoesNotContain(annotation);
DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
DeclarationAnnotationElementAdapter daea = new EnumDeclarationAnnotationElementAdapter(daa, "bar");
AnnotationElementAdapter aea = new MemberAnnotationElementAdapter(this.idField(), daea);
aea.setValue("enums.TestEnum.XXX");
this.assertSourceContains("import static enums.TestEnum.XXX;");
this.assertSourceContains(annotation);
}
}