cw5_marking/cw5_test.sh
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 18 Sep 2026 10:58:01 +0100
changeset 1039 86d59b074abe
parent 977 7a02c5b9e0df
permissions -rwxr-xr-x
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
     1
#!/bin/zsh -o pipefail
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
# to make the script fail safely
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
     4
#set -euo pipefail
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
out=${1:-output}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
echo -e "" > $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
echo `date` | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
echo "" >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
echo "Below is the feedback and provisional marks for your CW 5 submission." >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
echo "Please note all marks are provisional until ratified by the" >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
echo "assessment board -- this is not an official results transcript." >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
echo "" >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
echo "The feedback for your submission for cw05.sc" >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
echo "" >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
# marks for CW 5
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
marks=$(( 0.0 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
# compilation tests
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
function scala_compile {
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    27
  (ulimit -t 30; JAVA_OPTS="-Xmx1g" amm -s "$1" 2> c$out 1> c$out)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    29
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    30
# functional tests
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
setopt no_nomatch
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    32
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    33
function scala_assert {
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
    34
  rm -rf /Users/cu/.ammonite/cache/3.* 1> /dev/null 2> /dev/null ;  
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
    35
  (ulimit -t 200; JAVA_OPTS="-Xmx1g -XX:MaxJavaStackTraceDepth=10" amm --no-warn -s "$1" 1>> $out 2>> $out)
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    36
}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    37
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    38
function scala_fail {
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
    39
  rm -rf /Users/cu/.ammonite/cache/3.* 1> /dev/null 2> /dev/null ;  
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
    40
  (ulimit -t 200; JAVA_OPTS="-Xmx1g -XX:MaxJavaStackTraceDepth=10" amm --no-warn -s "$1" | tee -a $out)
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    41
}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    42
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
    43
# remove @main
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
    44
gsed -i -e "s|^@main||g" cw05.sc
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
    45
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    46
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    47
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    48
### compilation test
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    49
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    50
echo -e "0) cw05.sc compiles?" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    51
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    52
if (scala_compile "c.sc")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    53
then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    54
    echo -e "  --> yes cw05.sc compiles\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    55
    tsts=$(( 0 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    56
else
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    57
    echo -e "  --> AMM DID NOT compile cw05.sc\n" | tee -a $out
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
    58
    #cat c$out | tee -a $out
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    59
    tsts=$(( 1 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    60
fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    61
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    62
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    63
### tokenise test
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    64
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    65
if [ $tsts -eq 0 ]
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    66
then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    67
  echo -e "1) tokenise test\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    68
  cat cw05.sc c1_add.sc > cw05_add.sc
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    69
  if (scala_assert "c1.sc")     
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    70
  then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    71
      echo -e "  --> success (+ 2.0 Marks)\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    72
      #cat $out | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    73
      marks=$(( marks + 2.0 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    74
  else
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    75
      echo -e "  --> FAILED\n" | tee -a $out
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
    76
      #cat $out | tee -a $out
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    77
  fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    78
fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    79
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    80
### parsing test
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    81
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    82
if [ $tsts -eq 0 ]
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    83
then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    84
  echo -e "2) parsing test\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    85
  cat cw05.sc c2_add.sc > cw05_add.sc
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    86
  START=$(date +%s)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    87
  
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    88
  if (scala_assert "c2.sc")     
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    89
  then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    90
      END=$(date +%s)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    91
      DIFF=$(( $END - $START ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    92
      echo -e "  This test ran for $DIFF seconds" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    93
      echo -e "  --> success (+ 3.0 Marks)\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    94
      #cat $out | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    95
      marks=$(( marks + 3.0 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    96
  else
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    97
      END=$(date +%s)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    98
      DIFF=$(( $END - $START ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    99
      echo -e "  This test ran for $DIFF seconds" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   100
      echo -e "  --> FAILED\n" | tee -a $out
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   101
      #cat $out | tee -a $out
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   102
  fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   103
fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   104
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   105
### mand test
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   106
echo >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   107
#echo -e "\n\n\n" >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   108
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   109
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   110
tstsB=$(( 1 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   111
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   112
if [ $tsts -eq 0 ]
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   113
then
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   114
    echo -e "3.1) Generating ll-file for mand.fun:" | tee -a $out
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   115
    echo >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   116
    cat cw05.sc c3_add.sc > cw051_add.sc
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   117
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   118
    if (scala_assert "c3.sc")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   119
    then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   120
        echo -e "  --> success" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   121
        tstsB=$(( 0 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   122
    else
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   123
        echo -e "  --> FAIL\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   124
        cat c$out >> $out
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   125
        #tail -25 $out | pr -to10
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   126
        tstsB=$(( 1 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   127
    fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   128
fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   129
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   130
echo >> $out
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   131
if [ $tstsB -eq 0 ]
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   132
then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   133
    echo -e "3.2) Running mand.ll and check its output" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   134
    if (scala_fail "c4.sc")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   135
    then
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   136
        echo -e "  --> success (+ 8.0 Marks)\n" | tee -a $out
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   137
        marks=$(( marks + 8.0 ))
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   138
    else
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   139
        echo -e "  --> FAIL\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   140
	echo -e "  generated:" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   141
        cat "mand.ll" | pr -to10
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   142
        #cat c$out >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   143
    fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   144
fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   145
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   146
### mand test
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   147
echo >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   148
#echo -e "\n\n\n" >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   149
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   150
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   151
if [ $tsts -eq 0 ]
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   152
then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   153
    echo -e "4.1) Generating ll-file for sqr.fun:\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   154
    echo >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   155
    cat cw05.sc c3_add.sc > cw051_add.sc
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   156
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   157
    if (scala_assert "c5.sc")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   158
    then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   159
        echo -e "  --> success" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   160
        tstsB=$(( 0 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   161
    else
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   162
        echo -e "  --> FAIL\n" | tee -a $out
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   163
        #cat c$out >> $out
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   164
        #tail -25 $out | pr -to10
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   165
        tstsB=$(( 1 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   166
    fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   167
fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   168
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   169
if [ $tstsB -eq 0 ]
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   170
then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   171
    echo -e "4.2) Running sqr.ll and check its output" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   172
    if (scala_fail "c6.sc")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   173
    then
1039
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   174
        echo -e "  --> success (+ 5.0 Marks)\n" | tee -a $out
86d59b074abe updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 977
diff changeset
   175
        marks=$(( marks + 5.0 ))
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   176
    else
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   177
        echo -e "  --> FAIL\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   178
	echo -e "  generated:" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   179
        cat "sqr.ll" | pr -to10
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   180
        #cat c$out >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   181
    fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   182
fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   183
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   184
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   185
if [ $tsts -eq 0 ]
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   186
then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   187
    echo -e "5) Does main return an integer in mand.ll (define i32 @main() {...})? " | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   188
    if (grep "define i32 @main()" "mand.ll" 1> /dev/null 2> /dev/null)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   189
    then
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   190
        echo -e "  --> success (+ 2.0 Marks)\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   191
        marks=$(( marks + 2.0 ))
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   192
    else
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   193
        echo -e "  --> FAIL\n" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   194
        #tail -25 $out | pr -to10
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   195
        #cat c$out >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   196
    fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   197
fi
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   198
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   199
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   200
## final marks
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   201
echo >> $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   202
echo "Overall mark for CW 5" | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   203
printf " %0.2f\n" $marks | tee -a $out
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   204
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   205
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   206