[FFmpeg-cvslog] r17025 - in trunk/libavutil: Makefile base64.c

stefano subversion
Sat Feb 7 00:29:25 CET 2009


Author: stefano
Date: Sat Feb  7 00:29:25 2009
New Revision: 17025

Log:
Add a new test program for base64, based on that removed in r17024.

Modified:
   trunk/libavutil/Makefile
   trunk/libavutil/base64.c

Modified: trunk/libavutil/Makefile
==============================================================================
--- trunk/libavutil/Makefile	Sat Feb  7 00:24:17 2009	(r17024)
+++ trunk/libavutil/Makefile	Sat Feb  7 00:29:25 2009	(r17025)
@@ -41,7 +41,7 @@ OBJS = adler32.o                        
        tree.o                                                           \
        utils.o                                                          \
 
-TESTS = $(addsuffix -test$(EXESUF), adler32 aes crc des lls md5 pca random sha1 softfloat tree)
+TESTS = $(addsuffix -test$(EXESUF), adler32 aes base64 crc des lls md5 pca random sha1 softfloat tree)
 
 DIRS = arm bfin sh4 x86
 

Modified: trunk/libavutil/base64.c
==============================================================================
--- trunk/libavutil/base64.c	Sat Feb  7 00:24:17 2009	(r17024)
+++ trunk/libavutil/base64.c	Sat Feb  7 00:29:25 2009	(r17025)
@@ -98,3 +98,66 @@ char *av_base64_encode(char * buf, int b
 
     return ret;
 }
+
+#ifdef TEST
+
+#undef printf
+
+#define MAX_DATA_SIZE    1024
+#define MAX_ENCODED_SIZE 2048
+
+int test_encode_decode(const uint8_t *data, unsigned int data_size, const char *encoded_ref)
+{
+    char  encoded[MAX_ENCODED_SIZE];
+    uint8_t data2[MAX_DATA_SIZE];
+    int data2_size, max_data2_size = MAX_DATA_SIZE;
+
+    if (!av_base64_encode(encoded, MAX_ENCODED_SIZE, data, data_size)) {
+        printf("Failed: cannot encode the input data\n");
+        return 1;
+    }
+    if (encoded_ref && strcmp(encoded, encoded_ref)) {
+        printf("Failed: encoded string differs from reference\n"
+               "Encoded:\n%s\nReference:\n%s\n", encoded, encoded_ref);
+        return 1;
+    }
+
+    if ((data2_size = av_base64_decode(data2, encoded, max_data2_size)) < 0) {
+        printf("Failed: cannot decode the encoded string\n"
+               "Encoded:\n%s\n", encoded);
+        return 1;
+    }
+    if (memcmp(data2, data, data_size)) {
+        printf("Failed: encoded/decoded data differs from original data\n");
+        return 1;
+    }
+
+    printf("Passed!\n");
+    return 0;
+}
+
+int main(void)
+{
+    int i, error_count = 0;
+    struct test {
+        const uint8_t *data;
+        const char *encoded_ref;
+    } tests[] = {
+        { "",        ""},
+        { "1",       "MQ=="},
+        { "22",      "MjI="},
+        { "333",     "MzMz"},
+        { "4444",    "NDQ0NA=="},
+        { "55555",   "NTU1NTU="},
+        { "666666",  "NjY2NjY2"},
+        { "abc:def", "YWJjOmRlZg=="},
+    };
+
+    printf("Encoding/decoding tests\n");
+    for (i = 0; i < FF_ARRAY_ELEMS(tests); i++)
+        error_count += test_encode_decode(tests[i].data, strlen(tests[i].data), tests[i].encoded_ref);
+
+    return error_count;
+}
+
+#endif




More information about the ffmpeg-cvslog mailing list