asmb: struktuelle aenderungen
[uebersetzerbau-ss10.git] / asmb / asmbtest.c
deleted file mode 120000 (symlink)
index 8a03e9439ec4377b095a0e031e0f301a8888e6de..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1 +0,0 @@
-main.c
\ No newline at end of file
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..b8932f7594b879b7c70814dc62b5def01817e37d
--- /dev/null
@@ -0,0 +1,81 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+extern unsigned char *asmb(unsigned char *a);
+
+unsigned char *asmb_ref(unsigned char *s)
+{
+       unsigned long i;
+       for (i=0; s[i]; i++) {
+               unsigned char c=s[i];
+               c += (c>='A' && c<='Z') ? 'a'-'A' : 0;
+               s[i] = c;
+       }
+       return s;
+}
+
+#define NUM_TESTCASES 13
+int main() {
+       char *input[NUM_TESTCASES]={"asdfABCDEFGHKL54", 
+               "foofuuMUHkk", 
+               "AbC", 
+               "BLA|MUHMKUH|KA", 
+               "ASDFNERABHDFKHDFKLGJAHGLKAHGLKASHGEARNAKLVNLVAANLSADJVHASDLGH", 
+               "asdfABCDEFGHKL544", 
+               "asdfA\0BCDEFGHKL5", 
+               "foofuuMUHkk\0AAAA", 
+               "AbC\0AAAAAAAAAAAA", 
+               "BLA|MUHMKUH|KAA\0", 
+               "ASDFASDFasdfasdfaBC\0AAAABBBBCCCC", 
+               "ASDFASDFasdfasdfaBC0AAAABBBBCCCCmuhKA\0asASDFasdf" ,
+               "ASas\0ASas"
+       };
+       int len[NUM_TESTCASES] = {16,
+               11,
+               3,
+               14,
+               61,
+               17,
+               16,
+               16,
+               16,
+               16,
+               32,
+               48,
+               9
+       };
+       char *output_our, *output_ref;
+       char *input_our,  *input_ref;
+
+       int i,j;
+       for(i = 0; i < NUM_TESTCASES; i++) {
+               input_our = strndup(input[i], len[i]);
+               input_ref = strndup(input[i], len[i]);
+
+               output_our = (char *) asmb((unsigned char *) input_our);
+               output_ref = (char *) asmb_ref((unsigned char *) input_ref);
+               if(memcmp(output_our,output_ref, len[i]) != 0) {
+                       printf("Testfall%02i falsch!\n Input(\"%s\"):\n\t", i, input[i]);
+                       for(j = 0; j <= len[i]; j++) {
+                               printf("%02X ", input[i][j]);
+                       }
+                       printf("\nerwartet:\n\t");
+                       for(j = 0; j <= len[i]; j++) {
+                               printf("%02X ", output_ref[j]);
+                       }
+                       printf("\ntatsaechliches Ergebnis:\n\t");
+                       for(j = 0; j <= len[i]; j++) {
+                               printf("%02X ", output_our[j]);
+                       }
+                       printf("\n");
+               }
+               else {
+                       printf("Testfall%02i korrekt\n", i);
+               }
+               free(input_our);
+               free(input_ref);
+       }
+       return 0;
+}
+