diff options
Diffstat (limited to 'support/dktools/test-dk4maac.ctr')
-rw-r--r-- | support/dktools/test-dk4maac.ctr | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/support/dktools/test-dk4maac.ctr b/support/dktools/test-dk4maac.ctr new file mode 100644 index 0000000000..e93ae20697 --- /dev/null +++ b/support/dktools/test-dk4maac.ctr @@ -0,0 +1,88 @@ + +#include "dk4conf.h" + +#include <stdio.h> + +#include "dk4error.h" +#include "dk4maac.h" + +$!trace-include + + +static +void +show_error(dk4_er_t *erp) +{ + if (DK4_E_NONE != erp->ec) { + switch(erp->ec) { + case DK4_E_MATH_OVERFLOW: { + printf(" overflow"); + } break; + case DK4_E_MATH_DIVZERO: { + printf(" divzero"); + } break; + default: { + printf(" %d", erp->ec); + } break; + } + } +} + + + +int main(void) +{ + char buffer[128]; /* Input line buffer */ + dk4_er_t er; /* Error report */ + int i1; /* First operand */ + int i2; /* Second operand */ + int exc; /* Exit code */ + int cc; /* Flag: Can continue */ + char c1; /* First operand as char */ + char c2; /* Second operand as char */ + char c3; /* Result as char */ + + $!trace-init test-dk4maac.deb + $? "+ main" + exc = 0; + cc = 1; + while((1 == cc) && (fgets(buffer, sizeof(buffer), stdin))) { + if (sscanf(buffer, "%d %d", &i1, &i2) == 2) { + c1 = i1; + c2 = i2; + printf("%d %d\n", (int)c1, (int)c2); + dk4error_init(&er); + c3 = dk4ma_char_add(c1, c2, &er); + printf("\t+ %d", (int)c3); + show_error(&er); + printf("\n"); + + dk4error_init(&er); + c3 = dk4ma_char_sub(c1, c2, &er); + printf("\t- %d", (int)c3); + show_error(&er); + printf("\n"); + + dk4error_init(&er); + c3 = dk4ma_char_mul(c1, c2, &er); + printf("\t* %d", (int)c3); + show_error(&er); + printf("\n"); + + dk4error_init(&er); + c3 = dk4ma_char_div(c1, c2, &er); + printf("\t/ %d", (int)c3); + show_error(&er); + printf("\n"); + } else { + exc = 1; + fprintf(stderr, "test-dk4maac:ERROR: Invalid input line!\n"); + fflush(stderr); + cc = 0; + } + } + $? "- main" + $!trace-end + return exc; +} + |