summaryrefslogtreecommitdiff
path: root/test/TagContainerTest.cc
blob: 666b56d55e6a9218b9e9af20dc98e45e795bcf5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "TagContainer.h"
#include "TaggedItem.h"
#include <cppunit/extensions/HelperMacros.h>

namespace aria2 {

class TagContainerTest:public CppUnit::TestFixture {

  CPPUNIT_TEST_SUITE(TagContainerTest);
  CPPUNIT_TEST(testSearch);
  CPPUNIT_TEST(testNameMatch);
  CPPUNIT_TEST_SUITE_END();
private:
public:
  void setUp() {}

  void testSearch();
  void testNameMatch();
};


CPPUNIT_TEST_SUITE_REGISTRATION(TagContainerTest);

void TagContainerTest::testSearch()
{
  TaggedItemHandle items[] = {
    SharedHandle<TaggedItem>(new TaggedItem("alpha")),
    SharedHandle<TaggedItem>(new TaggedItem("bravo")),
    SharedHandle<TaggedItem>(new TaggedItem("charlie"))
  };
  items[0]->addTag("foo");
  items[1]->addTag("foo");
  items[1]->addTag("bar");
  items[2]->addTag("foo");

  TagContainer tc(TaggedItems(&items[0], &items[3]));
  
  {
    TaggedItems res = tc.search("bar");
    CPPUNIT_ASSERT_EQUAL((size_t)1, res.size());
    CPPUNIT_ASSERT_EQUAL(std::string("bravo"), res[0]->getName());
    CPPUNIT_ASSERT_EQUAL(std::string("foo,bar"), res[0]->toTagString());
  }
  {
    TaggedItems res = tc.nameMatchForward("ch");
    CPPUNIT_ASSERT_EQUAL((size_t)1, res.size());
    CPPUNIT_ASSERT_EQUAL(std::string("charlie"), res[0]->getName());
    CPPUNIT_ASSERT_EQUAL(std::string("foo"), res[0]->toTagString());
  }
}

void TagContainerTest::testNameMatch()
{
  TaggedItemHandle items[] = {
    SharedHandle<TaggedItem>(new TaggedItem("alpha")),
    SharedHandle<TaggedItem>(new TaggedItem("bravo")),
    SharedHandle<TaggedItem>(new TaggedItem("charlie")),
    SharedHandle<TaggedItem>(new TaggedItem("bravo"))
  };
  items[1]->addTag("foo");
  TagContainer tc(TaggedItems(&items[0], &items[3]));
  {
    TaggedItemHandle item = tc.nameMatch("bravo");
    CPPUNIT_ASSERT_EQUAL(std::string("bravo"), item->getName());
    CPPUNIT_ASSERT_EQUAL(std::string("foo"), item->toTagString());
  }
  {
    CPPUNIT_ASSERT(tc.nameMatch("delta").isNull());
  }
}

} // namespace aria2