X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e605541c3690af3e085b4b36581f3c0267bffbfa..1e24c2af0f22f9fff6922885eed7a1bef1b92112:/tests/uris/uris.cpp?ds=sidebyside diff --git a/tests/uris/uris.cpp b/tests/uris/uris.cpp index 016c6fc024..8ea7438deb 100644 --- a/tests/uris/uris.cpp +++ b/tests/uris/uris.cpp @@ -48,9 +48,13 @@ private: CPPUNIT_TEST( BackwardsResolving ); CPPUNIT_TEST( Assignment ); CPPUNIT_TEST( Comparison ); + CPPUNIT_TEST( Unescaping ); + CPPUNIT_TEST( FileScheme ); #if TEST_URL CPPUNIT_TEST( URLCompat ); +#if 0 && wxUSE_PROTOCOL_HTTP CPPUNIT_TEST( URLProxy ); +#endif #endif CPPUNIT_TEST_SUITE_END(); @@ -64,10 +68,14 @@ private: void BackwardsResolving(); void Assignment(); void Comparison(); + void Unescaping(); + void FileScheme(); #if TEST_URL void URLCompat(); +#if 0 && wxUSE_PROTOCOL_HTTP void URLProxy(); +#endif #endif DECLARE_NO_COPY_CLASS(URITestCase) @@ -276,9 +284,53 @@ void URITestCase::Comparison() CPPUNIT_ASSERT(wxURI(wxT("http://mysite.com")) == wxURI(wxT("http://mysite.com"))); } +void URITestCase::Unescaping() +{ + wxString orig = wxT("http://test.com/of/file%3A%2F%2FC%3A%5Curi%5C") + wxT("escaping%5Cthat%5Cseems%5Cbroken%5Csadly%5B1%5D.rss"); + + wxString works= wxURI(orig).BuildUnescapedURI(); + + CPPUNIT_ASSERT(orig.IsSameAs(works) == false); + + wxString orig2 = wxT("http://test.com/of/file%3A%2F%") + wxT("2FC%3A%5Curi%5Cescaping%5Cthat%5Cseems%") + wxT("5Cbroken%5Csadly%5B1%5D.rss"); + + wxString works2 = wxURI::Unescape(orig2); + wxString broken2 = wxURI(orig2).BuildUnescapedURI(); + + CPPUNIT_ASSERT(works2.IsSameAs(broken2)); + +} + +void URITestCase::FileScheme() +{ + //file:// variety (NOT CONFORMANT TO THE RFC) + CPPUNIT_ASSERT(wxURI(wxString(wxT("file://e:/wxcode/script1.xml"))).GetPath() + == wxT("e:/wxcode/script1.xml") ); + + //file:/// variety + CPPUNIT_ASSERT(wxURI(wxString(wxT("file:///e:/wxcode/script1.xml"))).GetPath() + == wxT("/e:/wxcode/script1.xml") ); + + //file:/ variety + CPPUNIT_ASSERT(wxURI(wxString(wxT("file:/e:/wxcode/script1.xml"))).GetPath() + == wxT("/e:/wxcode/script1.xml") ); + + //file: variety + CPPUNIT_ASSERT(wxURI(wxString(wxT("file:e:/wxcode/script1.xml"))).GetPath() + == wxT("e:/wxcode/script1.xml") ); +} + #if TEST_URL +const wxChar* pszProblemUrls[] = { wxT("http://www.csdn.net"), + wxT("http://www.163.com"), + wxT("http://www.sina.com.cn") }; + #include "wx/url.h" +#include "wx/file.h" void URITestCase::URLCompat() { @@ -306,9 +358,6 @@ void URITestCase::URLCompat() CPPUNIT_ASSERT( uricopy == url ); CPPUNIT_ASSERT( uricopy == urlcopy ); CPPUNIT_ASSERT( uricopy == uri ); -#if WXWIN_COMPATIBILITY_2_4 - CPPUNIT_ASSERT( wxURL::ConvertFromURI(wxT("%20%41%20")) == wxT(" A ") ); -#endif CPPUNIT_ASSERT( wxURI::Unescape(wxT("%20%41%20")) == wxT(" A ") ); wxURI test(wxT("file:\"myf\"ile.txt")); @@ -316,12 +365,51 @@ void URITestCase::URLCompat() CPPUNIT_ASSERT( test.BuildURI() == wxT("file:%22myf%22ile.txt") ); CPPUNIT_ASSERT( test.GetScheme() == wxT("file") ); CPPUNIT_ASSERT( test.GetPath() == wxT("%22myf%22ile.txt") ); + + // these could be put under a named registry since they take some + // time to complete +#if 0 + // Test problem urls (reported not to work some time ago by a user...) + for ( size_t i = 0; i < WXSIZEOF(pszProblemUrls); ++i ) + { + wxURL urlProblem(pszProblemUrls[i]); + CPPUNIT_ASSERT(urlProblem.GetError() == wxURL_NOERR); + + wxInputStream* is = urlProblem.GetInputStream(); + CPPUNIT_ASSERT(is != NULL); + + wxFile fOut(_T("test.html"), wxFile::write); + wxASSERT(fOut.IsOpened()); + + char buf[1001]; + for( ;; ) + { + is->Read(buf, 1000); + size_t n = is->LastRead(); + if ( n == 0 ) + break; + buf[n] = 0; + fOut.Write(buf, n); + } + + delete is; + } +#endif } +// the purpose of this test is unclear, it seems to be unfinished so disabling +// it for now +#if 0 && wxUSE_PROTOCOL_HTTP void URITestCase::URLProxy() { - wxURL url("http://www.asite.com/index.html"); - url.SetProxy("pserv:3122"); + wxURL url(wxT("http://www.asite.com/index.html")); + url.SetProxy(wxT("pserv:3122")); + + wxURL::SetDefaultProxy(wxT("fol.singnet.com.sg:8080")); + wxURL url2(wxT("http://server-name/path/to/file?query_data=value")); + wxInputStream *data = url2.GetInputStream(); + CPPUNIT_ASSERT(data != NULL); } -#endif +#endif // wxUSE_PROTOCOL_HTTP +#endif // TEST_URL