LCOV - code coverage report
Current view: top level - src/bindings/cpp/tests - testcpp_iter_name.cpp (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 137 137 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_name, forward)
      17             : {
      18           4 :         Key k ("user/user\\/key4\\/1/user\\/key4\\/2/user\\/key4\\/3", KEY_END);
      19             : 
      20           2 :         Key::iterator it = k.begin ();
      21           8 :         ASSERT_EQ ((*it), "user") << "name wrong";
      22           2 :         ++it;
      23             : 
      24           8 :         ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
      25           2 :         ++it;
      26           8 :         ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
      27           2 :         ++it;
      28           8 :         ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
      29           2 :         ++it;
      30           6 :         ASSERT_EQ (it, k.end ()) << "not at end";
      31             : 
      32           2 :         --it;
      33           8 :         ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
      34           2 :         --it;
      35           8 :         ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
      36           2 :         --it;
      37           8 :         ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
      38           2 :         --it;
      39           8 :         ASSERT_EQ ((*it), "user") << "name wrong";
      40           6 :         ASSERT_EQ (it, k.begin ()) << "not at begin";
      41             : 
      42           4 :         it++;
      43           8 :         ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
      44           4 :         it++;
      45           8 :         ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
      46           4 :         it++;
      47           8 :         ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
      48           4 :         it++;
      49           6 :         ASSERT_EQ (it, k.end ()) << "not at end";
      50             : 
      51           2 :         it--;
      52           8 :         ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
      53           2 :         it--;
      54           8 :         ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
      55           2 :         it--;
      56             : }
      57             : 
      58          20 : TEST (test_iter_name, reverse)
      59             : {
      60           4 :         Key k ("user/user\\/key4\\/1/user\\/key4\\/2/user\\/key4\\/3", KEY_END);
      61             : 
      62           2 :         Key::reverse_iterator it = k.rend ();
      63           8 :         ASSERT_EQ ((*it), "") << "name wrong";
      64           2 :         --it;
      65           8 :         ASSERT_EQ ((*it), "user") << "name wrong";
      66           2 :         --it;
      67             : 
      68           8 :         ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
      69           2 :         --it;
      70           8 :         ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
      71           2 :         --it;
      72           8 :         ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
      73             :         // --it; // Misusage, do not go past begin
      74           6 :         ASSERT_EQ (it, k.rbegin ()) << "not at end";
      75             : 
      76           2 :         ++it;
      77           8 :         ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
      78           2 :         ++it;
      79           8 :         ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
      80           2 :         ++it;
      81           8 :         ASSERT_EQ ((*it), "user") << "name wrong";
      82           2 :         ++it;
      83           6 :         ASSERT_EQ (it, k.rend ()) << "not at begin";
      84             : 
      85           4 :         it--;
      86           8 :         ASSERT_EQ ((*it), "user") << "name wrong";
      87           4 :         it--;
      88           8 :         ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
      89           4 :         it--;
      90           8 :         ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
      91           4 :         it--;
      92           8 :         ASSERT_EQ ((*it), "user/key4/3") << "name wrong";
      93             :         // it--; // Misusage, do not go past begin
      94           6 :         ASSERT_EQ (it, k.rbegin ()) << "not at end";
      95             : 
      96           4 :         it++;
      97           8 :         ASSERT_EQ ((*it), "user/key4/2") << "name wrong";
      98           4 :         it++;
      99           8 :         ASSERT_EQ ((*it), "user/key4/1") << "name wrong";
     100             : }
     101             : 
     102          20 : TEST (iterNameCascading, forward)
     103             : {
     104           4 :         Key k ("/\\/key4\\/1/\\/key4\\/2/\\/key4\\/3", KEY_END);
     105             : 
     106           2 :         Key::iterator it = k.begin ();
     107           8 :         ASSERT_EQ ((*it), "") << "cascading name wrong";
     108           2 :         ++it;
     109             : 
     110           8 :         ASSERT_EQ ((*it), "/key4/1") << "name wrong";
     111           2 :         ++it;
     112           8 :         ASSERT_EQ ((*it), "/key4/2") << "name wrong";
     113           2 :         ++it;
     114           8 :         ASSERT_EQ ((*it), "/key4/3") << "name wrong";
     115           2 :         ++it;
     116           6 :         ASSERT_EQ (it, k.end ()) << "not at end";
     117             : 
     118           2 :         --it;
     119           8 :         ASSERT_EQ ((*it), "/key4/3") << "name wrong";
     120           2 :         --it;
     121           8 :         ASSERT_EQ ((*it), "/key4/2") << "name wrong";
     122           2 :         --it;
     123           8 :         ASSERT_EQ ((*it), "/key4/1") << "name wrong";
     124           2 :         --it;
     125           8 :         ASSERT_EQ ((*it), "") << "name wrong";
     126           6 :         ASSERT_EQ (it, k.begin ()) << "not at begin";
     127             : 
     128           4 :         it++;
     129           8 :         ASSERT_EQ ((*it), "/key4/1") << "name wrong";
     130           4 :         it++;
     131           8 :         ASSERT_EQ ((*it), "/key4/2") << "name wrong";
     132           4 :         it++;
     133           8 :         ASSERT_EQ ((*it), "/key4/3") << "name wrong";
     134           4 :         it++;
     135           6 :         ASSERT_EQ (it, k.end ()) << "not at end";
     136             : 
     137           2 :         it--;
     138           8 :         ASSERT_EQ ((*it), "/key4/3") << "name wrong";
     139           2 :         it--;
     140           8 :         ASSERT_EQ ((*it), "/key4/2") << "name wrong";
     141           2 :         it--;
     142             : }
     143             : 
     144          20 : TEST (iterNameCascading, reverse)
     145             : {
     146           4 :         Key k ("/\\/key4\\/1/\\/key4\\/2/\\/key4\\/3", KEY_END);
     147             : 
     148           2 :         Key::reverse_iterator it = k.rend ();
     149           8 :         ASSERT_EQ ((*it), "") << "name wrong";
     150           2 :         --it;
     151           8 :         ASSERT_EQ ((*it), "") << "name wrong";
     152           2 :         --it;
     153             : 
     154           8 :         ASSERT_EQ ((*it), "/key4/1") << "name wrong";
     155           2 :         --it;
     156           8 :         ASSERT_EQ ((*it), "/key4/2") << "name wrong";
     157           2 :         --it;
     158           8 :         ASSERT_EQ ((*it), "/key4/3") << "name wrong";
     159             :         // --it; // Misusage, do not go past begin
     160           6 :         ASSERT_EQ (it, k.rbegin ()) << "not at end";
     161             : 
     162           2 :         ++it;
     163           8 :         ASSERT_EQ ((*it), "/key4/2") << "name wrong";
     164           2 :         ++it;
     165           8 :         ASSERT_EQ ((*it), "/key4/1") << "name wrong";
     166           2 :         ++it;
     167           8 :         ASSERT_EQ ((*it), "") << "name wrong";
     168           2 :         ++it;
     169           6 :         ASSERT_EQ (it, k.rend ()) << "not at begin";
     170             : 
     171           4 :         it--;
     172           8 :         ASSERT_EQ ((*it), "") << "name wrong";
     173           4 :         it--;
     174           8 :         ASSERT_EQ ((*it), "/key4/1") << "name wrong";
     175           4 :         it--;
     176           8 :         ASSERT_EQ ((*it), "/key4/2") << "name wrong";
     177           4 :         it--;
     178           8 :         ASSERT_EQ ((*it), "/key4/3") << "name wrong";
     179             :         // it--; // Misusage, do not go past begin
     180           6 :         ASSERT_EQ (it, k.rbegin ()) << "not at end";
     181             : 
     182           4 :         it++;
     183           8 :         ASSERT_EQ ((*it), "/key4/2") << "name wrong";
     184           4 :         it++;
     185           8 :         ASSERT_EQ ((*it), "/key4/1") << "name wrong";
     186           6 : }

Generated by: LCOV version 1.13