LCOV - code coverage report
Current view: top level - src/bindings/cpp/tests - testcpp_iter.cpp (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 202 202 100.0 %
Date: 2019-09-12 12:28:41 Functions: 10 14 71.4 %

          Line data    Source code
       1             : /**
       2             :  * @file
       3             :  *
       4             :  * @brief
       5             :  *
       6             :  * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
       7             :  */
       8             : 
       9             : #include <tests.hpp>
      10             : 
      11             : #include <algorithm>
      12             : #include <vector>
      13             : 
      14             : #include <gtest/gtest.h>
      15             : 
      16          20 : TEST (test_iter, iterate)
      17             : {
      18          12 :         KeySet ks2 (5, *Key ("user/key2/1", KEY_END), *Key ("user/key2/2", KEY_END), *Key ("user/key2/3", KEY_VALUE, "value", KEY_END),
      19          10 :                     KS_END);
      20             : 
      21          12 :         ASSERT_EQ ((*ks2.begin ()).getName (), "user/key2/1") << "name wrong";
      22          12 :         ASSERT_EQ (ks2.begin ()->getName (), "user/key2/1") << "name wrong";
      23          14 :         ASSERT_EQ ((ks2.begin ()[0])->getName (), "user/key2/1") << "name wrong";
      24          14 :         ASSERT_EQ ((*(++ks2.begin ())).getName (), "user/key2/2") << "name wrong";
      25          14 :         ASSERT_EQ ((++ks2.begin ())->getName (), "user/key2/2") << "name wrong";
      26          16 :         ASSERT_EQ ((*(ks2.begin () + 1)).getName (), "user/key2/2") << "name wrong";
      27          16 :         ASSERT_EQ ((ks2.begin () + 1)->getName (), "user/key2/2") << "name wrong";
      28          14 :         ASSERT_EQ ((ks2.begin ()[1])->getName (), "user/key2/2") << "name wrong";
      29          16 :         ASSERT_EQ ((*(ks2.begin () + 2)).getName (), "user/key2/3") << "name wrong";
      30          16 :         ASSERT_EQ ((ks2.begin () + 2)->getName (), "user/key2/3") << "name wrong";
      31          14 :         ASSERT_EQ ((ks2.begin ()[2])->getName (), "user/key2/3") << "name wrong";
      32          10 :         ASSERT_EQ ((ks2.begin () + 3), ks2.end ()) << "end iterator broken";
      33             : 
      34          12 :         ASSERT_EQ ((*ks2.rbegin ()).getName (), "user/key2/3") << "name wrong";
      35          12 :         ASSERT_EQ (ks2.rbegin ()->getName (), "user/key2/3") << "name wrong";
      36          12 :         ASSERT_EQ ((ks2.rbegin ()[0])->getName (), "user/key2/3") << "name wrong";
      37          14 :         ASSERT_EQ ((*(++ks2.rbegin ())).getName (), "user/key2/2") << "name wrong";
      38          14 :         ASSERT_EQ ((++ks2.rbegin ())->getName (), "user/key2/2") << "name wrong";
      39          16 :         ASSERT_EQ ((*(ks2.rbegin () + 1)).getName (), "user/key2/2") << "name wrong";
      40          16 :         ASSERT_EQ ((ks2.rbegin () + 1)->getName (), "user/key2/2") << "name wrong";
      41          12 :         ASSERT_EQ ((ks2.rbegin ()[1])->getName (), "user/key2/2") << "name wrong";
      42          16 :         ASSERT_EQ ((*(ks2.rbegin () + 2)).getName (), "user/key2/1") << "name wrong";
      43          16 :         ASSERT_EQ ((ks2.rbegin () + 2)->getName (), "user/key2/1") << "name wrong";
      44          12 :         ASSERT_EQ ((ks2.rbegin ()[2])->getName (), "user/key2/1") << "name wrong";
      45          10 :         ASSERT_EQ ((ks2.rbegin () + 3), ks2.rend ()) << "end iterator broken";
      46             : 
      47          12 :         ASSERT_EQ ((*ks2.cbegin ()).getName (), "user/key2/1") << "name wrong";
      48          12 :         ASSERT_EQ (ks2.cbegin ()->getName (), "user/key2/1") << "name wrong";
      49          14 :         ASSERT_EQ ((ks2.cbegin ()[0])->getName (), "user/key2/1") << "name wrong";
      50          14 :         ASSERT_EQ ((*(++ks2.cbegin ())).getName (), "user/key2/2") << "name wrong";
      51          14 :         ASSERT_EQ ((++ks2.cbegin ())->getName (), "user/key2/2") << "name wrong";
      52          16 :         ASSERT_EQ ((*(ks2.cbegin () + 1)).getName (), "user/key2/2") << "name wrong";
      53          16 :         ASSERT_EQ ((ks2.cbegin () + 1)->getName (), "user/key2/2") << "name wrong";
      54          14 :         ASSERT_EQ ((ks2.cbegin ()[1])->getName (), "user/key2/2") << "name wrong";
      55          16 :         ASSERT_EQ ((*(ks2.cbegin () + 2)).getName (), "user/key2/3") << "name wrong";
      56          16 :         ASSERT_EQ ((ks2.cbegin () + 2)->getName (), "user/key2/3") << "name wrong";
      57          14 :         ASSERT_EQ ((ks2.cbegin ()[2])->getName (), "user/key2/3") << "name wrong";
      58          10 :         ASSERT_EQ ((ks2.cbegin () + 3), ks2.cend ()) << "end iterator broken";
      59             : 
      60          12 :         ASSERT_EQ ((*ks2.crbegin ()).getName (), "user/key2/3") << "name wrong";
      61          12 :         ASSERT_EQ (ks2.crbegin ()->getName (), "user/key2/3") << "name wrong";
      62          12 :         ASSERT_EQ ((ks2.crbegin ()[0])->getName (), "user/key2/3") << "name wrong";
      63          14 :         ASSERT_EQ ((*(++ks2.crbegin ())).getName (), "user/key2/2") << "name wrong";
      64          14 :         ASSERT_EQ ((++ks2.crbegin ())->getName (), "user/key2/2") << "name wrong";
      65          16 :         ASSERT_EQ ((*(ks2.crbegin () + 1)).getName (), "user/key2/2") << "name wrong";
      66          16 :         ASSERT_EQ ((ks2.crbegin () + 1)->getName (), "user/key2/2") << "name wrong";
      67          12 :         ASSERT_EQ ((ks2.crbegin ()[1])->getName (), "user/key2/2") << "name wrong";
      68          16 :         ASSERT_EQ ((*(ks2.crbegin () + 2)).getName (), "user/key2/1") << "name wrong";
      69          16 :         ASSERT_EQ ((ks2.crbegin () + 2)->getName (), "user/key2/1") << "name wrong";
      70          12 :         ASSERT_EQ ((ks2.crbegin ()[2])->getName (), "user/key2/1") << "name wrong";
      71          10 :         ASSERT_EQ ((ks2.crbegin () + 3), ks2.crend ()) << "end iterator broken";
      72             : }
      73             : 
      74          20 : TEST (test_iter, const_iterate)
      75             : {
      76             :         // std::cout << "testing const iterate" << std::endl;
      77           8 :         const KeySet ks2 (5, *Key ("user/key2/1", KEY_END), *Key ("user/key2/2", KEY_END),
      78          12 :                           *Key ("user/key2/3", KEY_VALUE, "value", KEY_END), KS_END);
      79             : 
      80          12 :         ASSERT_EQ ((*ks2.begin ()).getName (), "user/key2/1") << "name wrong";
      81          12 :         ASSERT_EQ (ks2.begin ()->getName (), "user/key2/1") << "name wrong";
      82          14 :         ASSERT_EQ ((ks2.begin ()[0])->getName (), "user/key2/1") << "name wrong";
      83          14 :         ASSERT_EQ ((*(++ks2.begin ())).getName (), "user/key2/2") << "name wrong";
      84          14 :         ASSERT_EQ ((++ks2.begin ())->getName (), "user/key2/2") << "name wrong";
      85          16 :         ASSERT_EQ ((*(ks2.begin () + 1)).getName (), "user/key2/2") << "name wrong";
      86          16 :         ASSERT_EQ ((ks2.begin () + 1)->getName (), "user/key2/2") << "name wrong";
      87          14 :         ASSERT_EQ ((ks2.begin ()[1])->getName (), "user/key2/2") << "name wrong";
      88          16 :         ASSERT_EQ ((*(ks2.begin () + 2)).getName (), "user/key2/3") << "name wrong";
      89          16 :         ASSERT_EQ ((ks2.begin () + 2)->getName (), "user/key2/3") << "name wrong";
      90          14 :         ASSERT_EQ ((ks2.begin ()[2])->getName (), "user/key2/3") << "name wrong";
      91          10 :         ASSERT_EQ ((ks2.begin () + 3), ks2.end ()) << "end iterator broken";
      92             : 
      93          12 :         ASSERT_EQ ((*ks2.rbegin ()).getName (), "user/key2/3") << "name wrong";
      94          12 :         ASSERT_EQ (ks2.rbegin ()->getName (), "user/key2/3") << "name wrong";
      95          12 :         ASSERT_EQ ((ks2.rbegin ()[0])->getName (), "user/key2/3") << "name wrong";
      96          14 :         ASSERT_EQ ((*(++ks2.rbegin ())).getName (), "user/key2/2") << "name wrong";
      97          14 :         ASSERT_EQ ((++ks2.rbegin ())->getName (), "user/key2/2") << "name wrong";
      98          16 :         ASSERT_EQ ((*(ks2.rbegin () + 1)).getName (), "user/key2/2") << "name wrong";
      99          16 :         ASSERT_EQ ((ks2.rbegin () + 1)->getName (), "user/key2/2") << "name wrong";
     100          12 :         ASSERT_EQ ((ks2.rbegin ()[1])->getName (), "user/key2/2") << "name wrong";
     101          16 :         ASSERT_EQ ((*(ks2.rbegin () + 2)).getName (), "user/key2/1") << "name wrong";
     102          16 :         ASSERT_EQ ((ks2.rbegin () + 2)->getName (), "user/key2/1") << "name wrong";
     103          12 :         ASSERT_EQ ((ks2.rbegin ()[2])->getName (), "user/key2/1") << "name wrong";
     104          10 :         ASSERT_EQ ((ks2.rbegin () + 3), ks2.rend ()) << "end iterator broken";
     105             : 
     106          12 :         ASSERT_EQ ((*ks2.cbegin ()).getName (), "user/key2/1") << "name wrong";
     107          12 :         ASSERT_EQ (ks2.cbegin ()->getName (), "user/key2/1") << "name wrong";
     108          14 :         ASSERT_EQ ((ks2.cbegin ()[0])->getName (), "user/key2/1") << "name wrong";
     109          14 :         ASSERT_EQ ((*(++ks2.cbegin ())).getName (), "user/key2/2") << "name wrong";
     110          14 :         ASSERT_EQ ((++ks2.cbegin ())->getName (), "user/key2/2") << "name wrong";
     111          16 :         ASSERT_EQ ((*(ks2.cbegin () + 1)).getName (), "user/key2/2") << "name wrong";
     112          16 :         ASSERT_EQ ((ks2.cbegin () + 1)->getName (), "user/key2/2") << "name wrong";
     113          14 :         ASSERT_EQ ((ks2.cbegin ()[1])->getName (), "user/key2/2") << "name wrong";
     114          16 :         ASSERT_EQ ((*(ks2.cbegin () + 2)).getName (), "user/key2/3") << "name wrong";
     115          16 :         ASSERT_EQ ((ks2.cbegin () + 2)->getName (), "user/key2/3") << "name wrong";
     116          14 :         ASSERT_EQ ((ks2.cbegin ()[2])->getName (), "user/key2/3") << "name wrong";
     117          10 :         ASSERT_EQ ((ks2.cbegin () + 3), ks2.cend ()) << "end iterator broken";
     118             : 
     119          12 :         ASSERT_EQ ((*ks2.crbegin ()).getName (), "user/key2/3") << "name wrong";
     120          12 :         ASSERT_EQ (ks2.crbegin ()->getName (), "user/key2/3") << "name wrong";
     121          12 :         ASSERT_EQ ((ks2.crbegin ()[0])->getName (), "user/key2/3") << "name wrong";
     122          14 :         ASSERT_EQ ((*(++ks2.crbegin ())).getName (), "user/key2/2") << "name wrong";
     123          14 :         ASSERT_EQ ((++ks2.crbegin ())->getName (), "user/key2/2") << "name wrong";
     124          16 :         ASSERT_EQ ((*(ks2.crbegin () + 1)).getName (), "user/key2/2") << "name wrong";
     125          16 :         ASSERT_EQ ((ks2.crbegin () + 1)->getName (), "user/key2/2") << "name wrong";
     126          12 :         ASSERT_EQ ((ks2.crbegin ()[1])->getName (), "user/key2/2") << "name wrong";
     127          16 :         ASSERT_EQ ((*(ks2.crbegin () + 2)).getName (), "user/key2/1") << "name wrong";
     128          16 :         ASSERT_EQ ((ks2.crbegin () + 2)->getName (), "user/key2/1") << "name wrong";
     129          12 :         ASSERT_EQ ((ks2.crbegin ()[2])->getName (), "user/key2/1") << "name wrong";
     130          10 :         ASSERT_EQ ((ks2.crbegin () + 3), ks2.crend ()) << "end iterator broken";
     131             : }
     132             : 
     133          20 : TEST (test_iter, iterator)
     134             : {
     135             :         // std::cout << "test iterator" << std::endl;
     136          12 :         KeySet ks4 (5, *Key ("user/key4/1", KEY_END), *Key ("user/key4/2", KEY_END), *Key ("user/key4/3", KEY_VALUE, "value", KEY_END),
     137          10 :                     KS_END);
     138             : 
     139           2 :         KeySet::iterator it = ks4.begin ();
     140          10 :         ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
     141          10 :         ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
     142           4 :         it += 1;
     143          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     144          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     145           4 :         it += 1;
     146          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     147          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     148           4 :         it += 1;
     149           6 :         ASSERT_EQ (it, ks4.end ()) << "not at end";
     150           4 :         it -= 1;
     151          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     152          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     153           4 :         it -= 1;
     154          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     155          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     156           4 :         it -= 1;
     157          10 :         ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
     158          10 :         ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
     159           6 :         ASSERT_EQ (it, ks4.begin ()) << "not at begin";
     160             : 
     161             : 
     162          10 :         ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
     163          10 :         ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
     164           4 :         it++;
     165          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     166          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     167           4 :         it++;
     168          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     169          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     170           4 :         it++;
     171           6 :         ASSERT_EQ (it, ks4.end ()) << "not at end";
     172           4 :         it--;
     173          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     174          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     175           4 :         it--;
     176          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     177          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     178           4 :         it--;
     179             : }
     180             : 
     181          20 : TEST (test_iter, const_iterator)
     182             : {
     183             :         // std::cout << "test const iterator" << std::endl;
     184           8 :         const KeySet ks4 (5, *Key ("user/key4/1", KEY_END), *Key ("user/key4/2", KEY_END),
     185          12 :                           *Key ("user/key4/3", KEY_VALUE, "value", KEY_END), KS_END);
     186             : 
     187           2 :         KeySet::iterator it = ks4.begin ();
     188          10 :         ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
     189          10 :         ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
     190           4 :         it += 1;
     191          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     192          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     193           4 :         it += 1;
     194          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     195          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     196           4 :         it += 1;
     197           6 :         ASSERT_EQ (it, ks4.end ()) << "not at end";
     198           4 :         it -= 1;
     199          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     200          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     201           4 :         it -= 1;
     202          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     203          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     204           4 :         it -= 1;
     205          10 :         ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
     206          10 :         ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
     207           6 :         ASSERT_EQ (it, ks4.begin ()) << "not at begin";
     208             : 
     209             : 
     210          10 :         ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
     211          10 :         ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
     212           4 :         it++;
     213          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     214          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     215           4 :         it++;
     216          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     217          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     218           4 :         it++;
     219           6 :         ASSERT_EQ (it, ks4.end ()) << "not at end";
     220           4 :         it--;
     221          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     222          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     223           4 :         it--;
     224          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     225          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     226           4 :         it--;
     227             : 
     228          10 :         ASSERT_EQ (it->getName (), "user/key4/1") << "name wrong";
     229          10 :         ASSERT_EQ ((*it).getName (), "user/key4/1") << "name wrong";
     230           2 :         ++it;
     231          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     232          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     233           2 :         ++it;
     234          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     235          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     236           2 :         ++it;
     237           6 :         ASSERT_EQ (it, ks4.end ()) << "not at end";
     238           2 :         --it;
     239          10 :         ASSERT_EQ (it->getName (), "user/key4/3") << "name wrong";
     240          10 :         ASSERT_EQ ((*it).getName (), "user/key4/3") << "name wrong";
     241           2 :         --it;
     242          10 :         ASSERT_EQ (it->getName (), "user/key4/2") << "name wrong";
     243          10 :         ASSERT_EQ ((*it).getName (), "user/key4/2") << "name wrong";
     244           2 :         --it;
     245           6 : }

Generated by: LCOV version 1.13