From 98026fddab80cf1df4dc5d83e03b63563bb81010 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Thu, 7 Nov 2019 10:37:31 +0000 Subject: [PATCH] Added tests for 'value()' at type limits. --- include/etl/bitset.h | 2 +- test/test_bitset.cpp | 141 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 139 insertions(+), 4 deletions(-) diff --git a/include/etl/bitset.h b/include/etl/bitset.h index fd177ad3..834e4af6 100644 --- a/include/etl/bitset.h +++ b/include/etl/bitset.h @@ -242,7 +242,7 @@ namespace etl //************************************************************************* bool test(size_t position) const { - size_t index; + size_t index; element_t mask; if (SIZE == 1) diff --git a/test/test_bitset.cpp b/test/test_bitset.cpp index c7efedfb..f877727c 100644 --- a/test/test_bitset.cpp +++ b/test/test_bitset.cpp @@ -261,12 +261,147 @@ namespace } //************************************************************************* - TEST(test_value) + TEST(test_value_u8_min) { - etl::bitset<60> data("110001001000110100010101100111001100010010001101000101011001"); + etl::bitset<8> data("00000000"); + uint8_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::min(), value); + } + + //************************************************************************* + TEST(test_value_u8_max) + { + etl::bitset<8> data("11111111"); + uint8_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::max(), value); + } + + //************************************************************************* + TEST(test_value_s8_min) + { + etl::bitset<8> data("10000000"); + int8_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::min(), value); + } + + //************************************************************************* + TEST(test_value_s8_max) + { + etl::bitset<8> data("01111111"); + int8_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::max(), value); + } + + //************************************************************************* + TEST(test_value_u16_min) + { + etl::bitset<16> data("0000000000000000"); + uint16_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::min(), value); + } + + //************************************************************************* + TEST(test_value_u16_max) + { + etl::bitset<16> data("1111111111111111"); + uint16_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::max(), value); + } + + //************************************************************************* + TEST(test_value_s16_min) + { + etl::bitset<16> data("1000000000000000"); + int16_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::min(), value); + } + + //************************************************************************* + TEST(test_value_s16_max) + { + etl::bitset<16> data("0111111111111111"); + int16_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::max(), value); + } + + //************************************************************************* + TEST(test_value_u32_min) + { + etl::bitset<32> data("00000000000000000000000000000000"); + uint32_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::min(), value); + } + + //************************************************************************* + TEST(test_value_u32_max) + { + etl::bitset<32> data("11111111111111111111111111111111"); + uint32_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::max(), value); + } + + //************************************************************************* + TEST(test_value_s32_min) + { + etl::bitset<32> data("10000000000000000000000000000000"); + int32_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::min(), value); + } + + //************************************************************************* + TEST(test_value_s32_max) + { + etl::bitset<32> data("01111111111111111111111111111111"); + int32_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::max(), value); + } + + //************************************************************************* + TEST(test_value_u64_min) + { + etl::bitset<64> data("0000000000000000000000000000000000000000000000000000000000000000"); uint64_t value = data.value(); - CHECK_EQUAL(885187510387921241ull, value); + CHECK_EQUAL(std::numeric_limits::min(), value); + } + + //************************************************************************* + TEST(test_value_u64_max) + { + etl::bitset<64> data("1111111111111111111111111111111111111111111111111111111111111111"); + uint64_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::max(), value); + } + + //************************************************************************* + TEST(test_value_s64_min) + { + etl::bitset<64> data("1000000000000000000000000000000000000000000000000000000000000000"); + int64_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::min(), value); + } + + //************************************************************************* + TEST(test_value_s64_max) + { + etl::bitset<64> data("0111111111111111111111111111111111111111111111111111111111111111"); + int64_t value = data.value(); + + CHECK_EQUAL(std::numeric_limits::max(), value); } //*************************************************************************