X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4db03d266bba0da0fa2d96c408fb3bb697b96128..541aafe2faf9142799254dd8445a25ead4a19c73:/tests/base64/base64.cpp?ds=sidebyside diff --git a/tests/base64/base64.cpp b/tests/base64/base64.cpp index d0febfae89..eddc646471 100644 --- a/tests/base64/base64.cpp +++ b/tests/base64/base64.cpp @@ -59,7 +59,7 @@ static void generateRandomData(void* buff, size_t len) static void generateGibberish(void* buff, size_t len) { - static const unsigned char cb64[] = + static const unsigned char cb64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; unsigned char *cbuff = (unsigned char *)buff; @@ -90,6 +90,7 @@ private: CPPUNIT_TEST( EncodeDecodePatternB ); CPPUNIT_TEST( EncodeDecodePatternC ); CPPUNIT_TEST( EncodeDecodeRandom ); + CPPUNIT_TEST( DecodeInvalid ); CPPUNIT_TEST_SUITE_END(); void EncodeDecodeEmpty(); @@ -102,6 +103,7 @@ private: void EncodeDecodePatternB(); void EncodeDecodePatternC(); void EncodeDecodeRandom(); + void DecodeInvalid(); DECLARE_NO_COPY_CLASS(Base64TestCase) }; @@ -125,11 +127,11 @@ void Base64TestCase::EncodeDecodeEmpty() CPPUNIT_ASSERT_EQUAL('\0', shouldBeEmpty[0]); wxMemoryBuffer bufmt; - wxString resultmt = wxBase64Encode(bufmt); - CPPUNIT_ASSERT(resultmt.empty()); + wxString resultEmpty = wxBase64Encode(bufmt); + CPPUNIT_ASSERT(resultEmpty.empty()); - bufmt = wxBase64Decode(resultmt); - CPPUNIT_ASSERT_EQUAL(0u, bufmt.GetDataLen()); + bufmt = wxBase64Decode(resultEmpty); + CPPUNIT_ASSERT_EQUAL(0, bufmt.GetDataLen()); } void Base64TestCase::EncodeDecodeA() @@ -138,7 +140,7 @@ void Base64TestCase::EncodeDecodeA() CPPUNIT_ASSERT_EQUAL(wxString("QQ=="), str); wxMemoryBuffer buf = wxBase64Decode(str); - CPPUNIT_ASSERT_EQUAL(1u, buf.GetDataLen()); + CPPUNIT_ASSERT_EQUAL(1, buf.GetDataLen()); CPPUNIT_ASSERT_EQUAL('A', *(char *)buf.GetData()); } @@ -148,7 +150,7 @@ void Base64TestCase::EncodeDecodeAB() CPPUNIT_ASSERT_EQUAL(wxString("QUI="), str); wxMemoryBuffer buf = wxBase64Decode(str); - CPPUNIT_ASSERT_EQUAL(2u, buf.GetDataLen()); + CPPUNIT_ASSERT_EQUAL(2, buf.GetDataLen()); CPPUNIT_ASSERT_EQUAL('A', buf[0]); CPPUNIT_ASSERT_EQUAL('B', buf[1]); } @@ -159,7 +161,7 @@ void Base64TestCase::EncodeDecodeABC() CPPUNIT_ASSERT_EQUAL(wxString("QUJD"), str); wxMemoryBuffer buf = wxBase64Decode(str); - CPPUNIT_ASSERT_EQUAL(3u, buf.GetDataLen()); + CPPUNIT_ASSERT_EQUAL(3, buf.GetDataLen()); CPPUNIT_ASSERT_EQUAL('A', buf[0]); CPPUNIT_ASSERT_EQUAL('B', buf[1]); CPPUNIT_ASSERT_EQUAL('C', buf[2]); @@ -171,7 +173,7 @@ void Base64TestCase::EncodeDecodeABCD() CPPUNIT_ASSERT_EQUAL(wxString("QUJDRA=="), str); wxMemoryBuffer buf = wxBase64Decode(str); - CPPUNIT_ASSERT_EQUAL(4u, buf.GetDataLen()); + CPPUNIT_ASSERT_EQUAL(4, buf.GetDataLen()); CPPUNIT_ASSERT_EQUAL('A', buf[0]); CPPUNIT_ASSERT_EQUAL('B', buf[1]); CPPUNIT_ASSERT_EQUAL('C', buf[2]); @@ -233,4 +235,36 @@ void Base64TestCase::EncodeDecodeRandom() CPPUNIT_ASSERT(wxBase64Encode(buff2, size, buff2, realsize)); } +void Base64TestCase::DecodeInvalid() +{ + size_t rc, posErr; + rc = wxBase64Decode(NULL, 0, "one two!", wxNO_LEN, + wxBase64DecodeMode_Strict, &posErr); + CPPUNIT_ASSERT_EQUAL( wxCONV_FAILED, rc); + CPPUNIT_ASSERT_EQUAL( 3, posErr ); + + rc = wxBase64Decode(NULL, 0, "one two!", wxNO_LEN, + wxBase64DecodeMode_SkipWS, &posErr); + CPPUNIT_ASSERT_EQUAL( wxCONV_FAILED, rc); + CPPUNIT_ASSERT_EQUAL( 7, posErr ); + + rc = wxBase64Decode(NULL, 0, "? QQ==", wxNO_LEN, + wxBase64DecodeMode_SkipWS, &posErr); + CPPUNIT_ASSERT_EQUAL( wxCONV_FAILED, rc); + CPPUNIT_ASSERT_EQUAL( 0, posErr ); + + posErr = (size_t)-1; + rc = wxBase64Decode(NULL, 0, " QQ==", wxNO_LEN, + wxBase64DecodeMode_SkipWS, &posErr); + CPPUNIT_ASSERT_EQUAL( 1, rc ); + CPPUNIT_ASSERT_EQUAL( -1, posErr ); + + rc = wxBase64Decode(NULL, 0, "? QQ==", wxNO_LEN, + wxBase64DecodeMode_Relaxed, &posErr); + CPPUNIT_ASSERT_EQUAL( 1, rc ); + CPPUNIT_ASSERT_EQUAL( -1, posErr ); + + CPPUNIT_ASSERT( !wxBase64Decode("wxGetApp()").GetDataLen() ); +} + #endif // wxUSE_BASE64