reading

Tools for reading input
git clone git://www.tkruger.se/reading.git
Log | Files | Refs | README

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 }