mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
etl::basic_string::copy is now const and does not affect the 'truncated' flag.
This commit is contained in:
parent
5bd7222e92
commit
e44efd75a7
@ -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;
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
|
||||
@ -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