|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +red='\033[1;31m' |
| 4 | +green='\033[1;32m' |
| 5 | +nc='\033[0m' |
| 6 | + |
| 7 | +compiler="./compiler" |
| 8 | +interpreter="tests/ic17int" |
| 9 | +instructionFile=$(mktemp) |
| 10 | +outputFile=$(mktemp) |
| 11 | + |
| 12 | +echo "ICAgICAgICAgICAgICAgICBfX189PT09LV8gIF8tPT09PV9fXwogICAgICAgICAgIF8tLV5eXiMjIyMjLy8gICAgICBcXCMjIyMjXl5eLS1fCiAgICAgICAgXy1eIyMjIyMjIyMjIy8vICggICAgKSBcXCMjIyMjIyMjIyNeLV8KICAgICAgIC0jIyMjIyMjIyMjIyMvLyAgfFxeXi98ICBcXCMjIyMjIyMjIyMjIy0KICAgICBfLyMjIyMjIyMjIyMjIy8vICAgKEA6OkApICAgXFwjIyMjIyMjIyMjIyNcXwogICAgLyMjIyMjIyMjIyMjIyMoKCAgICAgXFwvLyAgICAgKSkjIyMjIyMjIyMjIyMjXAogICAtIyMjIyMjIyMjIyMjIyMjXFwgICAgKG9vKSAgICAvLyMjIyMjIyMjIyMjIyMjIy0KICAtIyMjIyMjIyMjIyMjIyMjIyNcXCAgLyBWViBcICAvLyMjIyMjIyMjIyMjIyMjIyMjLQogLSMjIyMjIyMjIyMjIyMjIyMjIyNcXC8gICAgICBcLy8jIyMjIyMjIyMjIyMjIyMjIyMjLQpfIy98IyMjIyMjIyMjIy9cIyMjIyMjKCAgIC9cICAgKSMjIyMjIy9cIyMjIyMjIyMjI3xcI18KfC8gfCMvXCMvXCMvXC8gIFwjL1wjI1wgIHwgIHwgIC8jIy9cIy8gIFwvXCMvXCMvXCN8IFx8CmAgIHwvICBWICBWICBgICAgViAgXCNcfCB8ICB8IHwvIy8gIFYgICAnICBWICBWICBcfCAgJwogICBgICAgYCAgYCAgICAgIGAgICAvIHwgfCAgfCB8IFwgICAnICAgICAgJyAgJyAgICcKICAgICAgICAgICAgICAgICAgICAoICB8IHwgIHwgfCAgKQogICAgICAgICAgICAgICAgICAgX19cIHwgfCAgfCB8IC9fXwogICAgICAgICAgICAgICAgICAodnZ2KFZWVikoVlZWKXZ2dikKCg==" | base64 -d |
| 13 | + |
| 14 | +printf "IFJ TESTING\n\n" |
| 15 | + |
| 16 | +for testDir in `find tests/ -maxdepth 1 -type d | sort | tail -n +2`; do |
| 17 | + if [ ! -f "$testDir/returnvalues" ]; then # Pokud neni v testech return value, slozka se preskoci |
| 18 | + continue |
| 19 | + fi |
| 20 | + |
| 21 | + printf "[ == %s == ]\n" `echo "$testDir" | cut -d/ -f2` # Nazev kolekce testu |
| 22 | + |
| 23 | + for t in `find "$testDir" -type f -regex ".*test[0-9]*" | sort -V`; do |
| 24 | + testName=`echo $t | cut -d/ -f3` |
| 25 | + expectedReturnCode=`grep "^$testName " $testDir/returnvalues | cut -d' ' -f2` |
| 26 | + $compiler < "$t" > "$instructionFile" 2>/dev/null |
| 27 | + returnCode=$? |
| 28 | + |
| 29 | + if [ $expectedReturnCode -eq $returnCode ]; then |
| 30 | + if [ $expectedReturnCode -eq 0 -a ! -f "${t}.ref" ]; then |
| 31 | + continue # Ocekava se, ze pokud se kod v poradku zkompiluje, bude ve slozce soubor na porovnani vysledku interpreteru |
| 32 | + elif [ $expectedReturnCode -eq 0 ]; then |
| 33 | + $interpreter "$instructionFile" > "$outputFile" 2>/dev/null |
| 34 | + diff "$outputFile" "${t}.ref" > /dev/null 2>&1 |
| 35 | + if [ $? -eq 0 ]; then # Porovnani vystupu interpreteru |
| 36 | + result="${green}OK${nc}" |
| 37 | + else |
| 38 | + result="${red}FAIL${nc}" |
| 39 | + fi |
| 40 | + else # Shoduji se navratove kody compilatoru a nejsou 0 |
| 41 | + result="${green}OK${nc}" |
| 42 | + fi |
| 43 | + else # Neshoduji se navratove kody compilatoru |
| 44 | + result="${red}FAIL${nc}" |
| 45 | + fi |
| 46 | + |
| 47 | + printf "$testName $result\n" |
| 48 | + |
| 49 | + |
| 50 | + done |
| 51 | + echo |
| 52 | +done |
| 53 | + |
| 54 | +rm $instructionFile |
| 55 | +rm $outputFile |
0 commit comments