mirror of
https://github.com/ETLCPP/etl.git
synced 2026-11-09 14:49:53 +08:00
Merge branch 'master' into feature/variadic-variant
This commit is contained in:
commit
2e0c2a4099
@ -1296,31 +1296,31 @@ namespace etl
|
||||
|
||||
//*********************************************************************
|
||||
/// Copies a portion of a string.
|
||||
///\param s Pointer to the string to copy.
|
||||
///\param len The number of characters to copy.
|
||||
///\param pos The position to start copying from.
|
||||
///\param s Pointer to the string to copy.
|
||||
///\param count The number of characters to copy.
|
||||
///\param pos The position to start copying from.
|
||||
//*********************************************************************
|
||||
size_type copy(pointer s, size_type len, size_type pos = 0)
|
||||
size_type copy(pointer dest, size_type count, size_type pos = 0) const
|
||||
{
|
||||
if ((pos + len > size()))
|
||||
if (pos < size())
|
||||
{
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
set_truncated(true);
|
||||
if (count != npos)
|
||||
{
|
||||
count = etl::min(count, size() - pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
count = size() - pos;
|
||||
}
|
||||
|
||||
#if defined(ETL_STRING_TRUNCATION_IS_ERROR)
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(string_truncation));
|
||||
#endif
|
||||
#endif
|
||||
etl::copy_n(p_buffer + pos, count, dest);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
size_type endpos = etl::min(pos + len, size());
|
||||
|
||||
for (size_type i = pos; i < endpos; ++i)
|
||||
else
|
||||
{
|
||||
*s++ = p_buffer[i];
|
||||
return 0U;
|
||||
}
|
||||
|
||||
return endpos - pos;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
|
||||
@ -39,7 +39,7 @@ SOFTWARE.
|
||||
|
||||
#define ETL_VERSION_MAJOR 20
|
||||
#define ETL_VERSION_MINOR 11
|
||||
#define ETL_VERSION_PATCH 1
|
||||
#define ETL_VERSION_PATCH 2
|
||||
#define ETL_VERSION ETL_STRINGIFY(ETL_VERSION_MAJOR) "." ETL_STRINGIFY(ETL_VERSION_MINOR) "." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
#define ETL_VERSION_W ETL_STRINGIFY(ETL_VERSION_MAJOR) L"." ETL_STRINGIFY(ETL_VERSION_MINOR) L"." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
#define ETL_VERSION_U16 ETL_STRINGIFY(ETL_VERSION_MAJOR) u"." ETL_STRINGIFY(ETL_VERSION_MINOR) u"." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ETL Embedded Template Library",
|
||||
"version": "20.11.1",
|
||||
"version": "20.11.2",
|
||||
"author s": {
|
||||
"name": "John Wellbelove",
|
||||
"email": "john.wellbelove@etlcpp.com"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name=Embedded Template Library ETL
|
||||
version=20.11.1
|
||||
version=20.11.2
|
||||
author= John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
license=MIT
|
||||
|
||||
@ -8,7 +8,7 @@ project('PROJECT_NAME',
|
||||
'cpp_std=c++17', 'build.cpp_std=c++17',
|
||||
],
|
||||
meson_version: '>=0.54.0',
|
||||
version: '20.11.1'
|
||||
version: '20.11.2'
|
||||
)
|
||||
|
||||
######################
|
||||
@ -71,6 +71,8 @@ etl_test_sources = files(
|
||||
'test/test_largest.cpp',
|
||||
'test/test_list.cpp',
|
||||
'test/test_maths.cpp',
|
||||
'test/test_mem_cast.cpp',
|
||||
'test/test_mem_cast_ptr.cpp',
|
||||
'test/test_memory.cpp',
|
||||
'test/test_message_bus.cpp',
|
||||
'test/test_message_router.cpp',
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
===============================================================================
|
||||
20.11.2
|
||||
etl::basic_string::copy is now const and does not affect truncation flags.
|
||||
|
||||
===============================================================================
|
||||
20.11.1
|
||||
Fixed ambiguous function call in etl::mem_cast for clang.
|
||||
|
||||
@ -3000,6 +3000,73 @@ namespace
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_start_pos_too_large)
|
||||
{
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
|
||||
size_t length1 = text.copy(buffer1, 5, SIZE);
|
||||
|
||||
CHECK_EQUAL(0U, length1);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_equals_npos)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, Compare_Text::npos, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, Text::npos, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_too_large)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, SIZE, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, SIZE, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_find_string)
|
||||
{
|
||||
|
||||
@ -3290,7 +3290,7 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_copy)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
@ -3314,6 +3314,78 @@ namespace
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_start_pos_too_large)
|
||||
{
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
|
||||
size_t length1 = text.copy(buffer1, 5, SIZE);
|
||||
|
||||
CHECK_EQUAL(0U, length1);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_equals_npos)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, Compare_Text::npos, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, Text::npos, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_too_large)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, SIZE, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, SIZE, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_find_string)
|
||||
{
|
||||
|
||||
@ -2995,8 +2995,75 @@ namespace
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_start_pos_too_large)
|
||||
{
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
|
||||
size_t length1 = text.copy(buffer1, 5, SIZE);
|
||||
|
||||
CHECK_EQUAL(0U, length1);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_equals_npos)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, Compare_Text::npos, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, Text::npos, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_too_large)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, SIZE, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, SIZE, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
|
||||
@ -3290,7 +3290,7 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_copy)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
@ -3309,8 +3309,80 @@ namespace
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_start_pos_too_large)
|
||||
{
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
|
||||
size_t length1 = text.copy(buffer1, 5, SIZE);
|
||||
|
||||
CHECK_EQUAL(0U, length1);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_equals_npos)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, Compare_Text::npos, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, Text::npos, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_too_large)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, SIZE, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, SIZE, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
|
||||
@ -2995,8 +2995,75 @@ namespace
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_start_pos_too_large)
|
||||
{
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
|
||||
size_t length1 = text.copy(buffer1, 5, SIZE);
|
||||
|
||||
CHECK_EQUAL(0U, length1);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_equals_npos)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, Compare_Text::npos, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, Text::npos, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_too_large)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, SIZE, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, SIZE, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
|
||||
@ -3290,7 +3290,7 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_copy)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
@ -3309,8 +3309,80 @@ namespace
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_start_pos_too_large)
|
||||
{
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
|
||||
size_t length1 = text.copy(buffer1, 5, SIZE);
|
||||
|
||||
CHECK_EQUAL(0U, length1);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_equals_npos)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, Compare_Text::npos, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, Text::npos, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_too_large)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, SIZE, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, SIZE, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
|
||||
@ -2995,8 +2995,75 @@ namespace
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_start_pos_too_large)
|
||||
{
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
|
||||
size_t length1 = text.copy(buffer1, 5, SIZE);
|
||||
|
||||
CHECK_EQUAL(0U, length1);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_equals_npos)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, Compare_Text::npos, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, Text::npos, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_too_large)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
Text text(initial_text.c_str());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, SIZE, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, SIZE, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
|
||||
@ -3290,7 +3290,7 @@ namespace
|
||||
TEST_FIXTURE(SetupFixture, test_copy)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
@ -3309,8 +3309,80 @@ namespace
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_start_pos_too_large)
|
||||
{
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
|
||||
size_t length1 = text.copy(buffer1, 5, SIZE);
|
||||
|
||||
CHECK_EQUAL(0U, length1);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_equals_npos)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, Compare_Text::npos, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, Text::npos, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_copy_count_too_large)
|
||||
{
|
||||
Compare_Text compare_text(initial_text.c_str());
|
||||
|
||||
TextBuffer buffer;
|
||||
Text text(initial_text.c_str(), buffer.data(), buffer.size());
|
||||
|
||||
value_t buffer1[SIZE];
|
||||
value_t buffer2[SIZE];
|
||||
|
||||
size_t length1 = compare_text.copy(buffer1, SIZE, 2);
|
||||
buffer1[length1] = STR('\0');
|
||||
|
||||
size_t length2 = text.copy(buffer2, SIZE, 2);
|
||||
buffer2[length2] = STR('\0');
|
||||
|
||||
CHECK_EQUAL(length1, length2);
|
||||
#if ETL_STRING_TRUNCATION_CHECKS_ENABLED
|
||||
CHECK(!text.is_truncated());
|
||||
#endif
|
||||
|
||||
bool is_equal = std::equal(buffer1,
|
||||
buffer1 + length1,
|
||||
buffer2);
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user