#include "Base64.h"
#include <string.h>
void base64_test(const char* test, const char* test_str)
{
// Encode
std::vector<uint8_t> input_data(test_str, test_str + strlen(test_str));
std::string encoded_str;
Base64::Encode(input_data, encoded_str);
// Decode
std::vector<uint8_t> decoded_data;
Base64::Decode(encoded_str, decoded_data);
std::string decoded(decoded_data.begin(),decoded_data.end());
if ( decoded == test_str )
{
printf("%s: PASS\n", test);
}
else
{
printf("%s: FAIL\n", test);
printf("String: -%s-\n", test_str);
printf("Encoded: -%s-\n", encoded_str.c_str());
printf("Decoded: -%s-\n", decoded.c_str());
printf("Length: -%li-\n", decoded.size());
printf("Length: -%li-\n", strlen(test_str));
for (int i = 0; i < decoded.size(); i++)
{
if (decoded[i] != test_str[i])
{
printf("mismatch at character %i, %02X != %02X\n", i, decoded[i], test_str[i]);
break;
}
}
exit(-1);
}
}
int main()
{
const char* test_str1 = "";
const char* test_str2 = "The quick brown fox jumps over the lazy dog.";
const char* test_str3 = "The quick brown fox jumps over the lazy dog";
base64_test("Test1", test_str1);
base64_test("Test2", test_str2);
base64_test("Test3", test_str3);
// base64 tests
std::vector<uint8_t> decoded;
Base64::Decode("dGVzdAo=", decoded);
printf("base64 test1: -%s-\n", decoded.data());
Base64::Decode("dGVzdDEK", decoded);
printf("base64 test2: -%s-\n", decoded.data());
Base64::Decode("dGVzdDEyCg==", decoded);
printf("base64 test3: -%s-\n", decoded.data());
}