-#include <stdio.h>
-#include <iostream>
-#include <boost/test/auto_unit_test.hpp>
+#include "TestSetup.h"
-#include "zypp/base/Logger.h"
-#include "zypp/base/Easy.h"
-#include "zypp/ZYppFactory.h"
-#include "zypp/sat/WhatProvides.h"
+#define LABELED(V) #V << ":\t" << V
-#define BOOST_TEST_MODULE WhatProvides
-
-using std::cout;
-using std::endl;
-using std::string;
-using namespace zypp;
-using namespace boost::unit_test;
-
-BOOST_AUTO_TEST_CASE(pool_query)
+BOOST_AUTO_TEST_CASE(WhatProvides)
{
- Pathname dir(TESTS_SRC_DIR);
- dir += "/zypp/data/PoolQuery";
+ TestSetup test( Arch_x86_64 );
+ test.loadRepo( TESTS_SRC_DIR"/data/openSUSE-11.1" );
- ZYpp::Ptr z = getZYpp();
+ {
+ sat::WhatProvides q( Capability("zypper") );
+ BOOST_CHECK( ! q.empty() );
+ BOOST_CHECK( q.size() == 1 );
+ }
- sat::Pool::instance().addRepoSolv(dir + "foo.solv");
+ {
+ sat::WhatProvides q( Capability("zypper.x86_64 == 0.12.5-1.1") );
+ BOOST_CHECK( ! q.empty() );
+ BOOST_CHECK( q.size() == 1 );
+ }
- Capability cap("amarok < 1.13");
- sat::WhatProvides q( cap );
- if ( ! q.empty() )
{
- MIL << "Found " << q.size() << " matches for " << cap << ":" << endl;
- for_( it, q.begin(), q.end() )
- MIL << *it << endl;
+ sat::WhatProvides q( Capability("zypper.i586 == 0.12.5-1.1") );
+ BOOST_CHECK( q.empty() );
+ BOOST_CHECK( q.size() == 0 );
+ }
+
+ {
+ // sat::WhatProvides::const_iterator requires proper
+ // copyctor and assignment. If they break
+ sat::WhatProvides q;
+ BOOST_CHECK( q.begin() == q.begin() );
+ BOOST_CHECK( q.begin() == q.end() );
+
+ q = sat::WhatProvides( Capability("zypper.x86_64 == 0.12.5-1.1") );
+ // q no longer empty
+ BOOST_CHECK( q.begin() == q.begin() );
+ BOOST_CHECK( q.begin() != q.end() );
+
+ sat::WhatProvides::const_iterator a;
+ BOOST_CHECK( a == q.end() );
+
+ sat::WhatProvides::const_iterator b( q.begin() );
+ BOOST_CHECK( b == q.begin() );
+
+// SEC << LABELED(q.begin()) << endl;
+// SEC << LABELED(q.end()) << endl;
+// SEC << LABELED(a) << endl;
+// SEC << LABELED(b) << endl;
+
+ {
+ a = q.begin();
+ BOOST_CHECK( a == q.begin() );
+// SEC << LABELED(a) << endl;
+// SEC << LABELED(b) << endl;
+
+ a = b;
+ BOOST_CHECK( a == b );
+// SEC << LABELED(a) << endl;
+// SEC << LABELED(b) << endl;
+ }
+ BOOST_CHECK( a == q.begin() );
}
}