5 |
5 |
6 echo -e "" > $out |
6 echo -e "" > $out |
7 |
7 |
8 echo -e "Below is the feedback for your submission of CW 8" >> $out |
8 echo -e "Below is the feedback for your submission of CW 8" >> $out |
9 echo -e "" >> $out |
9 echo -e "" >> $out |
10 |
10 echo -e "!! Important: !!" >> $out |
|
11 echo -e "Because of limitations with our testing infrastructure, we can only" >> $out |
|
12 echo -e "let code run for 10 seconds and then have to kill it. This might" >> $out |
|
13 echo -e "mean your code is correct, but still marked as Fail. Remember" >> $out |
|
14 echo -e "you can test your code on your own machine and benchmark it" >> $out |
|
15 echo -e "against the reference implementation." >> $out |
|
16 echo -e "" >> $out |
11 |
17 |
12 # compilation tests |
18 # compilation tests |
13 |
19 |
14 function scala_compile { |
20 function scala_compile { |
15 (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala "$1" 2>> $out 1>> $out) |
21 (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala "$1" 2>> $out 1>> $out) |
132 |
138 |
133 ### knight4 test |
139 ### knight4 test |
134 |
140 |
135 if [ $tsts1 -eq 0 ] |
141 if [ $tsts1 -eq 0 ] |
136 then |
142 then |
137 echo -e "Takes 10 seconds or less to execute: " >> $out |
143 echo -e "For testing needs to take 10 seconds or less to execute: " >> $out |
138 echo -e " Let f = (x:(Int, Int)) => if (x._1 > 3) Some(List(x)) else None " >> $out |
144 echo -e " Let f = (x:(Int, Int)) => if (x._1 > 3) Some(List(x)) else None " >> $out |
139 echo -e " first(List((1,0),(2,0),(3,0),(4,0)), f) == Some(List((4,0)))" >> $out |
145 echo -e " first(List((1,0),(2,0),(3,0),(4,0)), f) == Some(List((4,0)))" >> $out |
140 echo -e " first(List((1,0),(2,0),(3,0)), f) == None" >> $out |
146 echo -e " first(List((1,0),(2,0),(3,0)), f) == None" >> $out |
141 |
147 |
142 if (scala_assert_quick "knight1.scala" "knight_test4.scala") |
148 if (scala_assert_quick "knight1.scala" "knight_test4.scala") |
162 else |
168 else |
163 echo -e " --> \n ONE TEST FAILED\n" >> $out |
169 echo -e " --> \n ONE TEST FAILED\n" >> $out |
164 fi |
170 fi |
165 fi |
171 fi |
166 |
172 |
|
173 |
|
174 echo -e "" >> $out |
|
175 echo -e "" >> $out |
|
176 |
|
177 |
|
178 # knights2: purity test |
|
179 # |
|
180 echo -e "knight2.scala does not contain vars, returns, Arrays, ListBuffers etc?" >> $out |
|
181 |
|
182 if (scala_vars knight2.scala) |
|
183 then |
|
184 echo -e " --> Fail (make triple-sure your program conforms to the required format)" >> $out |
|
185 tsts0=$(( 0 )) |
|
186 else |
|
187 echo -e " --> success" >> $out |
|
188 tsts0=$(( 0 )) |
|
189 fi |
|
190 |
|
191 |
|
192 # compilation test |
|
193 if [ $tsts0 -eq 0 ] |
|
194 then |
|
195 echo -e "knight2.scala runs?" >> $out |
|
196 |
|
197 if (scala_compile knight2.scala) |
|
198 then |
|
199 echo -e " --> success" >> $out |
|
200 tsts1=$(( 0 )) |
|
201 else |
|
202 echo -e " --> SCALA DID NOT RUN KNIGHT2.SCALA\n" >> $out |
|
203 tsts1=$(( 1 )) |
|
204 fi |
|
205 else |
|
206 tsts1=$(( 1 )) |
|
207 fi |
|
208 |
|
209 |
|
210 # ordered move test |
|
211 |
|
212 if [ $tsts1 -eq 0 ] |
|
213 then |
|
214 echo -e "For testing needs to take 10 seconds or less to execute: " >> $out |
|
215 echo -e " ordered_moves(8, List((3,4), (3,2)), (1,3)) == List((0,1), (0,5), (2,1), (2,5))" >> $out |
|
216 echo -e " ordered_moves(8, List((4,0)), (0,0)) == List((2,1), (1,2))" >> $out |
|
217 echo -e " ordered_moves(8, List((0,4)), (0,0)) == List((1,2), (2,1))" >> $out |
|
218 |
|
219 if (scala_assert_quick "knight2.scala" "knight_test6.scala") |
|
220 then |
|
221 echo -e " --> success" >> $out |
|
222 else |
|
223 echo -e " --> \n ONE TEST FAILED\n" >> $out |
|
224 fi |
|
225 fi |
|
226 |
|
227 |
|
228 # first-closed-tour test |
|
229 |
|
230 if [ $tsts1 -eq 0 ] |
|
231 then |
|
232 echo -e "For testing needs to take 10 seconds or less to execute: " >> $out |
|
233 echo -e " first_closed_tour_heuristic(6, List((3,3))) found and correct?" >> $out |
|
234 |
|
235 if (scala_assert_quick "knight2.scala" "knight_test7.scala") |
|
236 then |
|
237 echo -e " --> success" >> $out |
|
238 else |
|
239 echo -e " --> \n ONE TEST FAILED\n" >> $out |
|
240 fi |
|
241 fi |
|
242 |
|
243 |
|
244 |
|
245 if [ $tsts1 -eq 0 ] |
|
246 then |
|
247 echo -e "For testing needs to take 10 seconds or less to execute: " >> $out |
|
248 echo -e " first_tour_heuristic(8, List((0,0))) found and correct?" >> $out |
|
249 echo -e " first_tour_heuristic(30, List((0,0))) found and correct?" >> $out |
|
250 |
|
251 if (scala_assert_quick "knight2.scala" "knight_test8.scala") |
|
252 then |
|
253 echo -e " --> success" >> $out |
|
254 else |
|
255 echo -e " --> \n ONE TEST FAILED\n" >> $out |
|
256 fi |
|
257 fi |
|
258 |
|
259 |
|
260 echo -e "" >> $out |
|
261 echo -e "" >> $out |
|
262 |
|
263 # knights3: purity test |
|
264 # |
|
265 echo -e "knight3.scala does not contain vars, returns, Arrays, ListBuffers etc?" >> $out |
|
266 |
|
267 |
|
268 if (scala_vars knight3.scala) |
|
269 then |
|
270 echo " --> Fail (make triple-sure your program conforms to the required format)xsxs" >> $out |
|
271 tsts0=$(( 0 )) |
|
272 else |
|
273 echo " --> success" >> $out |
|
274 tsts0=$(( 0 )) |
|
275 fi |
|
276 |
|
277 |
|
278 # compilation test |
|
279 if [ $tsts0 -eq 0 ] |
|
280 then |
|
281 echo "knight3.scala runs?" >> $out |
|
282 |
|
283 if (scala_compile knight3.scala) |
|
284 then |
|
285 echo " --> success" >> $out |
|
286 tsts1=$(( 0 )) |
|
287 else |
|
288 echo -e " --> SCALA DID NOT RUN KNIGHT3.SCALA\n" >> $out |
|
289 tsts1=$(( 1 )) |
|
290 fi |
|
291 else |
|
292 tsts1=$(( 1 )) |
|
293 fi |
|
294 |
|
295 |
|
296 if [ $tsts1 -eq 0 ] |
|
297 then |
|
298 echo -e "For testing needs to take 10 seconds or less to execute: " >> $out |
|
299 echo -e " tour_on_mega_board(70, List((0,0))) found and correct?" >> $out |
|
300 |
|
301 if (scala_assert_quick "knight3.scala" "knight_test9.scala") |
|
302 then |
|
303 echo -e " --> success" >> $out |
|
304 else |
|
305 echo -e " --> \n ONE TEST FAILED\n" >> $out |
|
306 fi |
|
307 fi |
|
308 |