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