X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2186321ff5525cfc61c7085a298685b8afc669ab..e1efca652844273c3e8d32c7e5f442b87e455ca7:/tests/uris/uris.cpp diff --git a/tests/uris/uris.cpp b/tests/uris/uris.cpp index 3948ef784e..ff892a2be7 100644 --- a/tests/uris/uris.cpp +++ b/tests/uris/uris.cpp @@ -27,11 +27,6 @@ // Test wxURL & wxURI compat? #define TEST_URL wxUSE_URL -// Define this as 1 to test network connections, this is disabled by default as -// some machines running automatic builds don't allow outgoing connections and -// so the tests fail -#define TEST_NETWORK 0 - // ---------------------------------------------------------------------------- // test class // ---------------------------------------------------------------------------- @@ -45,7 +40,9 @@ private: CPPUNIT_TEST_SUITE( URITestCase ); CPPUNIT_TEST( IPv4 ); CPPUNIT_TEST( IPv6 ); + CPPUNIT_TEST( Server ); CPPUNIT_TEST( Paths ); + CPPUNIT_TEST( UserAndPass ); CPPUNIT_TEST( NormalResolving ); CPPUNIT_TEST( ComplexResolving ); CPPUNIT_TEST( ReallyComplexResolving ); @@ -65,7 +62,9 @@ private: void IPv4(); void IPv6(); + void Server(); void Paths(); + void UserAndPass(); void NormalResolving(); void ComplexResolving(); void ReallyComplexResolving(); @@ -89,7 +88,7 @@ private: // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( URITestCase ); -// also include in it's own registry so that these tests can be run alone +// also include in its own registry so that these tests can be run alone CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( URITestCase, "URITestCase" ); URITestCase::URITestCase() @@ -97,18 +96,30 @@ URITestCase::URITestCase() } // apply the given accessor to the URI, check that the result is as expected -#define URI_TEST_EQUAL(uri, expected, accessor) \ +#define URI_ASSERT_PART_EQUAL(uri, expected, accessor) \ CPPUNIT_ASSERT_EQUAL(expected, wxURI(uri).accessor) +#define URI_ASSERT_HOSTTYPE_EQUAL(uri, expected) \ + URI_ASSERT_PART_EQUAL((uri), (expected), GetHostType()) + +#define URI_ASSERT_SERVER_EQUAL(uri, expected) \ + URI_ASSERT_PART_EQUAL((uri), (expected), GetServer()) + +#define URI_ASSERT_PATH_EQUAL(uri, expected) \ + URI_ASSERT_PART_EQUAL((uri), (expected), GetPath()) + +#define URI_ASSERT_USER_EQUAL(uri, expected) \ + URI_ASSERT_PART_EQUAL((uri), (expected), GetUser()) + void URITestCase::IPv4() { - URI_TEST_EQUAL("http://user:password@192.168.1.100:5050/path", - wxURI_IPV4ADDRESS, GetHostType()); + URI_ASSERT_HOSTTYPE_EQUAL("http://user:password@192.168.1.100:5050/path", + wxURI_IPV4ADDRESS); - URI_TEST_EQUAL("http://user:password@192.255.1.100:5050/path", - wxURI_IPV4ADDRESS, GetHostType()); + URI_ASSERT_HOSTTYPE_EQUAL("http://user:password@192.255.1.100:5050/path", + wxURI_IPV4ADDRESS); - //bogus ipv4 + // bogus ipv4 CPPUNIT_ASSERT( wxURI("http://user:password@192.256.1.100:5050/path"). GetHostType() != wxURI_IPV4ADDRESS); } @@ -126,35 +137,66 @@ void URITestCase::IPv6() // / [ *6( h16 ":" ) h16 ] "::" // ls32 = ( h16 ":" h16 ) / IPv4address - URI_TEST_EQUAL("http://user:password@[aa:aa:aa:aa:aa:aa:192.168.1.100]:5050/path", - wxURI_IPV6ADDRESS, GetHostType()); - - URI_TEST_EQUAL("http://user:password@[aa:aa:aa:aa:aa:aa:aa:aa]:5050/path", - wxURI_IPV6ADDRESS, GetHostType()); - - URI_TEST_EQUAL("http://user:password@[aa:aa:aa:aa::192.168.1.100]:5050/path", - wxURI_IPV6ADDRESS, GetHostType()); + URI_ASSERT_HOSTTYPE_EQUAL + ( + "http://user:password@[aa:aa:aa:aa:aa:aa:192.168.1.100]:5050/path", + wxURI_IPV6ADDRESS + ); + + URI_ASSERT_HOSTTYPE_EQUAL + ( + "http://user:password@[aa:aa:aa:aa:aa:aa:aa:aa]:5050/path", + wxURI_IPV6ADDRESS + ); + + URI_ASSERT_HOSTTYPE_EQUAL + ( + "http://user:password@[aa:aa:aa:aa::192.168.1.100]:5050/path", + wxURI_IPV6ADDRESS + ); + + URI_ASSERT_HOSTTYPE_EQUAL + ( + "http://user:password@[aa:aa:aa:aa::aa:aa]:5050/path", + wxURI_IPV6ADDRESS + ); +} - URI_TEST_EQUAL("http://user:password@[aa:aa:aa:aa::aa:aa]:5050/path", - wxURI_IPV6ADDRESS, GetHostType()); +void URITestCase::Server() +{ + URI_ASSERT_SERVER_EQUAL("http://foo/", "foo"); + URI_ASSERT_SERVER_EQUAL("http://foo-bar/", "foo-bar"); + URI_ASSERT_SERVER_EQUAL("http://foo/bar/", "foo"); + URI_ASSERT_SERVER_EQUAL("http://192.168.1.0/", "192.168.1.0"); + URI_ASSERT_SERVER_EQUAL("http://192.168.1.17/", "192.168.1.17"); + URI_ASSERT_SERVER_EQUAL("http://192.168.1.255/", "192.168.1.255"); + URI_ASSERT_SERVER_EQUAL("http://192.168.1.1/index.html", "192.168.1.1"); + URI_ASSERT_SERVER_EQUAL("http://[aa:aa:aa:aa::aa:aa]/foo", "aa:aa:aa:aa::aa:aa"); } void URITestCase::Paths() { - URI_TEST_EQUAL("http://user:password@192.256.1.100:5050/../path", - "/path", GetPath()); + URI_ASSERT_PATH_EQUAL("http://user:password@192.256.1.100:5050/../path", + "/path"); + + URI_ASSERT_PATH_EQUAL("http://user:password@192.256.1.100:5050/path/../", + "/"); - URI_TEST_EQUAL("http://user:password@192.256.1.100:5050/path/../", - "/", GetPath()); + URI_ASSERT_PATH_EQUAL("http://user:password@192.256.1.100:5050/path/.", + "/path/"); - URI_TEST_EQUAL("http://user:password@192.256.1.100:5050/path/.", - "/path/", GetPath()); + URI_ASSERT_PATH_EQUAL("http://user:password@192.256.1.100:5050/path/./", + "/path/"); - URI_TEST_EQUAL("http://user:password@192.256.1.100:5050/path/./", - "/path/", GetPath()); + URI_ASSERT_PART_EQUAL("path/john/../../../joe", + "../joe", BuildURI()); +} - URI_TEST_EQUAL("path/john/../../../joe", - "../joe", BuildURI()); +void URITestCase::UserAndPass() +{ + URI_ASSERT_USER_EQUAL("http://user:pass@host/path/", "user"); + URI_ASSERT_USER_EQUAL("http://user@host/path/", "user"); + URI_ASSERT_USER_EQUAL("http://host/path/", ""); } #define URI_TEST_RESOLVE_IMPL(string, eq, strict) \ @@ -285,6 +327,7 @@ void URITestCase::Unescaping() CPPUNIT_ASSERT_EQUAL( unescaped, wxURI::Unescape(escaped) ); +#if wxUSE_UNICODE escaped = "http://ru.wikipedia.org/wiki/" "%D0%A6%D0%B5%D0%BB%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE"; @@ -296,25 +339,26 @@ void URITestCase::Unescaping() "\xD1\x87\xD0\xB8\xD1\x81\xD0\xBB\xD0\xBE" ), unescaped ); +#endif // wxUSE_UNICODE } void URITestCase::FileScheme() { - //file:// variety (NOT CONFORMANT TO THE RFC) - URI_TEST_EQUAL( "file://e:/wxcode/script1.xml", - "e:/wxcode/script1.xml", GetPath() ); + //file:// variety (NOT CONFORMING TO THE RFC) + URI_ASSERT_PATH_EQUAL( "file://e:/wxcode/script1.xml", + "e:/wxcode/script1.xml" ); //file:/// variety - URI_TEST_EQUAL( "file:///e:/wxcode/script1.xml", - "/e:/wxcode/script1.xml", GetPath() ); + URI_ASSERT_PATH_EQUAL( "file:///e:/wxcode/script1.xml", + "/e:/wxcode/script1.xml" ); //file:/ variety - URI_TEST_EQUAL( "file:/e:/wxcode/script1.xml", - "/e:/wxcode/script1.xml", GetPath() ); + URI_ASSERT_PATH_EQUAL( "file:/e:/wxcode/script1.xml", + "/e:/wxcode/script1.xml" ); //file: variety - URI_TEST_EQUAL( "file:e:/wxcode/script1.xml", - "e:/wxcode/script1.xml", GetPath() ); + URI_ASSERT_PATH_EQUAL( "file:e:/wxcode/script1.xml", + "e:/wxcode/script1.xml" ); } #if TEST_URL @@ -326,14 +370,7 @@ void URITestCase::URLCompat() { wxURL url("http://user:password@wxwidgets.org"); - CPPUNIT_ASSERT(url.GetError() == wxURL_NOERR); - -#if TEST_NETWORK - wxInputStream* pInput = url.GetInputStream(); - - CPPUNIT_ASSERT( pInput != NULL ); -#endif - + CPPUNIT_ASSERT( url.GetError() == wxURL_NOERR ); CPPUNIT_ASSERT( url == wxURL("http://user:password@wxwidgets.org") ); wxURI uri("http://user:password@wxwidgets.org"); @@ -374,7 +411,7 @@ void URITestCase::URLCompat() wxInputStream* is = urlProblem.GetInputStream(); CPPUNIT_ASSERT(is != NULL); - wxFile fOut(_T("test.html"), wxFile::write); + wxFile fOut(wxT("test.html"), wxFile::write); wxASSERT(fOut.IsOpened()); char buf[1001];