From c7ea481274782e83fac0239c0eace1febcc19a80 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Sun, 10 Mar 2019 20:13:46 +0000 Subject: [PATCH] Partial implementation of vector of pointers --- include/etl/vector.h | 207 +- test/test_vector_external_buffer.cpp | 1405 +++++++------- test/test_vector_pointer_external_buffer.cpp | 1813 ++++++++++++++++++ test/vs2017/etl.vcxproj | 1 + test/vs2017/etl.vcxproj.filters | 3 + 5 files changed, 2714 insertions(+), 715 deletions(-) create mode 100644 test/test_vector_pointer_external_buffer.cpp diff --git a/include/etl/vector.h b/include/etl/vector.h index f791340c..c23e5520 100644 --- a/include/etl/vector.h +++ b/include/etl/vector.h @@ -958,7 +958,7 @@ namespace etl //********************************************************************* /// Initialise the source vector after a move. //********************************************************************* - void initialise_source_after_move() + void initialise_source_external_buffer_after_move() { ETL_SUBTRACT_DEBUG_COUNT(int32_t(std::distance(p_buffer, p_end))) @@ -968,7 +968,7 @@ namespace etl //********************************************************************* /// Initialise the destination vector after a move. //********************************************************************* - void initialise_destination_after_move() + void initialise_destination_external_buffer_after_move() { ETL_ADD_DEBUG_COUNT(int32_t(std::distance(p_buffer, p_end))) } @@ -1416,8 +1416,8 @@ namespace etl this->p_buffer = rhs.p_buffer; this->p_end = rhs.p_end; - this->initialise_destination_after_move(); - rhs.initialise_source_after_move(); + this->initialise_destination_external_buffer_after_move(); + rhs.initialise_source_external_buffer_after_move(); } return *this; @@ -1440,11 +1440,11 @@ namespace etl #endif void repair() { -//#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED -// ETL_ASSERT(std::is_trivially_copyable::value, ETL_ERROR(etl::vector_incompatible_type)); -//#endif -// -// etl::ivector::repair_buffer(this->p_buffer); +#if ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED + ETL_ASSERT(std::is_trivially_copyable::value, ETL_ERROR(etl::vector_incompatible_type)); +#endif + + etl::ivector::repair_buffer(this->p_buffer); } }; @@ -1542,6 +1542,50 @@ namespace etl return *this; } +#if ETL_CPP11_SUPPORTED + //************************************************************************* + /// Move constructor. + //************************************************************************* + vector(vector&& other) + : etl::ivector(reinterpret_cast(&buffer), MAX_SIZE) + { + if (this != &other) + { + this->initialise(); + + typename etl::ivector::iterator itr = other.begin(); + while (itr != other.end()) + { + this->push_back(std::move(*itr)); + ++itr; + } + + other.initialise(); + } + } + + //************************************************************************* + /// Move assignment operator. + //************************************************************************* + vector& operator = (vector&& rhs) + { + if (&rhs != this) + { + this->clear(); + typename etl::ivector::iterator itr = rhs.begin(); + while (itr != rhs.end()) + { + this->push_back(std::move(*itr)); + ++itr; + } + + rhs.initialise(); + } + + return *this; + } +#endif + //************************************************************************* /// Fix the internal pointers after a low level memory copy. //************************************************************************* @@ -1554,6 +1598,151 @@ namespace etl typename etl::aligned_storage::value>::type buffer; }; + + //*************************************************************************** + /// A vector implementation that uses a fixed size buffer. + /// The buffer is supplied on construction. + ///\tparam T The element type that is pointed to. + ///\ingroup vector + //*************************************************************************** + template + class vector : public etl::ivector + { + public: + + //************************************************************************* + /// Constructor. + //************************************************************************* + vector(void* buffer, size_t max_size) + : etl::ivector(reinterpret_cast(buffer), max_size) + { + this->initialise(); + } + + //************************************************************************* + /// Constructor, with size. + ///\param initial_size The initial size of the vector. + //************************************************************************* + explicit vector(size_t initial_size, void* buffer, size_t max_size) + : etl::ivector(reinterpret_cast(buffer), max_size) + { + this->initialise(); + this->resize(initial_size); + } + + //************************************************************************* + /// Constructor, from initial size and value. + ///\param initial_size The initial size of the vector. + ///\param value The value to fill the vector with. + //************************************************************************* + vector(size_t initial_size, typename etl::ivector::parameter_t value, void* buffer, size_t max_size) + : etl::ivector(reinterpret_cast(buffer), max_size) + { + this->initialise(); + this->resize(initial_size, value); + } + + //************************************************************************* + /// Constructor, from an iterator range. + ///\tparam TIterator The iterator type. + ///\param first The iterator to the first element. + ///\param last The iterator to the last element + 1. + //************************************************************************* + template + vector(TIterator first, TIterator last, void* buffer, size_t max_size) + : etl::ivector(reinterpret_cast(buffer), max_size) + { + this->assign(first, last); + } + +#if ETL_CPP11_SUPPORTED && !defined(ETL_STLPORT) && !defined(ETL_NO_STL) + //************************************************************************* + /// Constructor, from an initializer_list. + //************************************************************************* + vector(std::initializer_list init, void* buffer, size_t max_size) + : etl::ivector(reinterpret_cast(buffer), max_size) + { + this->assign(init.begin(), init.end()); + } +#endif + + //************************************************************************* + /// Copy constructor. + //************************************************************************* + vector(const vector& other, void* buffer, size_t max_size) + : etl::ivector(reinterpret_cast(buffer), max_size) + { + this->assign(other.begin(), other.end()); + } + + //************************************************************************* + /// Assignment operator. + //************************************************************************* + vector& operator = (const vector& rhs) + { + if (&rhs != this) + { + this->assign(rhs.cbegin(), rhs.cend()); + } + + return *this; + } + +#if ETL_CPP11_SUPPORTED + //************************************************************************* + /// Move constructor. + //************************************************************************* + vector(vector&& other, void* buffer, size_t max_size) + : etl::ivector(reinterpret_cast(buffer), max_size) + { + if (this != &other) + { + this->initialise(); + + this->p_buffer = other.p_buffer; + + other.initialise(); + } + } + + //************************************************************************* + /// Move assignment operator. + //************************************************************************* + vector& operator = (vector&& rhs) + { + if (&rhs != this) + { + this->clear(); + this->p_buffer = rhs.p_buffer; + this->p_end = rhs.p_end; + + this->initialise_destination_external_buffer_after_move(); + rhs.initialise_source_external_buffer_after_move(); + } + + return *this; + } +#endif + + //************************************************************************* + /// Destructor. + //************************************************************************* + ~vector() + { + this->clear(); + } + + //************************************************************************* + /// Fix the internal pointers after a low level memory copy. + //************************************************************************* +#ifdef ETL_IVECTOR_REPAIR_ENABLE + virtual +#endif + void repair() + { + etl::ivector::repair_buffer(this->p_buffer); + } + }; } #ifdef ETL_COMPILER_GCC diff --git a/test/test_vector_external_buffer.cpp b/test/test_vector_external_buffer.cpp index 19671b63..66474ba5 100644 --- a/test/test_vector_external_buffer.cpp +++ b/test/test_vector_external_buffer.cpp @@ -37,13 +37,16 @@ SOFTWARE. namespace { + static const size_t SIZE = 10; + + int buffer1[SIZE]; + int buffer2[SIZE]; + int buffer3[SIZE]; + int buffer4[SIZE]; + int buffer5[SIZE]; + SUITE(test_vector) { - static const size_t SIZE = 10; - - int buffer[10]; - int buffer2[10]; - typedef etl::vector Data; typedef etl::ivector IData; typedef std::vector Compare_Data; @@ -72,15 +75,18 @@ namespace shorter_data.assign(std::begin(n_greater), std::end(n_greater) - 1); different_data.assign(initial_data.rbegin(), initial_data.rend()); - std::fill_n(buffer, SIZE, -1); + std::fill_n(buffer1, SIZE, -1); std::fill_n(buffer2, SIZE, -1); + std::fill_n(buffer3, SIZE, -1); + std::fill_n(buffer4, SIZE, -1); + std::fill_n(buffer5, SIZE, -1); } }; //************************************************************************* TEST_FIXTURE(SetupFixture, test_default_constructor) { - Data data(buffer, SIZE); + Data data(buffer1, SIZE); CHECK_EQUAL(data.size(), size_t(0)); CHECK(data.empty()); @@ -92,7 +98,7 @@ namespace //************************************************************************* TEST(test_iterator_comparison_empty) { - Data data(buffer, SIZE); + Data data(buffer1, SIZE); CHECK(data.begin() == data.end()); CHECK(data.cbegin() == data.cend()); @@ -104,7 +110,7 @@ namespace TEST_FIXTURE(SetupFixture, test_constructor_size) { const size_t INITIAL_SIZE = 5; - Data data(INITIAL_SIZE, buffer, SIZE); + Data data(INITIAL_SIZE, buffer1, SIZE); CHECK(data.size() == INITIAL_SIZE); CHECK(!data.empty()); @@ -119,7 +125,7 @@ namespace std::array compare_data; compare_data.fill(INITIAL_VALUE); - Data data(INITIAL_SIZE, INITIAL_VALUE, buffer, SIZE); + Data data(INITIAL_SIZE, INITIAL_VALUE, buffer1, SIZE); CHECK(data.size() == INITIAL_SIZE); CHECK(!data.empty()); @@ -134,7 +140,7 @@ namespace //************************************************************************* TEST_FIXTURE(SetupFixture, test_constructor_size_excess) { - CHECK_THROW(Data data(SIZE + 1, buffer, SIZE), etl::vector_full); + CHECK_THROW(Data data(SIZE + 1, buffer1, SIZE), etl::vector_full); } //************************************************************************* @@ -142,7 +148,7 @@ namespace { Compare_Data compare_data(initial_data.begin(), initial_data.end()); - Data data(compare_data.begin(), compare_data.end(), buffer, SIZE); + Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); CHECK(data.size() == SIZE); CHECK(!data.empty()); @@ -153,7 +159,7 @@ namespace { Compare_Data compare_data = { 0, 1, 2, 3 }; std::initializer_list il = { 0, 1, 2, 3 }; - Data data(il, buffer, SIZE); + Data data(il, buffer1, SIZE); CHECK_EQUAL(compare_data.size(), data.size()); CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin())); @@ -162,7 +168,7 @@ namespace //************************************************************************* TEST_FIXTURE(SetupFixture, test_copy_constructor) { - Data data(initial_data.begin(), initial_data.end(), buffer, SIZE); + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); Data data2(data, buffer2, SIZE); CHECK(data2 == data); @@ -173,7 +179,7 @@ namespace //************************************************************************* TEST_FIXTURE(SetupFixture, test_assignment) { - Data data(initial_data.begin(), initial_data.end(), buffer, SIZE); + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); Data other_data(buffer2, SIZE); other_data = data; @@ -186,927 +192,914 @@ namespace } //************************************************************************* - //TEST_FIXTURE(SetupFixture, test_assignment_iterface) - //{ - // Data data1(initial_data.begin(), initial_data.end(), buffer, SIZE); - // Data data2(buffer2, SIZE); + TEST_FIXTURE(SetupFixture, test_assignment_iterface) + { + Data data1(initial_data.begin(), initial_data.end(), buffer1, SIZE); + Data data2(buffer2, SIZE); - // IData& idata1 = data1; - // IData& idata2 = data2; + IData& idata1 = data1; + IData& idata2 = data2; - // idata2 = idata1; + idata2 = idata1; - // bool is_equal = std::equal(data1.begin(), - // data1.end(), - // data2.begin()); + bool is_equal = std::equal(data1.begin(), + data1.end(), + data2.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_self_assignment) - //{ - // Data data(initial_data.begin(), initial_data.end()); - // Data other_data(data); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_self_assignment) + { + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); + Data other_data(data, buffer1, SIZE); - // other_data = other_data; + other_data = other_data; - // bool is_equal = std::equal(data.begin(), - // data.end(), - // other_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + other_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_begin) - //{ - // Data data(10); - // const Data constData(10); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_begin) + { + Data data(10, buffer1, SIZE); + const Data constData(10, buffer1, SIZE); - // CHECK_EQUAL(&data[0], data.begin()); - // CHECK_EQUAL(&constData[0], constData.begin()); - //} + CHECK_EQUAL(&data[0], data.begin()); + CHECK_EQUAL(&constData[0], constData.begin()); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_end) - //{ - // Data data(10); - // const Data constData(10); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_end) + { + Data data(10, buffer1, SIZE); + const Data constData(10, buffer1, SIZE); - // CHECK_EQUAL(&data[10], data.end()); - // CHECK_EQUAL(&constData[10], constData.end()); - //} + CHECK_EQUAL(&data[10], data.end()); + CHECK_EQUAL(&constData[10], constData.end()); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_resize_up) - //{ - // const size_t INITIAL_SIZE = 5; - // const size_t NEW_SIZE = 8; + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_resize_up) + { + const size_t INITIAL_SIZE = 5; + const size_t NEW_SIZE = 8; - // Data data(INITIAL_SIZE); - // data.resize(NEW_SIZE); + Data data(INITIAL_SIZE, buffer1, SIZE); + data.resize(NEW_SIZE); - // CHECK_EQUAL(data.size(), NEW_SIZE); - //} - - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_resize_up_value) - //{ - // const size_t INITIAL_SIZE = 5; - // const size_t NEW_SIZE = 8; - // const int INITIAL_VALUE = 1; + CHECK_EQUAL(data.size(), NEW_SIZE); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_resize_up_value) + { + const size_t INITIAL_SIZE = 5; + const size_t NEW_SIZE = 8; + const int INITIAL_VALUE = 1; - // Data data(INITIAL_SIZE, INITIAL_VALUE); - // data.resize(NEW_SIZE, INITIAL_VALUE); - - // std::array compare_data; - // compare_data.fill(INITIAL_VALUE); - - // CHECK_EQUAL(compare_data.size(), data.size()); + Data data(INITIAL_SIZE, INITIAL_VALUE, buffer1, SIZE); + data.resize(NEW_SIZE, INITIAL_VALUE); + + std::array compare_data; + compare_data.fill(INITIAL_VALUE); + + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); - - // CHECK(is_equal); - //} - - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_resize_excess) - //{ - // const size_t INITIAL_SIZE = 5; - // const size_t NEW_SIZE = SIZE + 1; - - // Data data(INITIAL_SIZE); - - // CHECK_THROW(data.resize(NEW_SIZE), etl::vector_full); - //} - - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_resize_down) - //{ - // const size_t INITIAL_SIZE = 5; - // const size_t NEW_SIZE = 2; - - // Data data(INITIAL_SIZE); - // data.resize(NEW_SIZE); - - // CHECK_EQUAL(data.size(), NEW_SIZE); - //} - - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_resize_down_value) - //{ - // const size_t INITIAL_SIZE = 5; - // const size_t NEW_SIZE = 2; - // const int INITIAL_VALUE = 1; - - // Data data(INITIAL_SIZE); - // data.resize(NEW_SIZE, INITIAL_VALUE); - - // CHECK_EQUAL(data.size(), NEW_SIZE); - //} - - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_empty) - //{ - // Data data(buffer, SIZE); - // data.resize(data.max_size()); - - // CHECK(data.full()); - // CHECK(!data.empty()); - //} - - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_full) - //{ - // Data data(buffer, SIZE); - - // CHECK(!data.full()); - // CHECK(data.empty()); - //} - - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_index) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); - - // Data data(compare_data.begin(), compare_data.end()); - - // for (size_t i = 0; i < data.size(); ++i) - // { - // CHECK_EQUAL(data[i], compare_data[i]); - // } - //} + bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + CHECK(is_equal); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_resize_excess) + { + const size_t INITIAL_SIZE = 5; + const size_t NEW_SIZE = SIZE + 1; + + Data data(INITIAL_SIZE, buffer1, SIZE); + + CHECK_THROW(data.resize(NEW_SIZE), etl::vector_full); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_resize_down) + { + const size_t INITIAL_SIZE = 5; + const size_t NEW_SIZE = 2; + + Data data(INITIAL_SIZE, buffer1, SIZE); + data.resize(NEW_SIZE); + + CHECK_EQUAL(data.size(), NEW_SIZE); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_resize_down_value) + { + const size_t INITIAL_SIZE = 5; + const size_t NEW_SIZE = 2; + const int INITIAL_VALUE = 1; + + Data data(INITIAL_SIZE, buffer1, SIZE); + data.resize(NEW_SIZE, INITIAL_VALUE); + + CHECK_EQUAL(data.size(), NEW_SIZE); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_empty) + { + Data data(buffer1, SIZE); + data.resize(data.max_size()); + + CHECK(data.full()); + CHECK(!data.empty()); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_full) + { + Data data(buffer1, SIZE); + + CHECK(!data.full()); + CHECK(data.empty()); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_index) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); + + for (size_t i = 0; i < data.size(); ++i) + { + CHECK_EQUAL(data[i], compare_data[i]); + } + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_index_const) - //{ - // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_index_const) + { + const Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // const Data data(compare_data.begin(), compare_data.end()); + const Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); - // for (size_t i = 0; i < data.size(); ++i) - // { - // CHECK_EQUAL(data[i], compare_data[i]); - // } - //} + for (size_t i = 0; i < data.size(); ++i) + { + CHECK_EQUAL(data[i], compare_data[i]); + } + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_at) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_at) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); - // for (size_t i = 0; i < data.size(); ++i) - // { - // CHECK_EQUAL(data.at(i), compare_data.at(i)); - // } + for (size_t i = 0; i < data.size(); ++i) + { + CHECK_EQUAL(data.at(i), compare_data.at(i)); + } - // CHECK_THROW(data.at(data.size()), etl::vector_out_of_bounds); - //} + CHECK_THROW(data.at(data.size()), etl::vector_out_of_bounds); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_at_const) - //{ - // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // const Data data(initial_data.begin(), initial_data.end()); - - // for (size_t i = 0; i < data.size(); ++i) - // { - // CHECK_EQUAL(data.at(i), compare_data.at(i)); - // } + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_at_const) + { + const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + const Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); + + for (size_t i = 0; i < data.size(); ++i) + { + CHECK_EQUAL(data.at(i), compare_data.at(i)); + } - // CHECK_THROW(data.at(data.size()), etl::vector_out_of_bounds); - //} + CHECK_THROW(data.at(data.size()), etl::vector_out_of_bounds); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_front) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_front) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); - // CHECK(data.front() == compare_data.front()); - //} - - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_front_const) - //{ - // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // const Data data(initial_data.begin(), initial_data.end()); - - // CHECK(data.front() == compare_data.front()); - //} + CHECK(data.front() == compare_data.front()); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_front_const) + { + const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + const Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); + + CHECK(data.front() == compare_data.front()); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_back) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_back) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); - // CHECK(data.back() == compare_data.back()); - //} - - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_back_const) - //{ - // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // const Data data(initial_data.begin(), initial_data.end()); + CHECK(data.back() == compare_data.back()); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_back_const) + { + const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + const Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); - // CHECK(data.back() == compare_data.back()); - //} + CHECK(data.back() == compare_data.back()); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_data) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_data) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(compare_data.begin(), compare_data.end()); + Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); - // bool is_equal = std::equal(data.data(), - // data.data() + data.size(), - // compare_data.begin()); + bool is_equal = std::equal(data.data(), + data.data() + data.size(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_data_const) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); - - // const Data data(compare_data.begin(), compare_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_data_const) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + const Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); - // bool is_equal = std::equal(data.data(), - // data.data() + data.size(), - // compare_data.begin()); + bool is_equal = std::equal(data.data(), + data.data() + data.size(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_assign_range) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_assign_range) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(buffer, SIZE); + Data data(buffer1, SIZE); - // data.assign(compare_data.begin(), compare_data.end()); + data.assign(compare_data.begin(), compare_data.end()); - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_assign_size_value) - //{ - // const size_t INITIAL_SIZE = 5; - // const int INITIAL_VALUE = 1; - // std::array compare_data; - // compare_data.fill(INITIAL_VALUE); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_assign_size_value) + { + const size_t INITIAL_SIZE = 5; + const int INITIAL_VALUE = 1; + std::array compare_data; + compare_data.fill(INITIAL_VALUE); - // Data data(buffer, SIZE); - // data.assign(INITIAL_SIZE, INITIAL_VALUE); + Data data(buffer1, SIZE); + data.assign(INITIAL_SIZE, INITIAL_VALUE); - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_assign_size_value_excess) - //{ - // const size_t INITIAL_SIZE = SIZE; - // const size_t EXCESS_SIZE = SIZE + 1; - // const int INITIAL_VALUE = 1; - // std::array compare_data; - // compare_data.fill(INITIAL_VALUE); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_assign_size_value_excess) + { + const size_t INITIAL_SIZE = SIZE; + const size_t EXCESS_SIZE = SIZE + 1; + const int INITIAL_VALUE = 1; + std::array compare_data; + compare_data.fill(INITIAL_VALUE); - // Data data(buffer, SIZE); + Data data(buffer1, SIZE); - // CHECK_THROW(data.assign(EXCESS_SIZE, INITIAL_VALUE), etl::vector_full); - //} + CHECK_THROW(data.assign(EXCESS_SIZE, INITIAL_VALUE), etl::vector_full); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_push_back) - //{ - // Compare_Data compare_data; - // Data data(buffer, SIZE); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_push_back) + { + Compare_Data compare_data; + Data data(buffer1, SIZE); - // for (int i = 0; i < int(SIZE); ++i) - // { - // compare_data.push_back(i); - // } + for (int i = 0; i < int(SIZE); ++i) + { + compare_data.push_back(i); + } - // for (int i = 0; i < int(SIZE); ++i) - // { - // data.push_back(i); - // } + for (int i = 0; i < int(SIZE); ++i) + { + data.push_back(i); + } - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_push_back_literal) - //{ - // Compare_Data compare_data; - // Data data(buffer, SIZE); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_push_back_literal) + { + Compare_Data compare_data; + Data data(buffer1, SIZE); - // compare_data.push_back(1); - // compare_data.push_back(2); - // compare_data.push_back(3); - // compare_data.push_back(4); + compare_data.push_back(1); + compare_data.push_back(2); + compare_data.push_back(3); + compare_data.push_back(4); - // data.push_back(1); - // data.push_back(2); - // data.push_back(3); - // data.push_back(4); + data.push_back(1); + data.push_back(2); + data.push_back(3); + data.push_back(4); - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_push_back_excess) - //{ - // Data data(buffer, SIZE); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_push_back_excess) + { + Data data(buffer1, SIZE); - // for (int i = 0; i < int(SIZE); ++i) - // { - // data.push_back(i); - // } + for (int i = 0; i < int(SIZE); ++i) + { + data.push_back(i); + } - // CHECK_THROW(data.push_back(SIZE), etl::vector_full); - //} + CHECK_THROW(data.push_back(SIZE), etl::vector_full); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_pop_back) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_pop_back) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); - // compare_data.pop_back(); - // compare_data.pop_back(); + compare_data.pop_back(); + compare_data.pop_back(); - // data.pop_back(); - // data.pop_back(); + data.pop_back(); + data.pop_back(); - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_pop_back_exception) - //{ - // Data data(buffer, SIZE); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_pop_back_exception) + { + Data data(buffer1, SIZE); - // data.resize(2); + data.resize(2); - // data.pop_back(); - // data.pop_back(); + data.pop_back(); + data.pop_back(); - // CHECK_THROW(data.pop_back(), etl::vector_empty); - //} + CHECK_THROW(data.pop_back(), etl::vector_empty); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_insert_position_value) - //{ - // const size_t INITIAL_SIZE = 5; - // const int INITIAL_VALUE = 1; + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_insert_position_value) + { + const size_t INITIAL_SIZE = 5; + const int INITIAL_VALUE = 1; - // for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) - // { - // Compare_Data compare_data; - // Data data(buffer, SIZE); + for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) + { + Compare_Data compare_data; + Data data(buffer1, SIZE); - // data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); - // compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); - // data.insert(data.begin() + offset, INITIAL_VALUE); - // compare_data.insert(compare_data.begin() + offset, INITIAL_VALUE); + data.insert(data.begin() + offset, INITIAL_VALUE); + compare_data.insert(compare_data.begin() + offset, INITIAL_VALUE); - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - // } - //} + CHECK(is_equal); + } + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_insert_position_value_excess) - //{ - // const size_t INITIAL_SIZE = SIZE; - // const int INITIAL_VALUE = 1; + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_insert_position_value_excess) + { + const size_t INITIAL_SIZE = SIZE; + const int INITIAL_VALUE = 1; - // Data data(INITIAL_SIZE, INITIAL_VALUE); + Data data(INITIAL_SIZE, INITIAL_VALUE, buffer1, SIZE); - // size_t offset = 2; + size_t offset = 2; - // CHECK_THROW(data.insert(data.begin() + offset, INITIAL_VALUE), etl::vector_full); + CHECK_THROW(data.insert(data.begin() + offset, INITIAL_VALUE), etl::vector_full); - // offset = 0; + offset = 0; - // CHECK_THROW(data.insert(data.begin() + offset, INITIAL_VALUE), etl::vector_full); + CHECK_THROW(data.insert(data.begin() + offset, INITIAL_VALUE), etl::vector_full); - // offset = data.size(); + offset = data.size(); - // CHECK_THROW(data.insert(data.begin() + offset, INITIAL_VALUE), etl::vector_full); - //} + CHECK_THROW(data.insert(data.begin() + offset, INITIAL_VALUE), etl::vector_full); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_insert_position_n_value) - //{ - // const size_t INITIAL_SIZE = 5; - // const size_t INSERT_SIZE = 3; - // const int INITIAL_VALUE = 11; + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_insert_position_n_value) + { + const size_t INITIAL_SIZE = 5; + const size_t INSERT_SIZE = 3; + const int INITIAL_VALUE = 11; - // for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) - // { - // Compare_Data compare_data; - // Data data(buffer, SIZE); + for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) + { + Compare_Data compare_data; + Data data(buffer1, SIZE); - // data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); - // compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); - // data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE); - // compare_data.insert(compare_data.begin() + offset, INSERT_SIZE, INITIAL_VALUE); + data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE); + compare_data.insert(compare_data.begin() + offset, INSERT_SIZE, INITIAL_VALUE); - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - // } - //} + CHECK(is_equal); + } + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_insert_position_n_value_excess) - //{ - // const size_t INITIAL_SIZE = SIZE; - // const size_t INSERT_SIZE = 4; - // const int INITIAL_VALUE = 1; + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_insert_position_n_value_excess) + { + const size_t INITIAL_SIZE = SIZE; + const size_t INSERT_SIZE = 4; + const int INITIAL_VALUE = 1; - // Data data(INITIAL_SIZE, INITIAL_VALUE); + Data data(INITIAL_SIZE, INITIAL_VALUE, buffer1, SIZE); - // size_t offset = 0; + size_t offset = 0; - // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full); + CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full); - // offset = 2; + offset = 2; - // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full); + CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full); - // offset = 4; + offset = 4; - // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full); + CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full); - // offset = data.size(); + offset = data.size(); - // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full); - //} + CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, INITIAL_VALUE), etl::vector_full); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_insert_position_range) - //{ - // const size_t INITIAL_SIZE = 5; + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_insert_position_range) + { + const size_t INITIAL_SIZE = 5; - // for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) - // { - // Compare_Data compare_data; - // Data data(buffer, SIZE); + for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) + { + Compare_Data compare_data; + Data data(buffer1, SIZE); - // data.resize(SIZE, -1); + data.resize(SIZE, -1); - // data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); - // compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); - // data.insert(data.begin() + offset, insert_data.begin(), insert_data.end()); - // compare_data.insert(compare_data.begin() + offset, insert_data.begin(), insert_data.end()); + data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + data.insert(data.begin() + offset, insert_data.begin(), insert_data.end()); + compare_data.insert(compare_data.begin() + offset, insert_data.begin(), insert_data.end()); - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - // } - //} + CHECK(is_equal); + } + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_insert_position_range_excess) - //{ - // const size_t INITIAL_SIZE = 5; - // const int INITIAL_VALUE = 1; + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_insert_position_range_excess) + { + const size_t INITIAL_SIZE = 5; + const int INITIAL_VALUE = 1; - // Data data(INITIAL_SIZE, INITIAL_VALUE); + Data data(INITIAL_SIZE, INITIAL_VALUE, buffer1, SIZE); - // size_t offset = 0; + size_t offset = 0; - // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); - // offset = 2; + offset = 2; - // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); - // offset = 4; + offset = 4; - // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); - // offset = data.size(); + offset = data.size(); - // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); - //} + CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_erase_single) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_erase_single) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); - // compare_data.erase(compare_data.begin() + 2); + compare_data.erase(compare_data.begin() + 2); - // data.erase(data.begin() + 2); + data.erase(data.begin() + 2); - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_erase_range) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_erase_range) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); - // compare_data.erase(compare_data.begin() + 2, compare_data.begin() + 4); + compare_data.erase(compare_data.begin() + 2, compare_data.begin() + 4); - // data.erase(data.begin() + 2, data.begin() + 4); + data.erase(data.begin() + 2, data.begin() + 4); - // CHECK_EQUAL(compare_data.size(), data.size()); + CHECK_EQUAL(compare_data.size(), data.size()); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_clear) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_clear) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(compare_data.begin(), compare_data.end()); - // data.clear(); + Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); + data.clear(); - // CHECK_EQUAL(data.size(), size_t(0)); - //} + CHECK_EQUAL(data.size(), size_t(0)); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_iterator) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_iterator) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(compare_data.begin(), compare_data.end()); + Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); - // bool is_equal = std::equal(data.begin(), - // data.end(), - // compare_data.begin()); + bool is_equal = std::equal(data.begin(), + data.end(), + compare_data.begin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_const_iterator) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_const_iterator) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(compare_data.begin(), compare_data.end()); + Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); - // bool is_equal = std::equal(data.cbegin(), - // data.cend(), - // compare_data.cbegin()); + bool is_equal = std::equal(data.cbegin(), + data.cend(), + compare_data.cbegin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_reverse_iterator) - //{ - // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_reverse_iterator) + { + Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // Data data(compare_data.begin(), compare_data.end()); + Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); - // bool is_equal = std::equal(data.rbegin(), - // data.rend(), - // compare_data.rbegin()); + bool is_equal = std::equal(data.rbegin(), + data.rend(), + compare_data.rbegin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_const_reverse_iterator) - //{ - // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_const_reverse_iterator) + { + const Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // const Data data(compare_data.begin(), compare_data.end()); + const Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); - // bool is_equal = std::equal(data.crbegin(), - // data.crend(), - // compare_data.crbegin()); + bool is_equal = std::equal(data.crbegin(), + data.crend(), + compare_data.crbegin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_const_reverse_iterator2) - //{ - // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_const_reverse_iterator2) + { + const Compare_Data compare_data(initial_data.begin(), initial_data.end()); - // const Data data(compare_data.begin(), compare_data.end()); + const Data data(compare_data.begin(), compare_data.end(), buffer1, SIZE); - // bool is_equal = std::equal(data.rbegin(), - // data.rend(), - // compare_data.rbegin()); + bool is_equal = std::equal(data.rbegin(), + data.rend(), + compare_data.rbegin()); - // CHECK(is_equal); - //} + CHECK(is_equal); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_equal) - //{ - // const Data initial1(initial_data.begin(), initial_data.end()); - // const Data initial2(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_equal) + { + const Data initial1(initial_data.begin(), initial_data.end(), buffer1, SIZE); + const Data initial2(initial_data.begin(), initial_data.end(), buffer2, SIZE); - // CHECK(initial1 == initial2); + CHECK(initial1 == initial2); - // const Data different(different_data.begin(), different_data.end()); + const Data different(different_data.begin(), different_data.end(), buffer3, SIZE); - // CHECK(!(initial1 == different)); + CHECK(!(initial1 == different)); - // const Data shorter(shorter_data.begin(), shorter_data.end()); + const Data shorter(shorter_data.begin(), shorter_data.end(), buffer4, SIZE); - // CHECK(!(shorter == initial1)); - //} + CHECK(!(shorter == initial1)); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_not_equal) - //{ - // const Data initial1(initial_data.begin(), initial_data.end()); - // const Data initial2(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_not_equal) + { + const Data initial1(initial_data.begin(), initial_data.end(), buffer1, SIZE); + const Data initial2(initial_data.begin(), initial_data.end(), buffer2, SIZE); - // CHECK(!(initial1 != initial2)); + CHECK(!(initial1 != initial2)); - // const Data different(different_data.begin(), different_data.end()); + const Data different(different_data.begin(), different_data.end(), buffer3, SIZE); - // CHECK(initial1 != different); + CHECK(initial1 != different); - // const Data shorter(shorter_data.begin(), shorter_data.end()); + const Data shorter(shorter_data.begin(), shorter_data.end(), buffer4, SIZE); - // CHECK(shorter != initial1); - //} + CHECK(shorter != initial1); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_less_than) - //{ - // const Data less(less_data.begin(), less_data.end()); - // const Data initial(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_less_than) + { + const Data less(less_data.begin(), less_data.end(), buffer1, SIZE); + const Data initial(initial_data.begin(), initial_data.end(), buffer2, SIZE); - // CHECK((less < initial) == (less_data < initial_data)); + CHECK((less < initial) == (less_data < initial_data)); - // const Data greater(greater_data.begin(), greater_data.end()); + const Data greater(greater_data.begin(), greater_data.end(), buffer3, SIZE); - // CHECK((greater < initial) == (greater_data < initial_data)); + CHECK((greater < initial) == (greater_data < initial_data)); - // const Data shorter(shorter_data.begin(), shorter_data.end()); + const Data shorter(shorter_data.begin(), shorter_data.end(), buffer4, SIZE); - // CHECK((shorter < initial) == (shorter_data < initial_data)); - // CHECK((initial < shorter) == (initial_data < shorter_data)); - //} + CHECK((shorter < initial) == (shorter_data < initial_data)); + CHECK((initial < shorter) == (initial_data < shorter_data)); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_less_than_or_equal) - //{ - // const Data less(less_data.begin(), less_data.end()); - // const Data initial(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_less_than_or_equal) + { + const Data less(less_data.begin(), less_data.end(), buffer1, SIZE); + const Data initial(initial_data.begin(), initial_data.end(), buffer2, SIZE); - // CHECK((less <= initial) == (less_data <= initial_data)); + CHECK((less <= initial) == (less_data <= initial_data)); - // const Data greater(greater_data.begin(), greater_data.end()); + const Data greater(greater_data.begin(), greater_data.end(), buffer3, SIZE); - // CHECK((greater <= initial) == (greater_data <= initial_data)); + CHECK((greater <= initial) == (greater_data <= initial_data)); - // const Data shorter(shorter_data.begin(), shorter_data.end()); + const Data shorter(shorter_data.begin(), shorter_data.end(), buffer4, SIZE); - // CHECK((shorter <= initial) == (shorter_data <= initial_data)); - // CHECK((initial <= shorter) == (initial_data <= shorter_data)); + CHECK((shorter <= initial) == (shorter_data <= initial_data)); + CHECK((initial <= shorter) == (initial_data <= shorter_data)); - // const Data initial2(initial_data.begin(), initial_data.end()); - // CHECK((initial <= initial2) == (initial_data <= initial_data)); - //} + const Data initial2(initial_data.begin(), initial_data.end(), buffer5, SIZE); + CHECK((initial <= initial2) == (initial_data <= initial_data)); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_greater_than) - //{ - // const Data less(less_data.begin(), less_data.end()); - // const Data initial(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_greater_than) + { + const Data less(less_data.begin(), less_data.end(), buffer1, SIZE); + const Data initial(initial_data.begin(), initial_data.end(), buffer2, SIZE); - // CHECK((less > initial) == (less_data > initial_data)); + CHECK((less > initial) == (less_data > initial_data)); - // const Data greater(greater_data.begin(), greater_data.end()); + const Data greater(greater_data.begin(), greater_data.end(), buffer3, SIZE); - // CHECK((greater > initial) == (greater_data > initial_data)); + CHECK((greater > initial) == (greater_data > initial_data)); - // const Data shorter(shorter_data.begin(), shorter_data.end()); + const Data shorter(shorter_data.begin(), shorter_data.end(), buffer4, SIZE); - // CHECK((shorter > initial) == (shorter_data > initial_data)); - // CHECK((initial > shorter) == (initial_data > shorter_data)); - //} + CHECK((shorter > initial) == (shorter_data > initial_data)); + CHECK((initial > shorter) == (initial_data > shorter_data)); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_greater_than_or_equal) - //{ - // const Data less(less_data.begin(), less_data.end()); - // const Data initial(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_greater_than_or_equal) + { + const Data less(less_data.begin(), less_data.end(), buffer1, SIZE); + const Data initial(initial_data.begin(), initial_data.end(), buffer2, SIZE); - // CHECK((less >= initial) == (less_data >= initial_data)); + CHECK((less >= initial) == (less_data >= initial_data)); - // const Data greater(greater_data.begin(), greater_data.end()); + const Data greater(greater_data.begin(), greater_data.end(), buffer3, SIZE); - // CHECK((greater >= initial) == (greater_data >= initial_data)); + CHECK((greater >= initial) == (greater_data >= initial_data)); - // const Data shorter(shorter_data.begin(), shorter_data.end()); + const Data shorter(shorter_data.begin(), shorter_data.end(), buffer4, SIZE); - // CHECK((shorter >= initial) == (shorter_data >= initial_data)); - // CHECK((initial >= shorter) == (initial_data > shorter_data)); + CHECK((shorter >= initial) == (shorter_data >= initial_data)); + CHECK((initial >= shorter) == (initial_data > shorter_data)); - // const Data initial2(initial_data.begin(), initial_data.end()); - // CHECK((initial >= initial2) == (initial_data >= initial_data)); - //} + const Data initial2(initial_data.begin(), initial_data.end(), buffer5, SIZE); + CHECK((initial >= initial2) == (initial_data >= initial_data)); + } - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_memcpy_repair) - //{ - // Data data(initial_data.begin(), initial_data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_memcpy_repair) + { + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); - // char buffer[sizeof(Data)]; + char buffer[sizeof(Data)]; - // memcpy(&buffer, &data, sizeof(data)); + memcpy(&buffer, &data, sizeof(data)); - // Data& rdata(*reinterpret_cast(buffer)); - // rdata.repair(); + Data& rdata(*reinterpret_cast(buffer)); + rdata.repair(); - // // Check that the memcpy'd vector is the same. - // CHECK_EQUAL(data.size(), rdata.size()); - // CHECK(!rdata.empty()); - // CHECK(rdata.full()); + // Check that the memcpy'd vector is the same. + CHECK_EQUAL(data.size(), rdata.size()); + CHECK(!rdata.empty()); + CHECK(rdata.full()); - // bool is_equal = std::equal(rdata.begin(), - // rdata.end(), - // data.begin()); + bool is_equal = std::equal(rdata.begin(), + rdata.end(), + data.begin()); - // CHECK(is_equal); + CHECK(is_equal); + } - // // Modify the original and check that the memcpy'd vector is not the same. - // std::reverse(data.begin(), data.end()); + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_memcpy_repair_virtual) + { + Data data(initial_data.begin(), initial_data.end(), buffer1, SIZE); - // is_equal = std::equal(rdata.begin(), - // rdata.end(), - // data.begin()); + char buffer[sizeof(Data)]; - // CHECK(!is_equal); - //} + memcpy(&buffer, &data, sizeof(data)); - ////************************************************************************* - //TEST_FIXTURE(SetupFixture, test_memcpy_repair_virtual) - //{ - // Data data(initial_data.begin(), initial_data.end()); + IData& idata(*reinterpret_cast(buffer)); + idata.repair(); - // char buffer[sizeof(Data)]; + // Check that the memcpy'd vector is the same. + CHECK_EQUAL(data.size(), idata.size()); + CHECK(!idata.empty()); + CHECK(idata.full()); - // memcpy(&buffer, &data, sizeof(data)); + bool is_equal = std::equal(idata.begin(), + idata.end(), + data.begin()); - // IData& idata(*reinterpret_cast(buffer)); - // idata.repair(); + CHECK(is_equal); + } - // // Check that the memcpy'd vector is the same. - // CHECK_EQUAL(data.size(), idata.size()); - // CHECK(!idata.empty()); - // CHECK(idata.full()); + //************************************************************************* + TEST(test_insert_bug) + { + struct S + { + virtual ~S() + { - // bool is_equal = std::equal(idata.begin(), - // idata.end(), - // data.begin()); + } - // CHECK(is_equal); + S(int i): i(i){} - // // Modify the original and check that the memcpy'd vector is not the same. - // std::reverse(data.begin(), data.end()); + int i; + }; - // is_equal = std::equal(idata.begin(), - // idata.end(), - // data.begin()); + S sbuffer1[SIZE] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; + S sbuffer2[SIZE] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; - // CHECK(!is_equal); - //} + const S raw[6] = { 1, 2, 3, 4, 5, 6 }; - ////************************************************************************* - //TEST(test_insert_bug) - //{ - // struct S - // { - // virtual ~S() - // { + etl::vector dest(etl::begin(raw), etl::end(raw), sbuffer1, SIZE); + etl::vector src((size_t) 2, S(8), sbuffer2, SIZE); - // } + dest.insert(dest.begin(), src.begin(), src.end()); - // S(int i): i(i){} + CHECK(dest.size() == 8); + CHECK_EQUAL(src[0].i, dest[0].i); + CHECK_EQUAL(src[1].i, dest[1].i); + CHECK_EQUAL(raw[0].i, dest[2].i); + CHECK_EQUAL(raw[1].i, dest[3].i); + CHECK_EQUAL(raw[2].i, dest[4].i); + CHECK_EQUAL(raw[3].i, dest[5].i); + CHECK_EQUAL(raw[4].i, dest[6].i); + CHECK_EQUAL(raw[5].i, dest[7].i); + } - // int i; - // }; + //************************************************************************* + TEST(test_insert_n_bug) + { + struct S + { + virtual ~S() + { - // const S raw[6] = { 1, 2, 3, 4, 5, 6 }; + } - // etl::vector dest(etl::begin(raw), etl::end(raw)); - // etl::vector src((size_t) 2, S(8)); + S(int i): i(i){} - // dest.insert(dest.begin(), src.begin(), src.end()); + int i; + }; - // CHECK(dest.size() == 8); - // CHECK_EQUAL(src[0].i, dest[0].i); - // CHECK_EQUAL(src[1].i, dest[1].i); - // CHECK_EQUAL(raw[0].i, dest[2].i); - // CHECK_EQUAL(raw[1].i, dest[3].i); - // CHECK_EQUAL(raw[2].i, dest[4].i); - // CHECK_EQUAL(raw[3].i, dest[5].i); - // CHECK_EQUAL(raw[4].i, dest[6].i); - // CHECK_EQUAL(raw[5].i, dest[7].i); - //} + S sbuffer1[SIZE] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; - ////************************************************************************* - //TEST(test_insert_n_bug) - //{ - // struct S - // { - // virtual ~S() - // { + const S raw[6] = { 1, 2, 3, 4, 5, 6 }; - // } + etl::vector dest(etl::begin(raw), etl::end(raw), sbuffer1, SIZE); - // S(int i): i(i){} + dest.insert(dest.begin(), 2, S(8)); - // int i; - // }; - - // const S raw[6] = { 1, 2, 3, 4, 5, 6 }; - - // etl::vector dest(etl::begin(raw), etl::end(raw)); - - // dest.insert(dest.begin(), 2, S(8)); - - // CHECK(dest.size() == 8); - // CHECK_EQUAL(8, dest[0].i); - // CHECK_EQUAL(8, dest[1].i); - // CHECK_EQUAL(raw[0].i, dest[2].i); - // CHECK_EQUAL(raw[1].i, dest[3].i); - // CHECK_EQUAL(raw[2].i, dest[4].i); - // CHECK_EQUAL(raw[3].i, dest[5].i); - // CHECK_EQUAL(raw[4].i, dest[6].i); - // CHECK_EQUAL(raw[5].i, dest[7].i); - //} + CHECK(dest.size() == 8); + CHECK_EQUAL(8, dest[0].i); + CHECK_EQUAL(8, dest[1].i); + CHECK_EQUAL(raw[0].i, dest[2].i); + CHECK_EQUAL(raw[1].i, dest[3].i); + CHECK_EQUAL(raw[2].i, dest[4].i); + CHECK_EQUAL(raw[3].i, dest[5].i); + CHECK_EQUAL(raw[4].i, dest[6].i); + CHECK_EQUAL(raw[5].i, dest[7].i); + } }; } diff --git a/test/test_vector_pointer_external_buffer.cpp b/test/test_vector_pointer_external_buffer.cpp new file mode 100644 index 00000000..aa953d42 --- /dev/null +++ b/test/test_vector_pointer_external_buffer.cpp @@ -0,0 +1,1813 @@ +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2019 jwellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +#include "UnitTest++.h" + +#include +#include +#include +#include + +#include "etl/vector.h" + +namespace +{ + static const size_t SIZE = 10; + + int* buffer1[SIZE]; + int* buffer2[SIZE]; + + SUITE(test_vector_pointer) + { + typedef etl::vector Data; + typedef etl::vector CData; + typedef etl::ivector IData; + typedef etl::ivector CIData; + typedef std::vector Compare_Data; + typedef std::vector CCompare_Data; + + Compare_Data initial_data; + Compare_Data less_data; + Compare_Data greater_data; + Compare_Data shorter_data; + Compare_Data different_data; + Compare_Data insert_data; + + //************************************************************************* + struct SetupFixture + { + SetupFixture() + { + int n0 = 0; + int n1 = 1; + int n2 = 2; + int n3 = 3; + int n4 = 4; + int n5 = 5; + int n6 = 6; + int n7 = 7; + int n8 = 8; + int n9 = 9; + int n11 = 11; + int n12 = 12; + int n13 = 13; + + + int* n[] = { &n0, &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9 }; + int* n_insert[] = { &n11, &n12, &n13 }; + int* n_less[] = { &n0, &n1, &n2, &n3, &n3, &n5, &n6, &n7, &n8, &n9 }; + int* n_greater[] = { &n0, &n1, &n2, &n4, &n4, &n5, &n6, &n7, &n8, &n9 }; + + initial_data.assign(std::begin(n), std::end(n)); + insert_data.assign(std::begin(n_insert), std::end(n_insert)); + less_data.assign(std::begin(n_less), std::end(n_less)); + greater_data.assign(std::begin(n_greater), std::end(n_greater)); + shorter_data.assign(std::begin(n_greater), std::end(n_greater) - 1); + different_data.assign(initial_data.rbegin(), initial_data.rend()); + + std::fill_n(buffer1, SIZE, nullptr); + std::fill_n(buffer2, SIZE, nullptr); + } + }; + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_default_constructor) + { + Data data(buffer1, SIZE); + + CHECK_EQUAL(data.size(), size_t(0)); + CHECK(data.empty()); + CHECK_EQUAL(data.capacity(), SIZE); + CHECK_EQUAL(data.max_size(), SIZE); + } + + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_const_default_constructor) + { + CData data(buffer1, SIZE); + + CHECK_EQUAL(data.size(), size_t(0)); + CHECK(data.empty()); + CHECK_EQUAL(data.capacity(), SIZE); + CHECK_EQUAL(data.max_size(), SIZE); + } + + ////************************************************************************* + //TEST(test_iterator_comparison_empty) + //{ + // Data data; + + // CHECK(data.begin() == data.end()); + // CHECK(data.cbegin() == data.cend()); + // CHECK(data.rbegin() == data.rend()); + // CHECK(data.crbegin() == data.crend()); + //} + + ////************************************************************************* + //TEST(test_const_iterator_comparison_empty) + //{ + // CData data; + + // CHECK(data.begin() == data.end()); + // CHECK(data.cbegin() == data.cend()); + // CHECK(data.rbegin() == data.rend()); + // CHECK(data.crbegin() == data.crend()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_constructor_size) + //{ + // const size_t INITIAL_SIZE = 5; + // Data data(INITIAL_SIZE); + + // CHECK(data.size() == INITIAL_SIZE); + // CHECK(!data.empty()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_constructor_size) + //{ + // const size_t INITIAL_SIZE = 5; + // CData data(INITIAL_SIZE); + + // CHECK(data.size() == INITIAL_SIZE); + // CHECK(!data.empty()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_constructor_size_value) + //{ + // const size_t INITIAL_SIZE = 5; + // int INITIAL_VALUE = 1; + + // std::array compare_data; + // compare_data.fill(&INITIAL_VALUE); + + // Data data(INITIAL_SIZE, &INITIAL_VALUE); + + // CHECK(data.size() == INITIAL_SIZE); + // CHECK(!data.empty()); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_constructor_size_value) + //{ + // const size_t INITIAL_SIZE = 5; + // int INITIAL_VALUE = 1; + + // std::array compare_data; + // compare_data.fill(&INITIAL_VALUE); + + // CData data(INITIAL_SIZE, &INITIAL_VALUE); + + // CHECK(data.size() == INITIAL_SIZE); + // CHECK(!data.empty()); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_constructor_size_excess) + //{ + // CHECK_THROW(Data data(SIZE + 1), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_constructor_size_excess) + //{ + // CHECK_THROW(CData data(SIZE + 1), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_constructor_range) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // Data data(compare_data.begin(), compare_data.end()); + + // CHECK(data.size() == SIZE); + // CHECK(!data.empty()); + // CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin())); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_constructor_range) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // CData data(compare_data.begin(), compare_data.end()); + + // CHECK(data.size() == SIZE); + // CHECK(!data.empty()); + // CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin())); + //} + + ////************************************************************************* + //TEST(test_constructor_initializer_list) + //{ + // int a = 0; + // int b = 1; + // int c = 3; + // int d = 4; + + // Compare_Data compare_data = { &a, &b, &c, &d }; + // Data data = { &a, &b, &c, &d }; + + // CHECK_EQUAL(compare_data.size(), data.size()); + // CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin())); + //} + + ////************************************************************************* + //TEST(test_const_constructor_initializer_list) + //{ + // int a = 0; + // int b = 1; + // int c = 3; + // int d = 4; + + // CCompare_Data compare_data = { &a, &b, &c, &d }; + // CData data = { &a, &b, &c, &d }; + + // CHECK_EQUAL(compare_data.size(), data.size()); + // CHECK(std::equal(compare_data.begin(), compare_data.end(), data.begin())); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_copy_constructor) + //{ + // Data data(initial_data.begin(), initial_data.end()); + // Data data2(data); + // CHECK(data2 == data); + + // data2[2] = nullptr; + // CHECK(data2 != data); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_copy_constructor) + //{ + // CData data(initial_data.begin(), initial_data.end()); + // CData data2(data); + // CHECK(data2 == data); + + // data2[2] = nullptr; + // CHECK(data2 != data); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_assignment) + //{ + // Data data(initial_data.begin(), initial_data.end()); + // Data other_data; + + // other_data = data; + + // bool is_equal = std::equal(data.begin(), data.end(), other_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_assignment) + //{ + // CData data(initial_data.begin(), initial_data.end()); + // CData other_data; + + // other_data = data; + + // bool is_equal = std::equal(data.begin(), data.end(), other_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_assignment_iterface) + //{ + // Data data1(initial_data.begin(), initial_data.end()); + // Data data2; + + // IData& idata1 = data1; + // IData& idata2 = data2; + + // idata2 = idata1; + + // bool is_equal = std::equal(data1.begin(), data1.end(), data2.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_assignment_iterface) + //{ + // CData data1(initial_data.begin(), initial_data.end()); + // CData data2; + + // CIData& idata1 = data1; + // CIData& idata2 = data2; + + // idata2 = idata1; + + // bool is_equal = std::equal(data1.begin(), data1.end(), data2.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_self_assignment) + //{ + // Data data(initial_data.begin(), initial_data.end()); + // Data other_data(data); + + // other_data = other_data; + + // bool is_equal = std::equal(data.begin(), data.end(), other_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_self_assignment) + //{ + // CData data(initial_data.begin(), initial_data.end()); + // CData other_data(data); + + // other_data = other_data; + + // bool is_equal = std::equal(data.begin(), data.end(), other_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_begin) + //{ + // Data data(10); + // const Data constData(10); + + // CHECK_EQUAL(&data[0], data.begin()); + // CHECK_EQUAL(&constData[0], constData.begin()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_begin) + //{ + // CData data(10); + // const CData constData(10); + + // CHECK_EQUAL(&data[0], data.begin()); + // CHECK_EQUAL(&constData[0], constData.begin()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_end) + //{ + // Data data(10); + // const Data constData(10); + + // CHECK_EQUAL(&data[10], data.end()); + // CHECK_EQUAL(&constData[10], constData.end()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_end) + //{ + // CData data(10); + // const CData constData(10); + + // CHECK_EQUAL(&data[10], data.end()); + // CHECK_EQUAL(&constData[10], constData.end()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_resize_up) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = 8; + + // Data data(INITIAL_SIZE); + // data.resize(NEW_SIZE); + + // CHECK_EQUAL(data.size(), NEW_SIZE); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_resize_up) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = 8; + + // CData data(INITIAL_SIZE); + // data.resize(NEW_SIZE); + + // CHECK_EQUAL(data.size(), NEW_SIZE); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_resize_up_value) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = 8; + // int INITIAL_VALUE = 1; + + // Data data(INITIAL_SIZE, &INITIAL_VALUE); + // data.resize(NEW_SIZE, &INITIAL_VALUE); + + // std::array compare_data; + // compare_data.fill(&INITIAL_VALUE); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_resize_up_value) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = 8; + // int INITIAL_VALUE = 1; + + // CData data(INITIAL_SIZE, &INITIAL_VALUE); + // data.resize(NEW_SIZE, &INITIAL_VALUE); + + // std::array compare_data; + // compare_data.fill(&INITIAL_VALUE); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_resize_excess) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = SIZE + 1; + + // Data data(INITIAL_SIZE); + + // CHECK_THROW(data.resize(NEW_SIZE), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_resize_excess) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = SIZE + 1; + + // CData data(INITIAL_SIZE); + + // CHECK_THROW(data.resize(NEW_SIZE), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_resize_down) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = 2; + + // Data data(INITIAL_SIZE); + // data.resize(NEW_SIZE); + + // CHECK_EQUAL(data.size(), NEW_SIZE); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_resize_down) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = 2; + + // CData data(INITIAL_SIZE); + // data.resize(NEW_SIZE); + + // CHECK_EQUAL(data.size(), NEW_SIZE); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_resize_down_value) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = 2; + // int INITIAL_VALUE = 1; + + // Data data(INITIAL_SIZE); + // data.resize(NEW_SIZE, &INITIAL_VALUE); + + // CHECK_EQUAL(data.size(), NEW_SIZE); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_resize_down_value) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t NEW_SIZE = 2; + // int INITIAL_VALUE = 1; + + // CData data(INITIAL_SIZE); + // data.resize(NEW_SIZE, &INITIAL_VALUE); + + // CHECK_EQUAL(data.size(), NEW_SIZE); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_empty) + //{ + // Data data; + // data.resize(data.max_size()); + + // CHECK(data.full()); + // CHECK(!data.empty()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_empty) + //{ + // CData data; + // data.resize(data.max_size()); + + // CHECK(data.full()); + // CHECK(!data.empty()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_full) + //{ + // Data data; + + // CHECK(!data.full()); + // CHECK(data.empty()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_full) + //{ + // CData data; + + // CHECK(!data.full()); + // CHECK(data.empty()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_index) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // Data data(compare_data.begin(), compare_data.end()); + + // for (size_t i = 0; i < data.size(); ++i) + // { + // CHECK_EQUAL(data[i], compare_data[i]); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_index) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // CData data(compare_data.begin(), compare_data.end()); + + // for (size_t i = 0; i < data.size(); ++i) + // { + // CHECK_EQUAL(data[i], compare_data[i]); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_index_const) + //{ + // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // const Data data(compare_data.begin(), compare_data.end()); + + // for (size_t i = 0; i < data.size(); ++i) + // { + // CHECK_EQUAL(data[i], compare_data[i]); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_index_const) + //{ + // const CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // const CData data(compare_data.begin(), compare_data.end()); + + // for (size_t i = 0; i < data.size(); ++i) + // { + // CHECK_EQUAL(data[i], compare_data[i]); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_at) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + // Data data(initial_data.begin(), initial_data.end()); + + // for (size_t i = 0; i < data.size(); ++i) + // { + // CHECK_EQUAL(data.at(i), compare_data.at(i)); + // } + + // CHECK_THROW(data.at(data.size()), etl::vector_out_of_bounds); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_at) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + // CData data(initial_data.begin(), initial_data.end()); + + // for (size_t i = 0; i < data.size(); ++i) + // { + // CHECK_EQUAL(data.at(i), compare_data.at(i)); + // } + + // CHECK_THROW(data.at(data.size()), etl::vector_out_of_bounds); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_at_const) + //{ + // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + // const Data data(initial_data.begin(), initial_data.end()); + + // for (size_t i = 0; i < data.size(); ++i) + // { + // CHECK_EQUAL(data.at(i), compare_data.at(i)); + // } + + // CHECK_THROW(data.at(data.size()), etl::vector_out_of_bounds); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_at_const) + //{ + // const CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + // const CData data(initial_data.begin(), initial_data.end()); + + // for (size_t i = 0; i < data.size(); ++i) + // { + // CHECK_EQUAL(data.at(i), compare_data.at(i)); + // } + + // CHECK_THROW(data.at(data.size()), etl::vector_out_of_bounds); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_front) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + // Data data(initial_data.begin(), initial_data.end()); + + // CHECK(data.front() == compare_data.front()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_front) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + // CData data(initial_data.begin(), initial_data.end()); + + // CHECK(data.front() == compare_data.front()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_front_const) + //{ + // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + // const Data data(initial_data.begin(), initial_data.end()); + + // CHECK(data.front() == compare_data.front()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_front_const) + //{ + // const CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + // const CData data(initial_data.begin(), initial_data.end()); + + // CHECK(data.front() == compare_data.front()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_back) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + // Data data(initial_data.begin(), initial_data.end()); + + // CHECK(data.back() == compare_data.back()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_back) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + // CData data(initial_data.begin(), initial_data.end()); + + // CHECK(data.back() == compare_data.back()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_back_const) + //{ + // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + // const Data data(initial_data.begin(), initial_data.end()); + + // CHECK(data.back() == compare_data.back()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_back_const) + //{ + // const CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + // const CData data(initial_data.begin(), initial_data.end()); + + // CHECK(data.back() == compare_data.back()); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_data) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // Data data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.data(), data.data() + data.size(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_data) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // CData data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.data(), data.data() + data.size(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_data_const) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // const Data data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.data(), data.data() + data.size(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_data_const) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // const CData data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.data(), data.data() + data.size(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_assign_range) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // Data data; + + // data.assign(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_assign_range) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // CData data; + + // data.assign(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_assign_size_value) + //{ + // const size_t INITIAL_SIZE = 5; + // int INITIAL_VALUE = 1; + // std::array compare_data; + // compare_data.fill(&INITIAL_VALUE); + + // Data data; + // data.assign(INITIAL_SIZE, &INITIAL_VALUE); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_assign_size_value) + //{ + // const size_t INITIAL_SIZE = 5; + // int INITIAL_VALUE = 1; + // std::array compare_data; + // compare_data.fill(&INITIAL_VALUE); + + // CData data; + // data.assign(INITIAL_SIZE, &INITIAL_VALUE); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_assign_size_value_excess) + //{ + // const size_t INITIAL_SIZE = SIZE; + // const size_t EXCESS_SIZE = SIZE + 1; + // int INITIAL_VALUE = 1; + // std::array compare_data; + // compare_data.fill(&INITIAL_VALUE); + + // Data data; + + // CHECK_THROW(data.assign(EXCESS_SIZE, &INITIAL_VALUE), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_assign_size_value_excess) + //{ + // const size_t INITIAL_SIZE = SIZE; + // const size_t EXCESS_SIZE = SIZE + 1; + // int INITIAL_VALUE = 1; + // std::array compare_data; + // compare_data.fill(&INITIAL_VALUE); + + // CData data; + + // CHECK_THROW(data.assign(EXCESS_SIZE, &INITIAL_VALUE), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_push_back) + //{ + // Compare_Data compare_data; + // Data data; + + // int d; + + // for (size_t i = 0; i < SIZE; ++i) + // { + // compare_data.push_back(&d); + // } + + // for (size_t i = 0; i < SIZE; ++i) + // { + // data.push_back(&d); + // } + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_push_back) + //{ + // CCompare_Data compare_data; + // CData data; + + // const int d = 0; + + // for (size_t i = 0; i < SIZE; ++i) + // { + // compare_data.push_back(&d); + // } + + // for (size_t i = 0; i < SIZE; ++i) + // { + // data.push_back(&d); + // } + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_push_back_excess) + //{ + // Data data; + + // int d; + + // for (size_t i = 0; i < SIZE; ++i) + // { + // data.push_back(&d); + // } + + // CHECK_THROW(data.push_back(&d), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_push_back_excess) + //{ + // CData data; + + // const int d = 0; + + // for (size_t i = 0; i < SIZE; ++i) + // { + // data.push_back(&d); + // } + + // CHECK_THROW(data.push_back(&d), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_pop_back) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + // Data data(initial_data.begin(), initial_data.end()); + + // compare_data.pop_back(); + // compare_data.pop_back(); + + // data.pop_back(); + // data.pop_back(); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_pop_back) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + // CData data(initial_data.begin(), initial_data.end()); + + // compare_data.pop_back(); + // compare_data.pop_back(); + + // data.pop_back(); + // data.pop_back(); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_pop_back_exception) + //{ + // Data data; + + // data.resize(2); + + // data.pop_back(); + // data.pop_back(); + + // CHECK_THROW(data.pop_back(), etl::vector_empty); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_pop_back_exception) + //{ + // CData data; + + // data.resize(2); + + // data.pop_back(); + // data.pop_back(); + + // CHECK_THROW(data.pop_back(), etl::vector_empty); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_insert_position_value) + //{ + // const size_t INITIAL_SIZE = 5; + // int INITIAL_VALUE = 1; + + // for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) + // { + // Compare_Data compare_data; + // Data data; + + // data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + + // data.insert(data.begin() + offset, &INITIAL_VALUE); + // compare_data.insert(compare_data.begin() + offset, &INITIAL_VALUE); + + // CHECK_EQUAL(compare_data.size(), data.size()); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_insert_position_value) + //{ + // const size_t INITIAL_SIZE = 5; + // int INITIAL_VALUE = 1; + + // for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) + // { + // CCompare_Data compare_data; + // CData data; + + // data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + + // data.insert(data.begin() + offset, &INITIAL_VALUE); + // compare_data.insert(compare_data.begin() + offset, &INITIAL_VALUE); + + // CHECK_EQUAL(compare_data.size(), data.size()); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_insert_position_value_excess) + //{ + // const size_t INITIAL_SIZE = SIZE; + // int INITIAL_VALUE = 1; + + // Data data(INITIAL_SIZE, &INITIAL_VALUE); + + // size_t offset = 2; + + // CHECK_THROW(data.insert(data.begin() + offset, &INITIAL_VALUE), etl::vector_full); + + // offset = 0; + + // CHECK_THROW(data.insert(data.begin() + offset, &INITIAL_VALUE), etl::vector_full); + + // offset = data.size(); + + // CHECK_THROW(data.insert(data.begin() + offset, &INITIAL_VALUE), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_insert_position_n_value) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t INSERT_SIZE = 3; + // int INITIAL_VALUE = 11; + + // for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) + // { + // Compare_Data compare_data; + // Data data; + + // data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE); + // compare_data.insert(compare_data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_insert_position_n_value) + //{ + // const size_t INITIAL_SIZE = 5; + // const size_t INSERT_SIZE = 3; + // int INITIAL_VALUE = 11; + + // for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) + // { + // CCompare_Data compare_data; + // CData data; + + // data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE); + // compare_data.insert(compare_data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_insert_position_n_value_excess) + //{ + // const size_t INITIAL_SIZE = SIZE; + // const size_t INSERT_SIZE = 4; + // int INITIAL_VALUE = 1; + + // Data data(INITIAL_SIZE, &INITIAL_VALUE); + + // size_t offset = 0; + + // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE), etl::vector_full); + + // offset = 2; + + // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE), etl::vector_full); + + // offset = 4; + + // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE), etl::vector_full); + + // offset = data.size(); + + // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_insert_position_n_value_excess) + //{ + // const size_t INITIAL_SIZE = SIZE; + // const size_t INSERT_SIZE = 4; + // const int INITIAL_VALUE = 1; + + // CData data(INITIAL_SIZE, &INITIAL_VALUE); + + // size_t offset = 0; + + // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE), etl::vector_full); + + // offset = 2; + + // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE), etl::vector_full); + + // offset = 4; + + // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE), etl::vector_full); + + // offset = data.size(); + + // CHECK_THROW(data.insert(data.begin() + offset, INSERT_SIZE, &INITIAL_VALUE), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_insert_position_range) + //{ + // const size_t INITIAL_SIZE = 5; + + // for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) + // { + // Compare_Data compare_data; + // Data data; + + // data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // data.insert(data.begin() + offset, insert_data.begin(), insert_data.end()); + // compare_data.insert(compare_data.begin() + offset, insert_data.begin(), insert_data.end()); + + // bool is_equal = std::equal(data.begin(), + // data.end(), + // compare_data.begin()); + + // CHECK(is_equal); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_insert_position_range) + //{ + // const size_t INITIAL_SIZE = 5; + + // for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset) + // { + // CCompare_Data compare_data; + // CData data; + + // data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // compare_data.assign(initial_data.begin(), initial_data.begin() + INITIAL_SIZE); + // data.insert(data.begin() + offset, insert_data.begin(), insert_data.end()); + // compare_data.insert(compare_data.begin() + offset, insert_data.begin(), insert_data.end()); + + // bool is_equal = std::equal(data.begin(), + // data.end(), + // compare_data.begin()); + + // CHECK(is_equal); + // } + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_insert_position_range_excess) + //{ + // const size_t INITIAL_SIZE = 5; + // int INITIAL_VALUE = 1; + + // Data data(INITIAL_SIZE, &INITIAL_VALUE); + + // size_t offset = 0; + + // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + + // offset = 2; + + // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + + // offset = 4; + + // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + + // offset = data.size(); + + // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_insert_position_range_excess) + //{ + // const size_t INITIAL_SIZE = 5; + // const int INITIAL_VALUE = 1; + + // CData data(INITIAL_SIZE, &INITIAL_VALUE); + + // size_t offset = 0; + + // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + + // offset = 2; + + // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + + // offset = 4; + + // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + + // offset = data.size(); + + // CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_erase_single) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + // Data data(initial_data.begin(), initial_data.end()); + + // compare_data.erase(compare_data.begin() + 2); + + // data.erase(data.begin() + 2); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_erase_single) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + // CData data(initial_data.begin(), initial_data.end()); + + // compare_data.erase(compare_data.begin() + 2); + + // data.erase(data.begin() + 2); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_erase_range) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + // Data data(initial_data.begin(), initial_data.end()); + + // compare_data.erase(compare_data.begin() + 2, compare_data.begin() + 4); + + // data.erase(data.begin() + 2, data.begin() + 4); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_erase_range) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + // CData data(initial_data.begin(), initial_data.end()); + + // compare_data.erase(compare_data.begin() + 2, compare_data.begin() + 4); + + // data.erase(data.begin() + 2, data.begin() + 4); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_clear) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // Data data(compare_data.begin(), compare_data.end()); + // data.clear(); + + // CHECK_EQUAL(data.size(), size_t(0)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_clear) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // CData data(compare_data.begin(), compare_data.end()); + // data.clear(); + + // CHECK_EQUAL(data.size(), size_t(0)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_iterator) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // Data data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_iterator_const) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // CData data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.begin(), data.end(), compare_data.begin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_iterator) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // Data data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.cbegin(), data.cend(), compare_data.cbegin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_iterator_const) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // CData data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.cbegin(), data.cend(), compare_data.cbegin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_reverse_iterator) + //{ + // Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // Data data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.rbegin(), data.rend(), compare_data.rbegin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_reverse_iterator_const) + //{ + // CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // CData data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.rbegin(), data.rend(), compare_data.rbegin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_reverse_iterator) + //{ + // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // const Data data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.crbegin(), data.crend(), compare_data.crbegin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_reverse_iterator_const) + //{ + // const CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // const CData data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.crbegin(), data.crend(), compare_data.crbegin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_reverse_iterator2) + //{ + // const Compare_Data compare_data(initial_data.begin(), initial_data.end()); + + // const Data data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.rbegin(), data.rend(), compare_data.rbegin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_reverse_iterator2_const) + //{ + // const CCompare_Data compare_data(initial_data.begin(), initial_data.end()); + + // const CData data(compare_data.begin(), compare_data.end()); + + // bool is_equal = std::equal(data.rbegin(), data.rend(), compare_data.rbegin()); + + // CHECK(is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_equal) + //{ + // const Data initial1(initial_data.begin(), initial_data.end()); + // const Data initial2(initial_data.begin(), initial_data.end()); + + // CHECK(initial1 == initial2); + + // const Data different(different_data.begin(), different_data.end()); + + // CHECK(!(initial1 == different)); + + // const Data shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK(!(shorter == initial1)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_equal) + //{ + // const CData initial1(initial_data.begin(), initial_data.end()); + // const CData initial2(initial_data.begin(), initial_data.end()); + + // CHECK(initial1 == initial2); + + // const CData different(different_data.begin(), different_data.end()); + + // CHECK(!(initial1 == different)); + + // const CData shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK(!(shorter == initial1)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_not_equal) + //{ + // const Data initial1(initial_data.begin(), initial_data.end()); + // const Data initial2(initial_data.begin(), initial_data.end()); + + // CHECK(!(initial1 != initial2)); + + // const Data different(different_data.begin(), different_data.end()); + + // CHECK(initial1 != different); + + // const Data shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK(shorter != initial1); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_not_equal) + //{ + // const CData initial1(initial_data.begin(), initial_data.end()); + // const CData initial2(initial_data.begin(), initial_data.end()); + + // CHECK(!(initial1 != initial2)); + + // const CData different(different_data.begin(), different_data.end()); + + // CHECK(initial1 != different); + + // const CData shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK(shorter != initial1); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_less_than) + //{ + // const Data less(less_data.begin(), less_data.end()); + // const Data initial(initial_data.begin(), initial_data.end()); + + // CHECK((less < initial) == (less_data < initial_data)); + + // const Data greater(greater_data.begin(), greater_data.end()); + + // CHECK((greater < initial) == (greater_data < initial_data)); + + // const Data shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK((shorter < initial) == (shorter_data < initial_data)); + // CHECK((initial < shorter) == (initial_data < shorter_data)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_less_than) + //{ + // const CData less(less_data.begin(), less_data.end()); + // const CData initial(initial_data.begin(), initial_data.end()); + + // CHECK((less < initial) == (less_data < initial_data)); + + // const CData greater(greater_data.begin(), greater_data.end()); + + // CHECK((greater < initial) == (greater_data < initial_data)); + + // const CData shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK((shorter < initial) == (shorter_data < initial_data)); + // CHECK((initial < shorter) == (initial_data < shorter_data)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_less_than_or_equal) + //{ + // const Data less(less_data.begin(), less_data.end()); + // const Data initial(initial_data.begin(), initial_data.end()); + + // CHECK((less <= initial) == (less_data <= initial_data)); + + // const Data greater(greater_data.begin(), greater_data.end()); + + // CHECK((greater <= initial) == (greater_data <= initial_data)); + + // const Data shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK((shorter <= initial) == (shorter_data <= initial_data)); + // CHECK((initial <= shorter) == (initial_data <= shorter_data)); + + // const Data initial2(initial_data.begin(), initial_data.end()); + // CHECK((initial <= initial2) == (initial_data <= initial_data)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_less_than_or_equal) + //{ + // const CData less(less_data.begin(), less_data.end()); + // const CData initial(initial_data.begin(), initial_data.end()); + + // CHECK((less <= initial) == (less_data <= initial_data)); + + // const CData greater(greater_data.begin(), greater_data.end()); + + // CHECK((greater <= initial) == (greater_data <= initial_data)); + + // const CData shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK((shorter <= initial) == (shorter_data <= initial_data)); + // CHECK((initial <= shorter) == (initial_data <= shorter_data)); + + // const CData initial2(initial_data.begin(), initial_data.end()); + // CHECK((initial <= initial2) == (initial_data <= initial_data)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_greater_than) + //{ + // const Data less(less_data.begin(), less_data.end()); + // const Data initial(initial_data.begin(), initial_data.end()); + + // CHECK((less > initial) == (less_data > initial_data)); + + // const Data greater(greater_data.begin(), greater_data.end()); + + // CHECK((greater > initial) == (greater_data > initial_data)); + + // const Data shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK((shorter > initial) == (shorter_data > initial_data)); + // CHECK((initial > shorter) == (initial_data > shorter_data)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_greater_than) + //{ + // const CData less(less_data.begin(), less_data.end()); + // const CData initial(initial_data.begin(), initial_data.end()); + + // CHECK((less > initial) == (less_data > initial_data)); + + // const CData greater(greater_data.begin(), greater_data.end()); + + // CHECK((greater > initial) == (greater_data > initial_data)); + + // const CData shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK((shorter > initial) == (shorter_data > initial_data)); + // CHECK((initial > shorter) == (initial_data > shorter_data)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_greater_than_or_equal) + //{ + // const Data less(less_data.begin(), less_data.end()); + // const Data initial(initial_data.begin(), initial_data.end()); + + // CHECK((less >= initial) == (less_data >= initial_data)); + + // const Data greater(greater_data.begin(), greater_data.end()); + + // CHECK((greater >= initial) == (greater_data >= initial_data)); + + // const Data shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK((shorter >= initial) == (shorter_data >= initial_data)); + // CHECK((initial >= shorter) == (initial_data > shorter_data)); + + // const Data initial2(initial_data.begin(), initial_data.end()); + // CHECK((initial >= initial2) == (initial_data >= initial_data)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_greater_than_or_equal) + //{ + // const CData less(less_data.begin(), less_data.end()); + // const CData initial(initial_data.begin(), initial_data.end()); + + // CHECK((less >= initial) == (less_data >= initial_data)); + + // const CData greater(greater_data.begin(), greater_data.end()); + + // CHECK((greater >= initial) == (greater_data >= initial_data)); + + // const CData shorter(shorter_data.begin(), shorter_data.end()); + + // CHECK((shorter >= initial) == (shorter_data >= initial_data)); + // CHECK((initial >= shorter) == (initial_data > shorter_data)); + + // const CData initial2(initial_data.begin(), initial_data.end()); + // CHECK((initial >= initial2) == (initial_data >= initial_data)); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_memcpy_repair) + //{ + // Data data(initial_data.begin(), initial_data.end()); + + // char buffer[sizeof(Data)]; + + // memcpy(&buffer, &data, sizeof(data)); + + // Data& rdata(*reinterpret_cast(buffer)); + // rdata.repair(); + + // // Check that the memcpy'd vector is the same. + // CHECK_EQUAL(data.size(), rdata.size()); + // CHECK(!rdata.empty()); + // CHECK(rdata.full()); + + // bool is_equal = std::equal(rdata.begin(), + // rdata.end(), + // data.begin()); + + // CHECK(is_equal); + + // // Modify the original and check that the memcpy'd vector is not the same. + // std::reverse(data.begin(), data.end()); + + // is_equal = std::equal(rdata.begin(), rdata.end(), data.begin()); + + // CHECK(!is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_memcpy_repair) + //{ + // CData data(initial_data.begin(), initial_data.end()); + + // char buffer[sizeof(CData)]; + + // memcpy(&buffer, &data, sizeof(data)); + + // CData& rdata(*reinterpret_cast(buffer)); + // rdata.repair(); + + // // Check that the memcpy'd vector is the same. + // CHECK_EQUAL(data.size(), rdata.size()); + // CHECK(!rdata.empty()); + // CHECK(rdata.full()); + + // bool is_equal = std::equal(rdata.begin(), rdata.end(), data.begin()); + + // CHECK(is_equal); + + // // Modify the original and check that the memcpy'd vector is not the same. + // std::reverse(data.begin(), data.end()); + + // is_equal = std::equal(rdata.begin(), rdata.end(), data.begin()); + + // CHECK(!is_equal); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_ivector_of_pointer_to_pointer) + //{ + // int i1 = 1; + // etl::vector consttest; + // consttest.push_back(&i1); + // const etl::ivector& ct = consttest; + + // int* i2 = ct[0]; + + // CHECK(i1 == *i2); + // CHECK(&i1 == i2); + //} + + ////************************************************************************* + //TEST_FIXTURE(SetupFixture, test_const_ivector_of_pointer_to_const_pointer) + //{ + // int i1 = 1; + // etl::vector consttest; + // consttest.push_back(&i1); + // const etl::ivector& ct = consttest; + + // const int* i2 = ct[0]; + + // CHECK(i1 == *i2); + // CHECK(&i1 == i2); + //} + }; +} diff --git a/test/vs2017/etl.vcxproj b/test/vs2017/etl.vcxproj index f7b74e0f..0490d11b 100644 --- a/test/vs2017/etl.vcxproj +++ b/test/vs2017/etl.vcxproj @@ -761,6 +761,7 @@ + diff --git a/test/vs2017/etl.vcxproj.filters b/test/vs2017/etl.vcxproj.filters index b800a01d..f1a15ae3 100644 --- a/test/vs2017/etl.vcxproj.filters +++ b/test/vs2017/etl.vcxproj.filters @@ -1166,6 +1166,9 @@ Source Files + + Source Files +