1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package net.grinder.scriptengine.clojure;
23
24 import static java.util.Collections.singleton;
25 import static net.grinder.testutility.AssertUtilities.assertContains;
26 import static net.grinder.testutility.FileUtilities.createFile;
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertNull;
29 import static org.junit.Assert.fail;
30
31 import java.io.File;
32 import java.util.Collections;
33 import java.util.List;
34
35 import net.grinder.engine.common.EngineException;
36 import net.grinder.engine.common.ScriptLocation;
37 import net.grinder.scriptengine.Instrumenter;
38 import net.grinder.scriptengine.ScriptEngineService;
39 import net.grinder.scriptengine.ScriptEngineService.ScriptEngine;
40 import net.grinder.testutility.AbstractJUnit4FileTestCase;
41 import net.grinder.util.BlockingClassLoader;
42 import net.grinder.util.Directory;
43
44 import org.junit.Test;
45
46
47
48
49
50
51
52 public class TestClojureScriptEngineService extends AbstractJUnit4FileTestCase {
53
54 @Test public void testCreateInstrumenters() throws Exception {
55 final List<? extends Instrumenter> instrumenters =
56 new ClojureScriptEngineService().createInstrumenters();
57
58 assertEquals(0, instrumenters.size());
59 }
60
61 @Test public void testCreateScriptEngineWrongType() throws Exception {
62
63 final ScriptLocation someScript =
64 new ScriptLocation(new File("some.thing"));
65
66 final ScriptEngine result =
67 new ClojureScriptEngineService().createScriptEngine(someScript);
68
69 assertNull(result);
70 }
71
72 @Test public void testCreateScriptEngine() throws Exception {
73
74 final ScriptLocation script =
75 new ScriptLocation(new Directory(getDirectory()), new File("my.clj"));
76
77 createFile(script.getFile(),
78 "(fn [] (fn [] ()))");
79
80 final ScriptEngine result =
81 new ClojureScriptEngineService().createScriptEngine(script);
82
83 assertContains(result.getDescription(), "Clojure");
84 }
85
86 @Test public void testCreateScriptEngineNoClojure() throws Exception {
87
88 final ScriptLocation script =
89 new ScriptLocation(new Directory(getDirectory()), new File("my.clj"));
90
91 final ClassLoader blockingLoader =
92 new BlockingClassLoader(singleton("clojure.*"),
93 singleton("net.grinder.scriptengine.clojure.*"),
94 Collections.<String>emptySet(),
95 false);
96
97 final ScriptEngineService service =
98 (ScriptEngineService) blockingLoader.loadClass(
99 ClojureScriptEngineService.class.getName()).newInstance();
100
101 try {
102 service.createScriptEngine(script);
103 fail("Expected EngineException");
104 }
105 catch (EngineException e) {
106 assertContains(e.getMessage(), "classpath");
107 }
108 }
109 }