This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 8dd1c31e1fe6a7768bde636bb016c47de8949652
Author: Nikita Timofeev <[email protected]>
AuthorDate: Fri Sep 18 15:30:45 2020 +0300

    Cgen tests validating actual generation results
---
 ...nTest.java => BaseTemplatesGenerationTest.java} | 122 ++++++++++-----------
 .../test/resources/templateTest/DataMapTest.java   |  18 ---
 .../test/resources/templateTest/EntityTest.java    |  10 --
 .../src/test/resources/templateTest/ObjEntity.java |  10 ++
 .../test/resources/templateTest/SelectQuery.java   |  18 +++
 .../auto/{_EntityTest.java => _ObjEntity.java}     |   4 +-
 .../auto/{_DataMapTest.java => _SelectQuery.java}  |   2 +-
 7 files changed, 86 insertions(+), 98 deletions(-)

diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenTest.java 
b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java
similarity index 59%
rename from cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenTest.java
rename to 
cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java
index eb4bf65..14e9b20 100644
--- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenTest.java
+++ 
b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java
@@ -2,42 +2,53 @@ package org.apache.cayenne.gen;
 
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.map.*;
-import org.junit.After;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.ObjAttribute;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.map.QueryDescriptor;
+import org.apache.cayenne.map.SQLTemplateDescriptor;
+import org.apache.cayenne.map.SelectQueryDescriptor;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-
-import java.io.*;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collection;
 
 import static org.junit.Assert.assertEquals;
 
