Ignore:
Timestamp:
2018-07-05T21:41:24Z (7 years ago)
Author:
Dzejrou <dzejrou@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7452b155
Parents:
bb1d15c
git-author:
Dzejrou <dzejrou@…> (2018-05-17 00:49:32)
git-committer:
Dzejrou <dzejrou@…> (2018-07-05 21:41:24)
Message:

cpp: added list modifiers tests and fixed bugs found by htem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/cpp/src/__bits/test/list.cpp

    rbb1d15c rc300bb5  
    4040
    4141        test_construction_and_assignment();
     42        test_modifiers();
    4243
    4344        return end();
     
    152153        test_eq("back", l5.back(), 1);
    153154    }
     155
     156    void list_test::test_modifiers()
     157    {
     158        std::list<int> l1{};
     159        test_eq("empty list", l1.empty(), true);
     160
     161        l1.push_back(1);
     162        test_eq("empty list push_back pt1", l1.size(), 1U);
     163        test_eq("empty list push_back pt2", l1.empty(), false);
     164        test_eq("empty list push_back pt3", l1.front(), 1);
     165        test_eq("empty list push_back pt4", l1.back(), 1);
     166
     167        l1.push_front(2);
     168        test_eq("push_front pt1", l1.size(), 2U);
     169        test_eq("push_front pt2", l1.front(), 2);
     170        test_eq("push_front pt3", l1.back(), 1);
     171
     172        l1.pop_back();
     173        test_eq("pop_back pt1", l1.size(), 1U);
     174        test_eq("pop_back pt2", l1.back(), 2);
     175
     176        l1.push_front(3);
     177        test_eq("size", l1.size(), 2U);
     178
     179        l1.pop_front();
     180        test_eq("pop_front", l1.front(), 2);
     181
     182        auto check1 = {2, 42, 42, 42, 42, 42};
     183        l1.insert(l1.begin(), 5U, 42);
     184        test_eq(
     185            "insert n*value",
     186            check1.begin(), check1.end(),
     187            l1.begin(), l1.end()
     188        );
     189
     190        auto data1 = {33, 34};
     191        auto check2 = {2, 42, 33, 34, 42, 42, 42, 42};
     192        auto it1 = l1.begin();
     193        std::advance(it1, 2);
     194
     195        l1.insert(it1, data1.begin(), data1.end());
     196        test_eq(
     197            "insert iterator range",
     198            check2.begin(), check2.end(),
     199            l1.begin(), l1.end()
     200        );
     201
     202        auto check3 = {2, 42, 33, 34, 42, 33, 34, 42, 42, 42};
     203        auto it2 = l1.begin();
     204        std::advance(it2, 5);
     205
     206        l1.insert(it2, data1);
     207        test_eq(
     208            "insert initializer_list",
     209            check3.begin(), check3.end(),
     210            l1.begin(), l1.end()
     211        );
     212
     213        auto check4 = {2, 42, 33, 34, 33, 34, 42, 42, 42};
     214        auto it3 = l1.begin();
     215        std::advance(it3, 4);
     216
     217        l1.erase(it3);
     218        test_eq(
     219            "erase iterator",
     220            check4.begin(), check4.end(),
     221            l1.begin(), l1.end()
     222        );
     223
     224        auto check5 = {33, 34, 42, 42, 42};
     225        auto it4 = l1.begin();
     226        auto it5 = l1.begin();
     227        std::advance(it5, 4);
     228
     229        l1.erase(it4, it5);
     230        test_eq(
     231            "erase iterator range",
     232            check5.begin(), check5.end(),
     233            l1.begin(), l1.end()
     234        );
     235
     236        l1.clear();
     237        test_eq("clear empty", l1.empty(), true);
     238        test_eq("clear size", l1.size(), 0U);
     239    }
    154240}
    155241
Note: See TracChangeset for help on using the changeset viewer.