m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.gradle6
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Main.java21
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/interpreter/InterpreterTests.java126
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/1.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/1.out3
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/10.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/10.out6
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/11.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/11.out6
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/12.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/12.out3
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/13.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/13.out1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/14.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/14.out2
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/15.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/15.out3
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/16.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/16.out2
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/17.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/17.out3
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/18.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/18.out3
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/19.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/19.out4
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/2.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/2.out3
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/3.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/3.out2
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/4.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/4.out3
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/5.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/5.out1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/6.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/6.out3
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/7.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/7.out2
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/8.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/8.out3
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/9.in1
-rw-r--r--src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/9.out2
41 files changed, 219 insertions, 8 deletions
diff --git a/build.gradle b/build.gradle
index 0a1bc57..34701c0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -36,5 +36,9 @@ dependencies {
application {
// Define the main class for the application
- mainClassName = 'pl.edu.mimuw.cloudatlas.App'
+ mainClassName = 'pl.edu.mimuw.cloudatlas.interpreter.Main'
+}
+
+run {
+ standardInput = System.in
}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Main.java b/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Main.java
index a9857ed..76ea1e6 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Main.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Main.java
@@ -25,6 +25,8 @@
package pl.edu.mimuw.cloudatlas.interpreter;
import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.PrintStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.ParseException;
@@ -53,30 +55,35 @@ public class Main {
private static ZMI root;
public static void main(String[] args) throws Exception {
+ runTest(System.in, System.out);
+ }
+
+ public static void runTest(InputStream in, PrintStream out) throws Exception {
root = createTestHierarchy();
- Scanner scanner = new Scanner(System.in);
+ Scanner scanner = new Scanner(in);
scanner.useDelimiter("\\n");
- while(scanner.hasNext())
- executeQueries(root, scanner.next());
+ while(scanner.hasNext()) {
+ executeQueries(root, scanner.next(), out);
+ }
scanner.close();
- }
+ }
private static PathName getPathName(ZMI zmi) {
String name = ((ValueString)zmi.getAttributes().get("name")).getValue();
return zmi.getFather() == null? PathName.ROOT : getPathName(zmi.getFather()).levelDown(name);
}
- private static void executeQueries(ZMI zmi, String query) throws Exception {
+ private static void executeQueries(ZMI zmi, String query, PrintStream out) throws Exception {
if(!zmi.getSons().isEmpty()) {
for(ZMI son : zmi.getSons())
- executeQueries(son, query);
+ executeQueries(son, query, out);
Interpreter interpreter = new Interpreter(zmi);
Yylex lex = new Yylex(new ByteArrayInputStream(query.getBytes()));
try {
List<QueryResult> result = interpreter.interpretProgram((new parser(lex)).pProgram());
PathName zone = getPathName(zmi);
for(QueryResult r : result) {
- System.out.println(zone + ": " + r);
+ out.println(zone + ": " + r);
zmi.getAttributes().addOrChange(r.getName(), r.getValue());
}
} catch(InterpreterException exception) {}
diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/interpreter/InterpreterTests.java b/src/test/java/pl/edu/mimuw/cloudatlas/interpreter/InterpreterTests.java
new file mode 100644
index 0000000..54312b8
--- /dev/null
+++ b/src/test/java/pl/edu/mimuw/cloudatlas/interpreter/InterpreterTests.java
@@ -0,0 +1,126 @@
+package pl.edu.mimuw.cloudatlas.interpreter;
+
+import java.io.PrintStream;
+import java.io.FileInputStream;
+import java.io.File;
+import java.io.ByteArrayOutputStream;
+import java.net.URL;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class InterpreterTests {
+ @Test
+ public void fileTest1() throws Exception {
+ runFileTest(1);
+ }
+
+ @Test
+ public void fileTest2() throws Exception {
+ runFileTest(2);
+ }
+
+ @Test
+ public void fileTest3() throws Exception {
+ runFileTest(3);
+ }
+
+ @Test
+ public void fileTest4() throws Exception {
+ runFileTest(4);
+ }
+
+ @Test
+ public void fileTest5() throws Exception {
+ runFileTest(5);
+ }
+
+ @Test
+ public void fileTest6() throws Exception {
+ runFileTest(6);
+ }
+
+ @Test
+ public void fileTest7() throws Exception {
+ runFileTest(7);
+ }
+
+ @Test
+ public void fileTest8() throws Exception {
+ runFileTest(8);
+ }
+
+ @Test
+ public void fileTest9() throws Exception {
+ runFileTest(9);
+ }
+
+ @Test
+ public void fileTest10() throws Exception {
+ runFileTest(10);
+ }
+
+ @Test
+ public void fileTest11() throws Exception {
+ runFileTest(11);
+ }
+
+ @Test
+ public void fileTest12() throws Exception {
+ runFileTest(12);
+ }
+
+ @Test
+ public void fileTest13() throws Exception {
+ runFileTest(13);
+ }
+
+ @Test
+ public void fileTest14() throws Exception {
+ runFileTest(14);
+ }
+
+ @Test
+ public void fileTest15() throws Exception {
+ runFileTest(15);
+ }
+
+ @Test
+ public void fileTest16() throws Exception {
+ runFileTest(16);
+ }
+
+ @Test
+ public void fileTest17() throws Exception {
+ runFileTest(17);
+ }
+
+ @Test
+ public void fileTest18() throws Exception {
+ runFileTest(18);
+ }
+
+ @Test
+ public void fileTest19() throws Exception {
+ runFileTest(19);
+ }
+
+ private void runFileTest(int i) throws Exception {
+ URL test = InterpreterTests.class.getResource(i + ".in");
+ URL testOut = InterpreterTests.class.getResource(i + ".out");
+
+ FileInputStream in = new FileInputStream(test.getFile());
+ ByteArrayOutputStream outByteArray = new ByteArrayOutputStream();
+ PrintStream outPrint = new PrintStream(outByteArray);
+ Main.runTest(in, outPrint);
+ String actual = outByteArray.toString();
+
+ File expectedFile = new File(testOut.getFile());
+ FileInputStream expectedIn = new FileInputStream(expectedFile);
+ byte[] buffer = new byte[(int)expectedFile.length()];
+ expectedIn.read(buffer);
+ String expected = new String(buffer, "UTF-8");
+
+ assertEquals(expected, actual);
+ }
+}
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/1.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/1.in
new file mode 100644
index 0000000..4c01bba
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/1.in
@@ -0,0 +1 @@
+SELECT 2 + 2 AS two_plus_two
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/1.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/1.out
new file mode 100644
index 0000000..b834f59
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/1.out
@@ -0,0 +1,3 @@
+/uw: two_plus_two: 4
+/pjwstk: two_plus_two: 4
+/: two_plus_two: 4
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/10.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/10.in
new file mode 100644
index 0000000..eb1b0da
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/10.in
@@ -0,0 +1 @@
+SELECT min(name) AS min_name, to_string(first(1, name)) AS max_name ORDER BY name DESC
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/10.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/10.out
new file mode 100644
index 0000000..56c050c
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/10.out
@@ -0,0 +1,6 @@
+/uw: min_name: khaki13
+/uw: max_name: [violet07]
+/pjwstk: min_name: whatever01
+/pjwstk: max_name: [whatever02]
+/: min_name: pjwstk
+/: max_name: [uw]
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/11.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/11.in
new file mode 100644
index 0000000..3081ead
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/11.in
@@ -0,0 +1 @@
+SELECT epoch() AS epoch, land(timestamp > epoch()) AS afterY2K
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/11.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/11.out
new file mode 100644
index 0000000..72ac484
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/11.out
@@ -0,0 +1,6 @@
+/uw: epoch: 2000/01/01 00:00:00.000
+/uw: afterY2K: true
+/pjwstk: epoch: 2000/01/01 00:00:00.000
+/pjwstk: afterY2K: true
+/: epoch: 2000/01/01 00:00:00.000
+/: afterY2K: true
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/12.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/12.in
new file mode 100644
index 0000000..5340bed
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/12.in
@@ -0,0 +1 @@
+SELECT min(timestamp) + (max(timestamp) - epoch()) / 2 AS t2
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/12.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/12.out
new file mode 100644
index 0000000..f662146
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/12.out
@@ -0,0 +1,3 @@
+/uw: t2: 2019/04/16 05:31:30.000
+/pjwstk: t2: 2019/04/16 08:48:30.000
+/: t2: 2019/04/16 07:12:19.684
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/13.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/13.in
new file mode 100644
index 0000000..af367ff
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/13.in
@@ -0,0 +1 @@
+SELECT lor(unfold(some_names) + "xx" REGEXP "([a-z]*)atkax([a-z]*)") AS beatka
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/13.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/13.out
new file mode 100644
index 0000000..cc70937
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/13.out
@@ -0,0 +1 @@
+/uw: beatka: true
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/14.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/14.in
new file mode 100644
index 0000000..4a662ba
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/14.in
@@ -0,0 +1 @@
+SELECT (SELECT avg(cpu_usage) WHERE false) AS smth
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/14.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/14.out
new file mode 100644
index 0000000..1f9a626
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/14.out
@@ -0,0 +1,2 @@
+/uw: smth: NULL
+/pjwstk: smth: NULL
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/15.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/15.in
new file mode 100644
index 0000000..35e3b89
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/15.in
@@ -0,0 +1 @@
+SELECT avg(cpu_usage) AS cpu_usage WHERE (SELECT sum(cardinality)) > (SELECT to_integer((1 + 2 + 3 + 4) / 5))
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/15.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/15.out
new file mode 100644
index 0000000..4d9c0d7
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/15.out
@@ -0,0 +1,3 @@
+/uw: cpu_usage: 0.5
+/pjwstk: cpu_usage: NULL
+/: cpu_usage: NULL
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/16.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/16.in
new file mode 100644
index 0000000..0657efc
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/16.in
@@ -0,0 +1 @@
+SELECT ceil(to_double(min(num_cores)) / 1.41) AS sth
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/16.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/16.out
new file mode 100644
index 0000000..2e77b3d
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/16.out
@@ -0,0 +1,2 @@
+/uw: sth: 3.0
+/pjwstk: sth: 5.0
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/17.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/17.in
new file mode 100644
index 0000000..8eb556d
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/17.in
@@ -0,0 +1 @@
+SELECT floor(5.0 / 1.9) AS fl
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/17.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/17.out
new file mode 100644
index 0000000..062a8cc
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/17.out
@@ -0,0 +1,3 @@
+/uw: fl: 2.0
+/pjwstk: fl: 2.0
+/: fl: 2.0
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/18.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/18.in
new file mode 100644
index 0000000..6c9859a
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/18.in
@@ -0,0 +1 @@
+SELECT to_time("2013/07/05 12:54:32.098") + to_duration(6811) AS tim
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/18.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/18.out
new file mode 100644
index 0000000..db9ade3
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/18.out
@@ -0,0 +1,3 @@
+/uw: tim: 2013/07/05 12:54:38.909
+/pjwstk: tim: 2013/07/05 12:54:38.909
+/: tim: 2013/07/05 12:54:38.909
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/19.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/19.in
new file mode 100644
index 0000000..6ab2d74
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/19.in
@@ -0,0 +1 @@
+SELECT avg(cpu_usage * to_double(num_cores)) AS cpu_load, sum(num_cores) AS num_cores
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/19.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/19.out
new file mode 100644
index 0000000..4ff843d
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/19.out
@@ -0,0 +1,4 @@
+/uw: cpu_load: 2.7
+/uw: num_cores: 6
+/pjwstk: cpu_load: 2.95
+/pjwstk: num_cores: 20
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/2.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/2.in
new file mode 100644
index 0000000..d707ae3
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/2.in
@@ -0,0 +1 @@
+SELECT to_integer((to_double(3) - 5.6) / 11.0 + to_double(47 * (31 - 15))) AS math WHERE true
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/2.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/2.out
new file mode 100644
index 0000000..8e12aa1
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/2.out
@@ -0,0 +1,3 @@
+/uw: math: 751
+/pjwstk: math: 751
+/: math: 751
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/3.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/3.in
new file mode 100644
index 0000000..25203ce
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/3.in
@@ -0,0 +1 @@
+SELECT count(members) AS members_count
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/3.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/3.out
new file mode 100644
index 0000000..66d6424
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/3.out
@@ -0,0 +1,2 @@
+/uw: members_count: 3
+/pjwstk: members_count: 2
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/4.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/4.in
new file mode 100644
index 0000000..4a8347f
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/4.in
@@ -0,0 +1 @@
+SELECT first(99, name) AS new_contacts ORDER BY cpu_usage DESC NULLS LAST, num_cores ASC NULLS FIRST
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/4.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/4.out
new file mode 100644
index 0000000..b8e0300
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/4.out
@@ -0,0 +1,3 @@
+/uw: new_contacts: [khaki13, violet07, khaki31]
+/pjwstk: new_contacts: [whatever01, whatever02]
+/: new_contacts: [uw, pjwstk]
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/5.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/5.in
new file mode 100644
index 0000000..168bc5e
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/5.in
@@ -0,0 +1 @@
+SELECT count(num_cores - size(some_names)) AS sth
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/5.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/5.out
new file mode 100644
index 0000000..4145a74
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/5.out
@@ -0,0 +1 @@
+/uw: sth: 2
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/6.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/6.in
new file mode 100644
index 0000000..67dd68f
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/6.in
@@ -0,0 +1 @@
+SELECT min(sum(distinct(2 * level)) + 38 * size(contacts)) AS sth WHERE num_cores < 8
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/6.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/6.out
new file mode 100644
index 0000000..419e97d
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/6.out
@@ -0,0 +1,3 @@
+/uw: sth: 80
+/pjwstk: sth: 80
+/: sth: NULL
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/7.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/7.in
new file mode 100644
index 0000000..a338281
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/7.in
@@ -0,0 +1 @@
+SELECT first(1, name) + last(1,name) AS concat_name WHERE num_cores >= (SELECT min(num_cores) ORDER BY timestamp) ORDER BY creation ASC NULLS LAST
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/7.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/7.out
new file mode 100644
index 0000000..8da8318
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/7.out
@@ -0,0 +1,2 @@
+/uw: concat_name: [violet07, khaki31]
+/pjwstk: concat_name: [whatever01, whatever02]
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/8.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/8.in
new file mode 100644
index 0000000..d484389
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/8.in
@@ -0,0 +1 @@
+SELECT sum(cardinality) AS cardinality
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/8.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/8.out
new file mode 100644
index 0000000..fb762ad
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/8.out
@@ -0,0 +1,3 @@
+/uw: cardinality: 3
+/pjwstk: cardinality: 2
+/: cardinality: 5
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/9.in b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/9.in
new file mode 100644
index 0000000..7b87d6e
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/9.in
@@ -0,0 +1 @@
+SELECT land(cpu_usage < 0.5) AS cpu_ok
diff --git a/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/9.out b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/9.out
new file mode 100644
index 0000000..81a4ad9
--- /dev/null
+++ b/src/test/resources/pl/edu/mimuw/cloudatlas/interpreter/9.out
@@ -0,0 +1,2 @@
+/uw: cpu_ok: false
+/pjwstk: cpu_ok: true