]> gerrit.simantics Code Review - simantics/platform.git/blob - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/TestCommandSession.java
Merge commit 'a2a4242'
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / TestCommandSession.java
1 package org.simantics.scl.compiler.tests;
2
3 import org.junit.Before;
4 import org.junit.Test;
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;
11
12 public class TestCommandSession {
13
14     ModuleRepository moduleRepository;
15
16     @Before
17     public void initialize() throws Exception {
18         moduleRepository = InitialRepository.getInitialRepository();
19     }
20     
21     private static class SCLErrorMessageException extends RuntimeException {
22         private static final long serialVersionUID = 418954639267697065L;
23         public SCLErrorMessageException(String message) {
24             super(message);
25         }
26     }
27     
28     private static final SCLReportingHandler TEST_HANDLER = new AbstractSCLReportingHandler() {
29         @Override
30         public void print(String text) {
31             System.out.println(text);
32         }
33         
34         public void printError(String error) {
35             System.err.println(error);
36             throw new SCLErrorMessageException(error);
37         }
38     };
39
40     @Test
41     public void testCommandSession() {
42         CommandSession session = new CommandSession(moduleRepository, TEST_HANDLER);
43         
44         session.execute("a = 1");
45         session.execute("b = 2");
46         session.execute("a + b");
47         
48         session.execute("x = 1\ny = 2");
49         session.execute("x + y");
50     }
51     
52     @Test
53     public void testCommandSession2() {
54         CommandSession session = new CommandSession(moduleRepository, TEST_HANDLER);
55         
56         session.execute("f name coords = print \"\\(name :: String) \\(coords :: (Double, Double))\"");
57         session.execute("g name (x,y) = f name (x,y)");
58     }
59     
60     @Test
61     public void testTyping1() {
62         CommandSession session = new CommandSession(moduleRepository, TEST_HANDLER);
63         
64         session.execute("apply f = f ()");
65         session.execute("printHello () = print \"Hello\"");
66         session.execute("apply printHello");
67     }
68     
69     @Test
70     public void testTyping2() {
71         CommandSession session = new CommandSession(moduleRepository, TEST_HANDLER);
72         
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) [(),(),()]");
76     }
77
78 }