1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator;
17
18 import java.io.ByteArrayInputStream;
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import static org.junit.Assert.fail;
23 import org.junit.Test;
24 import org.junit.runner.RunWith;
25 import org.junit.runners.Parameterized;
26 import org.junit.runners.Parameterized.Parameters;
27 import org.mybatis.generator.api.GeneratedJavaFile;
28 import org.mybatis.generator.api.MyBatisGenerator;
29 import org.mybatis.generator.config.Configuration;
30 import org.mybatis.generator.config.xml.ConfigurationParser;
31 import org.mybatis.generator.internal.DefaultShellCallback;
32
33 import com.github.javaparser.JavaParser;
34 import com.github.javaparser.ParseException;
35
36 @RunWith(Parameterized.class)
37 public class JavaCodeGenerationTest {
38
39 private GeneratedJavaFile generatedJavaFile;
40
41 public JavaCodeGenerationTest(GeneratedJavaFile generatedJavaFile) {
42 this.generatedJavaFile = generatedJavaFile;
43 }
44
45 @Test
46 public void testJavaParse() {
47 ByteArrayInputStream is = new ByteArrayInputStream(
48 generatedJavaFile.getCompilationUnit().getFormattedContent().getBytes());
49 try {
50 JavaParser.parse(is);
51 } catch (ParseException e) {
52 fail("Generated Java File " + generatedJavaFile.getFileName() + " will not compile");
53 }
54 }
55
56 @Parameters
57 public static List<GeneratedJavaFile> generateJavaFiles() throws Exception {
58 List<GeneratedJavaFile> generatedFiles = new ArrayList<GeneratedJavaFile>();
59 generatedFiles.addAll(generateJavaFilesMybatis());
60 generatedFiles.addAll(generateJavaFilesIbatis());
61 return generatedFiles;
62 }
63
64 private static List<GeneratedJavaFile> generateJavaFilesMybatis() throws Exception {
65 createDatabase();
66 return generateJavaFiles("/scripts/generatorConfig.xml");
67 }
68
69 private static List<GeneratedJavaFile> generateJavaFilesIbatis() throws Exception {
70 createDatabase();
71 return generateJavaFiles("/scripts/ibatorConfig.xml");
72 }
73
74 private static List<GeneratedJavaFile> generateJavaFiles(String configFile) throws Exception {
75 List<String> warnings = new ArrayList<String>();
76 ConfigurationParser cp = new ConfigurationParser(warnings);
77 Configuration config = cp.parseConfiguration(JavaCodeGenerationTest.class.getResourceAsStream(configFile));
78
79 DefaultShellCallback shellCallback = new DefaultShellCallback(true);
80
81 MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, shellCallback, warnings);
82 myBatisGenerator.generate(null, null, null, false);
83 return myBatisGenerator.getGeneratedJavaFiles();
84 }
85
86 public static void createDatabase() throws Exception {
87 SqlScriptRunner scriptRunner = new SqlScriptRunner(JavaCodeGenerationTest.class.getResourceAsStream("/scripts/CreateDB.sql"), "org.hsqldb.jdbcDriver", "jdbc:hsqldb:mem:aname", "sa", "");
88 scriptRunner.executeScript();
89 }
90 }