]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
tweak base64 unittest
authorEric Bollengier <eric@baculasystems.com>
Tue, 27 Oct 2020 14:58:54 +0000 (15:58 +0100)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:02:58 +0000 (09:02 +0100)
bacula/src/lib/base64.c

index 9c92b44b2d3dc49597864922c7ca7b521992f115..f18d94cc8355f9753cd168c5f67ec8761efe9d5b 100644 (file)
@@ -405,9 +405,42 @@ int main()
       fprintf(stderr, "%c", rnddata[a]);
    }
 */
+
+   /* test vectors from https://www.base64encode.org/ */
+   const char * testdata1 = "Man is distinguished, not only by his reason, but ...";
+   const char * testvect1 = "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCAuLi4=";
+   // const char * filltest1  = "a";
+   // const char * fillres1   = "YQ==";
+   // const char * filltest2  = "ab";
+   // const char * fillres2   = "YWI=";
+   // const char * filltest3  = "abc";
+   // const char * fillres3   = "YWJj";
+   // const char * filltest4  = "abcd";
+   // const char * fillres4   = "YWJjZA==";
+   // const char * filltest5  = "abcde";
+   // const char * fillres5   = "YWJjZGU=";
+   // const char * filltest6  = "abcdef";
+   // const char * fillres6   = "YWJjZGVm";
+
+   char * vdata1 = (char*)malloc(strlen(testdata1) + 10);
+   char * vvect1 = (char*)malloc(strlen(testvect1) + 10);
+
+   len = bin_to_base64(vvect1, strlen(testvect1) + 10, (char*)testdata1, strlen(testdata1), true);
+   is(len, strlen(testvect1), "test bin_to_base64");
+   Dmsg1(0, "%s\n", testvect1);
+   ok(strcmp(testvect1, vvect1) == 0, "test bin_to_base64 content");
+
+   len = base64_to_bin(vdata1, strlen(testdata1) + 10, (char*)testvect1, strlen(testvect1));
+   is(len, strlen(testdata1), "test base64_to_bin");
+   vdata1[len] = 0;
+   ok(strcmp(testdata1, vdata1) == 0, "test base64_to_bin content");
+
+   free(vdata1);
+   free(vvect1);
+
    /* encode reference binary data to base64 */
    len = bin_to_base64(buf, 30, (char*)rnddata, 16, true);
-   ok(len == strlen(resb16), "Checking bin_to_base64 encoded length");
+   is(len, strlen(resb16), "Checking bin_to_base64 encoded length");
    ok(strcmp(resb16, buf) == 0, "Checking bin_to_base64 encoded data");
    /* decode reference base64 data to bin*/
    len = base64_to_bin(binbuf, 30, (char*)resb16, strlen(resb16));