LCOV - code coverage report
Current view: top level - src/libs/tools/tests - testtool_newkeystrategy.cpp (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 50 50 100.0 %
Date: 2019-09-12 12:28:41 Functions: 12 17 70.6 %

          Line data    Source code
       1             : /**
       2             :  * @file
       3             :  *
       4             :  * @brief Tests for the NewKeyStrategy
       5             :  *
       6             :  * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
       7             :  *
       8             :  */
       9             : 
      10             : #include "mergetestutils.cpp"
      11             : #include <gtest/gtest.h>
      12             : #include <merging/newkeystrategy.hpp>
      13             : 
      14             : using namespace std;
      15             : using namespace kdb;
      16             : using namespace kdb::tools::merging;
      17             : 
      18          32 : class NewKeyStrategyTest : public MergeTest
      19             : {
      20             : protected:
      21             :         NewKeyStrategy strategy;
      22             :         MergeResult result;
      23             :         MergeTask task;
      24             :         KeySet conflicts;
      25             : 
      26           8 :         NewKeyStrategyTest ()
      27          64 :         : task (MergeTask (BaseMergeKeys (base, baseParent), OurMergeKeys (ours, ourParent), TheirMergeKeys (theirs, theirParent),
      28          40 :                            mergeParent))
      29             :         {
      30          24 :                 result = MergeResult (conflicts, mergeKeys);
      31           8 :         }
      32             : };
      33             : 
      34          20 : TEST_F (NewKeyStrategyTest, AddEqualsKeyMerge)
      35             : {
      36           4 :         Key addedKey = Key ("user/parento/config/key5", KEY_VALUE, "value5", KEY_END);
      37           4 :         task.ours.append (addedKey);
      38           4 :         mergeKeys.append (mk5);
      39           6 :         Key conflictKey = mergeKeys.lookup (mk5);
      40           2 :         result.addConflict (conflictKey, CONFLICT_ADD, CONFLICT_SAME);
      41          12 :         conflictKey = result.getConflictSet ().at (0);
      42             : 
      43           2 :         strategy.resolveConflict (task, conflictKey, result);
      44             : 
      45           6 :         EXPECT_FALSE (result.hasConflicts ()) << "Invalid conflict detected";
      46           6 :         KeySet merged = result.getMergedKeys ();
      47           6 :         EXPECT_EQ (5, merged.size ());
      48           2 :         compareAllKeys (merged);
      49           2 : }
      50             : 
      51          20 : TEST_F (NewKeyStrategyTest, AddEqualsRespectsBinaryData)
      52             : {
      53           4 :         Key addedKey = Key ("user/parento/config/key5", KEY_BINARY, KEY_VALUE, "value5", KEY_END);
      54           4 :         task.ours.append (addedKey);
      55           6 :         Key conflictKey = mk5;
      56           2 :         result.addConflict (conflictKey, CONFLICT_ADD, CONFLICT_SAME);
      57          12 :         conflictKey = result.getConflictSet ().at (0);
      58             : 
      59           2 :         strategy.resolveConflict (task, conflictKey, result);
      60           6 :         EXPECT_TRUE (conflictKey.isBinary ());
      61           2 : }
      62             : 
      63          20 : TEST_F (NewKeyStrategyTest, EqualsAddKeyMerge)
      64             : {
      65           4 :         Key addedKey = Key ("user/parentt/config/key5", KEY_VALUE, "value5", KEY_END);
      66           4 :         task.theirs.append (addedKey);
      67           4 :         mergeKeys.append (mk5);
      68           6 :         Key conflictKey = mergeKeys.lookup (mk5);
      69           2 :         result.addConflict (conflictKey, CONFLICT_SAME, CONFLICT_ADD);
      70          12 :         conflictKey = result.getConflictSet ().at (0);
      71             : 
      72           2 :         strategy.resolveConflict (task, conflictKey, result);
      73             : 
      74           8 :         EXPECT_FALSE (result.hasConflicts ()) << "Invalid conflict detected";
      75           6 :         KeySet merged = result.getMergedKeys ();
      76           6 :         EXPECT_EQ (5, merged.size ());
      77           2 :         compareAllKeys (merged);
      78           2 : }
      79             : 
      80          20 : TEST_F (NewKeyStrategyTest, EqualsAddRespectsBinaryData)
      81             : {
      82           4 :         Key addedKey = Key ("user/parentt/config/key5", KEY_BINARY, KEY_VALUE, "value5", KEY_END);
      83           4 :         task.theirs.append (addedKey);
      84           6 :         Key conflictKey = mk5;
      85           2 :         result.addConflict (conflictKey, CONFLICT_SAME, CONFLICT_ADD);
      86          12 :         conflictKey = result.getConflictSet ().at (0);
      87             : 
      88           2 :         strategy.resolveConflict (task, conflictKey, result);
      89           6 :         EXPECT_TRUE (conflictKey.isBinary ());
      90           8 : }

Generated by: LCOV version 1.13