1 #include <solv/pool.h>
2 #include "libdnf/repo/solvable/Dependency.hpp"
3 #include "DependencyContainerTest.hpp"
4
5 CPPUNIT_TEST_SUITE_REGISTRATION(DependencyContainerTest);
6
setUp()7 void DependencyContainerTest::setUp()
8 {
9 sack = dnf_sack_new();
10 container = std::unique_ptr<libdnf::DependencyContainer>(new libdnf::DependencyContainer(sack));
11 }
12
tearDown()13 void DependencyContainerTest::tearDown()
14 {
15 g_object_unref(sack);
16 }
17
testAdd()18 void DependencyContainerTest::testAdd()
19 {
20 auto dependency = new libdnf::Dependency(sack, "foo", "1.0", DNF_COMPARISON_EQ);
21
22 container->add(dependency);
23 libdnf::Dependency *actual = container->getPtr(0);
24
25 CPPUNIT_ASSERT(strcmp(dependency->toString(), actual->toString()) == 0);
26 delete actual;
27 delete dependency;
28 }
29
testExtend()30 void DependencyContainerTest::testExtend()
31 {
32 auto otherContainer = new libdnf::DependencyContainer(sack);
33 auto dependency = new libdnf::Dependency(sack, "foo", "1.0", DNF_COMPARISON_EQ);
34 auto otherDependency = new libdnf::Dependency(sack, "bar", "1.1", DNF_COMPARISON_EQ);
35
36 container->add(dependency);
37 CPPUNIT_ASSERT_EQUAL(1, container->count());
38
39 otherContainer->add(otherDependency);
40 CPPUNIT_ASSERT_EQUAL(1, otherContainer->count());
41
42 container->extend(otherContainer);
43 libdnf::Dependency *actual = container->getPtr(0);
44 CPPUNIT_ASSERT(strcmp(otherDependency->toString(), actual->toString()) == 0);
45
46 delete otherContainer;
47 delete dependency;
48 delete otherDependency;
49 delete actual;
50 }
51
testGet()52 void DependencyContainerTest::testGet()
53 {
54 auto dependency = new libdnf::Dependency(sack, "foo", "1.0", DNF_COMPARISON_EQ);
55 auto otherDependency = new libdnf::Dependency(sack, "bar", "1.1", DNF_COMPARISON_EQ);
56
57 container->add(dependency);
58 container->add(otherDependency);
59
60 libdnf::Dependency *actual = container->getPtr(0);
61 CPPUNIT_ASSERT(strcmp(dependency->toString(), actual->toString()) == 0);
62 delete actual;
63
64 actual = container->getPtr(1);
65 CPPUNIT_ASSERT(strcmp(otherDependency->toString(), actual->toString()) == 0);
66
67 delete dependency;
68 delete otherDependency;
69 delete actual;
70 }
71
testCount()72 void DependencyContainerTest::testCount()
73 {
74 auto otherContainer = new libdnf::DependencyContainer(sack);
75 auto dependency = new libdnf::Dependency(sack, "foo", "1.0", DNF_COMPARISON_EQ);
76
77 CPPUNIT_ASSERT_EQUAL(0, container->count());
78 container->add(dependency);
79 CPPUNIT_ASSERT_EQUAL(1, container->count());
80
81 otherContainer->add(dependency);
82 CPPUNIT_ASSERT_EQUAL(1, otherContainer->count());
83
84 container->extend(otherContainer);
85 CPPUNIT_ASSERT_EQUAL(2, container->count());
86
87 delete otherContainer;
88 delete dependency;
89 }
90