test_reading.c (2229B)
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <assert.h> 4 #include "reading.h" 5 6 static void test_reading_readall() { 7 char *read; 8 size_t n = readall(&read, "testfiles/testfile1.txt"); 9 10 assert(n == 49); 11 assert( 12 strcmp(read, "Hello, this is a test file.\nIt contains two rows.") == 0); 13 14 free(read); 15 } 16 17 static void test_reading_readlines() { 18 char **read; 19 size_t n = readlines(&read, "testfiles/testfile1.txt"); 20 21 assert(n == 2); 22 assert(strcmp(read[0], "Hello, this is a test file.\n") == 0); 23 assert(strcmp(read[1], "It contains two rows.") == 0); 24 25 size_t i; 26 for (i = 0; i < n; i++) 27 free(read[i]); 28 free(read); 29 } 30 31 static void test_reading_read_next_u64() { 32 FILE *fp = fopen("testfiles/testfile2.txt", "r"); 33 34 uint64_t r; 35 assert(read_next_u64(&r, fp) == 4); 36 assert(r == 4711); 37 assert(read_next_u64(&r, fp) == 2); 38 assert(r == 65); 39 assert(read_next_u64(&r, fp) == 4); 40 assert(r == 1337); 41 assert(read_next_u64(&r, fp) == 1); 42 assert(r == 1); 43 assert(read_next_u64(&r, fp) == 1); 44 assert(r == 0); 45 46 fclose(fp); 47 } 48 49 static void test_reading_sread_next_u64() { 50 char tst[] = "foobarm4711asd65,1337.1\n0"; 51 char *n = tst; 52 uint64_t r; 53 54 assert((n = sread_next_u64(&r, n)) != NULL); 55 assert(r == 4711); 56 assert((n = sread_next_u64(&r, n)) != NULL); 57 assert(r == 65); 58 assert((n = sread_next_u64(&r, n)) != NULL); 59 assert(r == 1337); 60 assert((n = sread_next_u64(&r, n)) != NULL); 61 assert(r == 1); 62 assert((n = sread_next_u64(&r, n)) == NULL); 63 assert(r == 0); 64 } 65 66 static void test_reading_sread_next_i64() { 67 char tst[] = "foob-arm-4711asd65,1337.1\n0"; 68 char *n = tst; 69 int64_t r; 70 71 assert((n = sread_next_i64(&r, n)) != NULL); 72 assert(r == 0); 73 assert((n = sread_next_i64(&r, n)) != NULL); 74 assert(r == -4711); 75 assert((n = sread_next_i64(&r, n)) != NULL); 76 assert(r == 65); 77 assert((n = sread_next_i64(&r, n)) != NULL); 78 assert(r == 1337); 79 assert((n = sread_next_i64(&r, n)) != NULL); 80 assert(r == 1); 81 assert((n = sread_next_i64(&r, n)) == NULL); 82 assert(r == 0); 83 } 84 85 int main() { 86 test_reading_readall(); 87 test_reading_readlines(); 88 test_reading_read_next_u64(); 89 test_reading_sread_next_u64(); 90 test_reading_sread_next_i64(); 91 92 printf("test ok\n"); 93 }