testing3/knight2_test.sh
author Christian Urban <urbanc@in.tum.de>
Wed, 24 Jul 2019 14:22:06 +0100
changeset 266 31e5218f43de
parent 249 65cb10f8014a
child 295 bfbc7dd3e35c
permissions -rwxr-xr-x
updated to 2.13
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     1
#!/bin/bash
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     2
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     3
# to make the script fail safely
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     4
set -euo pipefail
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     5
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     6
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     7
out=${1:-output}
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     8
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     9
echo "" > $out
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    10
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    11
echo -e "Below is the feedback for your submission of CW 8, Advanced Part 2." >> $out
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    12
echo -e "" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    13
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    14
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    15
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    16
# compilation tests
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    17
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    18
function scala_compile {
266
31e5218f43de updated to 2.13
Christian Urban <urbanc@in.tum.de>
parents: 249
diff changeset
    19
  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala "$1" 2>> $out 1>> $out) 
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    20
}
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    21
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    22
# functional tests
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    23
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    24
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    25
function scala_assert {
266
31e5218f43de updated to 2.13
Christian Urban <urbanc@in.tum.de>
parents: 249
diff changeset
    26
  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    27
}
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    28
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    29
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    30
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    31
# purity test
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    32
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    33
function scala_vars {
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    34
   (egrep '\bvar\b|\breturn\b|\.par|ListBuffer|mutable|new Array' "$1" 2> /dev/null 1> /dev/null)
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    35
}
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    36
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    37
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    38
# knights2: purity test
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    39
#
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    40
echo -e "knight2.scala does not contain vars, returns, Arrays, ListBuffers etc?" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    41
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    42
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    43
if (scala_vars knight2.scala)
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    44
then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    45
  echo -e "  --> fail (make triple-sure your program conforms to the required format)" >> $out    
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    46
  tsts0=$(( 0 ))
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    47
else
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    48
  echo -e "  --> success" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    49
  tsts0=$(( 0 )) 
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    50
fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    51
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    52
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    53
# compilation test
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    54
if  [ $tsts0 -eq 0 ]
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    55
then    
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    56
  echo -e "knight2.scala runs?" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    57
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    58
  if (scala_compile knight2.scala)
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    59
  then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    60
    echo -e "  --> success" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    61
    tsts1=$(( 0 ))
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    62
  else
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    63
    echo -e "  --> SCALA DID NOT RUN KNIGHT2.SCALA\n" >> $out  
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    64
    tsts1=$(( 1 )) 
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    65
  fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    66
else
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    67
  tsts1=$(( 1 ))     
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    68
fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    69
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    70
# ordered move test
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    71
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    72
if [ $tsts1 -eq 0 ]
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    73
then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    74
  echo -e " ordered_moves(8, List((3,4), (3,2)), (1,3)) == List((0,1), (0,5), (2,1), (2,5))" >> $out
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    75
  echo -e " ordered_moves(8, List((4,0)), (0,0)) == List((2,1), (1,2))" >> $out
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    76
  echo -e " ordered_moves(8, List((0,4)), (0,0)) == List((1,2), (2,1))" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    77
  
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    78
  if (scala_assert "knight2.scala" "knight_test6.scala")
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    79
  then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    80
      echo -e "  --> success" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    81
  else
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    82
      echo -e "  --> \n ONE TEST FAILED\n" >> $out  
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    83
  fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    84
fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    85
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    86
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    87
# first-closed-tour test
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    88
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    89
if [ $tsts1 -eq 0 ]
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    90
then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    91
  echo -e " first_closed_tour_heuristic(6, List((3,3))) found and correct?" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    92
  
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    93
  if (scala_assert "knight2.scala" "knight_test7.scala")
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    94
  then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
    95
      echo -e "  --> success" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    96
  else
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    97
      echo -e "  --> \n ONE TEST FAILED\n" >> $out  
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    98
  fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    99
fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   100
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   101
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   102
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   103
if [ $tsts1 -eq 0 ]
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   104
then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   105
  echo -e " first_tour_heuristic(8, List((0,0))) found and correct?" >> $out
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   106
  echo -e " first_tour_heuristic(30, List((0,0))) found and correct?" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   107
  
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   108
  if (scala_assert "knight2.scala" "knight_test8.scala")
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   109
  then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   110
      echo -e "  --> success" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   111
  else
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   112
      echo -e "  --> \n ONE TEST FAILED\n" >> $out 
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   113
  fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   114
fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   115
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   116
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   117
# knights3: purity test
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   118
#
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   119
echo -e "knight3.scala does not contain vars, returns, Arrays, ListBuffers etc?" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   120
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   121
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   122
if (scala_vars knight3.scala)
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   123
then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   124
  echo "  --> test failed" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   125
  tsts0=$(( 0 ))
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   126
else
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   127
  echo "  --> success" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   128
  tsts0=$(( 0 )) 
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   129
fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   130
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   131
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   132
# compilation test
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   133
if  [ $tsts0 -eq 0 ]
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   134
then    
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   135
  echo "knight3.scala runs?" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   136
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   137
  if (scala_compile knight3.scala)
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   138
  then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   139
    echo "  --> success" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   140
    tsts1=$(( 0 ))
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   141
  else
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   142
    echo -e "  --> SCALA DID NOT RUN KNIGHT3.SCALA\n" >> $out  
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   143
    tsts1=$(( 1 )) 
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   144
  fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   145
else
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   146
  tsts1=$(( 1 ))     
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   147
fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   148
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   149
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   150
if [ $tsts1 -eq 0 ]
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   151
then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   152
  echo -e " tour_on_mega_board(70, List((0,0))) found and correct?" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   153
  
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   154
  if (scala_assert "knight3.scala" "knight_test9.scala")
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   155
  then
248
e8d966b1826d updared
Christian Urban <urbanc@in.tum.de>
parents: 247
diff changeset
   156
      echo -e "  --> success" >> $out
247
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   157
  else
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   158
      echo -e "  --> \n ONE TEST FAILED\n" >> $out 
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   159
  fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   160
fi
87047208d5f4 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   161