ed928c5fb8750a6d2ab97adb73c66bd66c2f3b82
[uebersetzerbau-ss10.git] / asmb / asmbtest.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 extern unsigned char *asmb(unsigned char *a);
6
7 unsigned char *asmb_ref(unsigned char *s)
8 {
9         unsigned long i;
10         for (i=0; s[i]; i++) {
11                 unsigned char c=s[i];
12                 c += (c>='A' && c<='Z') ? 'a'-'A' : 0;
13                 s[i] = c;
14         }
15         return s;
16 }
17
18 #define NUM_TESTCASES 13
19 int main()
20 {
21         char *input[NUM_TESTCASES]={"asdfABCDEFGHKL54", 
22                 "foofuuMUHkk", 
23                 "AbC", 
24                 "BLA|MUHMKUH|KA", 
25                 "ASDFNERABHDFKHDFKLGJAHGLKAHGLKASHGEARNAKLVNLVAANLSADJVHASDLGH", 
26                 "asdfABCDEFGHKL544", 
27                 "asdfA\0BCDEFGHKL5", 
28                 "foofuuMUHkk\0AAAA", 
29                 "AbC\0AAAAAAAAAAAA", 
30                 "BLA|MUHMKUH|KAA\0", 
31                 "ASDFASDFasdfasdfaBC\0AAAABBBBCCCC", 
32                 "ASDFASDFasdfasdfaBC0AAAABBBBCCCCmuhKA\0asASDFasdf" ,
33                 "ASas\0ASas"
34         };
35         int len[NUM_TESTCASES] = {16,
36                 11,
37                 3,
38                 14,
39                 61,
40                 17,
41                 16,
42                 16,
43                 16,
44                 16,
45                 32,
46                 48,
47                 9
48         };
49         char *output_our, *output_ref;
50         char *input_our,  *input_ref;
51
52         int i,j;
53         for(i = 0; i < NUM_TESTCASES; i++) {
54                 input_our = (char *) malloc (len[i]);
55                 input_ref = (char *) malloc (len[i]);
56
57                 (void) memcpy(input_our, input[i], len[i]+1);
58                 (void) memcpy(input_ref, input[i], len[i]+1);
59
60                 output_our = (char *) asmb((unsigned char *) input_our);
61                 output_ref = (char *) asmb_ref((unsigned char *) input_ref);
62
63                 if(memcmp(output_our,output_ref, len[i]) != 0) {
64                         if(strncmp(output_our, output_ref, len[i]) == 0)
65                                 printf("Testfall%02i nach Nullbyte ungleich\n", i);
66                         else
67                                 printf("Testfall%02i falsch!\n", i);
68
69                         printf("Input(\"%s\"):\n\t", input[i]);
70                         for(j = 0; j <= len[i]; j++) {
71                                 printf("%02X ", input[i][j]);
72                         }
73                         printf("\nerwartet:\n\t");
74                         for(j = 0; j <= len[i]; j++) {
75                                 printf("%02X ", output_ref[j]);
76                         }
77                         printf("\ntatsaechliches Ergebnis:\n\t");
78                         for(j = 0; j <= len[i]; j++) {
79                                 printf("%02X ", output_our[j]);
80                         }
81                         printf("\n");
82                 }
83                 else {
84                         printf("Testfall%02i korrekt\n", i);
85                 }
86                 free(input_our);
87                 free(input_ref);
88         }
89         return 0;
90 }
91