Fix bug in list where the wrong value was copied if an item was inserted at the beinging of the list
This commit is contained in:
parent
0d14cb5797
commit
3bfa8e5863
2 changed files with 26 additions and 4 deletions
|
@ -69,10 +69,10 @@ public:
|
|||
} else if (pos == _end) {
|
||||
--pos;
|
||||
}
|
||||
T * tmp = pos;
|
||||
while (tmp != _end - 1) {
|
||||
*(tmp + 1) = *tmp;
|
||||
++tmp;
|
||||
T * tmp = _end - 1;
|
||||
while (tmp != pos) {
|
||||
*tmp = *(tmp - 1);
|
||||
--tmp;
|
||||
}
|
||||
return pos;
|
||||
}
|
||||
|
|
|
@ -44,6 +44,28 @@ assert_equals(4, test_list[3]);
|
|||
|
||||
} /** List insert test **/
|
||||
|
||||
{ /** List insert beginning test **/
|
||||
|
||||
TestCase test_case("List insert beginning");
|
||||
|
||||
olm::List<int, 4> test_list;
|
||||
|
||||
assert_equals(std::size_t(0), test_list.size());
|
||||
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
test_list.insert(test_list.begin(), i);
|
||||
}
|
||||
|
||||
assert_equals(std::size_t(4), test_list.size());
|
||||
|
||||
int i = 4;
|
||||
for (auto item : test_list) {
|
||||
assert_equals(--i, item);
|
||||
}
|
||||
|
||||
} /** List insert test **/
|
||||
|
||||
|
||||
{ /** List erase test **/
|
||||
TestCase test_case("List erase");
|
||||
|
||||
|
|
Loading…
Reference in a new issue