package kr.ac.snu.selab.soot.core; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.io.ByteArrayInputStream; import java.io.File; import org.junit.Before; import org.junit.Test; public class ProjectManagerTest { private ProjectManager manager; private static final String SEPARATOR = File.pathSeparator; @Test public void projectInformationTest() throws ProjectFileParseException { AbstractProject project = manager.getProject("ProjectA"); assertNotNull("Project is empty", project); assertEquals("ProjectA", project.getProjectName()); assertEquals("SRC", project.getSourceDirectory()); assertEquals("CP1" + SEPARATOR + "CP2", project.getClassPath()); assertEquals("JIMPLE", project.getJimpleDirectory()); } @Test public void argumentsTest() throws ProjectFileParseException { AbstractProject project = manager.getProject("ProjectB"); assertNotNull("Project is empty", project); assertEquals("ProjectB", project.getProjectName()); assertEquals("ROOT/ProjectB/src", project.getSourceDirectory()); assertEquals("CP1" + SEPARATOR + "CP2" + SEPARATOR + "ROOT/ProjectB/src", project.getClassPath()); assertEquals("ROOT/ProjectB/output/jimple", project.getJimpleDirectory()); } @Test public void noProjectTest() throws ProjectFileParseException { AbstractProject project = manager.getProject("NoProject"); assertNull("Project should be empty", project); } @Before public void init() throws Exception { StringBuffer buffer = new StringBuffer(); buffer.append("<?xml version=\"1.0\"?>"); buffer.append("<projects>"); buffer.append("<project name=\"ProjectA\">"); buffer.append("<project_root path=\"PROJECT_ROOT\" />"); buffer.append("<source path=\"SRC\" />"); buffer.append("<output path=\"OUTPUT\" />"); buffer.append("<jimple path=\"JIMPLE\" />"); buffer.append("<classpaths>"); buffer.append("<path>CP1</path>"); buffer.append("<path>CP2</path>"); buffer.append("</classpaths>"); buffer.append("</project>"); buffer.append("<project name=\"ProjectB\">"); buffer.append("<project_root path=\"ROOT/${PROJECT_NAME}\" />"); buffer.append("<source path=\"${PROJECT_ROOT}/src\" />"); buffer.append("<output path=\"${PROJECT_ROOT}/output\" />"); buffer.append("<jimple path=\"${OUTPUT_PATH}/jimple\" />"); buffer.append("<classpaths>"); buffer.append("<path>CP1</path>"); buffer.append("<path>CP2</path>"); buffer.append("<path>${SRC_PATH}</path>"); buffer.append("</classpaths>"); buffer.append("</project>"); buffer.append("</projects>"); manager = ProjectManager.getInstance(); ByteArrayInputStream bais = new ByteArrayInputStream(buffer.toString() .getBytes()); try { manager.loadProjects(bais); } finally { bais.close(); } } }