added tests

This commit is contained in:
Timo Westkämper 2011-03-09 09:12:42 +00:00
parent 5204829b64
commit 402f3c5cc6
6 changed files with 120 additions and 60 deletions

View File

@ -155,7 +155,12 @@ public final class JavaWriter extends AbstractCodeWriter<JavaWriter>{
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);

View File

@ -157,7 +157,12 @@ public class ScalaWriter extends AbstractCodeWriter<ScalaWriter>{
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{

View File

@ -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<? extends Annotation> 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);

View File

@ -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<Parameter,Parameter> transformer = new Transformer<Parameter,Parameter>(){
@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<? extends Annotation> 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);
}
}

View File

@ -11,4 +11,9 @@ public class TypeExtendsTest {
assertEquals("? extends java.util.Collection<java.lang.Object>", new TypeExtends(Types.COLLECTION).getGenericName(false));
}
@Test
public void GetGenericName_As_ArgType(){
assertEquals("java.util.Collection<java.lang.Object>", new TypeExtends(Types.COLLECTION).getGenericName(true));
}
}

View File

@ -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));
}
}