8 #define TEST(r, f, x, m) ( \
9 ((r) = (f)) == (x) || \
10 (t_error("%s failed (" m ")\n", #f, r, x), 0) )
12 #define TEST_E(f) ( (errno = 0), (f) || \
13 (t_error("%s failed (errno = %d)\n", #f, errno), 0) )
15 #define TEST_S(s, x, m) ( \
17 (t_error("[%s] != [%s] (%s)\n", s, x, m), 0) )
19 #define TEST_M(s, x, n, m) ( \
20 !memcmp((s),(x),(n)) || \
21 (t_error("[%s] != [%s] (%s)\n", s, x, m), 0) )
32 TEST_E(f
= open_memstream(&s
, &l
));
33 TEST_E(putc('a', f
) == 'a');
34 TEST_E(putc('b', f
) == 'b');
35 TEST_E(putc('c', f
) == 'c');
38 if (s
) TEST_S(s
, "abc", "wrong output");
42 TEST_E(f
= open_memstream(&s
, &l
));
43 TEST_E(fseek(f
,1,SEEK_CUR
)>=0);
44 TEST_E(putc('q', f
) == 'q');
46 if (s
) TEST_M(s
, "\0q", 3, "wrong output");
47 TEST(i
, fseek(f
,-3,SEEK_CUR
), -1, "invalid seek allowed");
48 TEST(i
, errno
, EINVAL
, "%d != %d");
49 TEST(i
, ftell(f
), 2, "%d != %d");
50 TEST_E(fseek(f
,-2,SEEK_CUR
)>=0);
51 TEST_E(putc('e', f
) == 'e');
53 if (s
) TEST_S(s
, "eq", "wrong output");
57 TEST_E(f
= fmemopen(buf
, 10, "r+"));
58 TEST_E(fputs("hello", f
) >= 0);
59 TEST_E(fputc(0, f
)==0);
60 TEST_E(fseek(f
, 0, SEEK_SET
)>=0);
62 TEST_E(fscanf(f
, "hello%n", &i
)==0);
63 TEST(i
, i
, 5, "%d != %d");
64 TEST(i
, ftell(f
), 5, "%d != %d");
66 TEST(i
, fseek(f
, 6, SEEK_CUR
)<0, 1, "");
67 TEST(i
, errno
!=0, 1, "");
68 TEST(i
, ftell(f
), 5, "%d != %d");
69 TEST_S(buf
, "hello", "");
72 TEST_E(f
= fmemopen(buf
, 10, "a+"));
73 TEST(i
, ftell(f
), 5, "%d != %d");
74 TEST_E(fseek(f
, 0, SEEK_SET
)>=0);
75 TEST(i
, getc(f
), 'h', "%d != %d");
76 TEST(i
, getc(f
), 'e', "%d != %d");
77 TEST(i
, getc(f
), 'l', "%d != %d");
78 TEST(i
, getc(f
), 'l', "%d != %d");
79 TEST(i
, getc(f
), 'o', "%d != %d");
80 TEST(i
, getc(f
), EOF
, "%d != %d");
81 TEST_E(fseek(f
, 6, SEEK_SET
)>=0);
82 TEST(i
, ftell(f
), 6, "%d != %d");
83 TEST(i
, getc(f
), EOF
, "%d != %d");
84 TEST(i
, ftell(f
), 6, "%d != %d");
85 TEST_E(fseek(f
, 0, SEEK_SET
)>=0);
86 TEST(i
, getc(f
), 'h', "%d != %d");
87 TEST_E(fseek(f
, 0, SEEK_CUR
)>=0);
89 TEST_E(fprintf(f
, "%d", i
)==3);
91 TEST(i
, ftell(f
), 8, "%d != %d");
92 TEST_S(buf
, "hello104", "");