-public class CgenTest {
+public class BaseTemplatesGenerationTest {
 
-    protected ClassGenerationAction action;
-    protected CgenConfiguration cgenConfiguration;
+    @Rule
+    public TemporaryFolder folder= new TemporaryFolder();
 
+    protected CgenConfiguration cgenConfiguration;
+    protected ClassGenerationAction action;
     protected DataMap dataMap;
     protected ObjEntity objEntity;
 
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         cgenConfiguration = new CgenConfiguration(false);
         action = new ClassGenerationAction(cgenConfiguration);
-
         dataMap = new DataMap();
+        dataMap.setDefaultPackage("test");
         objEntity = new ObjEntity();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        dataMap = null;
-        objEntity = null;
-    }
-
     @Test
     public void testSelectQuery() throws Exception {
+        dataMap.setName("SelectQuery");
 
         String param = "param";
         String qualifierString = "name = $" + param;
@@ -56,18 +67,17 @@ public class CgenTest {
         selectQueryDescriptor.setName("select");
         selectQueryDescriptor.setRoot(objEntity);
 
-        dataMap.setName("DataMapTest");
-        dataMap.setDefaultPackage("test");
-
         Collection<QueryDescriptor> descriptors = new ArrayList<>();
         descriptors.add(selectQueryDescriptor);
 
         DataMapArtifact dataMapArtifact = new DataMapArtifact(dataMap, 
descriptors);
 
-        execute(dataMapArtifact);    }
+        execute(dataMapArtifact);
+    }
 
     @Test
     public void testSQLTemplate() throws Exception {
+        dataMap.setName("SQLTemplate");
 
         DbEntity dbEntity = new DbEntity();
         objEntity.setDbEntity(dbEntity);
@@ -79,9 +89,6 @@ public class CgenTest {
         sqlTemplateDescriptor.setName("select");
         sqlTemplateDescriptor.setRoot(objEntity);
 
-        dataMap.setName("SQLTemplate");
-        dataMap.setDefaultPackage("test");
-
         Collection<QueryDescriptor> descriptors = new ArrayList<>();
         descriptors.add(sqlTemplateDescriptor);
 
@@ -92,13 +99,12 @@ public class CgenTest {
 
     @Test
     public void testGenClass() throws Exception {
-
-        dataMap.setName("EntityTest");
+        dataMap.setName("ObjEntity");
 
         DbEntity dbEntity = new DbEntity();
         dbEntity.setName("EntityTest");
         objEntity.setDbEntity(dbEntity);
-        objEntity.setClassName("test.EntityTest");
+        objEntity.setClassName("test.ObjEntity");
         objEntity.setDataMap(dataMap);
 
         EntityArtifact entityArtifact = new EntityArtifact(objEntity);
@@ -109,62 +115,44 @@ public class CgenTest {
     public void execute(Artifact artifact) throws Exception{
         cgenConfiguration.addArtifact(artifact);
 
-        cgenConfiguration.setRelPath("src/test/resources");
+        cgenConfiguration.setRootPath(folder.getRoot().toPath());
+        cgenConfiguration.setRelPath(Paths.get("."));
         cgenConfiguration.loadEntity(objEntity);
         cgenConfiguration.setDataMap(dataMap);
 
         action.setUtilsFactory(new DefaultToolsUtilsFactory());
         action.execute();
 
-        fileComparison(dataMap.getName());
+        String targetName = dataMap.getName();
 
-        fileComparison("auto/_" + dataMap.getName());
-
-        rmdir(new File(cgenConfiguration.getRelPath() + "/test"));
+        fileComparison(targetName);
+        fileComparison("auto/_" + targetName);
     }
 
-    public void fileComparison(String fileName) {
-
-        try {
-            FileReader fileReader1 = new FileReader(new 
File("src/test/resources/templateTest/" + fileName + ".java"));
-            BufferedReader reader1 = new BufferedReader(fileReader1);
-            String lineFile1;
-            String string1 = "";
-
-            FileReader fileReader2 = new FileReader(new 
File("src/test/resources/test/" + fileName + ".java"));
-            BufferedReader reader2 = new BufferedReader(fileReader2);
-            String lineFile2;
-            String string2 = "";
+    private void fileComparison(String fileName) throws IOException {
+        String expected = readResource(fileName);
 
-            while ((lineFile1 = reader1.readLine()) != null
-                    && (lineFile2 = reader2.readLine()) != null) {
-                string1 += lineFile1;
-                string2 += lineFile2;
-            }
-
-            assertEquals(string1, string2);
+        StringBuilder generated = new StringBuilder();
+        Files.readAllLines(new File(folder.getRoot() + "/test/" + fileName + 
".java").toPath())
+                .forEach(generated::append);
 
-            reader1.close();
-            reader2.close();
-            fileReader1.close();
-            fileReader2.close();
-
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+        assertEquals(expected, generated.toString());
     }
 
-    public void rmdir(File file) {
-        if (!file.exists())
-            return;
-
-        if (file.isDirectory()) {
-            for (File f : file.listFiles()) {
-                rmdir(f);
+    private String readResource(String name) throws IOException {
+        String resourceName = "templateTest/" + name + ".java";
+        InputStream stream = 
getClass().getClassLoader().getResourceAsStream(resourceName);
+        if(stream == null) {
+            throw new FileNotFoundException("Resource not found: " + 
resourceName);
+        }
+        StringBuilder expected = new StringBuilder();
+        try(BufferedReader resource = new BufferedReader(new 
InputStreamReader(stream))) {
+            String line;
+            while ((line = resource.readLine()) != null) {
+                expected.append(line);
             }
         }
-        file.delete();
+
+        return expected.toString();
     }
 }
diff --git a/cayenne-cgen/src/test/resources/templateTest/DataMapTest.java 
b/cayenne-cgen/src/test/resources/templateTest/DataMapTest.java
deleted file mode 100644
index b3bb67d..0000000
--- a/cayenne-cgen/src/test/resources/templateTest/DataMapTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test;
-
-import test.auto._DataMapTest;
-
-public class DataMapTest extends _DataMapTest {
-
-    private static DataMapTest instance;
-
-    private DataMapTest() {}
-
-    public static DataMapTest getInstance() {
-        if(instance == null) {
-            instance = new DataMapTest();
-        }
-
-        return instance;
-    }
-}
diff --git a/cayenne-cgen/src/test/resources/templateTest/EntityTest.java 
b/cayenne-cgen/src/test/resources/templateTest/EntityTest.java
deleted file mode 100644
index 6cbda4e..0000000
--- a/cayenne-cgen/src/test/resources/templateTest/EntityTest.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test;
-
-import test.auto._EntityTest;
-
-public class EntityTest extends _EntityTest {
-
-    private static final long serialVersionUID = 1L;
-
-}
-
diff --git a/cayenne-cgen/src/test/resources/templateTest/ObjEntity.java 
b/cayenne-cgen/src/test/resources/templateTest/ObjEntity.java
new file mode 100644
index 0000000..1a036c0
--- /dev/null
+++ b/cayenne-cgen/src/test/resources/templateTest/ObjEntity.java
@@ -0,0 +1,10 @@
+package test;
+
+import test.auto._ObjEntity;
+
+public class ObjEntity extends _ObjEntity {
+
+    private static final long serialVersionUID = 1L;
+
+}
+
diff --git a/cayenne-cgen/src/test/resources/templateTest/SelectQuery.java 
b/cayenne-cgen/src/test/resources/templateTest/SelectQuery.java
new file mode 100644
index 0000000..49144de
--- /dev/null
+++ b/cayenne-cgen/src/test/resources/templateTest/SelectQuery.java
@@ -0,0 +1,18 @@
+package test;
+
+import test.auto._SelectQuery;
+
+public class SelectQuery extends _SelectQuery {
+
+    private static SelectQuery instance;
+
+    private SelectQuery() {}
+
+    public static SelectQuery getInstance() {
+        if(instance == null) {
+            instance = new SelectQuery();
+        }
+
+        return instance;
+    }
+}
diff --git a/cayenne-cgen/src/test/resources/templateTest/auto/_EntityTest.java 
b/cayenne-cgen/src/test/resources/templateTest/auto/_ObjEntity.java
similarity index 93%
rename from cayenne-cgen/src/test/resources/templateTest/auto/_EntityTest.java
rename to cayenne-cgen/src/test/resources/templateTest/auto/_ObjEntity.java
index da83fb7..83d68ff 100644
--- a/cayenne-cgen/src/test/resources/templateTest/auto/_EntityTest.java
+++ b/cayenne-cgen/src/test/resources/templateTest/auto/_ObjEntity.java
@@ -7,12 +7,12 @@ import java.io.ObjectOutputStream;
 import org.apache.cayenne.BaseDataObject;
 
 /**
- * Class _EntityTest was generated by Cayenne.
+ * Class _ObjEntity was generated by Cayenne.
  * It is probably a good idea to avoid changing this class manually,
  * since it may be overwritten next time code is regenerated.
  * If you need to make any customizations, please use subclass.
  */
-public abstract class _EntityTest extends BaseDataObject {
+public abstract class _ObjEntity extends BaseDataObject {
 
     private static final long serialVersionUID = 1L;
 
diff --git 
a/cayenne-cgen/src/test/resources/templateTest/auto/_DataMapTest.java 
b/cayenne-cgen/src/test/resources/templateTest/auto/_SelectQuery.java
similarity index 95%
rename from cayenne-cgen/src/test/resources/templateTest/auto/_DataMapTest.java
rename to cayenne-cgen/src/test/resources/templateTest/auto/_SelectQuery.java
index f4d05c0..7b99f0e 100644
--- a/cayenne-cgen/src/test/resources/templateTest/auto/_DataMapTest.java
+++ b/cayenne-cgen/src/test/resources/templateTest/auto/_SelectQuery.java
@@ -11,7 +11,7 @@ import org.apache.cayenne.query.MappedSelect;
  * since it may be overwritten next time code is regenerated.
  * If you need to make any customizations, please use subclass.
  */
-public class _DataMapTest {
+public class _SelectQuery {
 
     public static final String SELECT_QUERYNAME = "select";
 

Reply via email to