4 set -euo pipefail |
4 set -euo pipefail |
5 |
5 |
6 |
6 |
7 out=${1:-output} |
7 out=${1:-output} |
8 |
8 |
9 echo "" > $out |
9 echo -e "" > $out |
10 |
10 |
11 |
11 |
12 echo "Below is the feedback and provisional marks for your submission" >> $out |
12 echo -e "Below is the feedback and provisional marks for your submission" >> $out |
13 echo "for assignment 10 Part 1. Please note all marks are provisional until" >> $out |
13 echo -e "for assignment 10 Part 1. Please note all marks are provisional until" >> $out |
14 echo "ratified by the assessment board -- this is not an official" >> $out |
14 echo -e "ratified by the assessment board -- this is not an official" >> $out |
15 echo "results transcript." >> $out |
15 echo -e "results transcript." >> $out |
16 echo "" >> $out |
16 echo -e "" >> $out |
17 |
17 |
18 # marks for CW10 part 1 |
18 # marks for CW10 part 1 |
19 marks=$(( 0 )) |
19 marks=$(( 0 )) |
20 |
20 |
21 # compilation tests |
21 # compilation tests |
22 |
22 |
23 function scala_compile { |
23 function scala_compile { |
24 (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -nc "$1" 2> /dev/null 1> /dev/null) |
24 (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala "$1" 2> /dev/null 1> /dev/null) |
25 } |
25 } |
26 |
26 |
27 # functional tests |
27 # functional tests |
28 |
28 |
29 function scala_assert { |
29 function scala_assert { |
30 (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -nc -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null) |
30 (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -i "$1" -- "$2" 2> /dev/null 1> /dev/null) |
31 } |
31 } |
32 |
32 |
33 |
33 |
34 # purity test |
34 # purity test |
35 |
35 |
39 |
39 |
40 |
40 |
41 |
41 |
42 # var, return, ListBuffer test |
42 # var, return, ListBuffer test |
43 # |
43 # |
44 echo "bf.scala does not contain vars, returns, Arrays, ListBuffers etc?" | tee -a $out |
44 echo -e "bf.scala does not contain vars, returns, Arrays, ListBuffers etc?" | tee -a $out |
45 |
45 |
46 if (scala_vars bf.scala) |
46 if (scala_vars bf.scala) |
47 then |
47 then |
48 echo " --> test failed" | tee -a $out |
48 echo -e " --> FAIL (make triple-sure your program conforms to the required format)" | tee -a $out |
49 tsts0=$(( 1 )) |
49 tsts0=$(( 1 )) |
50 else |
50 else |
51 echo " --> success" | tee -a $out |
51 echo -e " --> success" | tee -a $out |
52 tsts0=$(( 0 )) |
52 tsts0=$(( 0 )) |
53 fi |
53 fi |
54 |
54 |
55 |
55 |
56 # compilation test |
56 # compilation test |
57 if [ $tsts0 -eq 0 ] |
57 if [ $tsts0 -eq 0 ] |
58 then |
58 then |
59 echo "bf.scala runs?" | tee -a $out |
59 echo -e "bf.scala runs?" | tee -a $out |
60 |
60 |
61 if (scala_compile bf.scala) |
61 if (scala_compile bf.scala) |
62 then |
62 then |
63 echo " --> success" | tee -a $out |
63 echo -e " --> success" | tee -a $out |
64 tsts1=$(( 0 )) |
64 tsts1=$(( 0 )) |
65 else |
65 else |
66 echo " --> scala bf.scala did not run successfully" | tee -a $out |
66 echo -e " --> SCALA DID NOT RUN BF.SCALA\n" | tee -a $out |
67 tsts1=$(( 1 )) |
67 tsts1=$(( 1 )) |
68 fi |
68 fi |
69 else |
69 else |
70 tsts1=$(( 1 )) |
70 tsts1=$(( 1 )) |
71 fi |
71 fi |
73 |
73 |
74 ### bf1 test |
74 ### bf1 test |
75 |
75 |
76 if [ $tsts1 -eq 0 ] |
76 if [ $tsts1 -eq 0 ] |
77 then |
77 then |
78 echo " load_bff(\"benchmark.bf\").length == 188" | tee -a $out |
78 echo -e " load_bff(\"benchmark.bf\").length == 188" | tee -a $out |
79 echo " load_bff(\"foobar.bf\") == \"\"" | tee -a $out |
79 echo -e " load_bff(\"foobar.bf\") == \"\"" | tee -a $out |
80 |
80 |
81 if (scala_assert "bf.scala" "bf_test1.scala") |
81 if (scala_assert "bf.scala" "bf_test1.scala") |
82 then |
82 then |
83 echo " --> success" | tee -a $out |
83 echo -e " --> success" | tee -a $out |
84 marks=$(( marks + 1 )) |
84 marks=$(( marks + 1 )) |
85 else |
85 else |
86 echo " --> test failed" | tee -a $out |
86 echo -e " --> \n ONE TEST FAILED\n" | tee -a $out |
87 fi |
87 fi |
88 fi |
88 fi |
89 |
89 |
90 |
90 |
91 ### bf2 test |
91 ### bf2 test |
92 |
92 |
93 if [ $tsts1 -eq 0 ] |
93 if [ $tsts1 -eq 0 ] |
94 then |
94 then |
95 echo " sread(Map(), 2) == 0" | tee -a $out |
95 echo -e " sread(Map(), 2) == 0" | tee -a $out |
96 echo " sread(Map(2 -> 1), 2) == 1" | tee -a $out |
96 echo -e " sread(Map(2 -> 1), 2) == 1" | tee -a $out |
97 echo " write(Map(), 1, 2) == Map(1 -> 2)" | tee -a $out |
97 echo -e " write(Map(), 1, 2) == Map(1 -> 2)" | tee -a $out |
98 echo " write(Map(1 -> 0), 1, 2) == Map(1 -> 2)" | tee -a $out |
98 echo -e " write(Map(1 -> 0), 1, 2) == Map(1 -> 2)" | tee -a $out |
99 |
99 |
100 if (scala_assert "bf.scala" "bf_test2.scala") |
100 if (scala_assert "bf.scala" "bf_test2.scala") |
101 then |
101 then |
102 echo " --> success" | tee -a $out |
102 echo -e " --> success" | tee -a $out |
103 marks=$(( marks + 1 )) |
103 marks=$(( marks + 1 )) |
104 else |
104 else |
105 echo " --> test failed" | tee -a $out |
105 echo -e " --> \n ONE TEST FAILED\n" | tee -a $out |
106 fi |
106 fi |
107 fi |
107 fi |
108 |
108 |
109 ### bf3 test |
109 ### bf3 test |
110 |
110 |
111 if [ $tsts1 -eq 0 ] |
111 if [ $tsts1 -eq 0 ] |
112 then |
112 then |
113 echo " jumpRight(\"[xxxxxx]xxx\", 1, 0) == 8" | tee -a $out |
113 echo -e " jumpRight(\"[xxxxxx]xxx\", 1, 0) == 8" | tee -a $out |
114 echo " jumpRight(\"[xx[x]x]xxx\", 1, 0) == 8" | tee -a $out |
114 echo -e " jumpRight(\"[xx[x]x]xxx\", 1, 0) == 8" | tee -a $out |
115 echo " jumpRight(\"[xx[x]x]xxx\", 1, 0) == 8" | tee -a $out |
115 echo -e " jumpRight(\"[xx[x]x]xxx\", 1, 0) == 8" | tee -a $out |
116 echo " jumpRight(\"[xx[xxx]xxx\", 1, 0) == 11" | tee -a $out |
116 echo -e " jumpRight(\"[xx[xxx]xxx\", 1, 0) == 11" | tee -a $out |
117 echo " jumpRight(\"[x[][]x]xxx\", 1, 0) == 8" | tee -a $out |
117 echo -e " jumpRight(\"[x[][]x]xxx\", 1, 0) == 8" | tee -a $out |
118 echo " jumpLeft(\"[xxxxxx]xxx\", 6, 0) == 1" | tee -a $out |
118 echo -e " jumpLeft(\"[xxxxxx]xxx\", 6, 0) == 1" | tee -a $out |
119 echo " jumpLeft(\"[xxxxxx]xxx\", 7, 0) == -1" | tee -a $out |
119 echo -e " jumpLeft(\"[xxxxxx]xxx\", 7, 0) == -1" | tee -a $out |
120 echo " jumpLeft(\"[x[][]x]xxx\", 6, 0) == 1" | tee -a $out |
120 echo -e " jumpLeft(\"[x[][]x]xxx\", 6, 0) == 1" | tee -a $out |
121 |
121 |
122 if (scala_assert "bf.scala" "bf_test3.scala") |
122 if (scala_assert "bf.scala" "bf_test3.scala") |
123 then |
123 then |
124 echo " --> success" | tee -a $out |
124 echo -e " --> success" | tee -a $out |
125 marks=$(( marks + 2 )) |
125 marks=$(( marks + 2 )) |
126 else |
126 else |
127 echo " --> test failed" | tee -a $out |
127 echo -e " --> \n ONE TEST FAILED\n" | tee -a $out |
128 fi |
128 fi |
129 fi |
129 fi |
130 |
130 |
131 |
131 |
132 |
132 |
142 echo -e " run(hello, Map()) == " | tee -a $out |
142 echo -e " run(hello, Map()) == " | tee -a $out |
143 echo -e " Map(0 -> 0, 5 -> 33, 1 -> 0, 6 -> 10, 2 -> 72, 3 -> 100, 4 -> 87)" | tee -a $out |
143 echo -e " Map(0 -> 0, 5 -> 33, 1 -> 0, 6 -> 10, 2 -> 72, 3 -> 100, 4 -> 87)" | tee -a $out |
144 |
144 |
145 if (scala_assert "bf.scala" "bf_test4.scala") |
145 if (scala_assert "bf.scala" "bf_test4.scala") |
146 then |
146 then |
147 echo " --> success" | tee -a $out |
147 echo -e " --> success" | tee -a $out |
148 marks=$(( marks + 2 )) |
148 marks=$(( marks + 2 )) |
149 else |
149 else |
150 echo " --> test failed" | tee -a $out |
150 echo -e " --> \n ONE TEST FAILED\n" | tee -a $out |
151 fi |
151 fi |
152 fi |
152 fi |
153 |
153 |
154 |
154 |
155 ## final marks |
155 ## final marks |
156 echo "Overall mark for CW 10, Part 1" | tee -a $out |
156 echo -e "Overall mark for CW 10, Part 1" | tee -a $out |
157 echo "$marks" | tee -a $out |
157 echo -e "$marks" | tee -a $out |
158 |
158 |