package com.taobao.yugong.common;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import junit.framework.Assert;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.junit.Test;
import com.taobao.yugong.common.model.record.Record;
import com.taobao.yugong.common.utils.compile.JdkCompiler;
import com.taobao.yugong.translator.DataTranslator;
/**
* @author agapple 2014年2月25日 下午11:38:06
* @since 1.0.0
*/
public class JavaSourceCompilerTest {
@Test
public void testSimple() {
String javasource = null;
try {
List<String> lines = IOUtils.readLines(Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("compiler.txt"));
javasource = StringUtils.join(lines, "\n");
} catch (IOException e) {
Assert.fail(ExceptionUtils.getFullStackTrace(e));
}
JdkCompiler compiler = new JdkCompiler();
Class<?> clazz = compiler.compile(javasource);
Assert.assertEquals("com.taobao.yugong.translator.TestDataTranslator", clazz.getName());
try {
DataTranslator translator = (DataTranslator) clazz.newInstance();
List<Record> result = translator.translator(new ArrayList());
Assert.assertTrue(result.isEmpty());
} catch (InstantiationException e) {
Assert.fail(ExceptionUtils.getFullStackTrace(e));
} catch (IllegalAccessException e) {
Assert.fail(ExceptionUtils.getFullStackTrace(e));
}
}
}