2016-06-14 16:45:27 +02:00
|
|
|
#define BOOST_TEST_MODULE StringTests
|
|
|
|
|
|
|
|
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
|
|
2020-04-03 17:16:02 +02:00
|
|
|
#include <opm/common/utility/String.hpp>
|
2016-06-14 16:45:27 +02:00
|
|
|
|
|
|
|
|
using namespace Opm;
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE( uppercase_copy ) {
|
|
|
|
|
const std::string src = "string";
|
|
|
|
|
const std::string dst = uppercase( src );
|
|
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL( src, "string" );
|
|
|
|
|
BOOST_CHECK_EQUAL( dst, "STRING" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE( uppercase_inplace ) {
|
|
|
|
|
std::string src = "string";
|
|
|
|
|
auto& ref = uppercase( src, src );
|
|
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL( src, "STRING" );
|
|
|
|
|
BOOST_CHECK_EQUAL( src, ref );
|
|
|
|
|
BOOST_CHECK_EQUAL( std::addressof( src ), std::addressof( ref ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE( nonconst_ref ) {
|
|
|
|
|
std::string src = "string";
|
|
|
|
|
auto dst = uppercase( src );
|
|
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL( src, "string" );
|
|
|
|
|
BOOST_CHECK_EQUAL( dst, "STRING" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE( uppercase_move ) {
|
|
|
|
|
std::string src = "string";
|
|
|
|
|
auto dst = uppercase( std::move( src ) );
|
|
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL( dst, "STRING" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE( uppercase_mixed_type ) {
|
|
|
|
|
std::string src = "string";
|
2020-07-14 12:33:29 +02:00
|
|
|
std::string_view view( src );
|
2016-06-14 16:45:27 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string dst = "string";
|
|
|
|
|
uppercase( view, dst );
|
|
|
|
|
BOOST_CHECK_EQUAL( dst, "STRING" );
|
2020-07-14 12:33:29 +02:00
|
|
|
BOOST_CHECK( view == "string" );
|
2016-06-14 16:45:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE( write_parts_of_dst ) {
|
|
|
|
|
std::string src = "string";
|
2020-07-14 12:33:29 +02:00
|
|
|
std::string_view view( src );
|
2016-06-14 16:45:27 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string dst = "stringmixed";
|
|
|
|
|
uppercase( view, dst );
|
|
|
|
|
BOOST_CHECK_EQUAL( dst, "STRINGmixed" );
|
2020-07-14 12:33:29 +02:00
|
|
|
BOOST_CHECK( view == "string" );
|
2019-08-10 18:05:22 +02:00
|
|
|
}
|
2020-02-13 09:18:39 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(trim) {
|
|
|
|
|
std::string s1 = "ABC";
|
|
|
|
|
std::string s2 = " ABC";
|
|
|
|
|
std::string s3 = "ABC ";
|
|
|
|
|
std::string s4 = " ABC ";
|
|
|
|
|
std::string s5 = "";
|
|
|
|
|
std::string s6 = " ";
|
|
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(trim_copy(s1) , s1);
|
|
|
|
|
BOOST_CHECK_EQUAL(trim_copy(s2) , s1);
|
|
|
|
|
BOOST_CHECK_EQUAL(trim_copy(s3) , s1);
|
|
|
|
|
BOOST_CHECK_EQUAL(trim_copy(s4) , s1);
|
|
|
|
|
BOOST_CHECK_EQUAL(trim_copy(s5) , s5);
|
|
|
|
|
BOOST_CHECK_EQUAL(trim_copy(s6) , s5);
|
|
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(ltrim_copy(s1) , s1);
|
|
|
|
|
BOOST_CHECK_EQUAL(ltrim_copy(s2) , s1);
|
|
|
|
|
BOOST_CHECK_EQUAL(ltrim_copy(s3) , s3);
|
|
|
|
|
BOOST_CHECK_EQUAL(ltrim_copy(s4) , s3);
|
|
|
|
|
BOOST_CHECK_EQUAL(ltrim_copy(s5) , s5);
|
|
|
|
|
BOOST_CHECK_EQUAL(ltrim_copy(s6) , s5);
|
|
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(rtrim_copy(s1) , s1);
|
|
|
|
|
BOOST_CHECK_EQUAL(rtrim_copy(s2) , s2);
|
|
|
|
|
BOOST_CHECK_EQUAL(rtrim_copy(s3) , s1);
|
|
|
|
|
BOOST_CHECK_EQUAL(rtrim_copy(s4) , s2);
|
|
|
|
|
BOOST_CHECK_EQUAL(rtrim_copy(s5) , s5);
|
|
|
|
|
BOOST_CHECK_EQUAL(rtrim_copy(s6) , s5);
|
|
|
|
|
}
|
2020-02-18 14:31:55 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(replace_all) {
|
|
|
|
|
std::string s1 = "lorem ipsum";
|
|
|
|
|
|
|
|
|
|
replaceAll<std::string>(s1, "m", "foo");
|
|
|
|
|
BOOST_CHECK_EQUAL(s1, "lorefoo ipsufoo");
|
|
|
|
|
}
|
2020-02-18 14:35:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(split) {
|
|
|
|
|
std::string s1 = "lorem ipsum";
|
|
|
|
|
|
|
|
|
|
auto split1 = split_string(s1, ' ');
|
2020-09-29 13:54:21 +02:00
|
|
|
BOOST_CHECK_EQUAL(split1.size(), 2U);
|
2020-02-18 14:35:24 +01:00
|
|
|
BOOST_CHECK_EQUAL(split1[0], "lorem");
|
|
|
|
|
BOOST_CHECK_EQUAL(split1[1], "ipsum");
|
|
|
|
|
|
|
|
|
|
auto split2 = split_string(s1, "r ");
|
2020-09-29 13:54:21 +02:00
|
|
|
BOOST_CHECK_EQUAL(split2.size(), 3U);
|
2020-02-18 14:35:24 +01:00
|
|
|
BOOST_CHECK_EQUAL(split2[0], "lo");
|
|
|
|
|
BOOST_CHECK_EQUAL(split2[1], "em");
|
|
|
|
|
BOOST_CHECK_EQUAL(split2[2], "ipsum");
|
|
|
|
|
|
|
|
|
|
auto split3 = split_string(s1, "m ");
|
2020-09-29 13:54:21 +02:00
|
|
|
BOOST_CHECK_EQUAL(split3.size(), 2U);
|
2020-02-18 14:35:24 +01:00
|
|
|
BOOST_CHECK_EQUAL(split3[0], "lore");
|
|
|
|
|
BOOST_CHECK_EQUAL(split3[1], "ipsu");
|
|
|
|
|
}
|