package com.twasyl.slideshowfx.snippet.executor.groovy;
import com.twasyl.slideshowfx.snippet.executor.CodeSnippet;
import com.twasyl.slideshowfx.utils.ResourceHelper;
import org.junit.Test;
import java.io.IOException;
import static com.twasyl.slideshowfx.snippet.executor.groovy.GroovySnippetExecutor.*;
import static org.junit.Assert.*;
/**
* Tests the class {@link GroovySnippetExecutor}.
* @author Thierry Wasylczenko
* @version 1.0
* @since SlideshowFX 1.0
*/
public class GroovySnippetExecutorTest {
private final GroovySnippetExecutor snippetExecutor = new GroovySnippetExecutor();
@Test
public void noClassName() {
final CodeSnippet snippet = new CodeSnippet();
assertEquals("Snippet", snippetExecutor.determineClassName(snippet));
}
@Test
public void emptyClassName() {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(CLASS_NAME_PROPERTY, "");
assertEquals("Snippet", snippetExecutor.determineClassName(snippet));
}
@Test
public void givenClassName() {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(CLASS_NAME_PROPERTY, "GroovyTest");
assertEquals("GroovyTest", snippetExecutor.determineClassName(snippet));
}
@Test
public void noScript() {
final CodeSnippet codeSnippet = new CodeSnippet();
assertFalse(snippetExecutor.makeScript(codeSnippet));
}
@Test
public void makeScript() {
final CodeSnippet codeSnippet = new CodeSnippet();
codeSnippet.getProperties().put(MAKE_SCRIPT, "true");
assertTrue(snippetExecutor.makeScript(codeSnippet));
}
@Test
public void explicitlyNoScript() {
final CodeSnippet codeSnippet = new CodeSnippet();
codeSnippet.getProperties().put(MAKE_SCRIPT, "false");
assertFalse(snippetExecutor.makeScript(codeSnippet));
}
@Test
public void hasNoImports() {
final CodeSnippet snippet = new CodeSnippet();
assertFalse(snippetExecutor.hasImports(snippet));
}
@Test
public void hasEmptyImports() {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(IMPORTS_PROPERTY, "");
assertFalse(snippetExecutor.hasImports(snippet));
}
@Test
public void hasImports() {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(IMPORTS_PROPERTY, "import p._");
assertTrue(snippetExecutor.hasImports(snippet));
}
@Test
public void mustNotBeWrappedInMethodRunner() {
final CodeSnippet snippet = new CodeSnippet();
assertFalse(snippetExecutor.mustBeWrappedInMethodRunner(snippet));
}
@Test
public void mustExplicitlyNotBeWrappedInMethodRunner() {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(WRAP_IN_METHOD_RUNNER, "false");
assertFalse(snippetExecutor.mustBeWrappedInMethodRunner(snippet));
}
@Test
public void mustBeWrappedInMethodRunner() {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(WRAP_IN_METHOD_RUNNER, "true");
assertTrue(snippetExecutor.mustBeWrappedInMethodRunner(snippet));
}
@Test
public void formatImportWithoutImportKeyword() {
assertEquals("import mypackage", snippetExecutor.formatImportLine("mypackage"));
}
@Test
public void formatImportWithImportKeyword() {
assertEquals("import mypackage", snippetExecutor.formatImportLine("import mypackage"));
}
@Test
public void formatImportWithImportKeywordAndWithoutColumn() {
assertEquals("import mypackage", snippetExecutor.formatImportLine("import mypackage"));
}
@Test
public void importsWithAndWithoutKeyword() throws IOException {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(IMPORTS_PROPERTY, "import mypackage\nmysecondpackage");
assertEquals("import mypackage\nimport mysecondpackage", snippetExecutor.getImports(snippet));
}
@Test
public void buildSourceCodeWithoutImportsAndWithoutWrapInMethodRunnerAndWithoutClassName() throws IOException {
final CodeSnippet snippet = new CodeSnippet();
snippet.setCode("def static main(String ... args) {\n\tprintln(\"Hello\")\n}");
final String expected = ResourceHelper.readResource("/com/twasyl/slideshowfx/snippet/executor/groovy/buildSourceCodeWithoutImportsAndWithoutWrapInMethodRunnerAndWithoutClassName_expected.txt");
assertEquals(expected, snippetExecutor.buildSourceCode(snippet));
}
@Test
public void buildSourceCodeWithoutImportsAndWithoutWrapInMethodRunner() throws IOException {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(CLASS_NAME_PROPERTY, "TestGroovy");
snippet.setCode("def static main(String ... args) {\n\tprintln(\"Hello\")\n}");
final String expected = ResourceHelper.readResource("/com/twasyl/slideshowfx/snippet/executor/groovy/buildSourceCodeWithoutImportsAndWithoutWrapInMethodRunner_expected.txt");
assertEquals(expected, snippetExecutor.buildSourceCode(snippet));
}
@Test
public void buildSourceCodeWithoutWrapInMethodRunner() throws IOException {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(CLASS_NAME_PROPERTY, "TestGroovy");
snippet.getProperties().put(IMPORTS_PROPERTY, "import mypackage\nmysecondpackage");
snippet.setCode("def static main(String ... args) {\n\tprintln(\"Hello\")\n}");
final String expected = ResourceHelper.readResource("/com/twasyl/slideshowfx/snippet/executor/groovy/buildSourceCodeWithoutWrapInMethodRunner_expected.txt");
assertEquals(expected, snippetExecutor.buildSourceCode(snippet));
}
@Test
public void buildSourceCodeWithoutWrapInMethodRunnerButMakeScript() throws IOException {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(CLASS_NAME_PROPERTY, "TestGroovy");
snippet.getProperties().put(IMPORTS_PROPERTY, "import mypackage\nmysecondpackage");
snippet.getProperties().put(MAKE_SCRIPT, "true");
snippet.setCode("def run() {\n\tprintln(\"Hello\")\n}");
final String expected = ResourceHelper.readResource("/com/twasyl/slideshowfx/snippet/executor/groovy/buildSourceCodeWithoutWrapInMethodRunnerButMakeScript_expected.txt");
assertEquals(expected, snippetExecutor.buildSourceCode(snippet));
}
@Test
public void buildSourceCode() throws IOException {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(CLASS_NAME_PROPERTY, "TestGroovy");
snippet.getProperties().put(IMPORTS_PROPERTY, "import mypackage\nmysecondpackage");
snippet.getProperties().put(WRAP_IN_METHOD_RUNNER, "true");
snippet.setCode("println(\"Hello\")");
final String expected = ResourceHelper.readResource("/com/twasyl/slideshowfx/snippet/executor/groovy/buildSourceCode_expected.txt");
assertEquals(expected, snippetExecutor.buildSourceCode(snippet));
}
@Test
public void buildSourceCodeAsScript() throws IOException {
final CodeSnippet snippet = new CodeSnippet();
snippet.getProperties().put(CLASS_NAME_PROPERTY, "TestGroovy");
snippet.getProperties().put(IMPORTS_PROPERTY, "import mypackage\nmysecondpackage");
snippet.getProperties().put(WRAP_IN_METHOD_RUNNER, "true");
snippet.getProperties().put(MAKE_SCRIPT, "true");
snippet.setCode("println(\"Hello\")");
final String expected = ResourceHelper.readResource("/com/twasyl/slideshowfx/snippet/executor/groovy/buildSourceCodeAsScript_expected.txt");
assertEquals(expected, snippetExecutor.buildSourceCode(snippet));
}
}