diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-03-26 12:16:57 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-03-26 12:16:57 +0000 |
| commit | 9b73454b07dc23e2aaf08baf6eff1643590e30f3 (patch) | |
| tree | 775c1b69f6f00670d932bc4880c269da84930685 /test | |
| parent | 228ed66f73ada0db6bcec7fd5aa7462a3c3f3900 (diff) | |
2007-03-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
To the ability to read options from a config file:
* src/main.cc: Command-line parameter validation is delegated to
OptionHandler class.
* src/OptionHandlerFactory.h, src/OptionHandlerFactory.cc: New
class.
* src/Option.h, src/Option.cc (clear): New function.
* src/OptionParser.h, src/OptionParser.cc: New class.
* src/OptionHandler.h: New class.
* src/NameMatchOptionHandler.h: New class.
* src/OptionHandlerImpl.h: New classes.
* src/prefs.h: '_' -> '-'
(FTP_PASV_ENABLED): Renamed to FTP_PASV.
(FTP_PASV): New definition.
* src/Util.h, src/Util.cc (getRealSize): New function.
To disable netrc support if .netrc file does not have correct
permissions:
* src/File.h, src/File.cc (mode): New function.
To prevent confidential information to be logged:
* src/HttpConnection.h, src/HttpConnection.cc
(eraseConfidentialInfo): New function.
(sendRequest): Call eraseConfidentialInfo().
(sendProxyRequest): Call eraseConfidentialInfo().
* src/main.cc: Validate permissions of .netrc file.
To add --user-agent command-line option:
* src/main.cc: Added new command line option: --user-agent
* src/prefs.h (PREF_USER_AGENT): New definition.
* src/HttpRequestCommand.cc (executeInternal): Set user-agent
option
parameter to HttpRequest object.
Marged the patches from Dan Fandrich.
Diffstat (limited to 'test')
| -rw-r--r-- | test/Makefile.am | 3 | ||||
| -rw-r--r-- | test/Makefile.in | 9 | ||||
| -rw-r--r-- | test/OptionHandlerTest.cc | 360 | ||||
| -rw-r--r-- | test/UtilTest.cc | 10 |
4 files changed, 378 insertions, 4 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index b6b126d9..5677b8ca 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,6 +1,8 @@ TESTS = aria2c check_PROGRAMS = $(TESTS) aria2c_SOURCES = AllTest.cc\ + UtilTest.cc\ + OptionHandlerTest.cc\ SegmentManTest.cc\ BitfieldManTest.cc\ GlowFileAllocatorTest.cc\ @@ -15,7 +17,6 @@ aria2c_SOURCES = AllTest.cc\ FileTest.cc\ OptionTest.cc\ Base64Test.cc\ - UtilTest.cc\ CookieBoxTest.cc\ DataTest.cc\ DictionaryTest.cc\ diff --git a/test/Makefile.in b/test/Makefile.in index a0d41d67..f360df2f 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -57,14 +57,15 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__EXEEXT_1 = aria2c$(EXEEXT) -am_aria2c_OBJECTS = AllTest.$(OBJEXT) SegmentManTest.$(OBJEXT) \ +am_aria2c_OBJECTS = AllTest.$(OBJEXT) UtilTest.$(OBJEXT) \ + OptionHandlerTest.$(OBJEXT) SegmentManTest.$(OBJEXT) \ BitfieldManTest.$(OBJEXT) GlowFileAllocatorTest.$(OBJEXT) \ RequestTest.$(OBJEXT) HttpRequestTest.$(OBJEXT) \ NetrcTest.$(OBJEXT) SingletonHolderTest.$(OBJEXT) \ HttpHeaderTest.$(OBJEXT) HttpResponseTest.$(OBJEXT) \ SharedHandleTest.$(OBJEXT) ChunkedEncodingTest.$(OBJEXT) \ FileTest.$(OBJEXT) OptionTest.$(OBJEXT) Base64Test.$(OBJEXT) \ - UtilTest.$(OBJEXT) CookieBoxTest.$(OBJEXT) DataTest.$(OBJEXT) \ + CookieBoxTest.$(OBJEXT) DataTest.$(OBJEXT) \ DictionaryTest.$(OBJEXT) ListTest.$(OBJEXT) \ MetaFileUtilTest.$(OBJEXT) ShaVisitorTest.$(OBJEXT) \ PeerMessageUtilTest.$(OBJEXT) DefaultDiskWriterTest.$(OBJEXT) \ @@ -259,6 +260,8 @@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ TESTS = aria2c aria2c_SOURCES = AllTest.cc\ + UtilTest.cc\ + OptionHandlerTest.cc\ SegmentManTest.cc\ BitfieldManTest.cc\ GlowFileAllocatorTest.cc\ @@ -273,7 +276,6 @@ aria2c_SOURCES = AllTest.cc\ FileTest.cc\ OptionTest.cc\ Base64Test.cc\ - UtilTest.cc\ CookieBoxTest.cc\ DataTest.cc\ DictionaryTest.cc\ @@ -435,6 +437,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MetalinkerTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MultiDiskAdaptorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetrcTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OptionHandlerTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OptionTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PeerMessageUtilTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PeerTest.Po@am__quote@ diff --git a/test/OptionHandlerTest.cc b/test/OptionHandlerTest.cc new file mode 100644 index 00000000..1047cabb --- /dev/null +++ b/test/OptionHandlerTest.cc @@ -0,0 +1,360 @@ +#include "OptionHandlerImpl.h" +#include "prefs.h" +#include "Exception.h" +#include <cppunit/extensions/HelperMacros.h> + +class OptionHandlerTest:public CppUnit::TestFixture { + + CPPUNIT_TEST_SUITE(OptionHandlerTest); + CPPUNIT_TEST(testNullOptionHandler); + CPPUNIT_TEST(testBooleanOptionHandler); + CPPUNIT_TEST(testNumberOptionHandler); + CPPUNIT_TEST(testNumberOptionHandler_min); + CPPUNIT_TEST(testNumberOptionHandler_max); + CPPUNIT_TEST(testNumberOptionHandler_min_max); + CPPUNIT_TEST(testUnitNumberOptionHandler); + CPPUNIT_TEST(testParameterOptionHandler_1argInit); + CPPUNIT_TEST(testParameterOptionHandler_2argsInit); + CPPUNIT_TEST(testParameterOptionHandler_listInit); + CPPUNIT_TEST(testDefaultOptionHandler); + CPPUNIT_TEST(testFloatNumberOptionHandler); + CPPUNIT_TEST(testFloatNumberOptionHandler_min); + CPPUNIT_TEST(testFloatNumberOptionHandler_max); + CPPUNIT_TEST(testFloatNumberOptionHandler_min_max); + CPPUNIT_TEST(testLogOptionHandler); + CPPUNIT_TEST(testHttpProxyOptionHandler); + CPPUNIT_TEST_SUITE_END(); + +public: + void testNullOptionHandler(); + void testBooleanOptionHandler(); + void testNumberOptionHandler(); + void testNumberOptionHandler_min(); + void testNumberOptionHandler_max(); + void testNumberOptionHandler_min_max(); + void testUnitNumberOptionHandler(); + void testParameterOptionHandler_1argInit(); + void testParameterOptionHandler_2argsInit(); + void testParameterOptionHandler_listInit(); + void testDefaultOptionHandler(); + void testFloatNumberOptionHandler(); + void testFloatNumberOptionHandler_min(); + void testFloatNumberOptionHandler_max(); + void testFloatNumberOptionHandler_min_max(); + void testLogOptionHandler(); + void testHttpProxyOptionHandler(); +}; + + +CPPUNIT_TEST_SUITE_REGISTRATION( OptionHandlerTest ); + +void OptionHandlerTest::testNullOptionHandler() +{ + NullOptionHandler handler; + CPPUNIT_ASSERT(handler.canHandle("foo")); + handler.parseArg(0, "bar"); +} + +void OptionHandlerTest::testBooleanOptionHandler() +{ + BooleanOptionHandler handler("foo"); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, V_TRUE); + CPPUNIT_ASSERT_EQUAL(string(V_TRUE), option.get("foo")); + handler.parseArg(&option, V_FALSE); + CPPUNIT_ASSERT_EQUAL(string(V_FALSE), option.get("foo")); + try { + handler.parseArg(&option, "hello"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} + +void OptionHandlerTest::testNumberOptionHandler() +{ + NumberOptionHandler handler("foo"); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, "0"); + CPPUNIT_ASSERT_EQUAL(string("0"), option.get("foo")); +} + +void OptionHandlerTest::testNumberOptionHandler_min() +{ + NumberOptionHandler handler("foo", 1); + Option option; + handler.parseArg(&option, "1"); + CPPUNIT_ASSERT_EQUAL(string("1"), option.get("foo")); + try { + handler.parseArg(&option, "0"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } + +} + +void OptionHandlerTest::testNumberOptionHandler_max() +{ + NumberOptionHandler handler("foo", -1, 100); + Option option; + handler.parseArg(&option, "100"); + CPPUNIT_ASSERT_EQUAL(string("100"), option.get("foo")); + try { + handler.parseArg(&option, "101"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} + +void OptionHandlerTest::testNumberOptionHandler_min_max() +{ + NumberOptionHandler handler("foo", 1, 100); + Option option; + handler.parseArg(&option, "1"); + CPPUNIT_ASSERT_EQUAL(string("1"), option.get("foo")); + handler.parseArg(&option, "100"); + CPPUNIT_ASSERT_EQUAL(string("100"), option.get("foo")); + try { + handler.parseArg(&option, "0"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } + try { + handler.parseArg(&option, "101"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} + +void OptionHandlerTest::testUnitNumberOptionHandler() +{ + UnitNumberOptionHandler handler("foo"); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, "4294967296"); + CPPUNIT_ASSERT_EQUAL(string("4294967296"), option.get("foo")); + handler.parseArg(&option, "4096M"); + CPPUNIT_ASSERT_EQUAL(string("4294967296"), option.get("foo")); + handler.parseArg(&option, "4096K"); + CPPUNIT_ASSERT_EQUAL(string("4194304"), option.get("foo")); + handler.parseArg(&option, "K"); + CPPUNIT_ASSERT_EQUAL(string("0"), option.get("foo")); + handler.parseArg(&option, "M"); + CPPUNIT_ASSERT_EQUAL(string("0"), option.get("foo")); + handler.parseArg(&option, ""); + CPPUNIT_ASSERT_EQUAL(string("0"), option.get("foo")); +} + +void OptionHandlerTest::testParameterOptionHandler_1argInit() +{ + ParameterOptionHandler handler("foo", "value1"); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, "value1"); + CPPUNIT_ASSERT_EQUAL(string("value1"), option.get("foo")); + try { + handler.parseArg(&option, "value3"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} + +void OptionHandlerTest::testParameterOptionHandler_2argsInit() +{ + ParameterOptionHandler handler("foo", "value1", "value2"); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, "value1"); + CPPUNIT_ASSERT_EQUAL(string("value1"), option.get("foo")); + handler.parseArg(&option, "value2"); + CPPUNIT_ASSERT_EQUAL(string("value2"), option.get("foo")); + try { + handler.parseArg(&option, "value3"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} + +void OptionHandlerTest::testParameterOptionHandler_listInit() +{ + Strings validValues; + validValues.push_back("value1"); + validValues.push_back("value2"); + + ParameterOptionHandler handler("foo", validValues); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, "value1"); + CPPUNIT_ASSERT_EQUAL(string("value1"), option.get("foo")); + handler.parseArg(&option, "value2"); + CPPUNIT_ASSERT_EQUAL(string("value2"), option.get("foo")); + try { + handler.parseArg(&option, "value3"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} + +void OptionHandlerTest::testDefaultOptionHandler() +{ + DefaultOptionHandler handler("foo"); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, "bar"); + CPPUNIT_ASSERT_EQUAL(string("bar"), option.get("foo")); + handler.parseArg(&option, ""); + CPPUNIT_ASSERT_EQUAL(string(""), option.get("foo")); +} + +void OptionHandlerTest::testFloatNumberOptionHandler() +{ + FloatNumberOptionHandler handler("foo"); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, "1.0"); + CPPUNIT_ASSERT_EQUAL(string("1.0"), option.get("foo")); +} + +void OptionHandlerTest::testFloatNumberOptionHandler_min() +{ + FloatNumberOptionHandler handler("foo", 0.0); + Option option; + handler.parseArg(&option, "0.0"); + CPPUNIT_ASSERT_EQUAL(string("0.0"), option.get("foo")); + try { + handler.parseArg(&option, "-0.1"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} + +void OptionHandlerTest::testFloatNumberOptionHandler_max() +{ + FloatNumberOptionHandler handler("foo", -1, 10.0); + Option option; + handler.parseArg(&option, "10.0"); + CPPUNIT_ASSERT_EQUAL(string("10.0"), option.get("foo")); + try { + handler.parseArg(&option, "10.1"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} + +void OptionHandlerTest::testFloatNumberOptionHandler_min_max() +{ + FloatNumberOptionHandler handler("foo", 0.0, 10.0); + Option option; + handler.parseArg(&option, "0.0"); + CPPUNIT_ASSERT_EQUAL(string("0.0"), option.get("foo")); + handler.parseArg(&option, "10.0"); + CPPUNIT_ASSERT_EQUAL(string("10.0"), option.get("foo")); + try { + handler.parseArg(&option, "-0.1"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } + try { + handler.parseArg(&option, "10.1"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} + +void OptionHandlerTest::testLogOptionHandler() +{ + LogOptionHandler handler("foo"); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, "/tmp/log.txt"); + CPPUNIT_ASSERT_EQUAL(string("/tmp/log.txt"), option.get(PREF_LOG)); + CPPUNIT_ASSERT_EQUAL(string(""), option.get(PREF_STDOUT_LOG)); + + option.clear(); + handler.parseArg(&option, "-"); + CPPUNIT_ASSERT_EQUAL(string(""), option.get(PREF_LOG)); + CPPUNIT_ASSERT_EQUAL(string(V_TRUE), option.get(PREF_STDOUT_LOG)); +} + +void OptionHandlerTest::testHttpProxyOptionHandler() +{ + HttpProxyOptionHandler handler("foo"); + CPPUNIT_ASSERT(handler.canHandle("foo")); + CPPUNIT_ASSERT(!handler.canHandle("foobar")); + Option option; + handler.parseArg(&option, "bar:80"); + CPPUNIT_ASSERT_EQUAL(string("bar:80"), option.get(PREF_HTTP_PROXY)); + CPPUNIT_ASSERT_EQUAL(string("bar"), option.get(PREF_HTTP_PROXY_HOST)); + CPPUNIT_ASSERT_EQUAL(string("80"), option.get(PREF_HTTP_PROXY_PORT)); + CPPUNIT_ASSERT_EQUAL(string(V_TRUE), option.get(PREF_HTTP_PROXY_ENABLED)); + + try { + handler.parseArg(&option, "bar"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } + try { + handler.parseArg(&option, "bar:"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } + try { + handler.parseArg(&option, ":"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } + try { + handler.parseArg(&option, ":80"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } + try { + handler.parseArg(&option, "foo:bar"); + CPPUNIT_FAIL("exception must be threw."); + } catch(Exception* e) { + cerr << e->getMsg() << endl; + delete e; + } +} diff --git a/test/UtilTest.cc b/test/UtilTest.cc index c70fa6c5..5ea25979 100644 --- a/test/UtilTest.cc +++ b/test/UtilTest.cc @@ -22,6 +22,7 @@ class UtilTest:public CppUnit::TestFixture { CPPUNIT_TEST(testToLower); CPPUNIT_TEST(testUrldecode); CPPUNIT_TEST(testCountBit); + CPPUNIT_TEST(testGetRealSize); CPPUNIT_TEST_SUITE_END(); private: @@ -44,6 +45,7 @@ public: void testToLower(); void testUrldecode(); void testCountBit(); + void testGetRealSize(); }; @@ -289,3 +291,11 @@ void UtilTest::testCountBit() { CPPUNIT_ASSERT_EQUAL(32, Util::countBit(UINT32_MAX)); CPPUNIT_ASSERT_EQUAL(8, Util::countBit(255)); } + +void UtilTest::testGetRealSize() +{ + CPPUNIT_ASSERT_EQUAL((int64_t)4294967296LL, Util::getRealSize("4096M")); + CPPUNIT_ASSERT_EQUAL((int64_t)1024, Util::getRealSize("1K")); + CPPUNIT_ASSERT_EQUAL((int64_t)0, Util::getRealSize("")); + CPPUNIT_ASSERT_EQUAL((int64_t)0, Util::getRealSize("foo")); +} |
