]> git.draconx.ca Git - dxcommon.git/blobdiff - t/getline.c
dx_getline: Fix EOF handling in standard C fallback.
[dxcommon.git] / t / getline.c
index 912e57196541bd33999f5a864e2be43201c00b99..f7024ea5039b058c3b889c31a473afe033a072be 100644 (file)
@@ -39,6 +39,7 @@ int main(void)
        size_t long_size;
        size_t n = 0;
        FILE *f;
+       int rc;
 
        if (!(f = tmpfile()))
                tap_bail_out("tmpfile failed: %s\n", strerror(errno));
@@ -53,7 +54,12 @@ int main(void)
                tap_bail_out("fseek failed: %s\n", strerror(errno));
 
        /* First line: empty */
-       tap_result(dx_getline(&line, &n, f) != 0, "dx_getline");
+       rc = dx_getline(&line, &n, f);
+       if (!tap_result(rc == DX_GETLINE_OK, "dx_getline")) {
+               tap_diag("Failed, unexpected result");
+               tap_diag("   Received: %d", rc);
+               tap_diag("   Expected: %d (DX_GETLINE_OK)", DX_GETLINE_OK);
+       }
        if (!tap_result(n == 2, "alloc size")) {
                tap_diag("Failed, unexpected result");
                tap_diag("   Received: %lu", (unsigned long)n);
@@ -66,7 +72,12 @@ int main(void)
        }
 
        /* Next line: long line (buffer needs expanding) */
-       tap_result(dx_getline(&line, &n, f) != 0, "dx_getline");
+       rc = dx_getline(&line, &n, f);
+       if (!tap_result(rc == DX_GETLINE_OK, "dx_getline")) {
+               tap_diag("Failed, unexpected result");
+               tap_diag("   Received: %d", rc);
+               tap_diag("   Expected: %d (DX_GETLINE_OK)", DX_GETLINE_OK);
+       }
        if (!tap_result(n > sizeof LONGLINE, "alloc size")) {
                tap_diag("Failed, unexpected result");
                tap_diag("   Received: %lu", (unsigned long)n);
@@ -80,7 +91,12 @@ int main(void)
 
        /* Next line: long line (buffer does not need expanding) */
        long_size = n;
-       tap_result(dx_getline(&line, &n, f) != 0, "dx_getline");
+       rc = dx_getline(&line, &n, f);
+       if (!tap_result(rc == DX_GETLINE_OK, "dx_getline")) {
+               tap_diag("Failed, unexpected result");
+               tap_diag("   Received: %d", rc);
+               tap_diag("   Expected: %d (DX_GETLINE_OK)", DX_GETLINE_OK);
+       }
        if (!tap_result(n == long_size, "alloc size")) {
                tap_diag("Failed, unexpected result");
                tap_diag("   Received: %lu", (unsigned long)n);
@@ -94,7 +110,12 @@ int main(void)
 
        /* Next line: long line (new buffer allocation) */
        free(line); line = NULL; n = 0;
-       tap_result(dx_getline(&line, &n, f) != 0, "dx_getline");
+       rc = dx_getline(&line, &n, f);
+       if (!tap_result(rc == DX_GETLINE_OK, "dx_getline")) {
+               tap_diag("Failed, unexpected result");
+               tap_diag("   Received: %d", rc);
+               tap_diag("   Expected: %d (DX_GETLINE_OK)", DX_GETLINE_OK);
+       }
        if (!tap_result(n == long_size, "alloc size")) {
                tap_diag("Failed, unexpected result");
                tap_diag("   Received: %lu", (unsigned long)n);
@@ -107,7 +128,12 @@ int main(void)
        }
 
        /* Next line: short line */
-       tap_result(dx_getline(&line, &n, f) != 0, "dx_getline");
+       rc = dx_getline(&line, &n, f);
+       if (!tap_result(rc == DX_GETLINE_OK, "dx_getline")) {
+               tap_diag("Failed, unexpected result");
+               tap_diag("   Received: %d", rc);
+               tap_diag("   Expected: %d (DX_GETLINE_OK)", DX_GETLINE_OK);
+       }
        if (!tap_result(n == long_size, "alloc size")) {
                tap_diag("Failed, unexpected result");
                tap_diag("   Received: %lu", (unsigned long)n);
@@ -119,5 +145,18 @@ int main(void)
                tap_diag("   Expected: \"hellorld\"");
        }
 
+       /* Next line: end of file */
+       rc = dx_getline(&line, &n, f);
+       if (!tap_result(rc == DX_GETLINE_EOF, "dx_getline (end of file)")) {
+               tap_diag("Failed, unexpected result");
+               tap_diag("   Received: %d", rc);
+               tap_diag("   Expected: %d (DX_GETLINE_EOF)", DX_GETLINE_EOF);
+       }
+       if (!tap_result(n == long_size, "alloc size")) {
+               tap_diag("Failed, unexpected result");
+               tap_diag("   Received: %lu", (unsigned long)n);
+               tap_diag("   Expected: %lu", (unsigned long)long_size);
+       }
+
        tap_done();
 }