31 #include <gtest/gtest.h>
36 #include <encode/base64.h>
50 static string b64_allchar_enc =
51 "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4"
52 "OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx"
53 "cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq"
54 "q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj"
55 "5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==";
57 static string b64_test1 =
"This is a test with some space";
58 static string b64_test1_enc =
"VGhpcyBpcyBhIHRlc3QgICAgIHdpdGggc29tZSBzcGFjZQ==";
59 static string b64_test2 =
" ";
60 static string b64_test2_enc =
"ICAgICA=";
61 static string b64_test3 =
"hit";
62 static string b64_test3_enc =
"aGl0";
67 ASSERT_EQ(Base64::str_to_base64(z).size(), 0);
68 ASSERT_EQ(Base64::base64_to_str(z).size(), 0);
71 TEST(base64, teststrings)
73 ASSERT_EQ(Base64::str_to_base64(b64_test1), b64_test1_enc);
74 ASSERT_EQ(Base64::base64_to_str(b64_test1_enc), b64_test1);
75 ASSERT_EQ(Base64::str_to_base64(b64_test2), b64_test2_enc);
76 ASSERT_EQ(Base64::base64_to_str(b64_test2_enc), b64_test2);
77 ASSERT_EQ(Base64::str_to_base64(b64_test3), b64_test3_enc);
78 ASSERT_EQ(Base64::base64_to_str(b64_test3_enc), b64_test3);
81 TEST(base64, allchars)
83 std::vector<char> allvect;
86 for (
int i = 0; i < 256; i++)
93 Base64::base64_encode(allvect, s);
94 cout <<
"allvect encoded: " << s <<
" size: " << s.size() << endl;
95 ASSERT_EQ(s, b64_allchar_enc);
97 s = Base64::str_to_base64(allstr);
98 cout <<
"allstr encoded : " << s <<
" size: " << s.size() << endl;
99 ASSERT_EQ(s, b64_allchar_enc);
101 s = Base64::base64_to_str(b64_allchar_enc);
102 ASSERT_EQ(s, allstr);
105 Base64::base64_decode(b64_allchar_enc, v);
106 ASSERT_EQ(v, allvect);
109 TEST(base64, teststrings_url)
112 auto urltest = [] (
const string& encs)
114 return encs.find_first_of(
"+/=") == string::npos;
117 auto urlall= Base64::base64_to_base64url(b64_allchar_enc);
118 cout <<
"all char base64:" << endl << b64_allchar_enc << endl;
119 cout <<
"all char base64url:" << endl << urlall << endl;
120 ASSERT_TRUE(urltest(urlall));
121 auto baseall = Base64::base64url_to_base64(urlall);
122 ASSERT_EQ(baseall, b64_allchar_enc);
124 auto url1 = Base64::base64_to_base64url(b64_test1_enc);
125 ASSERT_TRUE(urltest(url1));
126 auto base1 = Base64::base64url_to_base64(url1);
127 ASSERT_EQ(base1, b64_test1_enc);
129 auto url2 = Base64::base64_to_base64url(b64_test2_enc);
130 ASSERT_TRUE(urltest(url2));
131 auto base2 = Base64::base64url_to_base64(url2);
132 ASSERT_EQ(base2, b64_test2_enc);
134 auto url3 = Base64::base64_to_base64url(b64_test3_enc);
135 ASSERT_TRUE(urltest(url3));
136 auto base3 = Base64::base64url_to_base64(url3);
137 ASSERT_EQ(base3, b64_test3_enc);
TEST(inet_example, client_server_stream_test)
[Inet client server]