From 402f3c5cc68cde9bfcf39753e757330b116cd3d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Wed, 9 Mar 2011 09:12:42 +0000 Subject: [PATCH] added tests --- .../java/com/mysema/codegen/JavaWriter.java | 7 +- .../java/com/mysema/codegen/ScalaWriter.java | 7 +- .../com/mysema/codegen/JavaWriterTest.java | 20 +++ .../com/mysema/codegen/ScalaWriterTest.java | 136 ++++++++++-------- .../mysema/codegen/model/TypeExtendsTest.java | 5 + .../mysema/codegen/model/TypeSuperTest.java | 5 + 6 files changed, 120 insertions(+), 60 deletions(-) diff --git a/src/main/java/com/mysema/codegen/JavaWriter.java b/src/main/java/com/mysema/codegen/JavaWriter.java index 16c82ac4c..789694f7e 100644 --- a/src/main/java/com/mysema/codegen/JavaWriter.java +++ b/src/main/java/com/mysema/codegen/JavaWriter.java @@ -155,7 +155,12 @@ public final class JavaWriter extends AbstractCodeWriter{ append(value.toString()); }else if (value instanceof Enum){ Enum enumValue = (Enum)value; - append(enumValue.getDeclaringClass().getName()+DOT+enumValue.name()); + if (classes.contains(enumValue.getClass().getName()) + || packages.contains(enumValue.getClass().getPackage().getName())){ + append(enumValue.name()); + }else{ + append(enumValue.getDeclaringClass().getName()+DOT+enumValue.name()); + } }else if (value instanceof String){ String escaped = StringEscapeUtils.escapeJava(value.toString()); append(QUOTE + escaped.replace("\\/", "/") + QUOTE); diff --git a/src/main/java/com/mysema/codegen/ScalaWriter.java b/src/main/java/com/mysema/codegen/ScalaWriter.java index d51f99881..36db419a9 100644 --- a/src/main/java/com/mysema/codegen/ScalaWriter.java +++ b/src/main/java/com/mysema/codegen/ScalaWriter.java @@ -157,7 +157,12 @@ public class ScalaWriter extends AbstractCodeWriter{ append(value.toString()); }else if (value instanceof Enum){ Enum enumValue = (Enum)value; - append(enumValue.getDeclaringClass().getName()+DOT+enumValue.name()); + if (classes.contains(enumValue.getClass().getName()) + || packages.contains(enumValue.getClass().getPackage().getName())){ + append(enumValue.name()); + }else{ + append(enumValue.getDeclaringClass().getName()+DOT+enumValue.name()); + } }else if (value instanceof String){ append(QUOTE + StringEscapeUtils.escapeJava(value.toString()) + QUOTE); }else{ diff --git a/src/test/java/com/mysema/codegen/JavaWriterTest.java b/src/test/java/com/mysema/codegen/JavaWriterTest.java index 2d20973ee..e3d725919 100644 --- a/src/test/java/com/mysema/codegen/JavaWriterTest.java +++ b/src/test/java/com/mysema/codegen/JavaWriterTest.java @@ -11,6 +11,8 @@ import static org.junit.Assert.assertTrue; import java.io.IOException; import java.io.StringWriter; import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; import java.util.Arrays; import org.apache.commons.collections15.Transformer; @@ -184,6 +186,24 @@ public class JavaWriterTest { match("/testAnnotations2", w.toString()); } + @Test + public void Annotation_With_ArrayMethod() throws IOException{ + Target annotation = new Target(){ + @Override + public ElementType[] value() { + return new ElementType[]{ElementType.FIELD, ElementType.METHOD}; + } + @Override + public Class annotationType() { + return Target.class; + } + }; + + writer.imports(Target.class.getPackage()); + writer.annotation(annotation); + assertTrue(w.toString().contains("@Target({FIELD, METHOD})")); + } + @Test public void Fields() throws IOException{ writer.beginClass(testType); diff --git a/src/test/java/com/mysema/codegen/ScalaWriterTest.java b/src/test/java/com/mysema/codegen/ScalaWriterTest.java index bf8ca8e81..14e18aed9 100644 --- a/src/test/java/com/mysema/codegen/ScalaWriterTest.java +++ b/src/test/java/com/mysema/codegen/ScalaWriterTest.java @@ -6,6 +6,8 @@ import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; import java.util.Arrays; import java.util.List; @@ -23,20 +25,20 @@ import com.mysema.codegen.model.TypeCategory; import com.mysema.codegen.model.Types; public class ScalaWriterTest { - + private static final Transformer transformer = new Transformer(){ @Override public Parameter transform(Parameter input) { return input; - } + } }; - - private Writer w = new StringWriter(); - - private ScalaWriter writer = new ScalaWriter(w, true); - + + private final Writer w = new StringWriter(); + + private final ScalaWriter writer = new ScalaWriter(w, true); + private Type testType, testType2, testSuperType, testInterface1, testInterface2; - + @Before public void setUp(){ testType = new ClassType(JavaWriterTest.class); @@ -45,7 +47,7 @@ public class ScalaWriterTest { testInterface1 = new SimpleType("com.mysema.codegen.TestInterface1","com.mysema.codegen","TestInterface1"); testInterface2 = new SimpleType("com.mysema.codegen.TestInterface2","com.mysema.codegen","TestInterface2"); } - + @Test public void CustomHeader() throws IOException{ // class QDepartment(path: String) extends RelationalPathBase[QDepartment](classOf[QDepartment], path){ @@ -60,24 +62,24 @@ public class ScalaWriterTest { writer.publicFinal(Types.OBJECT, "idKey", "createPrimaryKey(id)"); writer.publicFinal(Types.OBJECT, "companyKey", "createForeignKey(company,\"ID\")"); writer.end(); - + System.out.println(w); } - + @Test public void BeanAccessors() throws IOException{ - writer.beginClass(new SimpleType("Person")); + writer.beginClass(new SimpleType("Person")); writer.beginPublicMethod(Types.STRING, "getName"); writer.line("\"Daniel Spiewak\""); - writer.end(); + writer.end(); writer.beginPublicMethod(Types.VOID, "setName", new Parameter("name",Types.STRING)); writer.line("//"); - writer.end(); writer.end(); - + writer.end(); + System.out.println(w); } - + @Test public void Arrays() throws IOException{ // def main(args: Array[String]) { @@ -85,29 +87,29 @@ public class ScalaWriterTest { writer.field(Types.STRING.asArrayType(), "stringArray"); writer.beginPublicMethod(Types.VOID, "main", new Parameter("args",Types.STRING.asArrayType())); writer.line("//"); - writer.end(); + writer.end(); writer.beginPublicMethod(Types.VOID, "main2", new Parameter("args",new ClassType(TypeCategory.ARRAY,String[].class))); writer.line("//"); - writer.end(); writer.end(); - + writer.end(); + System.out.println(w); assertTrue(w.toString().contains("var stringArray: Array[String];")); assertTrue(w.toString().contains("def main(args: Array[String])")); assertTrue(w.toString().contains("def main2(args: Array[String])")); } - + @Test public void Trait() throws IOException{ // trait MyTrait writer.beginInterface(new SimpleType("MyTrait")); writer.line("//"); writer.end(); - + System.out.println(w); assertTrue(w.toString().contains("trait MyTrait")); } - + @Test public void Field() throws IOException{ // private val people: List[Person] @@ -115,13 +117,13 @@ public class ScalaWriterTest { writer.beginClass(new SimpleType("Main")); writer.privateFinal(new SimpleType(Types.LIST, new SimpleType("Person")), "people"); writer.end(); - + System.out.println(w); assertTrue(w.toString().contains("private val people: List[Person]")); } - + @Test - public void Basic() throws IOException { + public void Basic() throws IOException { writer.packageDecl("com.mysema.codegen"); writer.imports(IOException.class, StringWriter.class, Test.class); writer.beginClass(testType); @@ -130,44 +132,44 @@ public class ScalaWriterTest { writer.line("// TODO"); writer.end(); writer.end(); - + System.out.println(w); } - + @Test public void Extends() throws IOException{ writer.beginClass(testType2, testSuperType); writer.end(); - + System.out.println(w); } - + @Test public void Implements() throws IOException{ writer.beginClass(testType2, null, testInterface1,testInterface2); writer.end(); - + System.out.println(w); } - + @Test public void Interface() throws IOException{ writer.packageDecl("com.mysema.codegen"); writer.imports(IOException.class, StringWriter.class, Test.class); writer.beginInterface(testType); writer.end(); - + System.out.println(w); } - + @Test public void Interface2() throws IOException{ writer.beginInterface(testType2, testInterface1); writer.end(); - + System.out.println(w); } - + @Test public void Javadoc() throws IOException{ writer.packageDecl("com.mysema.codegen"); @@ -175,7 +177,7 @@ public class ScalaWriterTest { writer.javadoc("JavaWriterTest is a test class"); writer.beginClass(testType); writer.end(); - + System.out.println(w); } @@ -188,10 +190,28 @@ public class ScalaWriterTest { } }; writer.annotation(annotation); - - System.out.println(w); + + System.out.println(w); } - + + @Test + public void Annotation_With_ArrayMethod() throws IOException{ + Target annotation = new Target(){ + @Override + public ElementType[] value() { + return new ElementType[]{ElementType.FIELD, ElementType.METHOD}; + } + @Override + public Class annotationType() { + return Target.class; + } + }; + + writer.imports(Target.class.getPackage()); + writer.annotation(annotation); + assertTrue(w.toString().contains("@Target(Array(FIELD, METHOD))")); + } + @Test public void Annotations() throws IOException{ writer.packageDecl("com.mysema.codegen"); @@ -202,10 +222,10 @@ public class ScalaWriterTest { writer.beginPublicMethod(Types.VOID, "test"); writer.end(); writer.end(); - + System.out.println(w); } - + @Test public void Annotations2() throws IOException{ writer.packageDecl("com.mysema.codegen"); @@ -230,10 +250,10 @@ public class ScalaWriterTest { writer.beginPublicMethod(Types.VOID, "test"); writer.end(); writer.end(); - + System.out.println(w); } - + @Test public void Fields() throws IOException{ writer.beginClass(testType); @@ -249,49 +269,49 @@ public class ScalaWriterTest { writer.publicStaticFinal(Types.STRING, "publicStaticFinal", "\"val\""); writer.publicFinal(Types.STRING, "publicFinalField"); writer.publicFinal(Types.STRING, "publicFinalField2", "\"val\""); - + writer.end(); - + System.out.println(w); } - + @Test public void Methods() throws IOException{ writer.beginClass(testType); // private - + // protected - + // method - + // public writer.beginPublicMethod(Types.STRING, "publicMethod", Arrays.asList(new Parameter("a", Types.STRING)), transformer); writer.line("return null;"); writer.end(); - + writer.beginStaticMethod(Types.STRING, "staticMethod", Arrays.asList(new Parameter("a", Types.STRING)), transformer); writer.line("return null;"); writer.end(); - + writer.end(); - + System.out.println(w); } - + @Test public void Constructors() throws IOException{ writer.beginClass(testType); - + writer.beginConstructor(Arrays.asList(new Parameter("a", Types.STRING), new Parameter("b", Types.STRING)), transformer); writer.end(); - + writer.beginConstructor(new Parameter("a", Types.STRING)); writer.end(); - + writer.end(); - + System.out.println(w); - + } } diff --git a/src/test/java/com/mysema/codegen/model/TypeExtendsTest.java b/src/test/java/com/mysema/codegen/model/TypeExtendsTest.java index 1c48a1dd9..d51be75c2 100644 --- a/src/test/java/com/mysema/codegen/model/TypeExtendsTest.java +++ b/src/test/java/com/mysema/codegen/model/TypeExtendsTest.java @@ -11,4 +11,9 @@ public class TypeExtendsTest { assertEquals("? extends java.util.Collection", new TypeExtends(Types.COLLECTION).getGenericName(false)); } + @Test + public void GetGenericName_As_ArgType(){ + assertEquals("java.util.Collection", new TypeExtends(Types.COLLECTION).getGenericName(true)); + } + } diff --git a/src/test/java/com/mysema/codegen/model/TypeSuperTest.java b/src/test/java/com/mysema/codegen/model/TypeSuperTest.java index b56c73c98..3dd8f7d87 100644 --- a/src/test/java/com/mysema/codegen/model/TypeSuperTest.java +++ b/src/test/java/com/mysema/codegen/model/TypeSuperTest.java @@ -11,4 +11,9 @@ public class TypeSuperTest { assertEquals("? super java.lang.String", new TypeSuper(Types.STRING).getGenericName(false)); } + @Test + public void GetGenericName_As_ArgType() { + assertEquals("java.lang.Object", new TypeSuper(Types.STRING).getGenericName(true)); + } + }