From 00d00d930e64ac4c7ae00019462e2bd8c3250287 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Sat, 3 Sep 2016 23:14:09 +0200 Subject: [PATCH] Tests for std::vector --- tstl/test_suite/test.cpp | 2 + tstl/test_suite/vector.cpp | 102 +++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 tstl/test_suite/vector.cpp diff --git a/tstl/test_suite/test.cpp b/tstl/test_suite/test.cpp index 20bdf0ec..a865c5f1 100644 --- a/tstl/test_suite/test.cpp +++ b/tstl/test_suite/test.cpp @@ -12,6 +12,7 @@ void string_tests(); void tuple_tests(); +void vector_tests(); void traits_tests(); void algorithms_tests(); void circular_buffer_tests(); @@ -22,6 +23,7 @@ int main(){ algorithms_tests(); circular_buffer_tests(); tuple_tests(); + vector_tests(); printf("All tests finished\n"); diff --git a/tstl/test_suite/vector.cpp b/tstl/test_suite/vector.cpp new file mode 100644 index 00000000..afe928d9 --- /dev/null +++ b/tstl/test_suite/vector.cpp @@ -0,0 +1,102 @@ +//======================================================================= +// Copyright Baptiste Wicht 2013-2016. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +//======================================================================= + +#include +#include + +#include +#include + +#include "test.hpp" + +namespace { + +void test_base(){ + std::vector a{1, 0, 0, 2, 3, 4}; + + check(a.size() == 6, "Invalid vector:size"); + check(a[0] == 1, "Invalid vector:[]"); + check(a[5] == 4, "Invalid vector:[]"); + + check(*a.begin() == 1); +} + +void test_erase(){ + std::vector a{1, 0, 0, 2, 3, 4}; + + a.erase(2); + + check(a.size() == 5, "Invalid vector:size"); + check(a[0] == 1, "Invalid vector:[]"); + check(a[1] == 0, "Invalid vector:[]"); + check(a[2] == 2, "Invalid vector:[]"); + check(a[3] == 3, "Invalid vector:[]"); + check(a[4] == 4, "Invalid vector:[]"); + + check(*a.begin() == 1); + + a.erase(a.begin() + 2); + + check(a.size() == 4, "Invalid vector:size"); + check(a[0] == 1, "Invalid vector:[]"); + check(a[1] == 0, "Invalid vector:[]"); + check(a[2] == 3, "Invalid vector:[]"); + check(a[3] == 4, "Invalid vector:[]"); +} + +void test_erase_range(){ + std::vector a{1, 0, 0, 2, 3, 4}; + + a.erase(a.begin() + 1, a.begin() + 4); + + check(a.size() == 3, "Invalid vector:size"); + check(a[0] == 1, "Invalid vector:[]"); + check(a[1] == 3, "Invalid vector:[]"); + check(a[2] == 4, "Invalid vector:[]"); + + check(*a.begin() == 1); +} + +void test_erase_remove(){ + std::vector a{1, 0, 0, 2, 3, 4}; + + a.erase(std::remove(a.begin(), a.end(), 0), a.end()); + + check(a.size() == 4, "Invalid vector:size"); + check(a[0] == 1, "Invalid vector:[]"); + check(a[1] == 2, "Invalid vector:[]"); + check(a[2] == 3, "Invalid vector:[]"); + check(a[3] == 4, "Invalid vector:[]"); + + check(*a.begin() == 1); +} + +void test_erase_remove_if(){ + std::vector a{1, 0, 0, 2, 3, 4}; + + a.erase(std::remove_if(a.begin(), a.end(), [](int value){ + return value == 1 || value == 3; + }), a.end()); + + check(a.size() == 4, "Invalid vector:size"); + check(a[0] == 0, "Invalid vector:[]"); + check(a[1] == 0, "Invalid vector:[]"); + check(a[2] == 2, "Invalid vector:[]"); + check(a[3] == 4, "Invalid vector:[]"); + + check(*a.begin() == 0); +} + +} //end of anonymous namespace + +void vector_tests(){ + test_base(); + test_erase(); + test_erase_range(); + test_erase_remove(); + test_erase_remove_if(); +}