summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/pracownia4/00_sum.xi23
-rw-r--r--tests/pracownia4/01_sort.xi31
-rw-r--r--tests/pracownia4/02_flatten_easy.xi31
-rw-r--r--tests/pracownia4/03_flatten_hard.xi36
-rw-r--r--tests/pracownia4/40_manyvars.xi64
-rw-r--r--tests/pracownia4/40_manyvars_rec.xi109
-rw-r--r--tests/pracownia4/pracownia3/000_manyargs_3.xi11
-rw-r--r--tests/pracownia4/pracownia3/001_or_01.xi30
-rw-r--r--tests/pracownia4/pracownia3/002_list_empty.xi8
-rw-r--r--tests/pracownia4/pracownia3/003_concat_rhs_len.xi8
-rw-r--r--tests/pracownia4/pracownia3/004_return.xi12
-rw-r--r--tests/pracownia4/pracownia3/005_multireturn_multiargs.xi12
-rw-r--r--tests/pracownia4/pracownia3/006_init_variable.xi8
-rw-r--r--tests/pracownia4/pracownia3/007_mul_literals.xi8
-rw-r--r--tests/pracownia4/pracownia3/008_fac_rec_0.xi15
-rw-r--r--tests/pracownia4/pracownia3/009_while_while_sum.xi18
-rw-r--r--tests/pracownia4/pracownia3/010_length_empty.xi8
-rw-r--r--tests/pracownia4/pracownia3/011_concat_string.xi8
-rw-r--r--tests/pracownia4/pracownia3/012_multireturn_4.xi12
-rw-r--r--tests/pracownia4/pracownia3/013_add_literals.xi8
-rw-r--r--tests/pracownia4/pracownia3/014_assign.xi9
-rw-r--r--tests/pracownia4/pracownia3/015_sub_literals.xi8
-rw-r--r--tests/pracownia4/pracownia3/016_fib_rec_3.xi18
-rw-r--r--tests/pracownia4/pracownia3/017_return_42.xi8
-rw-r--r--tests/pracownia4/pracownia3/018_empty_main.xi8
-rw-r--r--tests/pracownia4/pracownia3/019_while_sum.xi14
-rw-r--r--tests/pracownia4/pracownia3/020_return_variable.xi8
-rw-r--r--tests/pracownia4/pracownia3/021_printInt.xi16
-rw-r--r--tests/pracownia4/pracownia3/022_if_eq_true.xi13
-rw-r--r--tests/pracownia4/pracownia3/023_ifelse_pred.xi18
-rw-r--r--tests/pracownia4/pracownia3/024_fac.xi17
-rw-r--r--tests/pracownia4/pracownia3/025_and_literals.xi16
-rw-r--r--tests/pracownia4/pracownia3/026_printString.xi11
-rw-r--r--tests/pracownia4/pracownia3/027_init_2_variables.xi9
-rw-r--r--tests/pracownia4/pracownia3/028_return_second_variable.xi9
-rw-r--r--tests/pracownia4/pracownia3/029_return_first_variable.xi9
-rw-r--r--tests/pracownia4/pracownia3/030_length_string.xi8
-rw-r--r--tests/pracownia4/pracownia3/031_div_literals.xi8
-rw-r--r--tests/pracownia4/pracownia3/032_return_index0.xi8
-rw-r--r--tests/pracownia4/pracownia3/033_multiarray.xi13
-rw-r--r--tests/pracownia4/pracownia3/034_or_literals.xi15
-rw-r--r--tests/pracownia4/pracownia3/035_return_char.xi7
-rw-r--r--tests/pracownia4/pracownia3/036_multireturn_3.xi12
-rw-r--r--tests/pracownia4/pracownia3/037_concat_lhs_len.xi8
-rw-r--r--tests/pracownia4/pracownia3/038_fac_rec_5.xi15
-rw-r--r--tests/pracownia4/pracownia3/039_ifelse_eq_true_ret.xi13
-rw-r--r--tests/pracownia4/pracownia3/040_string.xi8
-rw-r--r--tests/pracownia4/pracownia3/041_assign_index0.xi9
-rw-r--r--tests/pracownia4/pracownia3/042_return_nl.xi7
-rw-r--r--tests/pracownia4/pracownia3/043_while_or.xi18
-rw-r--r--tests/pracownia4/pracownia3/044_list_init.xi8
-rw-r--r--tests/pracownia4/pracownia3/045_mod_literals.xi8
-rw-r--r--tests/pracownia4/pracownia3/046_return_index1.xi8
-rw-r--r--tests/pracownia4/pracownia3/047_and_10_.xi30
54 files changed, 854 insertions, 0 deletions
diff --git a/tests/pracownia4/00_sum.xi b/tests/pracownia4/00_sum.xi
new file mode 100644
index 0000000..1ed3aa2
--- /dev/null
+++ b/tests/pracownia4/00_sum.xi
@@ -0,0 +1,23 @@
+printInt(x:int)
+
+sumtab(xs:int[]):int {
+    sum:int = 0
+    i:int = 0
+    n:int = length(xs)
+    while (i < n) {
+        sum = sum + xs[i]
+        i = i + 1
+    }
+    return sum
+}
+
+main():int
+{
+    xs:int[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
+    printInt(sumtab(xs))
+    return 0
+}
+
+//@PRACOWNIA
+//@out 45
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia4/01_sort.xi b/tests/pracownia4/01_sort.xi
new file mode 100644
index 0000000..e875eaf
--- /dev/null
+++ b/tests/pracownia4/01_sort.xi
@@ -0,0 +1,31 @@
+printString(x:int[])
+
+sort(a: int[]) {
+  i:int = 0
+  n:int = length(a)
+  while (i < n) {
+      j:int = i
+      while (j > 0) {
+        if (a[j-1] > a[j]) {
+            swap:int = a[j]
+            a[j] = a[j-1]
+            a[j-1] = swap
+        }
+        j = j-1
+      }
+      i = i+1
+  }
+}
+
+
+main():int
+{
+    x:int[] = "Wroclaw"
+    sort(x)
+    printString(x)
+    return 1
+}
+
+//@PRACOWNIA
+//@out Waclorw
+//@out Exit code: 1
\ No newline at end of file
diff --git a/tests/pracownia4/02_flatten_easy.xi b/tests/pracownia4/02_flatten_easy.xi
new file mode 100644
index 0000000..207bb7c
--- /dev/null
+++ b/tests/pracownia4/02_flatten_easy.xi
@@ -0,0 +1,31 @@
+printString(xs:int[])
+
+flatten_easy(xss:int[][]):int[]
+{
+    xs:int[] = {}
+    n:int = length(xss)
+    i:int = 0
+    while (i < n) {
+        xs = xs + xss[i]
+        i = i + 1
+    }
+
+    return xs
+}
+
+main():int
+{
+    xss:int[][] = { 
+        "Uniwersytet",
+        " ",
+        "Wroclawski"
+    }
+
+    printString(flatten_easy(xss))
+
+    return 0
+}
+
+//@PRACOWNIA
+//@out Uniwersytet Wroclawski
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia4/03_flatten_hard.xi b/tests/pracownia4/03_flatten_hard.xi
new file mode 100644
index 0000000..877a724
--- /dev/null
+++ b/tests/pracownia4/03_flatten_hard.xi
@@ -0,0 +1,36 @@
+printString(xs:int[])
+
+flatten_hard(xss:int[][]):int[]
+{
+    xs:int[] = {}
+    n:int = length(xss)
+    i:int = 0
+    while (i < n) {
+        m:int = length(xss[i])
+        j:int = 0
+        while (j < m) {
+            xs = xs + {xss[i][j]}
+            j = j + 1
+        }
+        i = i + 1
+    }
+
+    return xs
+}
+
+main():int
+{
+    xss:int[][] = { 
+        "Uniwersytet",
+        " ",
+        "Wroclawski"
+    }
+
+    printString(flatten_hard(xss))
+
+    return 0
+}
+
+//@PRACOWNIA
+//@out Uniwersytet Wroclawski
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia4/40_manyvars.xi b/tests/pracownia4/40_manyvars.xi
new file mode 100644
index 0000000..c86bcd9
--- /dev/null
+++ b/tests/pracownia4/40_manyvars.xi
@@ -0,0 +1,64 @@
+f(values:int[]):int
+{
+    r0:int = values[0]
+    r1:int = values[1]
+    r2:int = values[2]
+    r3:int = values[3]
+    r4:int = values[4]
+    r5:int = values[5]
+    r6:int = values[6]
+    r7:int = values[7]
+    r8:int = values[8]
+    r9:int = values[9]
+    r10:int = values[10]
+    r11:int = values[11]
+    r12:int = values[12]
+    r13:int = values[13]
+    r14:int = values[14]
+    r15:int = values[15]
+    r16:int = values[16]
+    r17:int = values[17]
+    r18:int = values[18]
+    r19:int = values[19]
+    r20:int = values[20]
+    r21:int = values[21]
+    r22:int = values[22]
+    r23:int = values[23]
+    r24:int = values[24]
+    r25:int = values[25]
+    r26:int = values[26]
+    r27:int = values[27]
+    r28:int = values[28]
+    r29:int = values[29]
+    r30:int = values[30]
+    r31:int = values[31]
+    r32:int = values[32]
+    r33:int = values[33]
+    r34:int = values[34]
+    r35:int = values[35]
+    r36:int = values[36]
+    r37:int = values[37]
+    r38:int = values[38]
+    r39:int = values[39]
+    return r0 + r1 + r2 + r3 + r4 + r5 + r6 + r7 + r8 + r9 + r10 + r11 + r12 + r13 + r14 + r15 + r16 + r17 + r18 + r19 + r20 + r21 + r22 + r23 + r24 + r25 + r26 + r27 + r28 + r29 + r30 + r31 + r32 + r33 + r34 + r35 + r36 + r37 + r38 + r39
+}
+prepare_values(n:int):int[]
+{
+    result:int[] = {}
+    i:int = 0
+    while (i < n) {
+        result = result + {i*10}
+        i = i + 1
+    }
+    return result
+}
+
+main():int
+{
+    values:int[] = prepare_values(40)
+    return f(values)
+}
+
+//@PRACOWNIA
+//@out Exit code: 7800
+    
diff --git a/tests/pracownia4/40_manyvars_rec.xi b/tests/pracownia4/40_manyvars_rec.xi
new file mode 100644
index 0000000..3aacd1a
--- /dev/null
+++ b/tests/pracownia4/40_manyvars_rec.xi
@@ -0,0 +1,109 @@
+f(values:int[]):int
+{
+    r0:int = values[0]
+    r1:int = values[1]
+    r2:int = values[2]
+    r3:int = values[3]
+    r4:int = values[4]
+    r5:int = values[5]
+    r6:int = values[6]
+    r7:int = values[7]
+    r8:int = values[8]
+    r9:int = values[9]
+    r10:int = values[10]
+    r11:int = values[11]
+    r12:int = values[12]
+    r13:int = values[13]
+    r14:int = values[14]
+    r15:int = values[15]
+    r16:int = values[16]
+    r17:int = values[17]
+    r18:int = values[18]
+    r19:int = values[19]
+    r20:int = values[20]
+    r21:int = values[21]
+    r22:int = values[22]
+    r23:int = values[23]
+    r24:int = values[24]
+    r25:int = values[25]
+    r26:int = values[26]
+    r27:int = values[27]
+    r28:int = values[28]
+    r29:int = values[29]
+    r30:int = values[30]
+    r31:int = values[31]
+    r32:int = values[32]
+    r33:int = values[33]
+    r34:int = values[34]
+    r35:int = values[35]
+    r36:int = values[36]
+    r37:int = values[37]
+    r38:int = values[38]
+    r39:int = values[39]
+    return r0 + r1 + r2 + r3 + r4 + r5 + r6 + r7 + r8 + r9 + r10 + r11 + r12 + r13 + r14 + r15 + r16 + r17 + r18 + r19 + r20 + r21 + r22 + r23 + r24 + r25 + r26 + r27 + r28 + r29 + r30 + r31 + r32 + r33 + r34 + r35 + r36 + r37 + r38 + r39
+}
+g(values:int[]):int
+{
+    r0:int = values[0]
+    r1:int = values[1]
+    r2:int = values[2]
+    r3:int = values[3]
+    r4:int = values[4]
+    r5:int = values[5]
+    r6:int = values[6]
+    r7:int = values[7]
+    r8:int = values[8]
+    r9:int = values[9]
+    r10:int = values[10]
+    r11:int = values[11]
+    r12:int = values[12]
+    r13:int = values[13]
+    r14:int = values[14]
+    r15:int = values[15]
+    r16:int = values[16]
+    r17:int = values[17]
+    r18:int = values[18]
+    r19:int = values[19]
+    r20:int = values[20]
+    r21:int = values[21]
+    r22:int = values[22]
+    r23:int = values[23]
+    r24:int = values[24]
+    r25:int = values[25]
+    r26:int = values[26]
+    r27:int = values[27]
+    r28:int = values[28]
+    r29:int = values[29]
+    r30:int = values[30]
+    r31:int = values[31]
+    r32:int = values[32]
+    r33:int = values[33]
+    r34:int = values[34]
+    r35:int = values[35]
+    r36:int = values[36]
+    r37:int = values[37]
+    r38:int = values[38]
+    r39:int = values[39]
+    r_f:int = f(values)
+    return r_f + r0 + r1 + r2 + r3 + r4 + r5 + r6 + r7 + r8 + r9 + r10 + r11 + r12 + r13 + r14 + r15 + r16 + r17 + r18 + r19 + r20 + r21 + r22 + r23 + r24 + r25 + r26 + r27 + r28 + r29 + r30 + r31 + r32 + r33 + r34 + r35 + r36 + r37 + r38 + r39
+}
+prepare_values(n:int):int[]
+{
+    result:int[] = {}
+    i:int = 0
+    while (i < n) {
+        result = result + {i*10}
+        i = i + 1
+    }
+    return result
+}
+
+main():int
+{
+    values:int[] = prepare_values(40)
+    return g(values)
+}
+
+//@PRACOWNIA
+//@out Exit code: 15600
+    
diff --git a/tests/pracownia4/pracownia3/000_manyargs_3.xi b/tests/pracownia4/pracownia3/000_manyargs_3.xi
new file mode 100644
index 0000000..3e73ca9
--- /dev/null
+++ b/tests/pracownia4/pracownia3/000_manyargs_3.xi
@@ -0,0 +1,11 @@
+f(r0:int, r1:int, r2:int, r3:int, r4:int, r5:int, r6:int):int
+{
+    return r0 + r1 + r2 + r3 + r4 + r5 + r6
+}
+
+main():int {
+    return f(1, 2, 3, 4, 5, 6, 7)
+}
+
+//@PRACOWNIA
+//@out Exit code: 28
diff --git a/tests/pracownia4/pracownia3/001_or_01.xi b/tests/pracownia4/pracownia3/001_or_01.xi
new file mode 100644
index 0000000..42e3715
--- /dev/null
+++ b/tests/pracownia4/pracownia3/001_or_01.xi
@@ -0,0 +1,30 @@
+printString(str:int[])
+
+pred_lhs():bool
+{
+    printString("pred_lhs")
+    return false
+}
+
+pred_rhs():bool
+{
+    printString("pred_rhs")
+    return true
+}
+
+main():int
+{
+    result:int = 3
+    if pred_lhs() | pred_rhs() {
+        result = 1
+    } else {
+        result = 0
+    }
+
+    return result
+}
+
+//@PRACOWNIA
+//@out pred_lhs
+//@out pred_rhs
+//@out Exit code: 1
diff --git a/tests/pracownia4/pracownia3/002_list_empty.xi b/tests/pracownia4/pracownia3/002_list_empty.xi
new file mode 100644
index 0000000..a7a2c9d
--- /dev/null
+++ b/tests/pracownia4/pracownia3/002_list_empty.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {1,2,3}
+    return 0
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/003_concat_rhs_len.xi b/tests/pracownia4/pracownia3/003_concat_rhs_len.xi
new file mode 100644
index 0000000..5ab6e64
--- /dev/null
+++ b/tests/pracownia4/pracownia3/003_concat_rhs_len.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    z:int[] = {} + {100, 200}
+    return length(z)
+}
+
+//@PRACOWNIA
+//@out Exit code: 2
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/004_return.xi b/tests/pracownia4/pracownia3/004_return.xi
new file mode 100644
index 0000000..a24d01a
--- /dev/null
+++ b/tests/pracownia4/pracownia3/004_return.xi
@@ -0,0 +1,12 @@
+return_4():int
+{
+  return 4
+}
+
+main():int
+{
+  return return_4()
+}
+
+//@PRACOWNIA
+//@out Exit code: 4
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/005_multireturn_multiargs.xi b/tests/pracownia4/pracownia3/005_multireturn_multiargs.xi
new file mode 100644
index 0000000..96fbb57
--- /dev/null
+++ b/tests/pracownia4/pracownia3/005_multireturn_multiargs.xi
@@ -0,0 +1,12 @@
+f(a0:int, a1:int, a2:int, a3:int, a4:int, a5:int, a6:int): int, int, int, int, int, int, int
+{
+    return a0, a1, a2, a3, a4, a5, a6
+}
+
+main():int {
+    a0:int, a1:int, a2:int, a3:int, a4:int, a5:int, a6:int = f(10,20,30,40,50,60,70)
+    return a0+a1+a2+a3+a4+a5+a6
+}
+
+//@PRACOWNIA
+//@out Exit code: 280
diff --git a/tests/pracownia4/pracownia3/006_init_variable.xi b/tests/pracownia4/pracownia3/006_init_variable.xi
new file mode 100644
index 0000000..27940b7
--- /dev/null
+++ b/tests/pracownia4/pracownia3/006_init_variable.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int = 42;
+    return 13
+}
+
+//@PRACOWNIA
+//@out Exit code: 13
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/007_mul_literals.xi b/tests/pracownia4/pracownia3/007_mul_literals.xi
new file mode 100644
index 0000000..4302efe
--- /dev/null
+++ b/tests/pracownia4/pracownia3/007_mul_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 4 * 3
+}
+
+//@PRACOWNIA
+//@out Exit code: 12
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/008_fac_rec_0.xi b/tests/pracownia4/pracownia3/008_fac_rec_0.xi
new file mode 100644
index 0000000..45d5265
--- /dev/null
+++ b/tests/pracownia4/pracownia3/008_fac_rec_0.xi
@@ -0,0 +1,15 @@
+fac(x:int):int
+{
+    if (x == 0) {
+        return 1
+    }
+    return fac(x-1)*x
+}
+
+main():int
+{
+    return fac(0)
+}
+
+//@PRACOWNIA
+//@out Exit code: 1
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/009_while_while_sum.xi b/tests/pracownia4/pracownia3/009_while_while_sum.xi
new file mode 100644
index 0000000..abb029c
--- /dev/null
+++ b/tests/pracownia4/pracownia3/009_while_while_sum.xi
@@ -0,0 +1,18 @@
+main():int
+{
+    i:int = 0;
+    n:int = 10;
+    sum:int = 0;
+    while (i < n) {
+        j:int = 0
+        while (j < n) {
+            sum = sum + j
+            j = j + 1
+        }
+        i = i + 1
+    }
+    return sum
+}
+
+//@PRACOWNIA
+//@out Exit code: 450
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/010_length_empty.xi b/tests/pracownia4/pracownia3/010_length_empty.xi
new file mode 100644
index 0000000..46b3025
--- /dev/null
+++ b/tests/pracownia4/pracownia3/010_length_empty.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {}
+    return length(x)
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/011_concat_string.xi b/tests/pracownia4/pracownia3/011_concat_string.xi
new file mode 100644
index 0000000..c245c05
--- /dev/null
+++ b/tests/pracownia4/pracownia3/011_concat_string.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = "Wro" + "claw"
+    return length(x)
+}
+
+//@PRACOWNIA
+//@out Exit code: 7
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/012_multireturn_4.xi b/tests/pracownia4/pracownia3/012_multireturn_4.xi
new file mode 100644
index 0000000..7b1c7b7
--- /dev/null
+++ b/tests/pracownia4/pracownia3/012_multireturn_4.xi
@@ -0,0 +1,12 @@
+f(): int, int, int, int
+{
+    return 10, 15, 20, 25
+}
+
+main():int {
+    x:int, y:int, z:int, v:int = f()
+    return x + y + z + v;
+}
+
+//@PRACOWNIA
+//@out Exit code: 70
diff --git a/tests/pracownia4/pracownia3/013_add_literals.xi b/tests/pracownia4/pracownia3/013_add_literals.xi
new file mode 100644
index 0000000..9ced5c6
--- /dev/null
+++ b/tests/pracownia4/pracownia3/013_add_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 4 + 3
+}
+
+//@PRACOWNIA
+//@out Exit code: 7
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/014_assign.xi b/tests/pracownia4/pracownia3/014_assign.xi
new file mode 100644
index 0000000..bb62c67
--- /dev/null
+++ b/tests/pracownia4/pracownia3/014_assign.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int = 42
+    x = 10
+    return x
+}
+
+//@PRACOWNIA
+//@out Exit code: 10
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/015_sub_literals.xi b/tests/pracownia4/pracownia3/015_sub_literals.xi
new file mode 100644
index 0000000..2a8ce93
--- /dev/null
+++ b/tests/pracownia4/pracownia3/015_sub_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 4 - 3
+}
+
+//@PRACOWNIA
+//@out Exit code: 1
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/016_fib_rec_3.xi b/tests/pracownia4/pracownia3/016_fib_rec_3.xi
new file mode 100644
index 0000000..49a5d5b
--- /dev/null
+++ b/tests/pracownia4/pracownia3/016_fib_rec_3.xi
@@ -0,0 +1,18 @@
+fib(x:int):int
+{
+    if (x == 0) {
+        return 0
+    }
+    if (x == 1) {
+        return 1
+    }
+    return fib(x-1) + fib(x-2)
+}
+
+main():int
+{
+    return fib(5)
+}
+
+//@PRACOWNIA
+//@out Exit code: 5
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/017_return_42.xi b/tests/pracownia4/pracownia3/017_return_42.xi
new file mode 100644
index 0000000..6d53081
--- /dev/null
+++ b/tests/pracownia4/pracownia3/017_return_42.xi
@@ -0,0 +1,8 @@
+
+main():int 
+{
+    return 42
+}
+
+//@PRACOWNIA
+//@out Exit code: 42
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/018_empty_main.xi b/tests/pracownia4/pracownia3/018_empty_main.xi
new file mode 100644
index 0000000..336daf1
--- /dev/null
+++ b/tests/pracownia4/pracownia3/018_empty_main.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 0
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/019_while_sum.xi b/tests/pracownia4/pracownia3/019_while_sum.xi
new file mode 100644
index 0000000..8821a07
--- /dev/null
+++ b/tests/pracownia4/pracownia3/019_while_sum.xi
@@ -0,0 +1,14 @@
+main():int
+{
+    i:int = 0;
+    n:int = 10;
+    sum:int = 0;
+    while (i < n) {
+        sum = sum + i
+        i = i + 1
+    }
+    return sum
+}
+
+//@PRACOWNIA
+//@out Exit code: 45
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/020_return_variable.xi b/tests/pracownia4/pracownia3/020_return_variable.xi
new file mode 100644
index 0000000..288a5eb
--- /dev/null
+++ b/tests/pracownia4/pracownia3/020_return_variable.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int = 42
+    return x
+}
+
+//@PRACOWNIA
+//@out Exit code: 42
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/021_printInt.xi b/tests/pracownia4/pracownia3/021_printInt.xi
new file mode 100644
index 0000000..5f75922
--- /dev/null
+++ b/tests/pracownia4/pracownia3/021_printInt.xi
@@ -0,0 +1,16 @@
+
+printInt(x:int)
+
+main():int
+{
+    printInt(5)
+    printInt(10)
+    printInt(15)
+    return 0
+}
+
+//@PRACOWNIA
+//@out 5
+//@out 10
+//@out 15
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/022_if_eq_true.xi b/tests/pracownia4/pracownia3/022_if_eq_true.xi
new file mode 100644
index 0000000..4571f1b
--- /dev/null
+++ b/tests/pracownia4/pracownia3/022_if_eq_true.xi
@@ -0,0 +1,13 @@
+main():int
+{
+    x:int = 33;
+    result:int = 99
+    if (x == 33) {
+        result = 100
+    } 
+
+    return result
+}
+
+//@PRACOWNIA
+//@out Exit code: 100
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/023_ifelse_pred.xi b/tests/pracownia4/pracownia3/023_ifelse_pred.xi
new file mode 100644
index 0000000..10010d6
--- /dev/null
+++ b/tests/pracownia4/pracownia3/023_ifelse_pred.xi
@@ -0,0 +1,18 @@
+pred():bool
+{
+    return true
+}
+
+main():int
+{
+    result:int = 13
+    if pred() {
+        result = 100
+    } else {
+        result = 1
+    }
+    return result
+}
+
+//@PRACOWNIA
+//@out Exit code: 100
diff --git a/tests/pracownia4/pracownia3/024_fac.xi b/tests/pracownia4/pracownia3/024_fac.xi
new file mode 100644
index 0000000..381de7c
--- /dev/null
+++ b/tests/pracownia4/pracownia3/024_fac.xi
@@ -0,0 +1,17 @@
+fac(x:int):int
+{
+    res:int = 1
+    while (x > 0) {
+        res = x*res
+        x = x - 1
+    }
+    return res
+}
+
+main():int
+{
+    return fac(5)
+}
+
+//@PRACOWNIA
+//@out Exit code: 120
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/025_and_literals.xi b/tests/pracownia4/pracownia3/025_and_literals.xi
new file mode 100644
index 0000000..fc87e96
--- /dev/null
+++ b/tests/pracownia4/pracownia3/025_and_literals.xi
@@ -0,0 +1,16 @@
+convert(b:bool):int
+{
+    if b {
+        return 1
+    } else {
+        return 0
+    }
+}
+
+main():int
+{
+    return convert(true & false)
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
diff --git a/tests/pracownia4/pracownia3/026_printString.xi b/tests/pracownia4/pracownia3/026_printString.xi
new file mode 100644
index 0000000..29dc5aa
--- /dev/null
+++ b/tests/pracownia4/pracownia3/026_printString.xi
@@ -0,0 +1,11 @@
+printString(x:int[])
+
+main():int
+{
+    printString("Wroclaw")
+    return 0
+}
+
+//@PRACOWNIA
+//@out Wroclaw
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/027_init_2_variables.xi b/tests/pracownia4/pracownia3/027_init_2_variables.xi
new file mode 100644
index 0000000..b417ab1
--- /dev/null
+++ b/tests/pracownia4/pracownia3/027_init_2_variables.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int = 42;
+    y:int = 43;
+    return 14
+}
+
+//@PRACOWNIA
+//@out Exit code: 14
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/028_return_second_variable.xi b/tests/pracownia4/pracownia3/028_return_second_variable.xi
new file mode 100644
index 0000000..257fce9
--- /dev/null
+++ b/tests/pracownia4/pracownia3/028_return_second_variable.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int = 42
+    y:int = 43
+    return y
+}
+
+//@PRACOWNIA
+//@out Exit code: 43
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/029_return_first_variable.xi b/tests/pracownia4/pracownia3/029_return_first_variable.xi
new file mode 100644
index 0000000..138a3a2
--- /dev/null
+++ b/tests/pracownia4/pracownia3/029_return_first_variable.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int = 42
+    y:int = 43
+    return x
+}
+
+//@PRACOWNIA
+//@out Exit code: 42
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/030_length_string.xi b/tests/pracownia4/pracownia3/030_length_string.xi
new file mode 100644
index 0000000..bc6011a
--- /dev/null
+++ b/tests/pracownia4/pracownia3/030_length_string.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = "Wroclaw"
+    return length(x)
+}
+
+//@PRACOWNIA
+//@out Exit code: 7
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/031_div_literals.xi b/tests/pracownia4/pracownia3/031_div_literals.xi
new file mode 100644
index 0000000..16a75f8
--- /dev/null
+++ b/tests/pracownia4/pracownia3/031_div_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 8 / 2
+}
+
+//@PRACOWNIA
+//@out Exit code: 4
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/032_return_index0.xi b/tests/pracownia4/pracownia3/032_return_index0.xi
new file mode 100644
index 0000000..09ddee4
--- /dev/null
+++ b/tests/pracownia4/pracownia3/032_return_index0.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {5, 10, 15}
+    return x[0]
+}
+
+//@PRACOWNIA
+//@out Exit code: 5
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/033_multiarray.xi b/tests/pracownia4/pracownia3/033_multiarray.xi
new file mode 100644
index 0000000..f6fb7b5
--- /dev/null
+++ b/tests/pracownia4/pracownia3/033_multiarray.xi
@@ -0,0 +1,13 @@
+main():int { 
+    xs:int[2][3];
+    xs[0][0] = 1;
+    xs[0][1] = 2;
+    xs[0][2] = 3;
+    xs[1][0] = 10;
+    xs[1][1] = 20;
+    xs[1][2] = 30;
+    return xs[0][0] + xs[0][1] + xs[0][2] + xs[1][0] + xs[1][1] + xs[1][2];
+}
+
+//@PRACOWNIA
+//@out Exit code: 66
diff --git a/tests/pracownia4/pracownia3/034_or_literals.xi b/tests/pracownia4/pracownia3/034_or_literals.xi
new file mode 100644
index 0000000..ca1c9da
--- /dev/null
+++ b/tests/pracownia4/pracownia3/034_or_literals.xi
@@ -0,0 +1,15 @@
+convert(b:bool):int
+{
+    if b {
+        return 1
+    } else {
+        return 0
+    }
+}
+main():int
+{
+    return convert(false | true)
+}
+
+//@PRACOWNIA
+//@out Exit code: 1
diff --git a/tests/pracownia4/pracownia3/035_return_char.xi b/tests/pracownia4/pracownia3/035_return_char.xi
new file mode 100644
index 0000000..689567a
--- /dev/null
+++ b/tests/pracownia4/pracownia3/035_return_char.xi
@@ -0,0 +1,7 @@
+main():int
+{
+    return 'a'
+}
+
+//@PRACOWNIA
+//@out Exit code: 97
diff --git a/tests/pracownia4/pracownia3/036_multireturn_3.xi b/tests/pracownia4/pracownia3/036_multireturn_3.xi
new file mode 100644
index 0000000..f8190a8
--- /dev/null
+++ b/tests/pracownia4/pracownia3/036_multireturn_3.xi
@@ -0,0 +1,12 @@
+f(): int, int, int
+{
+    return 10, 15, 20
+}
+
+main():int {
+    x:int, y:int, z:int = f()
+    return x + y + z;
+}
+
+//@PRACOWNIA
+//@out Exit code: 45
diff --git a/tests/pracownia4/pracownia3/037_concat_lhs_len.xi b/tests/pracownia4/pracownia3/037_concat_lhs_len.xi
new file mode 100644
index 0000000..f51c1e0
--- /dev/null
+++ b/tests/pracownia4/pracownia3/037_concat_lhs_len.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    z:int[] = {100, 200} + {}
+    return length(z)
+}
+
+//@PRACOWNIA
+//@out Exit code: 2
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/038_fac_rec_5.xi b/tests/pracownia4/pracownia3/038_fac_rec_5.xi
new file mode 100644
index 0000000..1258e53
--- /dev/null
+++ b/tests/pracownia4/pracownia3/038_fac_rec_5.xi
@@ -0,0 +1,15 @@
+fac(x:int):int
+{
+    if (x == 0) {
+        return 1
+    }
+    return fac(x-1)*x
+}
+
+main():int
+{
+    return fac(5)
+}
+
+//@PRACOWNIA
+//@out Exit code: 120
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/039_ifelse_eq_true_ret.xi b/tests/pracownia4/pracownia3/039_ifelse_eq_true_ret.xi
new file mode 100644
index 0000000..70a6491
--- /dev/null
+++ b/tests/pracownia4/pracownia3/039_ifelse_eq_true_ret.xi
@@ -0,0 +1,13 @@
+main():int
+{
+    x:int = 33;
+    if (x == 33) {
+        return 100
+    }  else {
+        return 10
+    }
+    return 0
+}
+
+//@PRACOWNIA
+//@out Exit code: 100
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/040_string.xi b/tests/pracownia4/pracownia3/040_string.xi
new file mode 100644
index 0000000..f046b6b
--- /dev/null
+++ b/tests/pracownia4/pracownia3/040_string.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = "Wroclaw"
+    return 13
+}
+
+//@PRACOWNIA
+//@out Exit code: 13
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/041_assign_index0.xi b/tests/pracownia4/pracownia3/041_assign_index0.xi
new file mode 100644
index 0000000..f1c39b6
--- /dev/null
+++ b/tests/pracownia4/pracownia3/041_assign_index0.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int[] = {5, 10, 15}
+    x[0] = 20
+    return x[0]
+}
+
+//@PRACOWNIA
+//@out Exit code: 20
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/042_return_nl.xi b/tests/pracownia4/pracownia3/042_return_nl.xi
new file mode 100644
index 0000000..b529e15
--- /dev/null
+++ b/tests/pracownia4/pracownia3/042_return_nl.xi
@@ -0,0 +1,7 @@
+main():int
+{
+    return '\n'
+}
+
+//@PRACOWNIA
+//@out Exit code: 10
diff --git a/tests/pracownia4/pracownia3/043_while_or.xi b/tests/pracownia4/pracownia3/043_while_or.xi
new file mode 100644
index 0000000..5d9525e
--- /dev/null
+++ b/tests/pracownia4/pracownia3/043_while_or.xi
@@ -0,0 +1,18 @@
+pred():bool
+{
+    return false
+}
+
+main():int
+{
+    x:bool = true
+    result:int = 13
+    while x | pred() {
+        result = 100
+        x = false 
+    }
+    return result
+}
+
+//@PRACOWNIA
+//@out Exit code: 100
diff --git a/tests/pracownia4/pracownia3/044_list_init.xi b/tests/pracownia4/pracownia3/044_list_init.xi
new file mode 100644
index 0000000..a7a2c9d
--- /dev/null
+++ b/tests/pracownia4/pracownia3/044_list_init.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {1,2,3}
+    return 0
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/045_mod_literals.xi b/tests/pracownia4/pracownia3/045_mod_literals.xi
new file mode 100644
index 0000000..e904355
--- /dev/null
+++ b/tests/pracownia4/pracownia3/045_mod_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 3 % 2
+}
+
+//@PRACOWNIA
+//@out Exit code: 1
diff --git a/tests/pracownia4/pracownia3/046_return_index1.xi b/tests/pracownia4/pracownia3/046_return_index1.xi
new file mode 100644
index 0000000..b2af5d1
--- /dev/null
+++ b/tests/pracownia4/pracownia3/046_return_index1.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {5, 10, 15}
+    return x[1]
+}
+
+//@PRACOWNIA
+//@out Exit code: 10
\ No newline at end of file
diff --git a/tests/pracownia4/pracownia3/047_and_10_.xi b/tests/pracownia4/pracownia3/047_and_10_.xi
new file mode 100644
index 0000000..d9469ae
--- /dev/null
+++ b/tests/pracownia4/pracownia3/047_and_10_.xi
@@ -0,0 +1,30 @@
+printString(str:int[])
+
+pred_lhs():bool
+{
+    printString("pred_lhs")
+    return true
+}
+
+pred_rhs():bool
+{
+    printString("pred_rhs")
+    return false
+}
+
+main():int
+{
+    result:int = 3
+    if pred_lhs() & pred_rhs() {
+        result = 1
+    } else {
+        result = 0
+    }
+
+    return result
+}
+
+//@PRACOWNIA
+//@out pred_lhs
+//@out pred_rhs
+//@out Exit code: 0