From ec3bd81486d6f9b266753984f0da31f8d39fd951 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 11 Sep 2010 09:11:57 +0000 Subject: 2010-09-11 Tatsuhiro Tsujikawa Moved URI parser code to uri.h, uri.cc to provide fast URI parser without Request object initialization. * src/Makefile.am * src/Request.cc * src/uri.cc * src/uri.h * test/Makefile.am * test/RequestTest.cc * test/UriTest.cc --- test/RequestTest.cc | 337 +++++----------------------------------------------- 1 file changed, 30 insertions(+), 307 deletions(-) (limited to 'test/RequestTest.cc') diff --git a/test/RequestTest.cc b/test/RequestTest.cc index 016e1e01..3427ee57 100644 --- a/test/RequestTest.cc +++ b/test/RequestTest.cc @@ -5,6 +5,7 @@ #include "Netrc.h" #include "DefaultAuthResolver.h" #include "NetrcAuthResolver.h" +#include "uri.h" namespace aria2 { @@ -13,29 +14,9 @@ class RequestTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(RequestTest); CPPUNIT_TEST(testSetUri1); CPPUNIT_TEST(testSetUri2); - CPPUNIT_TEST(testSetUri3); - CPPUNIT_TEST(testSetUri4); - CPPUNIT_TEST(testSetUri5); - CPPUNIT_TEST(testSetUri6); CPPUNIT_TEST(testSetUri7); - CPPUNIT_TEST(testSetUri8); - CPPUNIT_TEST(testSetUri9); - CPPUNIT_TEST(testSetUri10); - CPPUNIT_TEST(testSetUri11); - CPPUNIT_TEST(testSetUri12); - CPPUNIT_TEST(testSetUri13); - CPPUNIT_TEST(testSetUri14); - CPPUNIT_TEST(testSetUri15); - CPPUNIT_TEST(testSetUri16); CPPUNIT_TEST(testSetUri17); - CPPUNIT_TEST(testSetUri18); - CPPUNIT_TEST(testSetUri19); - CPPUNIT_TEST(testSetUri20); - CPPUNIT_TEST(testSetUri_username); - CPPUNIT_TEST(testSetUri_usernamePassword); - CPPUNIT_TEST(testSetUri_zeroUsername); CPPUNIT_TEST(testSetUri_supportsPersistentConnection); - CPPUNIT_TEST(testSetUri_ipv6); CPPUNIT_TEST(testRedirectUri); CPPUNIT_TEST(testRedirectUri2); CPPUNIT_TEST(testRedirectUri_supportsPersistentConnection); @@ -49,29 +30,9 @@ class RequestTest:public CppUnit::TestFixture { public: void testSetUri1(); void testSetUri2(); - void testSetUri3(); - void testSetUri4(); - void testSetUri5(); - void testSetUri6(); void testSetUri7(); - void testSetUri8(); - void testSetUri9(); - void testSetUri10(); - void testSetUri11(); - void testSetUri12(); - void testSetUri13(); - void testSetUri14(); - void testSetUri15(); - void testSetUri16(); void testSetUri17(); - void testSetUri18(); - void testSetUri19(); - void testSetUri20(); - void testSetUri_username(); - void testSetUri_usernamePassword(); - void testSetUri_zeroUsername(); void testSetUri_supportsPersistentConnection(); - void testSetUri_ipv6(); void testRedirectUri(); void testRedirectUri2(); void testRedirectUri_supportsPersistentConnection(); @@ -90,8 +51,10 @@ void RequestTest::testSetUri1() { bool v = req.setUri("http://aria.rednoah.com/"); CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), req.getUri()); - CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), req.getCurrentUri()); + CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), + req.getUri()); + CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), + req.getCurrentUri()); CPPUNIT_ASSERT_EQUAL(std::string(""), req.getPreviousUri()); CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); CPPUNIT_ASSERT_EQUAL((uint16_t)80, req.getPort()); @@ -112,7 +75,8 @@ void RequestTest::testSetUri2() { CPPUNIT_ASSERT(v); // referer is unchaged - CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com:8080"), req.getReferer()); + CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com:8080"), + req.getReferer()); // previousUri must equal to referer; CPPUNIT_ASSERT_EQUAL(req.getReferer(), req.getPreviousUri()); CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); @@ -123,58 +87,6 @@ void RequestTest::testSetUri2() { CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery()); } -void RequestTest::testSetUri3() { - Request req; - bool v = req.setUri("http://aria.rednoah.com/aria2/index.html"); - - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL((uint16_t)80, req.getPort()); - CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.com"), req.getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("/aria2"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string("index.html"), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery()); -} - -void RequestTest::testSetUri4() { - Request req; - bool v = req.setUri("http://aria.rednoah.com/aria2/aria3/index.html"); - - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL((uint16_t)80, req.getPort()); - CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.com"), req.getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("/aria2/aria3"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string("index.html"), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery()); -} - -void RequestTest::testSetUri5() { - Request req; - bool v = req.setUri("http://aria.rednoah.com/aria2/aria3/"); - - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL((uint16_t)80, req.getPort()); - CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.com"), req.getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("/aria2/aria3"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery()); -} - -void RequestTest::testSetUri6() { - Request req; - bool v = req.setUri("http://aria.rednoah.com/aria2/aria3"); - - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL((uint16_t)80, req.getPort()); - CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.com"), req.getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("/aria2"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string("aria3"), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery()); -} - void RequestTest::testSetUri7() { Request req; bool v = req.setUri("http://"); @@ -182,111 +94,18 @@ void RequestTest::testSetUri7() { CPPUNIT_ASSERT(!v); } -void RequestTest::testSetUri8() { - Request req; - bool v = req.setUri("http:/aria.rednoah.com"); - - CPPUNIT_ASSERT(!v); -} - -void RequestTest::testSetUri9() { - Request req; - bool v = req.setUri("h"); - - CPPUNIT_ASSERT(!v); -} - -void RequestTest::testSetUri10() { - Request req; - bool v = req.setUri(""); - - CPPUNIT_ASSERT(!v); -} - -void RequestTest::testSetUri11() { - Request req; - bool v = req.setUri("http://host?query/"); - - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string("?query/"), req.getQuery()); -} - -void RequestTest::testSetUri12() { - Request req; - bool v = req.setUri("http://host?query"); - - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string("?query"), req.getQuery()); -} - -void RequestTest::testSetUri13() { - Request req; - bool v = req.setUri("http://host/?query"); - - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string("?query"), req.getQuery()); -} - -void RequestTest::testSetUri14() { - Request req; - bool v = req.setUri("http://host:8080/abc?query"); - - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost()); - CPPUNIT_ASSERT_EQUAL((uint16_t)8080, req.getPort()); - CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string("abc"), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string("?query"), req.getQuery()); -} - -void RequestTest::testSetUri15() -{ - Request req; - // 2 slashes after host name and dir - bool v = req.setUri("http://host//dir1/dir2//file"); - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("/dir1/dir2"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string("file"), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery()); -} - -void RequestTest::testSetUri16() -{ - Request req; - // 2 slashes before file - bool v = req.setUri("http://host//file"); - CPPUNIT_ASSERT(v); - CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); - CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir()); - CPPUNIT_ASSERT_EQUAL(std::string("file"), req.getFile()); - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery()); -} - void RequestTest::testSetUri17() { Request req; - bool v = req.setUri("http://host:80/file