From 801c6735cf94fee62955d75ff42d956a42affb02 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Fri, 28 Apr 2023 10:32:58 +0100 Subject: [PATCH] Fixed Address Sanitizer issues --- include/etl/array.h | 6 +- include/etl/array_view.h | 4 +- include/etl/array_wrapper.h | 6 +- include/etl/basic_string.h | 11 +- .../etl/generators/type_traits_generator.h | 23 +- include/etl/list.h | 8 +- include/etl/poly_span.h | 4 +- include/etl/span.h | 4 +- include/etl/string.h | 12 +- include/etl/string_view.h | 16 +- include/etl/type_traits.h | 29 +- include/etl/u16string.h | 12 +- include/etl/u32string.h | 12 +- include/etl/wstring.h | 12 +- test/CMakeLists.txt | 13 +- test/runsanitychecks.sh | 745 +++++++++++------- test/runtests.sh | 199 +++-- test/test_array_view.cpp | 4 +- test/test_array_wrapper.cpp | 2 - test/test_container.cpp | 4 +- test/test_iterator.cpp | 4 +- test/test_multi_array.cpp | 40 +- test/test_multi_vector.cpp | 40 +- test/test_span_dynamic_extent.cpp | 4 +- test/test_span_fixed_extent.cpp | 4 +- 25 files changed, 721 insertions(+), 497 deletions(-) diff --git a/include/etl/array.h b/include/etl/array.h index 1435ddbb..1f1195db 100644 --- a/include/etl/array.h +++ b/include/etl/array.h @@ -236,7 +236,7 @@ namespace etl //************************************************************************* iterator end() ETL_NOEXCEPT { - return &_buffer[SIZE]; + return _buffer + SIZE; } //************************************************************************* @@ -244,7 +244,7 @@ namespace etl //************************************************************************* ETL_CONSTEXPR const_iterator end() const ETL_NOEXCEPT { - return &_buffer[SIZE]; + return _buffer + SIZE; } //************************************************************************* @@ -252,7 +252,7 @@ namespace etl //************************************************************************* ETL_CONSTEXPR const_iterator cend() const ETL_NOEXCEPT { - return &_buffer[SIZE]; + return _buffer + SIZE; } //************************************************************************* diff --git a/include/etl/array_view.h b/include/etl/array_view.h index 84ceeeab..44fbd5a1 100644 --- a/include/etl/array_view.h +++ b/include/etl/array_view.h @@ -636,8 +636,8 @@ namespace etl { size_t operator()(const etl::array_view& view) const { - return etl::private_hash::generic_hash(reinterpret_cast(&view[0]), - reinterpret_cast(&view[view.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(view.data()), + reinterpret_cast(view.data() + view.size())); } }; #endif diff --git a/include/etl/array_wrapper.h b/include/etl/array_wrapper.h index ddb4a5fe..45d45f1b 100644 --- a/include/etl/array_wrapper.h +++ b/include/etl/array_wrapper.h @@ -394,8 +394,10 @@ namespace etl { size_t operator()(const etl::array_wrapper& aw) const { - return etl::private_hash::generic_hash(reinterpret_cast(&aw[0]), - reinterpret_cast(&aw[aw.size()])); + const uint8_t* pb = reinterpret_cast(aw.data()); + const uint8_t* pe = pb + (SIZE * sizeof(T)); + + return etl::private_hash::generic_hash(pb, pe); } }; #endif diff --git a/include/etl/basic_string.h b/include/etl/basic_string.h index 7d305853..bb975f3c 100644 --- a/include/etl/basic_string.h +++ b/include/etl/basic_string.h @@ -148,15 +148,8 @@ namespace etl static ETL_CONSTANT uint_least8_t IS_TRUNCATED = etl::bit<0>::value; static ETL_CONSTANT uint_least8_t CLEAR_AFTER_USE = etl::bit<1>::value; - -#if ETL_USING_CPP11 - static constexpr size_type npos = etl::integral_limits::max; -#else - enum - { - npos = etl::integral_limits::max - }; -#endif + + static ETL_CONSTANT size_type npos = etl::integral_limits::max; }; template diff --git a/include/etl/generators/type_traits_generator.h b/include/etl/generators/type_traits_generator.h index 1518d94d..74809c76 100644 --- a/include/etl/generators/type_traits_generator.h +++ b/include/etl/generators/type_traits_generator.h @@ -96,7 +96,7 @@ namespace etl //*************************************************************************** /// integral_constant - template + template struct integral_constant { static const T value = VALUE; @@ -118,8 +118,8 @@ namespace etl const T integral_constant::value; #if ETL_USING_CPP17 - template - using integral_constant_v = std::integral_constant::value; + template + inline constexpr T integral_constant_v = etl::integral_constant::value; #endif #if ETL_USING_CPP11 @@ -130,6 +130,11 @@ namespace etl struct bool_constant : etl::integral_constant { }; #endif +#if ETL_USING_CPP17 + template + inline constexpr bool bool_constant_v = bool_constant::value; +#endif + //*************************************************************************** /// negation template @@ -823,7 +828,7 @@ namespace etl //*************************************************************************** /// integral_constant ///\ingroup type_traits - template + template struct integral_constant : std::integral_constant {}; /// integral_constant specialisations @@ -831,6 +836,11 @@ namespace etl typedef integral_constant false_type; typedef integral_constant true_type; +#if ETL_USING_CPP17 + template + inline constexpr T integral_constant_v = std::integral_constant::value; +#endif + #if ETL_USING_CPP17 template using bool_constant = std::bool_constant; @@ -839,6 +849,11 @@ namespace etl struct bool_constant : std::integral_constant { }; #endif +#if ETL_USING_CPP17 + template + inline constexpr bool bool_constant_v = bool_constant::value; +#endif + //*************************************************************************** /// negation ///\ingroup type_traits diff --git a/include/etl/list.h b/include/etl/list.h index cf748ff7..43497059 100644 --- a/include/etl/list.h +++ b/include/etl/list.h @@ -689,7 +689,7 @@ namespace etl //************************************************************************* const_iterator end() const { - return const_iterator(static_cast(terminal_node)); + return const_iterator(terminal_node); } //************************************************************************* @@ -705,7 +705,7 @@ namespace etl //************************************************************************* const_iterator cend() const { - return const_iterator(static_cast(terminal_node)); + return const_iterator(terminal_node); } //************************************************************************* @@ -721,7 +721,7 @@ namespace etl //************************************************************************* const_reverse_iterator rbegin() const { - return const_reverse_iterator(static_cast(terminal_node)); + return const_reverse_iterator(terminal_node); } //************************************************************************* @@ -745,7 +745,7 @@ namespace etl //************************************************************************* const_reverse_iterator crbegin() const { - return const_reverse_iterator(static_cast(terminal_node)); + return const_reverse_iterator(terminal_node); } //************************************************************************* diff --git a/include/etl/poly_span.h b/include/etl/poly_span.h index 1c960e7e..1d654529 100644 --- a/include/etl/poly_span.h +++ b/include/etl/poly_span.h @@ -1034,8 +1034,8 @@ protected: { size_t operator()(const etl::poly_span& view) const { - return etl::private_hash::generic_hash(reinterpret_cast(&view[0]), - reinterpret_cast(&view[view.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(view.data()), + reinterpret_cast(view.data() + view.size())); } }; #endif diff --git a/include/etl/span.h b/include/etl/span.h index e493494f..5c57ee79 100644 --- a/include/etl/span.h +++ b/include/etl/span.h @@ -939,8 +939,8 @@ namespace etl { size_t operator()(const etl::span& view) const { - return etl::private_hash::generic_hash(reinterpret_cast(&view[0]), - reinterpret_cast(&view[view.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(view.data()), + reinterpret_cast(view.data() + view.size())); } }; #endif diff --git a/include/etl/string.h b/include/etl/string.h index 7134b635..04c52734 100644 --- a/include/etl/string.h +++ b/include/etl/string.h @@ -458,8 +458,8 @@ namespace etl { size_t operator()(const etl::istring& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -468,8 +468,8 @@ namespace etl { size_t operator()(const etl::string& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -478,8 +478,8 @@ namespace etl { size_t operator()(const etl::string_ext& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; #endif diff --git a/include/etl/string_view.h b/include/etl/string_view.h index 8bad7c00..753289b8 100644 --- a/include/etl/string_view.h +++ b/include/etl/string_view.h @@ -852,8 +852,8 @@ namespace etl { size_t operator()(const etl::string_view& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -862,8 +862,8 @@ namespace etl { size_t operator()(const etl::wstring_view& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -872,8 +872,8 @@ namespace etl { size_t operator()(const etl::u16string_view& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -882,8 +882,8 @@ namespace etl { size_t operator()(const etl::u32string_view& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; #endif diff --git a/include/etl/type_traits.h b/include/etl/type_traits.h index b65e5df8..17ee2419 100644 --- a/include/etl/type_traits.h +++ b/include/etl/type_traits.h @@ -84,7 +84,7 @@ namespace etl //*************************************************************************** /// integral_constant - template + template struct integral_constant { static const T value = VALUE; @@ -102,12 +102,12 @@ namespace etl typedef integral_constant false_type; typedef integral_constant true_type; - template + template const T integral_constant::value; #if ETL_USING_CPP17 - template - using integral_constant_v = std::integral_constant::value; + template + inline constexpr T integral_constant_v = etl::integral_constant::value; #endif #if ETL_USING_CPP11 @@ -118,6 +118,11 @@ namespace etl struct bool_constant : etl::integral_constant { }; #endif +#if ETL_USING_CPP17 + template + inline constexpr bool bool_constant_v = bool_constant::value; +#endif + //*************************************************************************** /// negation template @@ -811,7 +816,7 @@ namespace etl //*************************************************************************** /// integral_constant ///\ingroup type_traits - template + template struct integral_constant : std::integral_constant {}; /// integral_constant specialisations @@ -819,6 +824,11 @@ namespace etl typedef integral_constant false_type; typedef integral_constant true_type; +#if ETL_USING_CPP17 + template + inline constexpr T integral_constant_v = std::integral_constant::value; +#endif + #if ETL_USING_CPP17 template using bool_constant = std::bool_constant; @@ -827,14 +837,17 @@ namespace etl struct bool_constant : std::integral_constant { }; #endif +#if ETL_USING_CPP17 + template + inline constexpr bool bool_constant_v = bool_constant::value; +#endif + //*************************************************************************** /// negation ///\ingroup type_traits #if ETL_USING_CPP17 template - struct negation : std::negation - { - }; + using negation = std::negation; #else template struct negation : etl::bool_constant diff --git a/include/etl/u16string.h b/include/etl/u16string.h index 9be06986..bdd6fe4d 100644 --- a/include/etl/u16string.h +++ b/include/etl/u16string.h @@ -438,8 +438,8 @@ namespace etl { size_t operator()(const etl::iu16string& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -448,8 +448,8 @@ namespace etl { size_t operator()(const etl::u16string& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -458,8 +458,8 @@ namespace etl { size_t operator()(const etl::u16string_ext& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; #endif diff --git a/include/etl/u32string.h b/include/etl/u32string.h index 783f4901..530d248e 100644 --- a/include/etl/u32string.h +++ b/include/etl/u32string.h @@ -438,8 +438,8 @@ namespace etl { size_t operator()(const etl::iu32string& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -448,8 +448,8 @@ namespace etl { size_t operator()(const etl::u32string& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -458,8 +458,8 @@ namespace etl { size_t operator()(const etl::u32string_ext& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; #endif diff --git a/include/etl/wstring.h b/include/etl/wstring.h index 22caaae6..9b500693 100644 --- a/include/etl/wstring.h +++ b/include/etl/wstring.h @@ -438,8 +438,8 @@ namespace etl { size_t operator()(const etl::iwstring& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -448,8 +448,8 @@ namespace etl { size_t operator()(const etl::wstring& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; @@ -458,8 +458,8 @@ namespace etl { size_t operator()(const etl::wstring_ext& text) const { - return etl::private_hash::generic_hash(reinterpret_cast(&text[0]), - reinterpret_cast(&text[text.size()])); + return etl::private_hash::generic_hash(reinterpret_cast(text.data()), + reinterpret_cast(text.data() + text.size())); } }; #endif diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 07a2e8d2..21263bb8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -16,10 +16,10 @@ add_executable(etl_tests test_algorithm.cpp test_alignment.cpp test_array.cpp - test_array_view.cpp + test_array_view.cpp test_array_wrapper.cpp test_atomic.cpp - test_binary.cpp + test_binary.cpp test_bip_buffer_spsc_atomic.cpp test_bit.cpp test_bitset_legacy.cpp @@ -147,7 +147,7 @@ add_executable(etl_tests test_largest.cpp test_limiter.cpp test_limits.cpp - test_list.cpp + test_list.cpp test_list_shared_pool.cpp test_make_string.cpp test_map.cpp @@ -156,7 +156,7 @@ add_executable(etl_tests test_mem_cast.cpp test_mem_cast_ptr.cpp test_memory.cpp - test_message_broker.cpp + test_message_broker.cpp test_message_bus.cpp test_message_packet.cpp test_message_router.cpp @@ -164,7 +164,7 @@ add_executable(etl_tests test_message_timer.cpp test_message_timer_atomic.cpp test_message_timer_interrupt.cpp - test_message_timer_locked.cpp + test_message_timer_locked.cpp test_multimap.cpp test_multiset.cpp test_multi_array.cpp @@ -288,7 +288,7 @@ if (ETL_CXX_STANDARD MATCHES "98") message(STATUS "Compiling for C++98") set_property(TARGET etl_tests PROPERTY CXX_STANDARD 98) elseif (ETL_CXX_STANDARD MATCHES "03") - message(STATUS "Compiling for C++98") + message(STATUS "Compiling for C++03 (C++98)") set_property(TARGET etl_tests PROPERTY CXX_STANDARD 98) elseif (ETL_CXX_STANDARD MATCHES "11") message(STATUS "Compiling for C++11") @@ -353,6 +353,7 @@ if ((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Cla PRIVATE -fsanitize=address,undefined,bounds -fno-omit-frame-pointer + -fno-common -Wall -Wextra -Werror diff --git a/test/runsanitychecks.sh b/test/runsanitychecks.sh index 5048f786..9b466520 100644 --- a/test/runsanitychecks.sh +++ b/test/runsanitychecks.sh @@ -1,20 +1,77 @@ #!/bin/sh clear +echo -e + +testname="Test Name Not Set" + +FailColour='\033[38;2;255;128;128m' +PassColour='\033[38;2;128;255;128m' +TitleColour='\033[38;2;100;173;254m' +NoColour='\033[0m' + +SetCxxStandard() +{ + cxx_standard=$1 +} + +SetTestName() +{ + testname=$1 +} + +PrintHeader() +{ + echo "${TitleColour}" + echo "----------------------------------------------------------------------------" | tee -a log.txt + echo " $testname" | tee -a log.txt + echo " Language standard : C++${cxx_standard}" | tee -a log.txt + echo "----------------------------------------------------------------------------" | tee -a log.txt + echo "${NoColour}" +} + +PassedCompilation() +{ + echo "${PassColour}" + echo "-----------------------------------------------" | tee -a log.txt + echo " Passed Compilation - $testname" | tee -a ../log.txt + echo "-----------------------------------------------" | tee -a log.txt + echo "${NoColour}" +} + +FailedCompilation() +{ + echo "${FailColour}" + echo "****************************************************************************" | tee -a log.txt + echo "**** Failed Compilation $testname" | tee -a log.txt + echo "****************************************************************************" | tee -a ../log.txt + echo "${NoColour}" +} + +ChecksCompleted() +{ + echo "${PassColour}" + echo "-----------------------------------------------" | tee -a log.txt + echo " All Checks Completed OK" | tee -a log.txt + echo "-----------------------------------------------" | tee -a log.txt + echo "${NoColour}" +} + cd sanity-check || exit 1 echo "" > log.txt export CMAKE_BUILD_PARALLEL_LEVEL=4 +echo "" +echo "Using "${CMAKE_BUILD_PARALLEL_LEVEL}" jobs" + ############################################################################### cd c++03 || exit 1 -{ echo "" -echo "Using "${CMAKE_BUILD_PARALLEL_LEVEL}" jobs" -echo "-----------------------------------------------" -echo " C++03" -echo "-----------------------------------------------" -echo "GCC - STL"; } | tee -a ../log.txt +SetCxxStandard "03 (98)" + +SetTestName "GCC - STL" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -22,13 +79,14 @@ g++ --version | head --lines=1 | tee -a ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. cmake --build bgcc if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -{ echo ""; echo "GCC - No STL"; } | tee -a ../log.txt +SetTestName "GCC - No STL" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -36,13 +94,14 @@ g++ --version | head --lines=1 | tee -a ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. cmake --build bgcc if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -##{ echo ""; echo "GCC - No STL - User defined traits"; } | tee -a ../log.txt +##SetTestName "GCC - No STL - User defined traits" +# PrintHeader #rm -rdf bgcc #rm -rdf bclang #cmake -E make_directory bgcc bclang @@ -50,13 +109,14 @@ fi #CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. #cmake --build bgcc #if [ $? -eq 0 ]; then -# echo "Passed" +# PassedCompilation #else -# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt +# FailedCompilation # exit $? #fi -{ echo ""; echo "Clang - STL"; } | tee -a ../log.txt +SetTestName "Clang - STL" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -64,13 +124,14 @@ clang++ --version | head --lines=1 | tee -a ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. cmake --build bclang if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -{ echo ""; echo "Clang - No STL"; } | tee -a ../log.txt +SetTestName "Clang - No STL" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -78,13 +139,14 @@ clang++ --version | head --lines=1 | tee -a ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. cmake --build bclang if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -##{ echo ""; echo "Clang - No STL - User defined traits"; } | tee -a ../log.txt +#SetTestName "Clang - No STL - User defined traits" +#PrintHeader #rm -rdf bgcc #rm -rdf bclang #cmake -E make_directory bgcc bclang @@ -92,20 +154,19 @@ fi #CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. #cmake --build bclang #if [ $? -eq 0 ]; then -# echo "Passed" +# PassedCompilation #else -# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt +# FailedCompilation # exit $? #fi ############################################################################### cd ../c++11 || exit 1 -{ echo "" -echo "-----------------------------------------------" -echo " C++11" -echo "-----------------------------------------------" -echo "GCC - STL"; } | tee -a ../log.txt +SetCxxStandard "11" + +SetTestName "GCC - STL" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -113,13 +174,14 @@ g++ --version | head --lines=1 | tee -a ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. cmake --build bgcc if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -{ echo ""; echo "GCC - STL - Force C++03"; } | tee -a ../log.txt +SetTestName "GCC - STL - Force C++03" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -127,13 +189,14 @@ g++ --version | head --lines=1 | tee -a ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. cmake --build bgcc if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -{ echo ""; echo "GCC - No STL"; } | tee -a ../log.txt +SetTestName "GCC - No STL" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -141,251 +204,14 @@ g++ --version | head --lines=1 | tee -a ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. cmake --build bgcc if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -##{ echo ""; echo "GCC - No STL - User defined traits"; } | tee -a ../log.txt -#rm -rdf bgcc -#rm -rdf bclang -#cmake -E make_directory bgcc bclang -#g++ --version | head --lines=1 | tee -a ../log.txt -#CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -#cmake --build bgcc -#if [ $? -eq 0 ]; then -# echo "Passed" -#else -# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt -# exit $? -#fi - -{ echo ""; echo "Clang - STL"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -clang++ --version | head --lines=1 | tee -a ../log.txt -CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -cmake --build bclang -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -{ echo ""; echo "Clang - STL - Force C++03"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -clang++ --version | head --lines=1 | tee -a ../log.txt -CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. -cmake --build bclang -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -{ echo ""; echo "Clang - No STL"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -clang++ --version | head --lines=1 | tee -a ../log.txt -CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -cmake --build bclang -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -##{ echo ""; echo "Clang - No STL - User defined traits"; } | tee -a ../log.txt -#rm -rdf bgcc -#rm -rdf bclang -#cmake -E make_directory bgcc bclang -#clang++ --version | head --lines=1 | tee -a ../log.txt -#CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -#cmake --build bclang -#if [ $? -eq 0 ]; then -# echo "Passed" -#else -# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt -# exit $? -#fi - -############################################################################### -cd ../c++14 || exit 1 -{ echo "" -echo "-----------------------------------------------" -echo " C++14" -echo "-----------------------------------------------" - -echo "GCC - STL"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -g++ --version | head --lines=1 | tee -a ../log.txt -CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -cmake --build bgcc -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -{ echo ""; echo "GCC - STL - Force C++03"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -g++ --version | head --lines=1 | tee -a ../log.txt -CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. -cmake --build bgcc -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -{ echo ""; echo "GCC - No STL"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -g++ --version | head --lines=1 | tee -a ../log.txt -CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -cmake --build bgcc -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -##{ echo ""; echo "GCC - No STL - User defined traits"; } | tee -a ../log.txt -#rm -rdf bgcc -#rm -rdf bclang -#cmake -E make_directory bgcc bclang -#g++ --version | head --lines=1 | tee -a ../log.txt -#CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -#cmake --build bgcc -#if [ $? -eq 0 ]; then -# echo "Passed" -#else -# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt -# exit $? -#fi - -{ echo ""; echo "Clang - STL"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -clang++ --version | head --lines=1 | tee -a ../log.txt -CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -cmake --build bclang -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -{ echo ""; echo "Clang - STL - Force C++03"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -clang++ --version | head --lines=1 | tee -a ../log.txt -CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. -cmake --build bclang -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -{ echo ""; echo "Clang - No STL"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -clang++ --version | head --lines=1 | tee -a ../log.txt -CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -cmake --build bclang -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -##{ echo ""; echo "Clang - No STL - User defined traits"; } | tee -a ../log.txt -#rm -rdf bgcc -#rm -rdf bclang -#cmake -E make_directory bgcc bclang -#clang++ --version | head --lines=1 | tee -a ../log.txt -#CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -#cmake --build bclang -#if [ $? -eq 0 ]; then -# echo "Passed" -#else -# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt -# exit $? -#fi - -############################################################################### -cd ../c++17 || exit 1 -{ echo "" -echo "-----------------------------------------------" -echo " C++17 " -echo "-----------------------------------------------" - -echo "GCC - STL"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -g++ --version | head --lines=1 | tee -a ../log.txt -CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -cmake --build bgcc -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -{ echo ""; echo "GCC - STL - Force C++03"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -g++ --version | head --lines=1 | tee -a ../log.txt -CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. -cmake --build bgcc -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -{ echo ""; echo "GCC - No STL"; } | tee -a ../log.txt -rm -rdf bgcc -rm -rdf bclang -cmake -E make_directory bgcc bclang -g++ --version | head --lines=1 | tee -a ../log.txt -CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. -cmake --build bgcc -if [ $? -eq 0 ]; then - echo "Passed" -else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt - exit $? -fi - -{ echo ""; echo "GCC - No STL - Force C++03"; } | tee -a ../log.txt +SetTestName "GCC - No STL - Force C++03" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -393,13 +219,14 @@ g++ --version | head --lines=1 | tee -a ../log.txt CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. cmake --build bgcc if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -##{ echo ""; echo "GCC - No STL - User defined traits"; } | tee -a ../log.txt +#SetTestName "GCC - No STL - User defined traits" +#PrintHeader #rm -rdf bgcc #rm -rdf bclang #cmake -E make_directory bgcc bclang @@ -407,13 +234,14 @@ fi #CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. #cmake --build bgcc #if [ $? -eq 0 ]; then -# echo "Passed" +# PassedCompilation #else -# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt +# FailedCompilation # exit $? #fi -{ echo ""; echo "Clang - STL"; } | tee -a ../log.txt +SetTestName "Clang - STL" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -421,13 +249,14 @@ clang++ --version | head --lines=1 | tee -a ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. cmake --build bclang if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -{ echo ""; echo "Clang - STL - Force C++03"; } | tee -a ../log.txt +SetTestName "Clang - STL - Force C++03" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -435,13 +264,14 @@ clang++ --version | head --lines=1 | tee -a ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. cmake --build bclang if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -{ echo ""; echo "Clang - No STL"; } | tee -a ../log.txt +SetTestName "Clang - No STL" +PrintHeader rm -rdf bgcc rm -rdf bclang cmake -E make_directory bgcc bclang @@ -449,13 +279,29 @@ clang++ --version | head --lines=1 | tee -a ../log.txt CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. cmake --build bclang if [ $? -eq 0 ]; then - echo "Passed" + PassedCompilation else - echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt + FailedCompilation exit $? fi -##{ echo ""; echo "Clang - No STL - User defined traits"; } | tee -a ../log.txt +SetTestName "Clang - No STL - Force C++03" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +clang++ --version | head --lines=1 | tee -a ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. +cmake --build bclang +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +#SetTestName "Clang - No STL - User defined traits" +#PrintHeader #rm -rdf bgcc #rm -rdf bclang #cmake -E make_directory bgcc bclang @@ -463,13 +309,320 @@ fi #CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. #cmake --build bclang #if [ $? -eq 0 ]; then -# echo "Passed" +# PassedCompilation #else -# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt +# FailedCompilation # exit $? #fi -{ echo "" -echo "-----------------------------------------------" -echo " All Checks Completed OK" -echo "-----------------------------------------------"; } | tee -a ../log.txt +############################################################################### +cd ../c++14 || exit 1 + +SetCxxStandard "14" + +SetTestName "GCC - STL" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +g++ --version | head --lines=1 | tee -a ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +cmake --build bgcc +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "GCC - STL - Force C++03" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +g++ --version | head --lines=1 | tee -a ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. +cmake --build bgcc +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "GCC - No STL" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +g++ --version | head --lines=1 | tee -a ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +cmake --build bgcc +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "GCC - No STL - Force C++03" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +g++ --version | head --lines=1 | tee -a ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. +cmake --build bgcc +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +#SetTestName "GCC - No STL - User defined traits" +#PrintHeader +#rm -rdf bgcc +#rm -rdf bclang +#cmake -E make_directory bgcc bclang +#g++ --version | head --lines=1 | tee -a ../log.txt +#CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +#cmake --build bgcc +#if [ $? -eq 0 ]; then +# PassedCompilation +#else +# FailedCompilation +# exit $? +#fi + +SetTestName "Clang - STL" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +clang++ --version | head --lines=1 | tee -a ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +cmake --build bclang +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "Clang - STL - Force C++03" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +clang++ --version | head --lines=1 | tee -a ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. +cmake --build bclang +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "Clang - No STL" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +clang++ --version | head --lines=1 | tee -a ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +cmake --build bclang +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "Clang - No STL - Force C++03" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +clang++ --version | head --lines=1 | tee -a ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. +cmake --build bclang +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +#SetTestName "Clang - No STL - User defined traits" +#PrintHeader +#rm -rdf bgcc +#rm -rdf bclang +#cmake -E make_directory bgcc bclang +#clang++ --version | head --lines=1 | tee -a ../log.txt +#CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +#cmake --build bclang +#if [ $? -eq 0 ]; then +# PassedCompilation +#else +# FailedCompilation +# exit $? +#fi + +############################################################################### +cd ../c++17 || exit 1 + +SetCxxStandard "17" + +SetTestName "GCC - STL" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +g++ --version | head --lines=1 | tee -a ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +cmake --build bgcc +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "GCC - STL - Force C++03" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +g++ --version | head --lines=1 | tee -a ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. +cmake --build bgcc +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "GCC - No STL" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +g++ --version | head --lines=1 | tee -a ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +cmake --build bgcc +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "GCC - No STL - Force C++03" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +g++ --version | head --lines=1 | tee -a ../log.txt +CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. +cmake --build bgcc +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +#SetTestName "GCC - No STL - User defined traits" +#PrintHeader +#rm -rdf bgcc +#rm -rdf bclang +#cmake -E make_directory bgcc bclang +#g++ --version | head --lines=1 | tee -a ../log.txt +#CC=gcc CXX=g++ cmake -E chdir bgcc cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +#cmake --build bgcc +#if [ $? -eq 0 ]; then +# PassedCompilation +#else +# FailedCompilation +# exit $? +#fi + +SetTestName "Clang - STL" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +clang++ --version | head --lines=1 | tee -a ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +cmake --build bclang +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "Clang - STL - Force C++03" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +clang++ --version | head --lines=1 | tee -a ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. +cmake --build bclang +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "Clang - No STL" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +clang++ --version | head --lines=1 | tee -a ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +cmake --build bclang +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +SetTestName "Clang - No STL - Force C++03" +PrintHeader +rm -rdf bgcc +rm -rdf bclang +cmake -E make_directory bgcc bclang +clang++ --version | head --lines=1 | tee -a ../log.txt +CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON .. +cmake --build bclang +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi + +#SetTestName "Clang - No STL - User defined traits" +#PrintHeader +#rm -rdf bgcc +#rm -rdf bclang +#cmake -E make_directory bgcc bclang +#clang++ --version | head --lines=1 | tee -a ../log.txt +#CC=clang CXX=clang++ cmake -E chdir bclang cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF .. +#cmake --build bclang +#if [ $? -eq 0 ]; then +# PassedCompilation +#else +# FailedCompilation +# exit $? +#fi + +ChecksCompleted diff --git a/test/runtests.sh b/test/runtests.sh index 3b281fc7..909e4c62 100644 --- a/test/runtests.sh +++ b/test/runtests.sh @@ -28,6 +28,11 @@ else opt="-O0" fi +export ASAN_OPTIONS=symbol_line=1 +export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-14/bin//llvm-symbolizer + +echo -e + testname="Test Name Not Set" FailColour='\033[38;2;255;128;128m' @@ -35,9 +40,7 @@ PassColour='\033[38;2;128;255;128m' TitleColour='\033[38;2;100;173;254m' NoColour='\033[0m' -echo -e - -TestName() +SetTestName() { testname=$1 } @@ -47,8 +50,8 @@ PrintHeader() echo "${TitleColour}" echo "----------------------------------------------------------------------------" | tee -a log.txt echo " $testname" | tee -a log.txt - echo " Language standard : C++${cxx_standard}" - echo " Optimisation : ${opt}" + echo " Language standard : C++${cxx_standard}" | tee -a log.txt + echo " Optimisation : ${opt}" | tee -a log.txt echo "----------------------------------------------------------------------------" | tee -a log.txt echo "${NoColour}" } @@ -56,14 +59,18 @@ PrintHeader() PassedCompilation() { echo "${PassColour}" - echo "<<<< Passed Compilation - $testname >>>>" | tee -a ../log.txt + echo "-----------------------------------------------" | tee -a log.txt + echo " Passed Compilation - $testname" | tee -a ../log.txt + echo "-----------------------------------------------" | tee -a log.txt echo "${NoColour}" } PassedTests() { echo "${PassColour}" - echo "<<<< Passed Tests - $testname >>>>" | tee -a ../log.txt + echo "-----------------------------------------------" | tee -a log.txt + echo " Passed Tests - $testname" | tee -a ../log.txt + echo "-----------------------------------------------" | tee -a log.txt echo "${NoColour}" } @@ -97,72 +104,93 @@ TestsCompleted() #****************************************************************************** # GCC #****************************************************************************** -#TestName "GCC - STL" -#PrintHeader -#rm * -rf -#gcc --version | grep gcc | tee -a log.txt -#cmake -DCMAKE_CXX_COMPILER="g++" -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard .. -#make -j4 -#if [ $? -eq 0 ]; then -# PassedCompilation -#else -# FailedCompilation -# exit $? -#fi -#./etl_tests -#if [ $? -eq 0 ]; then -# PassedTests -#else -# FailedTests -# exit $? -#fi +SetTestName "GCC - STL" +PrintHeader +rm * -rf +gcc --version | grep gcc | tee -a log.txt +cmake -DCMAKE_CXX_COMPILER="g++" -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard .. +make -j4 +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi +./etl_tests +if [ $? -eq 0 ]; then + PassedTests +else + FailedTests + exit $? +fi #****************************************************************************** -#TestName "GCC - STL - Force C++03" -#PrintHeader -#rm * -rf -#gcc --version | grep gcc | tee -a log.txt -#cmake -DCMAKE_CXX_COMPILER="g++" -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard .. -#make -j4 -#if [ $? -eq 0 ]; then -# PassedCompilation -#else -# FailedCompilation -# exit $? -#fi -#./etl_tests -#if [ $? -eq 0 ]; then -# PassedTests -#else -# FailedTests -# exit $? -#fi +SetTestName "GCC - STL - Force C++03" +PrintHeader +rm * -rf +gcc --version | grep gcc | tee -a log.txt +cmake -DCMAKE_CXX_COMPILER="g++" -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard .. +make -j4 +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi +./etl_tests +if [ $? -eq 0 ]; then + PassedTests +else + FailedTests + exit $? +fi #****************************************************************************** -#TestName "GCC - No STL" -#PrintHeader -#rm * -rf -#gcc --version | grep gcc | tee -a log.txt -#cmake -DCMAKE_CXX_COMPILER="g++" -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard .. -#make -j4 -#if [ $? -eq 0 ]; then -# PassedCompilation -#else -# FailedCompilation -# exit $? -#fi -#./etl_tests -#if [ $? -eq 0 ]; then -# PassedTests -#else -# FailedTests -# exit $? -#fi +SetTestName "GCC - No STL" +PrintHeader +rm * -rf +gcc --version | grep gcc | tee -a log.txt +cmake -DCMAKE_CXX_COMPILER="g++" -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard .. +make -j4 +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi +./etl_tests +if [ $? -eq 0 ]; then + PassedTests +else + FailedTests + exit $? +fi + +#****************************************************************************** +SetTestName "GCC - No STL - Force C++03" +PrintHeader +rm * -rf +gcc --version | grep gcc | tee -a log.txt +cmake -DCMAKE_CXX_COMPILER="g++" -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard .. +make -j4 +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi +./etl_tests +if [ $? -eq 0 ]; then + PassedTests +else + FailedTests + exit $? +fi #****************************************************************************** # CLANG #****************************************************************************** -TestName "Clang - STL" +SetTestName "Clang - STL" PrintHeader rm * -rf clang --version | grep clang | tee -a log.txt @@ -183,7 +211,7 @@ else fi #****************************************************************************** -TestName "Clang - STL - Force C++03" +SetTestName "Clang - STL - Force C++03" PrintHeader rm * -rf clang --version | grep clang | tee -a log.txt @@ -204,7 +232,7 @@ else fi #****************************************************************************** -TestName "Clang - No STL" +SetTestName "Clang - No STL" PrintHeader rm * -rf clang --version | grep clang | tee -a log.txt @@ -225,7 +253,28 @@ else fi #****************************************************************************** -TestName "GCC - Initializer list test" +SetTestName "Clang - No STL - Force C++03" +PrintHeader +rm * -rf +clang --version | grep clang | tee -a log.txt +cmake -DCMAKE_CXX_COMPILER="clang++" -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_OPTIMISATION=$opt -DETL_CXX_STANDARD=$cxx_standard .. +make -j4 +if [ $? -eq 0 ]; then + PassedCompilation +else + FailedCompilation + exit $? +fi +./etl_tests +if [ $? -eq 0 ]; then + PassedTests +else + FailedTests + exit $? +fi + +#****************************************************************************** +SetTestName "GCC - Initializer list test" PrintHeader cd ../etl_initializer_list/ mkdir -p build-make || exit 1 @@ -249,7 +298,7 @@ else fi #****************************************************************************** -TestName "Clang - Initializer list test" +SetTestName "Clang - Initializer list test" PrintHeader rm * -rf clang --version | grep clang | tee -a log.txt @@ -270,7 +319,7 @@ else fi #****************************************************************************** -TestName "GCC - Error macros 'log_errors' test" +SetTestName "GCC - Error macros 'log_errors' test" PrintHeader cd ../../etl_error_handler/log_errors mkdir -p build-make || exit 1 @@ -294,7 +343,7 @@ else fi #****************************************************************************** -TestName "GCC - Error macros 'exceptions' test" +SetTestName "GCC - Error macros 'exceptions' test" PrintHeader cd ../../../etl_error_handler/exceptions mkdir -p build-make || exit 1 @@ -318,7 +367,7 @@ else fi #****************************************************************************** -TestName "GCC - Error macros 'log_errors and exceptions' test" +SetTestName "GCC - Error macros 'log_errors and exceptions' test" PrintHeader cd ../../../etl_error_handler/log_errors_and_exceptions mkdir -p build-make || exit 1 @@ -342,7 +391,7 @@ else fi #****************************************************************************** -TestName "Clang - Error macros 'log_errors' test" +SetTestName "Clang - Error macros 'log_errors' test" PrintHeader cd ../../../etl_error_handler/log_errors mkdir -p build-make || exit 1 @@ -366,7 +415,7 @@ else fi #****************************************************************************** -TestName "Clang - Error macros 'exceptions' test" +SetTestName "Clang - Error macros 'exceptions' test" PrintHeader cd ../../../etl_error_handler/exceptions mkdir -p build-make || exit 1 @@ -390,7 +439,7 @@ else fi #****************************************************************************** -TestName "Clang - Error macros 'log_errors and exceptions' test" +SetTestName "Clang - Error macros 'log_errors and exceptions' test" PrintHeader cd ../../../etl_error_handler/log_errors_and_exceptions mkdir -p build-make || exit 1 diff --git a/test/test_array_view.cpp b/test/test_array_view.cpp index a29d8399..0202dcd1 100644 --- a/test/test_array_view.cpp +++ b/test/test_array_view.cpp @@ -722,8 +722,8 @@ namespace View view(etldata.begin(), etldata.end()); CView cview(etldata.begin(), etldata.end()); - size_t hashdata = etl::private_hash::generic_hash(reinterpret_cast(&etldata[0]), - reinterpret_cast(&etldata[etldata.size()])); + size_t hashdata = etl::private_hash::generic_hash(reinterpret_cast(etldata.data()), + reinterpret_cast(etldata.data() + etldata.size())); size_t hashview = etl::hash()(view); size_t hashcview = etl::hash()(cview); diff --git a/test/test_array_wrapper.cpp b/test/test_array_wrapper.cpp index 4c2ab952..b93ff35d 100644 --- a/test/test_array_wrapper.cpp +++ b/test/test_array_wrapper.cpp @@ -563,10 +563,8 @@ namespace Data5 aw5; size_t hash = etl::hash()(aw5); - size_t compare_hash = etl::private_hash::generic_hash(reinterpret_cast(data5), reinterpret_cast(data5 + 5U)); - CHECK_EQUAL(compare_hash, hash); } }; diff --git a/test/test_container.cpp b/test/test_container.cpp index d576879a..e2fbb811 100644 --- a/test/test_container.cpp +++ b/test/test_container.cpp @@ -74,7 +74,7 @@ namespace CHECK(&data[0] == iBegin); int* iEnd = etl::end(data); - CHECK(&data[SIZE] == iEnd); + CHECK((data + SIZE) == iEnd); } //************************************************************************* @@ -87,7 +87,7 @@ namespace CHECK(&data[0] == iBegin); const int* const iEnd = etl::end(data); - CHECK(&data[SIZE] == iEnd); + CHECK((data + SIZE) == iEnd); } diff --git a/test/test_iterator.cpp b/test/test_iterator.cpp index 729c0a50..fbbb0f4a 100644 --- a/test/test_iterator.cpp +++ b/test/test_iterator.cpp @@ -79,7 +79,7 @@ namespace //************************************************************************* TEST(distance_non_random) { - ptrdiff_t d = etl::distance(non_random_iterator(&dataA[0]), non_random_iterator(&dataA[SIZE])); + ptrdiff_t d = etl::distance(non_random_iterator(&dataA[0]), non_random_iterator(dataA + SIZE)); CHECK_EQUAL(SIZE, d); } @@ -87,7 +87,7 @@ namespace //************************************************************************* TEST(distance_random) { - ptrdiff_t d = etl::distance(random_iterator(&dataA[0]), random_iterator(&dataA[SIZE])); + ptrdiff_t d = etl::distance(random_iterator(&dataA[0]), random_iterator(dataA + SIZE)); CHECK_EQUAL(SIZE, d); } diff --git a/test/test_multi_array.cpp b/test/test_multi_array.cpp index 78ba585c..0b399cc5 100644 --- a/test/test_multi_array.cpp +++ b/test/test_multi_array.cpp @@ -208,11 +208,11 @@ namespace { Data data = { { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 }, { 9, 10, 11 } } }; - CHECK(data.end() == &data[SIZE1]); - CHECK(data[0].end() == &data[0][SIZE2]); - CHECK(data[1].end() == &data[1][SIZE2]); - CHECK(data[2].end() == &data[2][SIZE2]); - CHECK(data[3].end() == &data[3][SIZE2]); + CHECK(data.end() == &data[0] + SIZE1); + CHECK(data[0].end() == &data[0][0] + SIZE2); + CHECK(data[1].end() == &data[1][0] + SIZE2); + CHECK(data[2].end() == &data[2][0] + SIZE2); + CHECK(data[3].end() == &data[3][0] + SIZE2); } //************************************************************************* @@ -232,11 +232,11 @@ namespace { const Data data = { { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 }, { 9, 10, 11 } } }; - CHECK(data.cend() == &data[SIZE1]); - CHECK(data[0].cend() == &data[0][SIZE2]); - CHECK(data[1].cend() == &data[1][SIZE2]); - CHECK(data[2].cend() == &data[2][SIZE2]); - CHECK(data[3].cend() == &data[3][SIZE2]); + CHECK(data.cend() == &data[0] + SIZE1); + CHECK(data[0].cend() == &data[0][0] + SIZE2); + CHECK(data[1].cend() == &data[1][0] + SIZE2); + CHECK(data[2].cend() == &data[2][0] + SIZE2); + CHECK(data[3].cend() == &data[3][0] + SIZE2); } //************************************************************************* @@ -246,11 +246,11 @@ namespace typedef etl::multi_array Inner; - CHECK(data.rbegin() == Data::reverse_iterator(&data[SIZE1])); - CHECK(data[0].rbegin() == Inner::reverse_iterator(&data[0][SIZE2])); - CHECK(data[1].rbegin() == Inner::reverse_iterator(&data[1][SIZE2])); - CHECK(data[2].rbegin() == Inner::reverse_iterator(&data[2][SIZE2])); - CHECK(data[3].rbegin() == Inner::reverse_iterator(&data[3][SIZE2])); + CHECK(data.rbegin() == Data::reverse_iterator(&data[0] + SIZE1)); + CHECK(data[0].rbegin() == Inner::reverse_iterator(&data[0][0] + SIZE2)); + CHECK(data[1].rbegin() == Inner::reverse_iterator(&data[1][0] + SIZE2)); + CHECK(data[2].rbegin() == Inner::reverse_iterator(&data[2][0] + SIZE2)); + CHECK(data[3].rbegin() == Inner::reverse_iterator(&data[3][0] + SIZE2)); } //************************************************************************* @@ -274,11 +274,11 @@ namespace typedef etl::multi_array Inner; - CHECK(data.rbegin() == Data::const_reverse_iterator(&data[SIZE1])); - CHECK(data[0].rbegin() == Inner::const_reverse_iterator(&data[0][SIZE2])); - CHECK(data[1].rbegin() == Inner::const_reverse_iterator(&data[1][SIZE2])); - CHECK(data[2].rbegin() == Inner::const_reverse_iterator(&data[2][SIZE2])); - CHECK(data[3].rbegin() == Inner::const_reverse_iterator(&data[3][SIZE2])); + CHECK(data.rbegin() == Data::const_reverse_iterator(data.data() + data.size())); + CHECK(data[0].rbegin() == Inner::const_reverse_iterator(&data[0][0] + SIZE2)); + CHECK(data[1].rbegin() == Inner::const_reverse_iterator(&data[1][0] + SIZE2)); + CHECK(data[2].rbegin() == Inner::const_reverse_iterator(&data[2][0] + SIZE2)); + CHECK(data[3].rbegin() == Inner::const_reverse_iterator(&data[3][0] + SIZE2)); } //************************************************************************* diff --git a/test/test_multi_vector.cpp b/test/test_multi_vector.cpp index 18777041..560bf3e2 100644 --- a/test/test_multi_vector.cpp +++ b/test/test_multi_vector.cpp @@ -253,11 +253,11 @@ namespace Data data; Copy(initial, data); - CHECK(data.end() == &data[SIZE1]); - CHECK(data[0].end() == &data[0][SIZE2]); - CHECK(data[1].end() == &data[1][SIZE2]); - CHECK(data[2].end() == &data[2][SIZE2]); - CHECK(data[3].end() == &data[3][SIZE2]); + CHECK(data.end() == &data[0] + SIZE1); + CHECK(data[0].end() == &data[0][0] + SIZE2); + CHECK(data[1].end() == &data[1][0] + SIZE2); + CHECK(data[2].end() == &data[2][0] + SIZE2); + CHECK(data[3].end() == &data[3][0] + SIZE2); } //************************************************************************* @@ -281,11 +281,11 @@ namespace Data data; Copy(initial, data); - CHECK(data.cend() == &data[SIZE1]); - CHECK(data[0].cend() == &data[0][SIZE2]); - CHECK(data[1].cend() == &data[1][SIZE2]); - CHECK(data[2].cend() == &data[2][SIZE2]); - CHECK(data[3].cend() == &data[3][SIZE2]); + CHECK(data.cend() == &data[0] + SIZE1); + CHECK(data[0].cend() == &data[0][0] + SIZE2); + CHECK(data[1].cend() == &data[1][0] + SIZE2); + CHECK(data[2].cend() == &data[2][0] + SIZE2); + CHECK(data[3].cend() == &data[3][0] + SIZE2); } //************************************************************************* @@ -297,11 +297,11 @@ namespace typedef etl::multi_vector Inner; - CHECK(data.rbegin() == Data::reverse_iterator(&data[SIZE1])); - CHECK(data[0].rbegin() == Inner::reverse_iterator(&data[0][SIZE2])); - CHECK(data[1].rbegin() == Inner::reverse_iterator(&data[1][SIZE2])); - CHECK(data[2].rbegin() == Inner::reverse_iterator(&data[2][SIZE2])); - CHECK(data[3].rbegin() == Inner::reverse_iterator(&data[3][SIZE2])); + CHECK(data.rbegin() == Data::reverse_iterator(&data[0] + SIZE1)); + CHECK(data[0].rbegin() == Inner::reverse_iterator(&data[0][0] + SIZE2)); + CHECK(data[1].rbegin() == Inner::reverse_iterator(&data[1][0] + SIZE2)); + CHECK(data[2].rbegin() == Inner::reverse_iterator(&data[2][0] + SIZE2)); + CHECK(data[3].rbegin() == Inner::reverse_iterator(&data[3][0] + SIZE2)); } //************************************************************************* @@ -329,11 +329,11 @@ namespace typedef etl::multi_vector Inner; - CHECK(data.rbegin() == Data::const_reverse_iterator(&data[SIZE1])); - CHECK(data[0].rbegin() == Inner::const_reverse_iterator(&data[0][SIZE2])); - CHECK(data[1].rbegin() == Inner::const_reverse_iterator(&data[1][SIZE2])); - CHECK(data[2].rbegin() == Inner::const_reverse_iterator(&data[2][SIZE2])); - CHECK(data[3].rbegin() == Inner::const_reverse_iterator(&data[3][SIZE2])); + CHECK(data.rbegin() == Data::const_reverse_iterator(&data[0] + SIZE1)); + CHECK(data[0].rbegin() == Inner::const_reverse_iterator(&data[0][0] + SIZE2)); + CHECK(data[1].rbegin() == Inner::const_reverse_iterator(&data[1][0] + SIZE2)); + CHECK(data[2].rbegin() == Inner::const_reverse_iterator(&data[2][0] + SIZE2)); + CHECK(data[3].rbegin() == Inner::const_reverse_iterator(&data[3][0] + SIZE2)); } //************************************************************************* diff --git a/test/test_span_dynamic_extent.cpp b/test/test_span_dynamic_extent.cpp index f958bd1e..b1a325ef 100644 --- a/test/test_span_dynamic_extent.cpp +++ b/test/test_span_dynamic_extent.cpp @@ -620,8 +620,8 @@ namespace View view(etldata.begin(), etldata.end()); CView cview(etldata.begin(), etldata.end()); - size_t hashdata = etl::private_hash::generic_hash(reinterpret_cast(&etldata[0]), - reinterpret_cast(&etldata[etldata.size()])); + size_t hashdata = etl::private_hash::generic_hash(reinterpret_cast(etldata.data()), + reinterpret_cast(etldata.data() + etldata.size())); size_t hashview = etl::hash()(view); size_t hashcview = etl::hash()(cview); diff --git a/test/test_span_fixed_extent.cpp b/test/test_span_fixed_extent.cpp index 1c650ce7..f251b3d7 100644 --- a/test/test_span_fixed_extent.cpp +++ b/test/test_span_fixed_extent.cpp @@ -610,8 +610,8 @@ namespace View view(etldata.begin(), etldata.end()); CView cview(etldata.begin(), etldata.end()); - size_t hashdata = etl::private_hash::generic_hash(reinterpret_cast(&etldata[0]), - reinterpret_cast(&etldata[etldata.size()])); + size_t hashdata = etl::private_hash::generic_hash(reinterpret_cast(etldata.data()), + reinterpret_cast(etldata.data() + etldata.size())); size_t hashview = etl::hash()(view); size_t hashcview = etl::hash()(cview);