]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/base64/base64.cpp
respect wxBU_NOTEXT style in wxButton
[wxWidgets.git] / tests / base64 / base64.cpp
index d0febfae89f3f9a5ba10499a0fd89e010ca7f8f6..eddc6464716e0d9b459c014203a66026b9f6b95a 100644 (file)
@@ -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