summaryrefslogtreecommitdiff
path: root/support/dktools/test-dk4maai.ctr
blob: c828dbfb774a0664341c86b74840a1ade9346946 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "dk4conf.h"

#include <stdio.h>

#include "dk4error.h"
#include "dk4maai.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 */
  int		c1;		/* First operand as char */
  int		c2;		/* Second operand as char */
  int		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_int_add(c1, c2, &er);
      printf("\t+ %d", (int)c3);
      show_error(&er);
      printf("\n");

      dk4error_init(&er);
      c3 = dk4ma_int_sub(c1, c2, &er);
      printf("\t- %d", (int)c3);
      show_error(&er);
      printf("\n");

      dk4error_init(&er);
      c3 = dk4ma_int_mul(c1, c2, &er);
      printf("\t* %d", (int)c3);
      show_error(&er);
      printf("\n");

      dk4error_init(&er);
      c3 = dk4ma_int_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;
}