wordreference/libjson/_internal/TestSuite/TestBinary.cpp

40 lines
1.6 KiB
C++

#include "TestSuite.h"
#include "../Source/JSON_Base64.h"
#if defined(JSON_BINARY) || defined(JSON_EXPOSE_BASE64)
void TestSuite::TestBase64(void){
UnitTest::SetPrefix("TestBinary.cpp - Base 64");
assertEquals(JSONBase64::json_decode64(JSONBase64::json_encode64((unsigned char *)"A", 1)), "A");
assertEquals(JSONBase64::json_decode64(JSONBase64::json_encode64((unsigned char *)"AB", 2)), "AB");
assertEquals(JSONBase64::json_decode64(JSONBase64::json_encode64((unsigned char *)"ABC", 3)), "ABC");
assertEquals(JSONBase64::json_decode64(JSONBase64::json_encode64((unsigned char *)"ABCD", 4)), "ABCD");
#ifdef JSON_SAFE
assertEquals(JSONBase64::json_decode64(JSONBase64::json_encode64((unsigned char *)"", 0)), "");
assertEquals(JSONBase64::json_decode64(JSON_TEXT("123!abc")), "");
assertEquals(JSONBase64::json_decode64(JSON_TEXT("123=abc")), "");
assertEquals(JSONBase64::json_decode64(JSON_TEXT("123abc===")), "");
#endif
unsigned char temp[255];
for(unsigned int i = 0; i < 255; ++i){
temp[i] = (unsigned char)i;
}
json_string ts = JSONBase64::json_encode64(temp, 255);
std::string rs = JSONBase64::json_decode64(ts);
assertEquals(rs.size(), 255);
assertEquals(memcmp(rs.data(), temp, 255), 0);
#if defined(JSON_LIBRARY) && defined(JSON_EXPOSE_BASE64)
json_char * test = json_encode64(temp, 255);
assertNotNull(test);
unsigned long _size;
void * bin = json_decode64(test, & _size);
assertNotNull(bin);
assertEquals(_size, 255);
assertEquals(memcmp(bin, temp, 255), 0);
json_free(test);
json_free(bin);
#endif
}
#endif