summaryrefslogtreecommitdiff
path: root/test/PStringBuildVisitorTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-08-28 11:51:20 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-08-28 11:51:20 +0000
commit7fb4336d5e6dbffe64fc39f84bbedd76a12237e6 (patch)
tree2d21664786e49e776607446ef38b90600aeabd27 /test/PStringBuildVisitorTest.cc
parenteb335ef44ce2defda6988f6654f2d7314f5d8d89 (diff)
2007-08-28 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added parameterized URI support. * src/main.cc: -Z option added. * src/OptionHandlerFactory.cc * src/prefs.h: Added PREF_FORCE_SEQUENTIAL. * src/PStringDatum.h: New class. * src/PStringSegment.{h,cc}: New class. * src/PStringNumLoop.h: New class. * src/PStringSelect.h: New class. * src/NumberDecorator.h: New class. * src/FixedWidthNumberDecorator.h: New class. * src/AlphaNumberDecorator.h: New class. * src/PStringVisitor.h: New class. * src/PStringBuildVisitor.{h,cc}: New class. * src/ParameterizedStringParser.{h,cc}: New class. * src/Util.{h,cc} (isNumber): New function. (isLowercase): New function. (isUppercase): New function. (alphaToNum): New function. * test/ParameterizedStringParserTest.cc: New class. * test/AlphaNumberDecoratorTest.cc: New class. * test/PStringBuildVisitorTest.cc: New class. * test/UtilTest.cc (testIsNumber): New function. (testIsLowercase): New function. (testIsUppercase): New function. (testAlphaToNum): New function. Added '\n' after the error message * src/RequestInfo.h (printDownloadAbortMessage)
Diffstat (limited to 'test/PStringBuildVisitorTest.cc')
-rw-r--r--test/PStringBuildVisitorTest.cc91
1 files changed, 91 insertions, 0 deletions
diff --git a/test/PStringBuildVisitorTest.cc b/test/PStringBuildVisitorTest.cc
new file mode 100644
index 00000000..a3ff8991
--- /dev/null
+++ b/test/PStringBuildVisitorTest.cc
@@ -0,0 +1,91 @@
+#include "PStringBuildVisitor.h"
+#include "PStringSegment.h"
+#include "PStringNumLoop.h"
+#include "PStringSelect.h"
+#include "FixedWidthNumberDecorator.h"
+#include <cppunit/extensions/HelperMacros.h>
+
+class PStringBuildVisitorTest:public CppUnit::TestFixture {
+
+ CPPUNIT_TEST_SUITE(PStringBuildVisitorTest);
+ CPPUNIT_TEST(testVisit_select);
+ CPPUNIT_TEST(testVisit_numLoop);
+ CPPUNIT_TEST(testVisit_select_numLoop);
+ CPPUNIT_TEST_SUITE_END();
+private:
+
+public:
+ void setUp() {
+ }
+
+ void testVisit_select();
+ void testVisit_numLoop();
+ void testVisit_select_numLoop();
+};
+
+
+CPPUNIT_TEST_SUITE_REGISTRATION( PStringBuildVisitorTest );
+
+void PStringBuildVisitorTest::testVisit_select()
+{
+ PStringSegmentHandle segment1 = new PStringSegment("/tango");
+
+ char* select1data[] = { "alpha", "bravo", "charlie" };
+
+ PStringSelectHandle select1 =
+ new PStringSelect(Strings(&select1data[0], &select1data[3]), segment1);
+
+ PStringBuildVisitorHandle v = new PStringBuildVisitor();
+
+ select1->accept(v);
+
+ CPPUNIT_ASSERT_EQUAL((size_t)3, v->getURIs().size());
+ CPPUNIT_ASSERT_EQUAL(string("alpha/tango"), v->getURIs()[0]);
+ CPPUNIT_ASSERT_EQUAL(string("bravo/tango"), v->getURIs()[1]);
+ CPPUNIT_ASSERT_EQUAL(string("charlie/tango"), v->getURIs()[2]);
+}
+
+void PStringBuildVisitorTest::testVisit_numLoop()
+{
+ PStringSegmentHandle segment1 = new PStringSegment("/tango");
+
+ PStringNumLoopHandle loop1 =
+ new PStringNumLoop(0, 5, 2, new FixedWidthNumberDecorator(2), segment1);
+
+ PStringBuildVisitorHandle v = new PStringBuildVisitor();
+
+ loop1->accept(v);
+
+ CPPUNIT_ASSERT_EQUAL((size_t)3, v->getURIs().size());
+ CPPUNIT_ASSERT_EQUAL(string("00/tango"), v->getURIs()[0]);
+ CPPUNIT_ASSERT_EQUAL(string("02/tango"), v->getURIs()[1]);
+ CPPUNIT_ASSERT_EQUAL(string("04/tango"), v->getURIs()[2]);
+}
+
+void PStringBuildVisitorTest::testVisit_select_numLoop()
+{
+ PStringSegmentHandle segment1 = new PStringSegment("/tango");
+
+ char* select1data[] = { "alpha", "bravo", "charlie" };
+
+ PStringSelectHandle select1 =
+ new PStringSelect(Strings(&select1data[0], &select1data[3]), segment1);
+
+ PStringNumLoopHandle loop1 =
+ new PStringNumLoop(0, 5, 2, new FixedWidthNumberDecorator(2), select1);
+
+ PStringBuildVisitorHandle v = new PStringBuildVisitor();
+
+ loop1->accept(v);
+
+ CPPUNIT_ASSERT_EQUAL((size_t)9, v->getURIs().size());
+ CPPUNIT_ASSERT_EQUAL(string("00alpha/tango"), v->getURIs()[0]);
+ CPPUNIT_ASSERT_EQUAL(string("00bravo/tango"), v->getURIs()[1]);
+ CPPUNIT_ASSERT_EQUAL(string("00charlie/tango"), v->getURIs()[2]);
+ CPPUNIT_ASSERT_EQUAL(string("02alpha/tango"), v->getURIs()[3]);
+ CPPUNIT_ASSERT_EQUAL(string("02bravo/tango"), v->getURIs()[4]);
+ CPPUNIT_ASSERT_EQUAL(string("02charlie/tango"), v->getURIs()[5]);
+ CPPUNIT_ASSERT_EQUAL(string("04alpha/tango"), v->getURIs()[6]);
+ CPPUNIT_ASSERT_EQUAL(string("04bravo/tango"), v->getURIs()[7]);
+ CPPUNIT_ASSERT_EQUAL(string("04charlie/tango"), v->getURIs()[8]);
+}