arm: codeb cases added
[testub10.git] / scripts / modlvatest_gesamt_arm.sh
1 #! /bin/bash
2
3 beispiel=gesamt_arm
4 PROGRAM=./$beispiel
5
6 errnum=0
7 prgnum=0
8
9 LOC=~/test/scripts/
10 #LOC=/usr/ftp/pub/ubvl/test/$beispiel
11 LOC2=~/test/$beispiel
12
13 #/usr/ftp/pub/ublu/test/accounttest || exit 1
14 allow_null_glob_expansion=1
15
16 if [ ! -d ~/abgabe/$beispiel ]; then
17   echo "Fehler: Verzeichnis ~/abgabe/$beispiel existiert nicht."
18   exit 1
19 else
20   cd ~/abgabe/$beispiel
21   echo 'Teste "make clean"'
22   make clean
23   #/usr/ftp/pub/ubvl/test/cleantest
24   echo 'Teste "make"'
25   make
26 fi
27
28 if test ! -x $PROGRAM
29 then
30         echo "Fehler: Kein Programm $PROGRAM"
31         exit 1
32 fi
33 let prgnum=0
34 for i in $LOC/*.0 $LOC2/*.0
35 do
36         if [ -f $i ]; then
37             let prgnum=prgnum+1
38             let errorfound=0
39             echo "==========> Eingabe von $i:"
40             cat $i
41             echo
42             RESFILE=test${beispiel}out$$
43             $PROGRAM <$i >$RESFILE
44             retval=$?
45             echo -n "Übersetzung: "
46             if test $retval -eq 0
47             then
48                     echo "Status korrekt"
49             else
50                     echo "[Errot] Status=$retval. Erwartet: 0"
51                     let errorfound=1
52             fi
53             echo
54             echo "Ausgabe:"
55                 #if [ -f ~/test/scripts/clr.py ]; then
56                 #       cat $RESFILE | ~/test/scripts/clr.py
57                 #else
58                         cat $RESFILE
59                 #fi
60             mv -f $RESFILE $RESFILE.s
61             CALLFILE=${i%.*}.call
62             echo
63             if [ ! -f $CALLFILE ]; then
64                 echo "Fehler: Datei $CALLFILE existiert nicht, kann Code nicht ausführen..."
65                 exit 1
66             else
67                 echo "Übersetze und linke das Testprogramm:"
68                 if cc -g -I. -DCALL=\"$CALLFILE\" $LOC/testmain.c $LOC/callingconvention.o $RESFILE.s; then
69                     echo
70                     echo "Rufe folgendes Codefragment auf:"
71                     cat $CALLFILE
72                     echo
73                     ./a.out 
74                         # in order to bypass a bus error on codea_abgabe_aj.0 (wtf???)
75                         cp ./a.out wtf.out
76                     retval=$?
77                     # test callee saved registers
78                     if [ "$retval" -ge 12 ] && [ "$retval" -le 15 ]; then
79                         echo "[Error] Callee-saved register %r$retval modified."
80                         let errorfound=1
81                     elif [ "$retval" -eq 11 ]; then
82                         echo "[Error] Callee-saved register %rbx modified."
83                         let errorfound=1
84                     elif [ "$retval" -eq 16 ]; then
85                         echo "[Error] Callee-saved register %rbp modified."
86                         let errorfound=1
87                     elif [ "$retval" -eq 30 ]; then
88                         echo "[Error] Stack pointer %rsp modified."
89                         let errorfound=1
90                     else
91                         # test signals  
92                         test $retval -gt 127
93                         retsig=$?
94                         test ${i##*.} = xin
95                         expsig=$?
96                         if test $retsig -eq $expsig; then
97                             if test $retval -eq 1; then
98                                 echo "[Error] Das Ergebnis des Aufrufs ist falsch."
99                                 let errorfound=1
100                             elif test $retval -eq 0; then
101                                 echo "Das Ergebnis des Ausdrucks ist korrekt."
102                             else
103                                 echo "[Error] Erzeugter Code verhaelt sich bzgl. Signalerzeugung anders als erwartet."
104                                 let errorfound=1
105                             fi
106                         else
107                             echo "[Error] Erzeugter Code verhaelt sich bezueglich Signalerzeugung anders als erwartet."
108                             let errorfound=1
109                             echo "Rueckgabewert = $retval";
110                         fi
111                     fi
112                     echo
113                 else
114                     echo "[Error] Erzeugter Code konnte nicht assembliert und gelinkt werden."
115                     let errorfound=1
116                 fi
117             fi
118             let errnum=errnum+errorfound
119                 if [ 1 -eq $errorfound ]; then
120                         rm *.s
121                         rm *.out
122                         exit 3;
123                 fi
124             rm -f a.out $RESFILE $RESFILE.s
125         fi
126 done
127
128 for i in $LOC/*.[123] $LOC2/*.[123]
129 do
130         if [ -f $i ]; then
131         let prgnum=prgnum+1
132         echo "==========> Eingabe von $i:"
133         cat $i
134         echo
135         echo "Ausgabe:"
136         $PROGRAM <$i
137         retval=$?
138         if test $retval -eq ${i#*.}
139         then
140                 echo "Status: korrekt"
141         else
142                 echo "[Error] Status: $retval. Erwartet: ${i#*.}"
143                 let errnum=errnum+1
144                 exit 3;
145         fi
146         echo
147 fi
148 done
149 let corrnum=prgnum-errnum
150 echo "Statistics: "
151 echo "==========="
152 echo "           $prgnum Tests total"
153 echo "           $corrnum Tests passed"
154 echo "           $errnum Tests failed"