TagContainerTest.cc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "TagContainer.h"
  2. #include "TaggedItem.h"
  3. #include <cppunit/extensions/HelperMacros.h>
  4. namespace aria2 {
  5. class TagContainerTest:public CppUnit::TestFixture {
  6. CPPUNIT_TEST_SUITE(TagContainerTest);
  7. CPPUNIT_TEST(testSearch);
  8. CPPUNIT_TEST(testNameMatch);
  9. CPPUNIT_TEST_SUITE_END();
  10. private:
  11. public:
  12. void setUp() {}
  13. void testSearch();
  14. void testNameMatch();
  15. };
  16. CPPUNIT_TEST_SUITE_REGISTRATION(TagContainerTest);
  17. void TagContainerTest::testSearch()
  18. {
  19. TaggedItemHandle items[] = {
  20. SharedHandle<TaggedItem>(new TaggedItem("alpha")),
  21. SharedHandle<TaggedItem>(new TaggedItem("bravo")),
  22. SharedHandle<TaggedItem>(new TaggedItem("charlie"))
  23. };
  24. items[0]->addTag("foo");
  25. items[1]->addTag("foo");
  26. items[1]->addTag("bar");
  27. items[2]->addTag("foo");
  28. TagContainer tc(TaggedItems(&items[0], &items[3]));
  29. {
  30. TaggedItems res = tc.search("bar");
  31. CPPUNIT_ASSERT_EQUAL((size_t)1, res.size());
  32. CPPUNIT_ASSERT_EQUAL(std::string("bravo"), res[0]->getName());
  33. CPPUNIT_ASSERT_EQUAL(std::string("foo,bar"), res[0]->toTagString());
  34. }
  35. {
  36. TaggedItems res = tc.nameMatchForward("ch");
  37. CPPUNIT_ASSERT_EQUAL((size_t)1, res.size());
  38. CPPUNIT_ASSERT_EQUAL(std::string("charlie"), res[0]->getName());
  39. CPPUNIT_ASSERT_EQUAL(std::string("foo"), res[0]->toTagString());
  40. }
  41. }
  42. void TagContainerTest::testNameMatch()
  43. {
  44. TaggedItemHandle items[] = {
  45. SharedHandle<TaggedItem>(new TaggedItem("alpha")),
  46. SharedHandle<TaggedItem>(new TaggedItem("bravo")),
  47. SharedHandle<TaggedItem>(new TaggedItem("charlie")),
  48. SharedHandle<TaggedItem>(new TaggedItem("bravo"))
  49. };
  50. items[1]->addTag("foo");
  51. TagContainer tc(TaggedItems(&items[0], &items[3]));
  52. {
  53. TaggedItemHandle item = tc.nameMatch("bravo");
  54. CPPUNIT_ASSERT_EQUAL(std::string("bravo"), item->getName());
  55. CPPUNIT_ASSERT_EQUAL(std::string("foo"), item->toTagString());
  56. }
  57. {
  58. CPPUNIT_ASSERT(tc.nameMatch("delta").isNull());
  59. }
  60. }
  61. } // namespace aria2