package jhydra.core.scripting;
import jhydra.core.config.IRuntimeConfig;
import jhydra.core.scripting.scriptinfo.IScriptInfo;
import jhydra.core.scripting.scriptinfo.ScriptInfoFactory;
import jhydra.core.scripting.scriptinfo.exceptions.ScriptInfoLoadException;
import org.junit.Assert;
import org.junit.Test;
import java.io.File;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* Author: jantic
* Date: 4/4/13
*/
public class ScriptInfoFactoryTests {
/***Tests normally executing, existing scripts ****************************************/
@Test
public void getAllScriptInfos_proj1_java_size7() throws Exception{
final ScriptInfoFactory scriptInfoFactory = new ScriptInfoFactory();
final List<IScriptInfo> scriptInfos = scriptInfoFactory.getAllScriptInfosOfType(getConfig(1), ScriptType.JAVA);
final Integer expected = 7;
final Integer actual = scriptInfos.size();
Assert.assertEquals(expected, actual);
}
@Test
public void getAllScriptInfos_proj1_jython_size1() throws Exception{
final ScriptInfoFactory scriptInfoFactory = new ScriptInfoFactory();
final List<IScriptInfo> scriptInfos = scriptInfoFactory.getAllScriptInfosOfType(getConfig(1), ScriptType.JYTHON);
final Integer expected = 1;
final Integer actual = scriptInfos.size();
Assert.assertEquals(expected, actual);
}
@Test
public void getAllScriptInfos_proj2_java_size1() throws Exception{
final ScriptInfoFactory scriptInfoFactory = new ScriptInfoFactory();
final List<IScriptInfo> scriptInfos = scriptInfoFactory.getAllScriptInfosOfType(getConfig(2), ScriptType.JAVA);
final Integer expected = 1;
final Integer actual = scriptInfos.size();
Assert.assertEquals(expected, actual);
}
@Test
public void getAllScriptInfos_proj2_jython_size2() throws Exception{
final ScriptInfoFactory scriptInfoFactory = new ScriptInfoFactory();
final List<IScriptInfo> scriptInfos = scriptInfoFactory.getAllScriptInfosOfType(getConfig(2), ScriptType.JYTHON);
final Integer expected = 2;
final Integer actual = scriptInfos.size();
Assert.assertEquals(expected, actual);
}
/***Tests cases of 0 existing scripts, in existing folders****************************************/
@Test
public void getAllScriptInfos_proj4_java_size0() throws Exception{
final ScriptInfoFactory scriptInfoFactory = new ScriptInfoFactory();
final List<IScriptInfo> scriptInfos = scriptInfoFactory.getAllScriptInfosOfType(getConfig(4), ScriptType.JAVA);
final Integer expected = 0;
final Integer actual = scriptInfos.size();
Assert.assertEquals(expected, actual);
}
@Test
public void getAllScriptInfos_proj4_jython_size0() throws Exception{
final ScriptInfoFactory scriptInfoFactory = new ScriptInfoFactory();
final List<IScriptInfo> scriptInfos = scriptInfoFactory.getAllScriptInfosOfType(getConfig(4), ScriptType.JYTHON);
final Integer expected = 0;
final Integer actual = scriptInfos.size();
Assert.assertEquals(expected, actual);
}
/***Tests case of non-existing folders****************************************/
@Test(expected = ScriptInfoLoadException.class)
public void getAllScriptInfos_proj3_java_scriptInfoLoadException() throws Exception{
final ScriptInfoFactory scriptInfoFactory = new ScriptInfoFactory();
scriptInfoFactory.getAllScriptInfosOfType(getConfig(3), ScriptType.JAVA);
}
/***PRIVATE METHODS*********************************************************************/
private IRuntimeConfig getConfig(Integer projNum){
final IRuntimeConfig config = mock(IRuntimeConfig.class);
final String projectsDirectory = "./test projects/project " + projNum.toString();
final List<URI> scriptDirectories = new ArrayList<>();
scriptDirectories.add(getURI(projectsDirectory + "/scripts/"));
scriptDirectories.add(getURI(projectsDirectory + "/alt scripts/"));
when(config.getScriptDirectories()).thenReturn(scriptDirectories);
when(config.getProjectDirectory()).thenReturn(getURI(projectsDirectory));
return config;
}
private URI getURI(String relativePath){
final File file = new File(relativePath);
return file.toURI();
}
}