diff options
Diffstat (limited to 'memstream.c')
-rw-r--r-- | memstream.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/memstream.c b/memstream.c index 99be094..cdb4b0c 100644 --- a/memstream.c +++ b/memstream.c @@ -25,6 +25,7 @@ int test_memstream(void) FILE *f; char *s; size_t l; + char buf[100]; int i; s = 0; @@ -53,5 +54,43 @@ int test_memstream(void) fclose(f); free(s); + TEST_E(f = fmemopen(buf, 10, "r+")); + TEST_E(fputs("hello", f) >= 0); + TEST_E(fputc(0, f)==0); + TEST_E(fseek(f, 0, SEEK_SET)>=0); + i=0; + TEST_E(fscanf(f, "hello%n", &i)==0); + TEST(i, i, 5, "%d != %d"); + TEST(i, ftell(f), 5, "%d != %d"); + errno = 0; + TEST(i, fseek(f, 6, SEEK_CUR)<0, 1, ""); + TEST(i, errno!=0, 1, ""); + TEST(i, ftell(f), 5, "%d != %d"); + TEST_S(buf, "hello", ""); + fclose(f); + + TEST_E(f = fmemopen(buf, 10, "a+")); + TEST(i, ftell(f), 5, "%d != %d"); + TEST_E(fseek(f, 0, SEEK_SET)>=0); + TEST(i, getc(f), 'h', "%d != %d"); + TEST(i, getc(f), 'e', "%d != %d"); + TEST(i, getc(f), 'l', "%d != %d"); + TEST(i, getc(f), 'l', "%d != %d"); + TEST(i, getc(f), 'o', "%d != %d"); + TEST(i, getc(f), EOF, "%d != %d"); + TEST_E(fseek(f, 6, SEEK_SET)>=0); + TEST(i, ftell(f), 6, "%d != %d"); + TEST(i, getc(f), EOF, "%d != %d"); + TEST(i, ftell(f), 6, "%d != %d"); + TEST_E(fseek(f, 0, SEEK_SET)>=0); + TEST(i, getc(f), 'h', "%d != %d"); + TEST_E(fseek(f, 0, SEEK_CUR)>=0); + buf[7] = 'x'; + TEST_E(fprintf(f, "%d", i)==3); + TEST_E(fflush(f)==0); + TEST(i, ftell(f), 8, "%d != %d"); + TEST_S(buf, "hello104", ""); + fclose(f); + return err; } |