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