From 2b61829dee31b798252db1edd0754009360cd524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Tue, 26 Oct 2010 09:26:43 +0000 Subject: [PATCH] added more tests for annotations --- .../query/apt/AbstractProcessorTest.java | 7 +++ .../com/mysema/query/apt/DateExtensions.java | 17 ++++++ .../mysema/query/apt/DateExtensionsTest.java | 55 +++++++++++++++++++ .../mysema/query/apt/EntityExtensions.java | 15 +++++ .../query/apt/EntityExtensionsTest.java | 55 +++++++++++++++++++ .../query/apt/EntityWithExtensions.java | 14 +++++ 6 files changed, 163 insertions(+) create mode 100644 querydsl-apt/src/test/java/com/mysema/query/apt/DateExtensions.java create mode 100644 querydsl-apt/src/test/java/com/mysema/query/apt/DateExtensionsTest.java create mode 100644 querydsl-apt/src/test/java/com/mysema/query/apt/EntityExtensions.java create mode 100644 querydsl-apt/src/test/java/com/mysema/query/apt/EntityExtensionsTest.java create mode 100644 querydsl-apt/src/test/java/com/mysema/query/apt/EntityWithExtensions.java diff --git a/querydsl-apt/src/test/java/com/mysema/query/apt/AbstractProcessorTest.java b/querydsl-apt/src/test/java/com/mysema/query/apt/AbstractProcessorTest.java index 81a6730dc..1aa5b6623 100644 --- a/querydsl-apt/src/test/java/com/mysema/query/apt/AbstractProcessorTest.java +++ b/querydsl-apt/src/test/java/com/mysema/query/apt/AbstractProcessorTest.java @@ -3,6 +3,8 @@ package com.mysema.query.apt; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; import javax.annotation.processing.AbstractProcessor; @@ -48,6 +50,7 @@ public abstract class AbstractProcessorTest { options.add(processorClass.getName()); options.add("-sourcepath"); options.add("src/test/java"); + options.addAll(getAPTOptions()); options.addAll(classes); int compilationResult = compiler.run(null, null, null, options.toArray(new String[options.size()])); if(compilationResult == 0){ @@ -57,4 +60,8 @@ public abstract class AbstractProcessorTest { } } + protected Collection getAPTOptions() { + return Collections.emptyList(); + } + } diff --git a/querydsl-apt/src/test/java/com/mysema/query/apt/DateExtensions.java b/querydsl-apt/src/test/java/com/mysema/query/apt/DateExtensions.java new file mode 100644 index 000000000..518c605f4 --- /dev/null +++ b/querydsl-apt/src/test/java/com/mysema/query/apt/DateExtensions.java @@ -0,0 +1,17 @@ +package com.mysema.query.apt; + +import java.sql.Date; + +import com.mysema.query.annotations.QueryDelegate; +import com.mysema.query.types.Predicate; +import com.mysema.query.types.expr.DateExpression; +import com.mysema.query.types.path.BooleanPath; + +public class DateExtensions { + + @QueryDelegate(Date.class) + public static Predicate extension(DateExpression date){ + return new BooleanPath("b"); + } + +} diff --git a/querydsl-apt/src/test/java/com/mysema/query/apt/DateExtensionsTest.java b/querydsl-apt/src/test/java/com/mysema/query/apt/DateExtensionsTest.java new file mode 100644 index 000000000..eada83c1a --- /dev/null +++ b/querydsl-apt/src/test/java/com/mysema/query/apt/DateExtensionsTest.java @@ -0,0 +1,55 @@ +package com.mysema.query.apt; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.junit.Test; + +public class DateExtensionsTest extends AbstractProcessorTest{ + + private static final String packagePath = "src/test/java/com/mysema/query/apt/"; + + @Test + public void Handles_Date_Extensions_Correctly() throws IOException, InterruptedException{ + File source = new File(packagePath, "EntityWithExtensions.java"); + File source2 = new File(packagePath, "DateExtensions.java"); + List sources = Arrays.asList(source.getPath(), source2.getPath()); + File qType = new File("target/overwrite3/com/mysema/query/apt/QEntityWithExtensions.java"); + + // QEntityWithExtensions is generated + process(QuerydslAnnotationProcessor.class, sources, "overwrite3"); + assertTrue(qType.exists()); + long modified = qType.lastModified(); + Thread.sleep(1000); + System.out.println(FileUtils.readFileToString(qType).contains("QDate")); + + // EntityWithExtensions has not changed, QEntityWithExtensions is not overwritten + compile(QuerydslAnnotationProcessor.class, sources, "overwrite3"); + assertEquals(modified, qType.lastModified()); + + // EntityWithExtensions is updated, QEntityWithExtensions is overwritten + FileUtils.touch(source); + compile(QuerydslAnnotationProcessor.class, sources, "overwrite3"); + assertTrue("" + modified + " >= " + qType.lastModified(), modified < qType.lastModified()); + assertTrue(FileUtils.readFileToString(qType).contains("QDate")); + + // QEntityWithExtensions is deleted and regenerated + assertTrue(qType.delete()); + compile(QuerydslAnnotationProcessor.class, sources, "overwrite3"); + assertTrue(qType.exists()); + assertTrue(FileUtils.readFileToString(qType).contains("QDate")); + } + + @Override + protected Collection getAPTOptions() { + return Arrays.asList("-AdefaultOverwrite=true"); + } + +} diff --git a/querydsl-apt/src/test/java/com/mysema/query/apt/EntityExtensions.java b/querydsl-apt/src/test/java/com/mysema/query/apt/EntityExtensions.java new file mode 100644 index 000000000..d576b0404 --- /dev/null +++ b/querydsl-apt/src/test/java/com/mysema/query/apt/EntityExtensions.java @@ -0,0 +1,15 @@ +package com.mysema.query.apt; + +import com.mysema.query.annotations.QueryDelegate; +import com.mysema.query.domain.QEntityWithExtensions; +import com.mysema.query.types.Predicate; +import com.mysema.query.types.path.BooleanPath; + +public class EntityExtensions { + + @QueryDelegate(EntityWithExtensions.class) + public static Predicate extension(QEntityWithExtensions entity){ + return new BooleanPath("b"); + } + +} diff --git a/querydsl-apt/src/test/java/com/mysema/query/apt/EntityExtensionsTest.java b/querydsl-apt/src/test/java/com/mysema/query/apt/EntityExtensionsTest.java new file mode 100644 index 000000000..f2e560788 --- /dev/null +++ b/querydsl-apt/src/test/java/com/mysema/query/apt/EntityExtensionsTest.java @@ -0,0 +1,55 @@ +package com.mysema.query.apt; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.junit.Test; + +public class EntityExtensionsTest extends AbstractProcessorTest{ + + private static final String packagePath = "src/test/java/com/mysema/query/apt/"; + + @Test + public void Handles_Entity_Extensions_Correctly() throws IOException, InterruptedException{ + File source = new File(packagePath, "EntityWithExtensions.java"); + File source2 = new File(packagePath, "EntityExtensions.java"); + List sources = Arrays.asList(source.getPath(), source2.getPath()); + File qType = new File("target/overwrite2/com/mysema/query/apt/QEntityWithExtensions.java"); + + // QEntityWithExtensions is generated + process(QuerydslAnnotationProcessor.class, sources, "overwrite2"); + assertTrue(qType.exists()); + long modified = qType.lastModified(); + Thread.sleep(1000); + System.out.println(FileUtils.readFileToString(qType).contains("extension()")); + + // EntityWithExtensions has not changed, QEntityWithExtensions is not overwritten + compile(QuerydslAnnotationProcessor.class, sources, "overwrite2"); + assertEquals(modified, qType.lastModified()); + + // EntityWithExtensions is updated, QEntityWithExtensions is overwritten + FileUtils.touch(source); + compile(QuerydslAnnotationProcessor.class, sources, "overwrite2"); + assertTrue("" + modified + " >= " + qType.lastModified(), modified < qType.lastModified()); + assertTrue(FileUtils.readFileToString(qType).contains("extension()")); + + // QEntityWithExtensions is deleted and regenerated + assertTrue(qType.delete()); + compile(QuerydslAnnotationProcessor.class, sources, "overwrite2"); + assertTrue(qType.exists()); + assertTrue(FileUtils.readFileToString(qType).contains("extension()")); + } + + @Override + protected Collection getAPTOptions() { + return Arrays.asList("-AdefaultOverwrite=true"); + } + +} diff --git a/querydsl-apt/src/test/java/com/mysema/query/apt/EntityWithExtensions.java b/querydsl-apt/src/test/java/com/mysema/query/apt/EntityWithExtensions.java new file mode 100644 index 000000000..1564e09d5 --- /dev/null +++ b/querydsl-apt/src/test/java/com/mysema/query/apt/EntityWithExtensions.java @@ -0,0 +1,14 @@ +package com.mysema.query.apt; + +import java.sql.Date; + +import com.mysema.query.annotations.QueryEntity; + +@QueryEntity +public class EntityWithExtensions { + + String id; + + Date date; + +}