WhatProvides testcase extended and iterator fixed
[platform/upstream/libzypp.git] / tests / sat / WhatProvides_test.cc
index 2df74ad..ccd50ab 100644 (file)
@@ -1,35 +1,64 @@
-#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() );
   }
 }