PStringBuildVisitorTest.cc 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "PStringBuildVisitor.h"
  2. #include "PStringSegment.h"
  3. #include "PStringNumLoop.h"
  4. #include "PStringSelect.h"
  5. #include "FixedWidthNumberDecorator.h"
  6. #include <cppunit/extensions/HelperMacros.h>
  7. class PStringBuildVisitorTest:public CppUnit::TestFixture {
  8. CPPUNIT_TEST_SUITE(PStringBuildVisitorTest);
  9. CPPUNIT_TEST(testVisit_select);
  10. CPPUNIT_TEST(testVisit_numLoop);
  11. CPPUNIT_TEST(testVisit_select_numLoop);
  12. CPPUNIT_TEST_SUITE_END();
  13. private:
  14. public:
  15. void setUp() {
  16. }
  17. void testVisit_select();
  18. void testVisit_numLoop();
  19. void testVisit_select_numLoop();
  20. };
  21. CPPUNIT_TEST_SUITE_REGISTRATION( PStringBuildVisitorTest );
  22. void PStringBuildVisitorTest::testVisit_select()
  23. {
  24. PStringSegmentHandle segment1 = new PStringSegment("/tango");
  25. const char* select1data[] = { "alpha", "bravo", "charlie" };
  26. PStringSelectHandle select1 =
  27. new PStringSelect(Strings(&select1data[0], &select1data[3]), segment1);
  28. PStringBuildVisitorHandle v = new PStringBuildVisitor();
  29. select1->accept(v);
  30. CPPUNIT_ASSERT_EQUAL((size_t)3, v->getURIs().size());
  31. CPPUNIT_ASSERT_EQUAL(string("alpha/tango"), v->getURIs()[0]);
  32. CPPUNIT_ASSERT_EQUAL(string("bravo/tango"), v->getURIs()[1]);
  33. CPPUNIT_ASSERT_EQUAL(string("charlie/tango"), v->getURIs()[2]);
  34. }
  35. void PStringBuildVisitorTest::testVisit_numLoop()
  36. {
  37. PStringSegmentHandle segment1 = new PStringSegment("/tango");
  38. PStringNumLoopHandle loop1 =
  39. new PStringNumLoop(0, 5, 2, new FixedWidthNumberDecorator(2), segment1);
  40. PStringBuildVisitorHandle v = new PStringBuildVisitor();
  41. loop1->accept(v);
  42. CPPUNIT_ASSERT_EQUAL((size_t)3, v->getURIs().size());
  43. CPPUNIT_ASSERT_EQUAL(string("00/tango"), v->getURIs()[0]);
  44. CPPUNIT_ASSERT_EQUAL(string("02/tango"), v->getURIs()[1]);
  45. CPPUNIT_ASSERT_EQUAL(string("04/tango"), v->getURIs()[2]);
  46. }
  47. void PStringBuildVisitorTest::testVisit_select_numLoop()
  48. {
  49. PStringSegmentHandle segment1 = new PStringSegment("/tango");
  50. const char* select1data[] = { "alpha", "bravo", "charlie" };
  51. PStringSelectHandle select1 =
  52. new PStringSelect(Strings(&select1data[0], &select1data[3]), segment1);
  53. PStringNumLoopHandle loop1 =
  54. new PStringNumLoop(0, 5, 2, new FixedWidthNumberDecorator(2), select1);
  55. PStringBuildVisitorHandle v = new PStringBuildVisitor();
  56. loop1->accept(v);
  57. CPPUNIT_ASSERT_EQUAL((size_t)9, v->getURIs().size());
  58. CPPUNIT_ASSERT_EQUAL(string("00alpha/tango"), v->getURIs()[0]);
  59. CPPUNIT_ASSERT_EQUAL(string("00bravo/tango"), v->getURIs()[1]);
  60. CPPUNIT_ASSERT_EQUAL(string("00charlie/tango"), v->getURIs()[2]);
  61. CPPUNIT_ASSERT_EQUAL(string("02alpha/tango"), v->getURIs()[3]);
  62. CPPUNIT_ASSERT_EQUAL(string("02bravo/tango"), v->getURIs()[4]);
  63. CPPUNIT_ASSERT_EQUAL(string("02charlie/tango"), v->getURIs()[5]);
  64. CPPUNIT_ASSERT_EQUAL(string("04alpha/tango"), v->getURIs()[6]);
  65. CPPUNIT_ASSERT_EQUAL(string("04bravo/tango"), v->getURIs()[7]);
  66. CPPUNIT_ASSERT_EQUAL(string("04charlie/tango"), v->getURIs()[8]);
  67. }