Imported Upstream version 16.3.2
[platform/upstream/libzypp.git] / tests / parser / HistoryLogReader_test.cc
index d3522c9..0226cc5 100644 (file)
@@ -6,24 +6,45 @@ using namespace zypp;
 
 namespace
 {
-  bool ProcessItem( const HistoryItem::Ptr & ptr )
+  bool ProcessData( const HistoryLogData::Ptr & ptr )
   {
-    DBG << ptr << endl;
+    DBG << ptr->date() << " | " << ptr << endl;
+
     return true;
   }
 }
 
-// Must be the first test!
+
 BOOST_AUTO_TEST_CASE(basic)
 {
+  std::vector<HistoryLogData::Ptr> history;
   parser::HistoryLogReader parser( TESTS_SRC_DIR "/parser/HistoryLogReader_test.dat",
-                                  ProcessItem );
+                                  parser::HistoryLogReader::Options(),
+    [&history]( HistoryLogData::Ptr ptr )->bool {
+      history.push_back( ptr );
+      return true;
+    } );
 
   BOOST_CHECK_EQUAL( parser.ignoreInvalidItems(), false );
   BOOST_CHECK_THROW( parser.readAll(), parser::ParseException );
 
   parser.setIgnoreInvalidItems( true );
   BOOST_CHECK_EQUAL( parser.ignoreInvalidItems(), true );
+
+  history.clear();
   parser.readAll();
 
+  BOOST_CHECK_EQUAL( history.size(), 8 );
+  BOOST_CHECK( dynamic_pointer_cast<HistoryLogDataRepoAdd>     ( history[0] ) );
+  BOOST_CHECK( dynamic_pointer_cast<HistoryLogDataInstall>     ( history[1] ) );
+  BOOST_CHECK( dynamic_pointer_cast<HistoryLogDataInstall>     ( history[2] ) );
+  BOOST_CHECK( dynamic_pointer_cast<HistoryLogDataRemove>      ( history[3] ) );
+  BOOST_CHECK( dynamic_pointer_cast<HistoryLogDataRepoRemove>  ( history[4] ) );
+  BOOST_CHECK( dynamic_pointer_cast<HistoryLogDataRemove>      ( history[5] ) );
+  BOOST_CHECK( dynamic_pointer_cast<HistoryLogData>            ( history[6] ) );
+  BOOST_CHECK( dynamic_pointer_cast<HistoryLogDataStampCommand>        ( history[7] ) );
+
+  BOOST_CHECK_EQUAL( (*history[1])[HistoryLogDataInstall::USERDATA_INDEX], "trans|ID" ); // properly (un)escaped?
+  HistoryLogDataInstall::Ptr p = dynamic_pointer_cast<HistoryLogDataInstall>( history[1] );
+  BOOST_CHECK_EQUAL( p->userdata(), "trans|ID" ); // properly (un)escaped?
 }