Imported Upstream version 16.3.2
[platform/upstream/libzypp.git] / tests / zypp / Dup_test.cc
1 #include "TestSetup.h"
2 #include "zypp/ResPool.h"
3 #include "zypp/ResPoolProxy.h"
4 #include "zypp/pool/PoolStats.h"
5 #include "zypp/ui/Selectable.h"
6
7 #define BOOST_TEST_MODULE Dup
8
9 /////////////////////////////////////////////////////////////////////////////
10
11 static TestSetup test;
12
13 template <class TIterator>
14 std::ostream & vdumpPoolStats( std::ostream & str, TIterator begin_r, TIterator end_r )
15 {
16   pool::PoolStats stats;
17   for_( it, begin_r, end_r )
18   {
19     str << *it << endl;
20     stats( *it );
21   }
22   return str << stats;
23 }
24
25 bool upgrade()
26 {
27   bool rres = false;
28   {
29     rres = getZYpp()->resolver()->doUpgrade();
30   }
31   if ( ! rres )
32   {
33     ERR << "upgrade " << rres << endl;
34     getZYpp()->resolver()->problems();
35     return false;
36   }
37   MIL << "upgrade " << rres << endl;
38   vdumpPoolStats( USR << "Transacting:"<< endl,
39                   make_filter_begin<resfilter::ByTransact>(test.pool()),
40                   make_filter_end<resfilter::ByTransact>(test.pool()) ) << endl;
41   return true;
42 }
43
44
45 BOOST_AUTO_TEST_CASE(testcase_init)
46 {
47   //zypp::base::LogControl::instance().logToStdErr();
48   test.loadTestcaseRepos( TESTS_SRC_DIR"/data/TCdup" );
49   dumpRange( USR, test.pool().knownRepositoriesBegin(),
50                   test.pool().knownRepositoriesEnd() ) << endl;
51   USR << "pool: " << test.pool() << endl;
52   BOOST_REQUIRE( upgrade() );
53 }
54 /////////////////////////////////////////////////////////////////////////////
55
56 BOOST_AUTO_TEST_CASE(orphaned)
57 {
58   ResPoolProxy proxy( test.poolProxy() );
59   BOOST_CHECK_EQUAL( proxy.lookup( ResKind::package, "glibc" )->status(),               ui::S_KeepInstalled );
60   BOOST_CHECK_EQUAL( proxy.lookup( ResKind::package, "release-package" )->status(),     ui::S_AutoUpdate );
61   BOOST_CHECK_EQUAL( proxy.lookup( ResKind::package, "dropped_required" )->status(),    ui::S_KeepInstalled );
62   BOOST_CHECK_EQUAL( proxy.lookup( ResKind::package, "dropped" )->status(),             ui::S_AutoDel );
63 }