package cn.org.rapid_framework.generator; import java.io.File; import java.net.URL; import java.util.HashMap; import java.util.Map; import org.jmock.Mockery; import org.jmock.integration.junit4.JUnit4Mockery; import org.jmock.lib.legacy.ClassImposteriser; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import cn.org.rapid_framework.generator.util.FileHelper; public class GeneratorTest extends Assert{ private Mockery context = new JUnit4Mockery(){ { setImposteriser(ClassImposteriser.INSTANCE); } }; protected Generator generator = new Generator(); //dependence class String excludes = ""; String includes = ""; String outputEncoding = ""; String removeExtensions = ""; String sourceEncoding = ""; File templateRootDir = null; File[] templateRootDirs = new File[]{}; String tempOutDir = System.getProperty("java.io.tmpdir")+"/for_test_question_nation"; Map templateModel = new HashMap(); Map filePathModel = new HashMap(); @Before public void setUp() throws Exception { filePathModel.put("blogname", "BADQIU"); generator.setExcludes(excludes); generator.setIncludes(includes); // generator.setOutputEncoding(outputEncoding); // generator.setRemoveExtensions(removeExtensions); // generator.setSourceEncoding(sourceEncoding); generator.setTemplateRootDir(templateRootDir); generator.setTemplateRootDirs(templateRootDirs); // �뽫 context.checking(new Expectations(){ }) ��ط���Ǩ��������ĸ������Է�����. // ����ע�͵��ķ������Ը����Ҫ�ֹ�����ʹ�ã�����Ҫ����ɾ�� /* */ generator.setOutRootDir(tempOutDir); } @After public void tearDown() throws Throwable{ context.assertIsSatisfied(); FileHelper.deleteDirectory(new File(tempOutDir)); } @Test(expected=IllegalStateException.class) public void test_deleteOutRootDir() throws Throwable{ generator.setOutRootDir(" "); generator.deleteOutRootDir(); } @Test public void test_setTemplateRootDir() throws Throwable{ File templateRootDir = null; generator.setTemplateRootDir(templateRootDir); } @Test public void test_addTemplateRootDir() throws Throwable{ File f = new File("."); generator.addTemplateRootDir(f); } @Test public void test_setCopyBinaryFile() throws Throwable{ boolean isCopyBinaryFile = true; generator.setCopyBinaryFile(isCopyBinaryFile); } @Test public void test_generateBy_for_test_question_nation() throws Throwable{ System.getProperties().list(System.out); generator.setTemplateRootDir(FileHelper.getFileByClassLoader("for_test_question_nation")); Generator result = generator.generateBy(templateModel ,filePathModel ); assertTrue(new File(tempOutDir,"Green").exists()); assertTrue(new File(tempOutDir,"badqiu.java").exists()); } @Test public void test_generateBy_removeExtensions() throws Throwable{ System.getProperties().list(System.out); generator.setRemoveExtensions("bad,diy"); generator.setTemplateRootDir(FileHelper.getFileByClassLoader("for_test_question_nation")); filePathModel.put("blogname", "BADQIU"); generator.generateBy(templateModel ,filePathModel ); assertTrue(new File(tempOutDir,"Green").exists()); assertTrue(new File(tempOutDir,"BADQIU").exists()); } @Test public void test_zip_file() throws Throwable{ generator.setTemplateRootDir(FileHelper.getFileByClassLoader("for_test_zip/for_test_zip.zip")); generator.generateBy(templateModel ,filePathModel ); assertTrue(new File(tempOutDir,"folder/Green").exists()); assertTrue(new File(tempOutDir,"folder/BADQIU.bad").exists()); } @Test public void test_zip_file_with_sub_folder() throws Throwable{ generator.setTemplateRootDir(FileHelper.getFileByClassLoader("for_test_zip/for_test_zip.zip")+"!/folder"); generator.generateBy(templateModel ,filePathModel ); assertTrue(new File(tempOutDir,"Green").exists()); assertTrue(new File(tempOutDir,"BADQIU.bad").exists()); } @Test public void test_jar_file() throws Throwable{ File templateRoot = FileHelper.getFileByClassLoader("com/mysql/jdbc/log"); System.out.println(templateRoot); System.out.println(new URL(templateRoot.getPath()).getPath()); generator.setTemplateRootDir(templateRoot); generator.generateBy(templateModel ,filePathModel ); assertTrue(new File(tempOutDir,"CommonsLogger.class").exists()); assertTrue(new File(tempOutDir,"NullLogger.class").exists()); generator.setTemplateRootDir("classpath:com/mysql/jdbc/log"); generator.generateBy(templateModel ,filePathModel ); assertTrue(new File(tempOutDir,"CommonsLogger.class").exists()); assertTrue(new File(tempOutDir,"NullLogger.class").exists()); } @Test public void test_deleteBy() throws Throwable{ Map templateModel = new HashMap(); Map filePathModel = new HashMap(); generator.setTemplateRootDir("/not_exist_828282"); Generator result = generator.deleteBy(templateModel ,filePathModel ); assertNotNull(result); } }