Skip to content

Commit

Permalink
Fix constexpr for char traits tests
Browse files Browse the repository at this point in the history
  • Loading branch information
John Wellbelove committed Aug 6, 2024
1 parent 54681da commit da5215e
Showing 1 changed file with 39 additions and 23 deletions.
62 changes: 39 additions & 23 deletions test/test_char_traits.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Embedded Template Library.
https://github.com/ETLCPP/etl
https://www.etlcpp.com
Documentation:
Documentation:
Copyright(c) 2022 John Wellbelove
Expand Down Expand Up @@ -55,16 +55,32 @@ namespace
//*************************************************************************
TEST(test_strlen)
{
char data1[etl::strlen("qwerty")];
char data2[etl::strlen(L"qwerty")];
char data3[etl::strlen(u"qwerty")];
char data4[etl::strlen(U"qwerty")];
CHECK_EQUAL(6U, etl::strlen("qwerty"));
CHECK_EQUAL(6U, etl::strlen(L"qwerty"));
CHECK_EQUAL(6U, etl::strlen(u"qwerty"));
CHECK_EQUAL(6U, etl::strlen(U"qwerty"));
}

#if ETL_USING_CPP14 && !defined(ETL_FORCE_NO_ADVANCED_CPP)
//*************************************************************************
TEST(test_strlen_constexpr)
{
constexpr size_t Size1 = etl::strlen("qwerty");
constexpr size_t Size2 = etl::strlen(L"qwerty");
constexpr size_t Size3 = etl::strlen(u"qwerty");
constexpr size_t Size4 = etl::strlen(U"qwerty");

char data1[Size1];
char data2[Size2];
char data3[Size3];
char data4[Size4];

CHECK_EQUAL(6U, sizeof(data1));
CHECK_EQUAL(6U, sizeof(data2));
CHECK_EQUAL(6U, sizeof(data3));
CHECK_EQUAL(6U, sizeof(data4));
}
#endif

//*************************************************************************
TEST(test_strcmp_char)
Expand All @@ -77,7 +93,7 @@ namespace
CHECK_TRUE(etl::strcmp(s1, s2) == 0);
CHECK_TRUE(etl::strcmp(s2, s1) == 0);
CHECK_TRUE(etl::strcmp(s1, s3) < 0);
CHECK_TRUE(etl::strcmp(s3, s1) > 0 );
CHECK_TRUE(etl::strcmp(s3, s1) > 0);
CHECK_TRUE(etl::strcmp(s1, s4) > 0);
CHECK_TRUE(etl::strcmp(s4, s1) < 0);
}
Expand Down Expand Up @@ -507,8 +523,8 @@ namespace
TEST(test_char_traits_char_template)
{
using char_traits = etl::char_traits<char>;
using char_type = char_traits::char_type;
using int_type = char_traits::int_type;
using char_type = char_traits::char_type;
using int_type = char_traits::int_type;

char_type r = 'A';
char_type c = 'B';
Expand All @@ -531,17 +547,17 @@ namespace

CHECK_EQUAL(length<char_type>("ABCDEF"), char_traits::length("ABCDEF"));

CHECK_EQUAL(0, char_traits::compare("ABCDEF", "ABCDEF", 6U));
CHECK_EQUAL(0, char_traits::compare("ABCDEF", "ABCDEF", 6U));
CHECK_EQUAL(-1, char_traits::compare("ABCDEE", "ABCDEF", 6U));
CHECK_EQUAL(1, char_traits::compare("ABCDEF", "ABCDEE", 6U));
CHECK_EQUAL(1, char_traits::compare("ABCDEF", "ABCDEE", 6U));

p_dst = char_traits::assign(dst, ETL_OR_STD17::size(dst), 9);
CHECK_ARRAY_EQUAL(filled, p_dst, ETL_OR_STD17::size(filled));

std::fill_n(dst, ETL_OR_STD17::size(dst), 0);
p_dst = char_traits::copy(dst, src, ETL_OR_STD17::size(src));
CHECK_ARRAY_EQUAL(src, p_dst, ETL_OR_STD17::size(src));

std::fill_n(dst, ETL_OR_STD17::size(dst), 0);
p_dst = char_traits::move(dst, src, ETL_OR_STD17::size(src));
CHECK_ARRAY_EQUAL(src, p_dst, ETL_OR_STD17::size(src));
Expand All @@ -555,16 +571,16 @@ namespace
CHECK(!char_traits::eq_int_type(0, 1));
CHECK(char_traits::eq_int_type(1, 1));

CHECK(int_type(char_traits::eof()) != char_traits::not_eof(char_traits::eof()));
CHECK(int_type(char_traits::eof()) != char_traits::not_eof(char_traits::eof()));
CHECK(int_type(char_traits::eof() + 1) == char_traits::not_eof(char_traits::eof() + 1));
}

//*************************************************************************
TEST(test_char_traits_wchar_t_template)
{
using char_traits = etl::char_traits<wchar_t>;
using char_type = char_traits::char_type;
using int_type = char_traits::int_type;
using char_type = char_traits::char_type;
using int_type = char_traits::int_type;

char_type r = L'A';
char_type c = L'B';
Expand Down Expand Up @@ -611,16 +627,16 @@ namespace
CHECK(!char_traits::eq_int_type(0, 1));
CHECK(char_traits::eq_int_type(1, 1));

CHECK(int_type(char_traits::eof()) != int_type(char_traits::not_eof(char_traits::eof())));
// CHECK(int_type(char_traits::eof() + 1) == int_type(char_traits::not_eof(char_traits::eof() + 1)));
CHECK(int_type(char_traits::eof()) != int_type(char_traits::not_eof(char_traits::eof())));
// CHECK(int_type(char_traits::eof() + 1) == int_type(char_traits::not_eof(char_traits::eof() + 1)));
}

//*************************************************************************
TEST(test_char_traits_char16_t_template)
{
using char_traits = etl::char_traits<char16_t>;
using char_type = char_traits::char_type;
using int_type = char_traits::int_type;
using char_type = char_traits::char_type;
using int_type = char_traits::int_type;

char_type r = u'A';
char_type c = u'B';
Expand Down Expand Up @@ -666,16 +682,16 @@ namespace
CHECK(!char_traits::eq_int_type(0, 1));
CHECK(char_traits::eq_int_type(1, 1));

CHECK(int_type(char_traits::eof()) != char_traits::not_eof(char_traits::eof()));
// CHECK(int_type(char_traits::eof() + 1) == char_traits::not_eof(char_traits::eof() + 1));
CHECK(int_type(char_traits::eof()) != char_traits::not_eof(char_traits::eof()));
// CHECK(int_type(char_traits::eof() + 1) == char_traits::not_eof(char_traits::eof() + 1));
}

//*************************************************************************
TEST(test_char_traits_char32_t_template)
{
using char_traits = etl::char_traits<char32_t>;
using char_type = char_traits::char_type;
using int_type = char_traits::int_type;
using char_type = char_traits::char_type;
using int_type = char_traits::int_type;

char_type r = U'A';
char_type c = U'B';
Expand Down Expand Up @@ -721,7 +737,7 @@ namespace
CHECK(!char_traits::eq_int_type(0, 1));
CHECK(char_traits::eq_int_type(1, 1));

CHECK(int_type(char_traits::eof()) != char_traits::not_eof(char_traits::eof()));
CHECK(int_type(char_traits::eof()) != char_traits::not_eof(char_traits::eof()));
CHECK(int_type(char_traits::eof() + 1) == char_traits::not_eof(char_traits::eof() + 1));
}
};
Expand Down

0 comments on commit da5215e

Please sign in to comment.