1 package org.simantics.scl.compiler.tests;
3 import org.junit.Before;
5 import org.simantics.scl.compiler.commands.CommandSession;
6 import org.simantics.scl.compiler.module.repository.ModuleRepository;
7 import org.simantics.scl.compiler.source.repository.CompositeModuleSourceRepository;
8 import org.simantics.scl.compiler.source.repository.SourceRepositories;
9 import org.simantics.scl.runtime.reporting.AbstractSCLReportingHandler;
10 import org.simantics.scl.runtime.reporting.SCLReportingHandler;
12 public class TestCommandSession {
14 ModuleRepository moduleRepository;
17 public void initialize() throws Exception {
18 moduleRepository = InitialRepository.getInitialRepository();
21 private static class SCLErrorMessageException extends RuntimeException {
22 private static final long serialVersionUID = 418954639267697065L;
23 public SCLErrorMessageException(String message) {
28 private static final SCLReportingHandler TEST_HANDLER = new AbstractSCLReportingHandler() {
30 public void print(String text) {
31 System.out.println(text);
34 public void printError(String error) {
35 System.err.println(error);
36 throw new SCLErrorMessageException(error);
41 public void testCommandSession() {
42 CommandSession session = new CommandSession(moduleRepository, TEST_HANDLER);
44 session.execute("a = 1");
45 session.execute("b = 2");
46 session.execute("a + b");
48 session.execute("x = 1\ny = 2");
49 session.execute("x + y");
53 public void testCommandSession2() {
54 CommandSession session = new CommandSession(moduleRepository, TEST_HANDLER);
56 session.execute("f name coords = print \"\\(name :: String) \\(coords :: (Double, Double))\"");
57 session.execute("g name (x,y) = f name (x,y)");
61 public void testTyping1() {
62 CommandSession session = new CommandSession(moduleRepository, TEST_HANDLER);
64 session.execute("apply f = f ()");
65 session.execute("printHello () = print \"Hello\"");
66 session.execute("apply printHello");
70 public void testTyping2() {
71 CommandSession session = new CommandSession(moduleRepository, TEST_HANDLER);
73 session.execute("iter f (list :: [a]) = loop 0 where { len = length list ; loop i | i == len = 0 | otherwise = do f (list!i) ; loop (i+1) }");
74 session.execute("iter (\\i -> print i) [1,2,3]");
75 session.execute("iter (\\i -> print i) [(),(),()]");