summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2014-08-02 16:54:24 +0200
committerSébastien Helleu <flashcode@flashtux.org>2014-08-02 16:54:24 +0200
commit28cb1ae6f5f08baf224a4d1ac57a38af5a9e36f8 (patch)
treec39e3148abda59153e6146bb28069c083684ebc1 /tests
parentcf3e0ccbfd0547473c53c2f465e099972e87cc4d (diff)
downloadweechat-28cb1ae6f5f08baf224a4d1ac57a38af5a9e36f8.zip
tests: add tests of base 16/64 decoding/encoding
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/core/test-string.cpp77
1 files changed, 76 insertions, 1 deletions
diff --git a/tests/unit/core/test-string.cpp b/tests/unit/core/test-string.cpp
index 4ffe28761..4551c5945 100644
--- a/tests/unit/core/test-string.cpp
+++ b/tests/unit/core/test-string.cpp
@@ -737,7 +737,82 @@ TEST(String, FormatSize)
TEST(String, BaseN)
{
- /* TODO: write tests */
+ char str[1024];
+ const char *str_abc = "abc";
+ const char *str_abc_base64 = "YWJj";
+ const char *str_base64[][2] =
+ { { "", "" },
+ { "A", "QQ==" },
+ { "B", "Qg==" },
+ { "C", "Qw==" },
+ { "D", "RA==" },
+ { "abc", "YWJj" },
+ { "This is a test.", "VGhpcyBpcyBhIHRlc3Qu" },
+ { "This is a test..", "VGhpcyBpcyBhIHRlc3QuLg==" },
+ { "This is a test...", "VGhpcyBpcyBhIHRlc3QuLi4=" },
+ { "This is a test....", "VGhpcyBpcyBhIHRlc3QuLi4u" },
+ { "This is a long long long sentence here...",
+ "VGhpcyBpcyBhIGxvbmcgbG9uZyBsb25nIHNlbnRlbmNlIGhlcmUuLi4=" },
+ { "Another example for base64",
+ "QW5vdGhlciBleGFtcGxlIGZvciBiYXNlNjQ=" },
+ { "Another example for base64.",
+ "QW5vdGhlciBleGFtcGxlIGZvciBiYXNlNjQu" },
+ { "Another example for base64..",
+ "QW5vdGhlciBleGFtcGxlIGZvciBiYXNlNjQuLg==" },
+ { "Another example for base64...",
+ "QW5vdGhlciBleGFtcGxlIGZvciBiYXNlNjQuLi4=" },
+ { NULL, NULL } };
+ int i, length;
+
+ /* string_encode_base16 */
+ string_encode_base16 (NULL, 0, NULL);
+ string_encode_base16 (NULL, 0, str);
+ string_encode_base16 ("", 0, NULL);
+ str[0] = 0xAA;
+ string_encode_base16 ("", -1, str);
+ BYTES_EQUAL(0x0, str[0]);
+ str[0] = 0xAA;
+ string_encode_base16 ("", 0, str);
+ BYTES_EQUAL(0x0, str[0]);
+ string_encode_base16 ("abc", 3, str);
+ STRCMP_EQUAL("616263", str);
+
+ /* string_decode_base16 */
+ LONGS_EQUAL(0, string_decode_base16 (NULL, NULL));
+ LONGS_EQUAL(0, string_decode_base16 (NULL, str));
+ LONGS_EQUAL(0, string_decode_base16 ("", NULL));
+ LONGS_EQUAL(0, string_decode_base16 ("", str));
+ LONGS_EQUAL(3, string_decode_base16 ("616263", str));
+ STRCMP_EQUAL("abc", str);
+
+ /* string_encode_base64 */
+ string_encode_base64 (NULL, 0, NULL);
+ string_encode_base64 (NULL, 0, str);
+ string_encode_base64 ("", 0, NULL);
+ str[0] = 0xAA;
+ string_encode_base64 ("", -1, str);
+ BYTES_EQUAL(0x0, str[0]);
+ str[0] = 0xAA;
+ string_encode_base64 ("", 0, str);
+ BYTES_EQUAL(0x0, str[0]);
+ for (i = 0; str_base64[i][0]; i++)
+ {
+ string_encode_base64 (str_base64[i][0], strlen (str_base64[i][0]),
+ str);
+ STRCMP_EQUAL(str_base64[i][1], str);
+ }
+
+ /* string_decode_base64 */
+ LONGS_EQUAL(0, string_decode_base64 (NULL, NULL));
+ LONGS_EQUAL(0, string_decode_base64 (NULL, str));
+ LONGS_EQUAL(0, string_decode_base64 ("", NULL));
+ LONGS_EQUAL(0, string_decode_base64 ("", str));
+ for (i = 0; str_base64[i][0]; i++)
+ {
+ length = string_decode_base64 (str_base64[i][1], str);
+ STRCMP_EQUAL(str_base64[i][0], str);
+ LONGS_EQUAL(strlen (str_base64[i][0]), length);
+ }
}
/*