1 #include <boost/test/auto_unit_test.hpp>
6 #include <zypp/base/LogTools.h>
8 #include <zypp/ResObjects.h>
9 #include <zypp/ResPool.h>
11 using boost::unit_test::test_case;
18 static TestSetup test;
22 // cout << "+++[repoinit]=======================" << endl;
23 test.loadTestcaseRepos( TESTS_SRC_DIR"/data/PoolReuseIds/SeqA" );
24 // for ( auto && pi : ResPool::instance() )
25 // cout << pi << " " << pi.resolvable() << endl;
26 // cout << "---[repoinit]=======================" << endl;
31 // cout << "+++[repoinit2]=======================" << endl;
32 sat::Pool::instance().reposEraseAll();
33 test.loadTestcaseRepos( TESTS_SRC_DIR"/data/PoolReuseIds/SeqB" );
34 // for ( auto && pi : ResPool::instance() )
35 // cout << pi << " " << pi.resolvable() << endl;
36 // cout << "---[repoinit2]=======================" << endl;
39 void checkpi( const PoolItem & pi )
41 BOOST_CHECK( pi.resolvable() );
42 BOOST_CHECK_EQUAL( pi.id(), pi.resolvable()->id() );
43 BOOST_CHECK_EQUAL( bool(asKind<Package>( pi.resolvable() )), isKind<Package>(pi) );
44 BOOST_CHECK_EQUAL( bool(asKind<Patch>( pi.resolvable() )), isKind<Patch>(pi) );
45 BOOST_CHECK_EQUAL( bool(asKind<Pattern>( pi.resolvable() )), isKind<Pattern>(pi) );
46 BOOST_CHECK_EQUAL( bool(asKind<Product>( pi.resolvable() )), isKind<Product>(pi) );
47 BOOST_CHECK_EQUAL( bool(asKind<SrcPackage>( pi.resolvable() )), isKind<SrcPackage>(pi) );
48 BOOST_CHECK_EQUAL( bool(asKind<Application>( pi.resolvable() )), isKind<Application>(pi) );
53 // cout << "+++[repocheck]======================" << endl;
54 for ( auto && pi : ResPool::instance() )
56 // cout << "??? " << pi << endl;
59 // cout << "---[repocheck]======================" << endl;
62 ///////////////////////////////////////////////////////////////////
63 // Check that after ERASING ALL REPOS and loading a new one, ResPool
64 // actually creates new PoolItems rather than reusing already existing
67 // Adding/removing repos will not reuse poolIDs unless actually all
68 // repos are removed from the pool. In this case ResPool must invalidate
69 // ALL existing PoolItems (especially the Resolvable Pointers inside).
72 // (1)package - (1)application
73 // (2)pattern - (2)package
76 // The two test repos have Resolvables of different kind in different
77 // order. If ResPool fails to recreate the PoolItem, we'll experience
78 // cast errors. PoolItem(1) will claim to be an application, but the
79 // Resolvable is still the original one created for a package...
80 ///////////////////////////////////////////////////////////////////
82 BOOST_AUTO_TEST_CASE(t_1) { testcase_init(); }
83 BOOST_AUTO_TEST_CASE(t_2) { repocheck(); }
84 BOOST_AUTO_TEST_CASE(t_4) { testcase_init2(); }
85 BOOST_AUTO_TEST_CASE(t_5) { repocheck(); }