Merge branch 'feature/string-utilities' into development

This commit is contained in:
John Wellbelove 2020-08-01 15:57:20 +01:00
commit 09faee80da
13 changed files with 961 additions and 946 deletions

View File

@ -36,11 +36,15 @@ SOFTWARE.
#include "enum_type.h"
#include "memory.h"
#include "char_traits.h"
#include "optional.h"
#include <stdint.h>
namespace etl
{
//***************************************************************************
/// string_pad_direction
//***************************************************************************
struct string_pad_direction
{
enum enum_type
@ -55,13 +59,16 @@ namespace etl
ETL_END_ENUM_TYPE
};
//***************************************************************************
/// whitespace
//***************************************************************************
template <typename TChar>
struct whitespace;
template <>
struct whitespace<char>
{
static const char* value()
static ETL_CONSTEXPR const char* value()
{
return " \t\n\r\f\v";
}
@ -70,7 +77,7 @@ namespace etl
template <>
struct whitespace<wchar_t>
{
static const wchar_t* value()
static ETL_CONSTEXPR const wchar_t* value()
{
return L" \t\n\r\f\v";
}
@ -79,7 +86,7 @@ namespace etl
template <>
struct whitespace<char16_t>
{
static const char16_t* value()
static ETL_CONSTEXPR const char16_t* value()
{
return u" \t\n\r\f\v";
}
@ -88,12 +95,17 @@ namespace etl
template <>
struct whitespace<char32_t>
{
static const char32_t* value()
static ETL_CONSTEXPR const char32_t* value()
{
return U" \t\n\r\f\v";
}
};
#if ETL_CPP17_SUPPORTED
template <typename TChar>
inline constexpr const TChar* whitespace_v = whitespace<TChar>::value();
#endif
//***************************************************************************
/// trim_from_left
/// Trim left of trim_characters
@ -686,33 +698,40 @@ namespace etl
/// get_token
//***************************************************************************
template <typename TIString, typename TStringView>
TStringView get_token(const TIString& s, typename TIString::const_pointer delimiters, const TStringView& last_view)
etl::optional<TStringView> get_token(const TIString& s, typename TIString::const_pointer delimiters, const etl::optional<TStringView>& last_view, bool ignore_empty_tokens)
{
size_t position = 0U;
typedef typename TIString::const_pointer const_pointer;
// Does the last_view have valid data?
if (last_view.data() != ETL_NULLPTR)
bool token_found = false;
size_t position = 0U;
TStringView view = last_view.value_or(TStringView());
const_pointer begin_ptr = s.data();
const_pointer end_ptr = begin_ptr + s.size();
while (!token_found)
{
position = etl::distance(etl::addressof(*s.begin()), addressof(*last_view.begin()) + last_view.size());
// Does the last view have valid data?
if (view.data() != ETL_NULLPTR)
{
position = etl::distance(begin_ptr, view.data() + view.size() + 1U);
// Have we reached the end of the string?
if (position > s.size())
{
return etl::optional<TStringView>();
}
}
// Look for the next token.
const_pointer first_ptr = begin_ptr + position;
const_pointer last_ptr = find_first_of(first_ptr, end_ptr, delimiters);
view = TStringView(first_ptr, etl::distance(first_ptr, last_ptr));
token_found = ((view.size() != 0U) || !ignore_empty_tokens);
}
typename TIString::const_iterator first = s.begin() + position;
typename TIString::const_iterator last;
// Look for the start of the next token.
first = find_first_not_of(first, s.end(), delimiters);
last = find_first_of(first, s.end(), delimiters);
size_t view_length = etl::distance(first, last);
if (view_length != 0)
{
return TStringView(etl::addressof(*first), view_length);
}
else
{
return TStringView();
}
return etl::optional<TStringView>(view);
}
//***************************************************************************

View File

@ -38,8 +38,8 @@ SOFTWARE.
///\ingroup utilities
#define ETL_VERSION_MAJOR 18
#define ETL_VERSION_MINOR 11
#define ETL_VERSION_PATCH 1
#define ETL_VERSION_MINOR 12
#define ETL_VERSION_PATCH 0
#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)

View File

@ -1,6 +1,6 @@
{
"name": "Embedded Template Library",
"version": "18.11.1",
"version": "18.12.0",
"authors": {
"name": "John Wellbelove",
"email": "john.wellbelove@etlcpp.com"

View File

@ -1,5 +1,5 @@
name=Embedded Template Library
version=18.11.1
version=18.12.0
author= John Wellbelove <john.wellbelove@etlcpp.com>
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
license=MIT

View File

@ -1,3 +1,7 @@
===============================================================================
18.12.0
Recoded string utility get_token()
===============================================================================
18.11.1
Fix and optimise etl::list and etl::forward_list move constructors and assignment operators.

View File

@ -46,7 +46,9 @@ namespace
using IString = etl::istring;
using StringView = etl::string_view;
using Char = etl::istring::value_type;
using Vector = etl::vector<String, 10>;
using Vector = etl::vector<String, 15>;
constexpr auto Whitespace = etl::whitespace_v<String::value_type>;
//*************************************************************************
TEST(test_trim_whitespace_left_empty)
@ -65,8 +67,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -91,8 +93,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -117,8 +119,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -143,8 +145,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -169,8 +171,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -195,8 +197,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -232,8 +234,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -258,8 +260,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -284,8 +286,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("XYZ"));
@ -299,8 +301,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -326,8 +328,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -352,8 +354,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -378,8 +380,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -404,8 +406,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -430,8 +432,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -456,8 +458,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -482,8 +484,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -508,8 +510,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -534,8 +536,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("XYZ"));
@ -560,8 +562,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -586,8 +588,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -612,8 +614,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -638,8 +640,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -664,8 +666,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -690,8 +692,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -716,8 +718,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -742,8 +744,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -768,8 +770,8 @@ namespace
String text(STR("Hello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("XYZ"));
@ -794,8 +796,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, expected.size());
@ -809,8 +811,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, text.size() * 2U);
@ -846,8 +848,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, expected.size());
@ -861,8 +863,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, text.size() * 2U);
@ -973,45 +975,52 @@ namespace
}
//*************************************************************************
TEST(test_get_token_delimiters)
TEST(test_get_token_delimiters_ignore_empty_tokens)
{
String text(STR(" The cat.sat, on;the:mat .,;:"));
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(6U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_keep_empty_tokens)
{
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
while (token = etl::get_token(text, STR(","), token, false))
{
tokens.emplace_back(token.value());
}
CHECK_EQUAL(13U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_nothing_to_do)
{
String text(STR(""));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, Whitespace, token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1022,18 +1031,13 @@ namespace
String text(STR(" ., ;: .,;:"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(" .,;:"), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1044,18 +1048,13 @@ namespace
String text(STR("The cat sat on the mat"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, false))
{
token = etl::get_token(text, STR(".,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(1U, tokens.size());
}
@ -1280,7 +1279,7 @@ namespace
TEST(test_find_first_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("Hel"));
@ -1291,7 +1290,7 @@ namespace
TEST(test_find_first_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("xyz"));
@ -1381,7 +1380,7 @@ namespace
TEST(test_find_first_not_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abc"));
@ -1392,7 +1391,7 @@ namespace
TEST(test_find_first_not_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abcHello World"));
@ -1483,7 +1482,7 @@ namespace
TEST(test_find_last_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("rld"));
@ -1494,7 +1493,7 @@ namespace
TEST(test_find_last_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("xyz"));
@ -1585,7 +1584,7 @@ namespace
TEST(test_find_last_not_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abc"));
@ -1596,7 +1595,7 @@ namespace
TEST(test_find_last_not_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abcHello World"));

View File

@ -50,6 +50,8 @@ namespace
using Char = std::string::value_type;
using Vector = std::vector<String>;
constexpr auto Whitespace = etl::whitespace_v<String::value_type>;
//*************************************************************************
TEST(test_trim_whitespace_left_empty)
{
@ -67,8 +69,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -93,8 +95,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -119,8 +121,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -145,8 +147,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -171,8 +173,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -197,8 +199,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -234,8 +236,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -260,8 +262,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -286,8 +288,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("XYZ"));
@ -301,8 +303,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -328,8 +330,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -354,8 +356,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -380,8 +382,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -406,8 +408,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -432,8 +434,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -458,8 +460,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -484,8 +486,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -510,8 +512,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -536,8 +538,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("XYZ"));
@ -562,8 +564,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -588,8 +590,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -614,8 +616,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -640,8 +642,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -666,8 +668,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -692,8 +694,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -718,8 +720,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -744,8 +746,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -770,8 +772,8 @@ namespace
String text(STR("Hello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("XYZ"));
@ -796,8 +798,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, expected.size());
@ -811,8 +813,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, text.size() * 2U);
@ -848,8 +850,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, expected.size());
@ -863,8 +865,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, text.size() * 2U);
@ -975,45 +977,52 @@ namespace
}
//*************************************************************************
TEST(test_get_token_delimiters)
TEST(test_get_token_delimiters_ignore_empty_tokens)
{
String text(STR(" The cat.sat, on;the:mat .,;:"));
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(6U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_keep_empty_tokens)
{
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
while (token = etl::get_token(text, STR(","), token, false))
{
tokens.emplace_back(token.value());
}
CHECK_EQUAL(13U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_nothing_to_do)
{
String text(STR(""));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, Whitespace, token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1024,18 +1033,13 @@ namespace
String text(STR(" ., ;: .,;:"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(" .,;:"), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1046,18 +1050,13 @@ namespace
String text(STR("The cat sat on the mat"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, false))
{
token = etl::get_token(text, STR(".,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(1U, tokens.size());
}
@ -1234,7 +1233,7 @@ namespace
TEST(test_find_first_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("Hel"));
@ -1245,7 +1244,7 @@ namespace
TEST(test_find_first_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("xyz"));
@ -1335,7 +1334,7 @@ namespace
TEST(test_find_first_not_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abc"));
@ -1346,7 +1345,7 @@ namespace
TEST(test_find_first_not_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abcHello World"));
@ -1437,7 +1436,7 @@ namespace
TEST(test_find_last_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("rld"));
@ -1448,7 +1447,7 @@ namespace
TEST(test_find_last_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("xyz"));
@ -1539,7 +1538,7 @@ namespace
TEST(test_find_last_not_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abc"));
@ -1550,7 +1549,7 @@ namespace
TEST(test_find_last_not_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abcHello World"));

View File

@ -50,6 +50,8 @@ namespace
using Char = std::wstring::value_type;
using Vector = std::vector<String>;
constexpr auto Whitespace = etl::whitespace_v<String::value_type>;
//*************************************************************************
TEST(test_trim_whitespace_left_empty)
{
@ -67,8 +69,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -93,8 +95,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -119,8 +121,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -145,8 +147,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -171,8 +173,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -197,8 +199,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -234,8 +236,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -260,8 +262,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -286,8 +288,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("XYZ"));
@ -301,8 +303,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -328,8 +330,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -354,8 +356,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -380,8 +382,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -406,8 +408,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -432,8 +434,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -458,8 +460,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -484,8 +486,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -510,8 +512,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -536,8 +538,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("XYZ"));
@ -562,8 +564,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -588,8 +590,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -614,8 +616,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -640,8 +642,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -666,8 +668,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -692,8 +694,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -718,8 +720,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -744,8 +746,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -770,8 +772,8 @@ namespace
String text(STR("Hello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("XYZ"));
@ -796,8 +798,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, expected.size());
@ -811,8 +813,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, text.size() * 2U);
@ -848,8 +850,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, expected.size());
@ -863,8 +865,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, text.size() * 2U);
@ -975,45 +977,52 @@ namespace
}
//*************************************************************************
TEST(test_get_token_delimiters)
TEST(test_get_token_delimiters_ignore_empty_tokens)
{
String text(STR(" The cat.sat, on;the:mat .,;:"));
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(6U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_keep_empty_tokens)
{
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
while (token = etl::get_token(text, STR(","), token, false))
{
tokens.emplace_back(token.value());
}
CHECK_EQUAL(13U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_nothing_to_do)
{
String text(STR(""));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, Whitespace, token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1024,18 +1033,13 @@ namespace
String text(STR(" ., ;: .,;:"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(" .,;:"), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1046,18 +1050,13 @@ namespace
String text(STR("The cat sat on the mat"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, false))
{
token = etl::get_token(text, STR(".,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(1U, tokens.size());
}
@ -1234,7 +1233,7 @@ namespace
TEST(test_find_first_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("Hel"));
@ -1245,7 +1244,7 @@ namespace
TEST(test_find_first_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("xyz"));
@ -1335,7 +1334,7 @@ namespace
TEST(test_find_first_not_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abc"));
@ -1346,7 +1345,7 @@ namespace
TEST(test_find_first_not_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abcHello World"));
@ -1437,7 +1436,7 @@ namespace
TEST(test_find_last_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("rld"));
@ -1448,7 +1447,7 @@ namespace
TEST(test_find_last_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("xyz"));
@ -1539,7 +1538,7 @@ namespace
TEST(test_find_last_not_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abc"));
@ -1550,7 +1549,7 @@ namespace
TEST(test_find_last_not_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abcHello World"));

View File

@ -50,6 +50,8 @@ namespace
using Char = std::u32string::value_type;
using Vector = std::vector<String>;
constexpr auto Whitespace = etl::whitespace_v<String::value_type>;
//*************************************************************************
TEST(test_trim_whitespace_left_empty)
{
@ -67,8 +69,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -93,8 +95,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -119,8 +121,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -145,8 +147,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -171,8 +173,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -197,8 +199,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -234,8 +236,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -260,8 +262,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -286,8 +288,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("XYZ"));
@ -301,8 +303,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -328,8 +330,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -354,8 +356,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -380,8 +382,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -406,8 +408,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -432,8 +434,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -458,8 +460,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -484,8 +486,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -510,8 +512,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -536,8 +538,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("XYZ"));
@ -562,8 +564,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -588,8 +590,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -614,8 +616,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -640,8 +642,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -666,8 +668,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -692,8 +694,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -718,8 +720,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -744,8 +746,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -770,8 +772,8 @@ namespace
String text(STR("Hello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("XYZ"));
@ -796,8 +798,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, expected.size());
@ -811,8 +813,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, text.size() * 2U);
@ -848,8 +850,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, expected.size());
@ -863,8 +865,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, text.size() * 2U);
@ -975,45 +977,52 @@ namespace
}
//*************************************************************************
TEST(test_get_token_delimiters)
TEST(test_get_token_delimiters_ignore_empty_tokens)
{
String text(STR(" The cat.sat, on;the:mat .,;:"));
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(6U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_keep_empty_tokens)
{
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
while (token = etl::get_token(text, STR(","), token, false))
{
tokens.emplace_back(token.value());
}
CHECK_EQUAL(13U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_nothing_to_do)
{
String text(STR(""));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, Whitespace, token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1024,18 +1033,13 @@ namespace
String text(STR(" ., ;: .,;:"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(" .,;:"), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1046,18 +1050,13 @@ namespace
String text(STR("The cat sat on the mat"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, false))
{
token = etl::get_token(text, STR(".,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(1U, tokens.size());
}
@ -1234,7 +1233,7 @@ namespace
TEST(test_find_first_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("Hel"));
@ -1245,7 +1244,7 @@ namespace
TEST(test_find_first_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("xyz"));
@ -1335,7 +1334,7 @@ namespace
TEST(test_find_first_not_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abc"));
@ -1346,7 +1345,7 @@ namespace
TEST(test_find_first_not_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abcHello World"));
@ -1437,7 +1436,7 @@ namespace
TEST(test_find_last_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("rld"));
@ -1448,7 +1447,7 @@ namespace
TEST(test_find_last_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("xyz"));
@ -1539,7 +1538,7 @@ namespace
TEST(test_find_last_not_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abc"));
@ -1550,7 +1549,7 @@ namespace
TEST(test_find_last_not_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abcHello World"));

View File

@ -50,6 +50,8 @@ namespace
using Char = std::wstring::value_type;
using Vector = std::vector<String>;
constexpr auto Whitespace = etl::whitespace_v<String::value_type>;
//*************************************************************************
TEST(test_trim_whitespace_left_empty)
{
@ -67,8 +69,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -93,8 +95,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -119,8 +121,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -145,8 +147,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -171,8 +173,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -197,8 +199,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -234,8 +236,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -260,8 +262,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -286,8 +288,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("XYZ"));
@ -301,8 +303,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -328,8 +330,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -354,8 +356,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -380,8 +382,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -406,8 +408,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -432,8 +434,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -458,8 +460,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -484,8 +486,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -510,8 +512,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -536,8 +538,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("XYZ"));
@ -562,8 +564,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -588,8 +590,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -614,8 +616,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -640,8 +642,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -666,8 +668,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -692,8 +694,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -718,8 +720,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -744,8 +746,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -770,8 +772,8 @@ namespace
String text(STR("Hello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("XYZ"));
@ -796,8 +798,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, expected.size());
@ -811,8 +813,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, text.size() * 2U);
@ -848,8 +850,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, expected.size());
@ -863,8 +865,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, text.size() * 2U);
@ -975,45 +977,52 @@ namespace
}
//*************************************************************************
TEST(test_get_token_delimiters)
TEST(test_get_token_delimiters_ignore_empty_tokens)
{
String text(STR(" The cat.sat, on;the:mat .,;:"));
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(6U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_keep_empty_tokens)
{
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
while (token = etl::get_token(text, STR(","), token, false))
{
tokens.emplace_back(token.value());
}
CHECK_EQUAL(13U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_nothing_to_do)
{
String text(STR(""));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, Whitespace, token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1024,18 +1033,13 @@ namespace
String text(STR(" ., ;: .,;:"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(" .,;:"), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1046,18 +1050,13 @@ namespace
String text(STR("The cat sat on the mat"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, false))
{
token = etl::get_token(text, STR(".,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(1U, tokens.size());
}
@ -1234,7 +1233,7 @@ namespace
TEST(test_find_first_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("Hel"));
@ -1245,7 +1244,7 @@ namespace
TEST(test_find_first_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("xyz"));
@ -1335,7 +1334,7 @@ namespace
TEST(test_find_first_not_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abc"));
@ -1346,7 +1345,7 @@ namespace
TEST(test_find_first_not_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abcHello World"));
@ -1437,7 +1436,7 @@ namespace
TEST(test_find_last_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("rld"));
@ -1448,7 +1447,7 @@ namespace
TEST(test_find_last_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("xyz"));
@ -1539,7 +1538,7 @@ namespace
TEST(test_find_last_not_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abc"));
@ -1550,7 +1549,7 @@ namespace
TEST(test_find_last_not_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abcHello World"));

View File

@ -46,7 +46,9 @@ namespace
using IString = etl::iu16string;
using StringView = etl::u16string_view;
using Char = etl::iu16string::value_type;
using Vector = etl::vector<String, 10>;
using Vector = etl::vector<String, 15>;
constexpr auto Whitespace = etl::whitespace_v<String::value_type>;
//*************************************************************************
TEST(test_trim_whitespace_left_empty)
@ -65,8 +67,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -91,8 +93,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -117,8 +119,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -143,8 +145,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -169,8 +171,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -195,8 +197,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -232,8 +234,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -258,8 +260,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -284,8 +286,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("XYZ"));
@ -299,8 +301,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -326,8 +328,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -352,8 +354,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -378,8 +380,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -404,8 +406,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -430,8 +432,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -456,8 +458,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -482,8 +484,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -508,8 +510,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -534,8 +536,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("XYZ"));
@ -560,8 +562,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -586,8 +588,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -612,8 +614,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -638,8 +640,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -664,8 +666,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -690,8 +692,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -716,8 +718,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -742,8 +744,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -768,8 +770,8 @@ namespace
String text(STR("Hello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("XYZ"));
@ -794,8 +796,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, expected.size());
@ -809,8 +811,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, text.size() * 2U);
@ -846,8 +848,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, expected.size());
@ -861,8 +863,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, text.size() * 2U);
@ -973,45 +975,52 @@ namespace
}
//*************************************************************************
TEST(test_get_token_delimiters)
TEST(test_get_token_delimiters_ignore_empty_tokens)
{
String text(STR(" The cat.sat, on;the:mat .,;:"));
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(6U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_keep_empty_tokens)
{
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
while (token = etl::get_token(text, STR(","), token, false))
{
tokens.emplace_back(token.value());
}
CHECK_EQUAL(13U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_nothing_to_do)
{
String text(STR(""));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, Whitespace, token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1022,18 +1031,13 @@ namespace
String text(STR(" ., ;: .,;:"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(" .,;:"), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1044,18 +1048,13 @@ namespace
String text(STR("The cat sat on the mat"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, false))
{
token = etl::get_token(text, STR(".,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(1U, tokens.size());
}
@ -1280,7 +1279,7 @@ namespace
TEST(test_find_first_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("Hel"));
@ -1291,7 +1290,7 @@ namespace
TEST(test_find_first_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("xyz"));
@ -1381,7 +1380,7 @@ namespace
TEST(test_find_first_not_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abc"));
@ -1392,7 +1391,7 @@ namespace
TEST(test_find_first_not_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abcHello World"));
@ -1483,7 +1482,7 @@ namespace
TEST(test_find_last_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("rld"));
@ -1494,7 +1493,7 @@ namespace
TEST(test_find_last_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("xyz"));
@ -1585,7 +1584,7 @@ namespace
TEST(test_find_last_not_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abc"));
@ -1596,7 +1595,7 @@ namespace
TEST(test_find_last_not_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abcHello World"));

View File

@ -46,7 +46,9 @@ namespace
using IString = etl::iu32string;
using StringView = etl::u32string_view;
using Char = etl::iu32string::value_type;
using Vector = etl::vector<String, 10>;
using Vector = etl::vector<String, 15>;
constexpr auto Whitespace = etl::whitespace_v<String::value_type>;
//*************************************************************************
TEST(test_trim_whitespace_left_empty)
@ -65,8 +67,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -91,8 +93,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -117,8 +119,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -143,8 +145,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -169,8 +171,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -195,8 +197,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -232,8 +234,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -258,8 +260,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -284,8 +286,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("XYZ"));
@ -299,8 +301,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -326,8 +328,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -352,8 +354,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -378,8 +380,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -404,8 +406,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -430,8 +432,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -456,8 +458,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -482,8 +484,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -508,8 +510,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -534,8 +536,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("XYZ"));
@ -560,8 +562,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -586,8 +588,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -612,8 +614,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -638,8 +640,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -664,8 +666,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -690,8 +692,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -716,8 +718,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -742,8 +744,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -768,8 +770,8 @@ namespace
String text(STR("Hello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("XYZ"));
@ -794,8 +796,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, expected.size());
@ -809,8 +811,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, text.size() * 2U);
@ -846,8 +848,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, expected.size());
@ -861,8 +863,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, text.size() * 2U);
@ -973,45 +975,52 @@ namespace
}
//*************************************************************************
TEST(test_get_token_delimiters)
TEST(test_get_token_delimiters_ignore_empty_tokens)
{
String text(STR(" The cat.sat, on;the:mat .,;:"));
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(6U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_keep_empty_tokens)
{
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
while (token = etl::get_token(text, STR(","), token, false))
{
tokens.emplace_back(token.value());
}
CHECK_EQUAL(13U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_nothing_to_do)
{
String text(STR(""));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, Whitespace, token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1022,18 +1031,13 @@ namespace
String text(STR(" ., ;: .,;:"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(" .,;:"), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1044,18 +1048,13 @@ namespace
String text(STR("The cat sat on the mat"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, false))
{
token = etl::get_token(text, STR(".,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(1U, tokens.size());
}
@ -1280,7 +1279,7 @@ namespace
TEST(test_find_first_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("Hel"));
@ -1291,7 +1290,7 @@ namespace
TEST(test_find_first_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("xyz"));
@ -1381,7 +1380,7 @@ namespace
TEST(test_find_first_not_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abc"));
@ -1392,7 +1391,7 @@ namespace
TEST(test_find_first_not_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abcHello World"));
@ -1483,7 +1482,7 @@ namespace
TEST(test_find_last_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("rld"));
@ -1494,7 +1493,7 @@ namespace
TEST(test_find_last_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("xyz"));
@ -1585,7 +1584,7 @@ namespace
TEST(test_find_last_not_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abc"));
@ -1596,7 +1595,7 @@ namespace
TEST(test_find_last_not_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abcHello World"));

View File

@ -46,7 +46,9 @@ namespace
using IString = etl::iwstring;
using StringView = etl::wstring_view;
using Char = etl::iwstring::value_type;
using Vector = etl::vector<String, 10>;
using Vector = etl::vector<String, 15>;
constexpr auto Whitespace = etl::whitespace_v<String::value_type>;
//*************************************************************************
TEST(test_trim_whitespace_left_empty)
@ -65,8 +67,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -91,8 +93,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -117,8 +119,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_left(textview);
@ -143,8 +145,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -169,8 +171,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -195,8 +197,8 @@ namespace
String text(STR("Hello World\t\n\r\f\v "));
String expected(STR("Hello World\t\n\r\f\v "));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_left(textview, STR(" \t\n\r\f\v"));
@ -232,8 +234,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -258,8 +260,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -284,8 +286,8 @@ namespace
String text(STR("Hello Worldqztfp"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("XYZ"));
@ -299,8 +301,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello Worldqztfp"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_left(textview, STR("Hel"));
@ -326,8 +328,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -352,8 +354,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -378,8 +380,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace_right(textview);
@ -404,8 +406,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -430,8 +432,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -456,8 +458,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World"));
String expected(STR(" \t\n\r\f\vHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view_right(textview, STR(" \t\n\r\f\v"));
@ -482,8 +484,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -508,8 +510,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR("qztfpHello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("rld"));
@ -534,8 +536,8 @@ namespace
String text(STR("qztfpHello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_right(textview, STR("XYZ"));
@ -560,8 +562,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -586,8 +588,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -612,8 +614,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view_whitespace(textview);
@ -638,8 +640,8 @@ namespace
String text(STR(""));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -664,8 +666,8 @@ namespace
String text(STR(" \t\n\r\f\vHello World\t\n\r\f\v "));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -690,8 +692,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_from_view(textview, STR(" \t\n\r\f\v"));
@ -716,8 +718,8 @@ namespace
String text(STR("qztfpHello Worldqztfp"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -742,8 +744,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("Hd"));
@ -768,8 +770,8 @@ namespace
String text(STR("Hello World"));
String expected(STR(""));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::trim_view(textview, STR("XYZ"));
@ -794,8 +796,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, expected.size());
@ -809,8 +811,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::right_n_view(textview, text.size() * 2U);
@ -846,8 +848,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, expected.size());
@ -861,8 +863,8 @@ namespace
String text(STR("Hello World"));
String expected(STR("Hello World"));
StringView textview(text);
StringView expectedview(expected);
StringView textview(text.data(), text.size());
StringView expectedview(expected.data(), expected.size());
StringView view = etl::left_n_view(textview, text.size() * 2U);
@ -973,45 +975,52 @@ namespace
}
//*************************************************************************
TEST(test_get_token_delimiters)
TEST(test_get_token_delimiters_ignore_empty_tokens)
{
String text(STR(" The cat.sat, on;the:mat .,;:"));
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(6U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_keep_empty_tokens)
{
String text(STR(",,,The,cat,sat,,on,the,mat,,,"));
Vector tokens;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
while (token = etl::get_token(text, STR(","), token, false))
{
tokens.emplace_back(token.value());
}
CHECK_EQUAL(13U, tokens.size());
}
//*************************************************************************
TEST(test_get_token_delimiters_nothing_to_do)
{
String text(STR(""));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, Whitespace, token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1022,18 +1031,13 @@ namespace
String text(STR(" ., ;: .,;:"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(" .,;:"), token, true))
{
token = etl::get_token(text, STR(" .,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(0U, tokens.size());
}
@ -1044,18 +1048,13 @@ namespace
String text(STR("The cat sat on the mat"));
Vector tokens;
StringView textview(text);
StringView token;
StringView textview(text.data(), text.size());
etl::optional<StringView> token;
do
while (token = etl::get_token(text, STR(","), token, false))
{
token = etl::get_token(text, STR(".,;:"), token);
if (!token.empty())
{
tokens.emplace_back(token.begin(), token.end());
}
} while (!token.empty());
tokens.emplace_back(token.value());
}
CHECK_EQUAL(1U, tokens.size());
}
@ -1280,7 +1279,7 @@ namespace
TEST(test_find_first_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("Hel"));
@ -1291,7 +1290,7 @@ namespace
TEST(test_find_first_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_of(textview, STR("xyz"));
@ -1381,7 +1380,7 @@ namespace
TEST(test_find_first_not_of_string_view)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abc"));
@ -1392,7 +1391,7 @@ namespace
TEST(test_find_first_not_of_string_view_not_found)
{
const String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_first_not_of(textview, STR("abcHello World"));
@ -1483,7 +1482,7 @@ namespace
TEST(test_find_last_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("rld"));
@ -1494,7 +1493,7 @@ namespace
TEST(test_find_last_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_of(textview, STR("xyz"));
@ -1585,7 +1584,7 @@ namespace
TEST(test_find_last_not_of_string_view)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abc"));
@ -1596,7 +1595,7 @@ namespace
TEST(test_find_last_not_of_string_view_not_found)
{
String text(STR("abcHello Worldabc"));
StringView textview(text);
StringView textview(text.data(), text.size());
StringView::const_iterator itr = etl::find_last_not_of(textview, STR("abcHello World"));