Implemented tee.
[frac.git] / test.c
blobec4d43c3054e0da726e41020762d2e8681af4f87
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <gmp.h>
5 #include "cf.h"
7 void cf_expect_dec(cf_t x, char *result, char *filename, int line) {
8 mpz_t z;
9 mpz_init(z);
10 cf_t conv;
11 conv = cf_new_cf_to_decimal(x);
12 int len = strlen(result);
14 char s[len + 1];
15 cf_get(z, conv);
16 int i = 0;
17 if (cf_sign(conv) < 0) {
18 s[i] = '-';
19 i++;
21 if (i >= len) goto testit;
22 i += gmp_snprintf(s + i, len - i + 1, "%Zd", z);
23 if (i >= len) goto testit;
24 s[i] = '.';
25 i++;
26 if (i >= len) goto testit;
28 while (i < len) {
29 cf_get(z, conv);
30 s[i] = mpz_get_ui(z) + '0';
31 i++;
34 testit:
35 s[len] = 0;
36 if (strcmp(s, result)) {
37 fprintf(stderr, "\n%s:%d: bad continued fraction decimal expansion\n",
38 filename, line);
39 fprintf(stderr, " expected: %s\n", result);
40 fprintf(stderr, " actual: %s\n\n", s);
43 cf_free(conv);
44 mpz_clear(z);
47 void cf_new_expect_dec(cf_t (*cf_new_fn)(), char *result,
48 char *filename, int line) {
49 cf_t x = cf_new_fn();
50 cf_expect_dec(x, result, filename, line);
51 cf_free(x);