summaryrefslogtreecommitdiff
path: root/src/mongo/base/string_data_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/base/string_data_test.cpp')
-rw-r--r--src/mongo/base/string_data_test.cpp528
1 files changed, 259 insertions, 269 deletions
diff --git a/src/mongo/base/string_data_test.cpp b/src/mongo/base/string_data_test.cpp
index dca13e44dba..5dc19df3dd8 100644
--- a/src/mongo/base/string_data_test.cpp
+++ b/src/mongo/base/string_data_test.cpp
@@ -35,286 +35,276 @@
namespace {
- using mongo::StringData;
- using std::string;
-
- TEST(Construction, Empty) {
- StringData strData;
- ASSERT_EQUALS(strData.size(), 0U);
- ASSERT_TRUE(strData.rawData() == NULL);
- }
-
- TEST(Construction, FromStdString) {
- std::string base("aaa");
- StringData strData(base);
- ASSERT_EQUALS(strData.size(), base.size());
- ASSERT_EQUALS(strData.toString(), base);
- }
-
- TEST(Construction, FromCString) {
- std::string base("aaa");
- StringData strData(base.c_str());
- ASSERT_EQUALS(strData.size(), base.size());
- ASSERT_EQUALS(strData.toString(), base);
- }
-
- TEST(Construction, FromNullCString) {
- char* c = NULL;
- StringData strData(c);
- ASSERT_EQUALS(strData.size(), 0U);
- ASSERT_TRUE(strData.rawData() == NULL);
- }
-
- TEST(Construction, FromLiteral) {
- StringData strData("ccc", StringData::LiteralTag());
- ASSERT_EQUALS(strData.size(), 3U);
- ASSERT_EQUALS(strData.toString(), string("ccc"));
- }
-
- TEST(Comparison, BothEmpty) {
- StringData empty("");
- ASSERT_TRUE(empty == empty);
- ASSERT_FALSE(empty != empty);
- ASSERT_FALSE(empty > empty);
- ASSERT_TRUE(empty >= empty);
- ASSERT_FALSE(empty < empty);
- ASSERT_TRUE(empty <= empty);
- }
-
- TEST(Comparison, BothNonEmptyOnSize) {
- StringData a("a");
- StringData aa("aa");
- ASSERT_FALSE(a == aa);
- ASSERT_TRUE(a != aa);
- ASSERT_FALSE(a > aa);
- ASSERT_FALSE(a >= aa);
- ASSERT_TRUE(a >= a);
- ASSERT_TRUE(a < aa);
- ASSERT_TRUE(a <= aa);
- ASSERT_TRUE(a <= a);
- }
-
- TEST(Comparison, BothNonEmptyOnContent) {
- StringData a("a");
- StringData b("b");
- ASSERT_FALSE(a == b);
- ASSERT_TRUE(a != b);
- ASSERT_FALSE(a > b);
- ASSERT_FALSE(a >= b);
- ASSERT_TRUE(a < b);
- ASSERT_TRUE(a <= b);
- }
-
- TEST(Comparison, MixedEmptyAndNot) {
- StringData empty("");
- StringData a("a");
- ASSERT_FALSE(a == empty);
- ASSERT_TRUE(a != empty);
- ASSERT_TRUE(a > empty);
- ASSERT_TRUE(a >= empty);
- ASSERT_FALSE(a < empty);
- ASSERT_FALSE(a <= empty);
- }
-
- TEST(Find, Char1) {
- ASSERT_EQUALS( string::npos, StringData( "foo" ).find( 'a' ) );
- ASSERT_EQUALS( 0U, StringData( "foo" ).find( 'f' ) );
- ASSERT_EQUALS( 1U, StringData( "foo" ).find( 'o' ) );
- }
-
- TEST(Find, Str1 ) {
- ASSERT_EQUALS( string::npos, StringData( "foo" ).find( "asdsadasda" ) );
- ASSERT_EQUALS( string::npos, StringData( "foo" ).find( "a" ) );
- ASSERT_EQUALS( string::npos, StringData( "foo" ).find( "food" ) );
- ASSERT_EQUALS( string::npos, StringData( "foo" ).find( "ooo" ) );
-
- ASSERT_EQUALS( 0U, StringData( "foo" ).find( "f" ) );
- ASSERT_EQUALS( 0U, StringData( "foo" ).find( "fo" ) );
- ASSERT_EQUALS( 0U, StringData( "foo" ).find( "foo" ) );
- ASSERT_EQUALS( 1U, StringData( "foo" ).find( "o" ) );
- ASSERT_EQUALS( 1U, StringData( "foo" ).find( "oo" ) );
-
- ASSERT_EQUALS( string("foo").find( "" ), StringData("foo").find( "" ) );
- }
-
- // Helper function for Test(Hasher, Str1)
- template <int SizeofSizeT>
- void SDHasher_check(void);
-
- template <>
- void SDHasher_check<4>(void) {
- ASSERT_EQUALS(StringData::Hasher()(""),
- static_cast<size_t>(0));
- ASSERT_EQUALS(StringData::Hasher()("foo"),
- static_cast<size_t>(4138058784ULL));
- ASSERT_EQUALS(StringData::Hasher()("pizza"),
- static_cast<size_t>(3587803311ULL));
- ASSERT_EQUALS(StringData::Hasher()("mongo"),
- static_cast<size_t>(3724335885ULL));
- ASSERT_EQUALS(StringData::Hasher()("murmur"),
- static_cast<size_t>(1945310157ULL));
- }
-
- template <>
- void SDHasher_check<8>(void) {
- ASSERT_EQUALS(StringData::Hasher()(""),
- static_cast<size_t>(0));
- ASSERT_EQUALS(StringData::Hasher()("foo"),
- static_cast<size_t>(16316970633193145697ULL));
- ASSERT_EQUALS(StringData::Hasher()("pizza"),
- static_cast<size_t>(12165495155477134356ULL));
- ASSERT_EQUALS(StringData::Hasher()("mongo"),
- static_cast<size_t>(2861051452199491487ULL));
- ASSERT_EQUALS(StringData::Hasher()("murmur"),
- static_cast<size_t>(18237957392784716687ULL));
- }
-
- TEST(Hasher, Str1) {
- SDHasher_check<sizeof(size_t)>();
- }
-
- TEST(Rfind, Char1) {
- ASSERT_EQUALS( string::npos, StringData( "foo" ).rfind( 'a' ) );
-
- ASSERT_EQUALS( 0U, StringData( "foo" ).rfind( 'f' ) );
- ASSERT_EQUALS( 0U, StringData( "foo" ).rfind( 'f', 3 ) );
- ASSERT_EQUALS( 0U, StringData( "foo" ).rfind( 'f', 2 ) );
- ASSERT_EQUALS( 0U, StringData( "foo" ).rfind( 'f', 1 ) );
- ASSERT_EQUALS( string::npos, StringData( "foo", 0 ).rfind( 'f' ) );
-
- ASSERT_EQUALS( 2U, StringData( "foo" ).rfind( 'o' ) );
- ASSERT_EQUALS( 2U, StringData( "foo", 3 ).rfind( 'o' ) );
- ASSERT_EQUALS( 1U, StringData( "foo", 2 ).rfind( 'o' ) );
- ASSERT_EQUALS( string::npos, StringData( "foo", 1 ).rfind( 'o' ) );
- ASSERT_EQUALS( string::npos, StringData( "foo", 0 ).rfind( 'o' ) );
- }
-
- // this is to verify we match std::string
- void SUBSTR_TEST_HELP(StringData big, StringData small, size_t start, size_t len) {
- ASSERT_EQUALS(small.toString(), big.toString().substr(start, len));
- ASSERT_EQUALS(small, StringData(big).substr(start, len));
- }
- void SUBSTR_TEST_HELP(StringData big, StringData small, size_t start) {
- ASSERT_EQUALS(small.toString(), big.toString().substr(start));
- ASSERT_EQUALS(small, StringData(big).substr(start));
- }
+using mongo::StringData;
+using std::string;
+
+TEST(Construction, Empty) {
+ StringData strData;
+ ASSERT_EQUALS(strData.size(), 0U);
+ ASSERT_TRUE(strData.rawData() == NULL);
+}
+
+TEST(Construction, FromStdString) {
+ std::string base("aaa");
+ StringData strData(base);
+ ASSERT_EQUALS(strData.size(), base.size());
+ ASSERT_EQUALS(strData.toString(), base);
+}
+
+TEST(Construction, FromCString) {
+ std::string base("aaa");
+ StringData strData(base.c_str());
+ ASSERT_EQUALS(strData.size(), base.size());
+ ASSERT_EQUALS(strData.toString(), base);
+}
+
+TEST(Construction, FromNullCString) {
+ char* c = NULL;
+ StringData strData(c);
+ ASSERT_EQUALS(strData.size(), 0U);
+ ASSERT_TRUE(strData.rawData() == NULL);
+}
+
+TEST(Construction, FromLiteral) {
+ StringData strData("ccc", StringData::LiteralTag());
+ ASSERT_EQUALS(strData.size(), 3U);
+ ASSERT_EQUALS(strData.toString(), string("ccc"));
+}
+
+TEST(Comparison, BothEmpty) {
+ StringData empty("");
+ ASSERT_TRUE(empty == empty);
+ ASSERT_FALSE(empty != empty);
+ ASSERT_FALSE(empty > empty);
+ ASSERT_TRUE(empty >= empty);
+ ASSERT_FALSE(empty < empty);
+ ASSERT_TRUE(empty <= empty);
+}
+
+TEST(Comparison, BothNonEmptyOnSize) {
+ StringData a("a");
+ StringData aa("aa");
+ ASSERT_FALSE(a == aa);
+ ASSERT_TRUE(a != aa);
+ ASSERT_FALSE(a > aa);
+ ASSERT_FALSE(a >= aa);
+ ASSERT_TRUE(a >= a);
+ ASSERT_TRUE(a < aa);
+ ASSERT_TRUE(a <= aa);
+ ASSERT_TRUE(a <= a);
+}
+
+TEST(Comparison, BothNonEmptyOnContent) {
+ StringData a("a");
+ StringData b("b");
+ ASSERT_FALSE(a == b);
+ ASSERT_TRUE(a != b);
+ ASSERT_FALSE(a > b);
+ ASSERT_FALSE(a >= b);
+ ASSERT_TRUE(a < b);
+ ASSERT_TRUE(a <= b);
+}
+
+TEST(Comparison, MixedEmptyAndNot) {
+ StringData empty("");
+ StringData a("a");
+ ASSERT_FALSE(a == empty);
+ ASSERT_TRUE(a != empty);
+ ASSERT_TRUE(a > empty);
+ ASSERT_TRUE(a >= empty);
+ ASSERT_FALSE(a < empty);
+ ASSERT_FALSE(a <= empty);
+}
+
+TEST(Find, Char1) {
+ ASSERT_EQUALS(string::npos, StringData("foo").find('a'));
+ ASSERT_EQUALS(0U, StringData("foo").find('f'));
+ ASSERT_EQUALS(1U, StringData("foo").find('o'));
+}
+
+TEST(Find, Str1) {
+ ASSERT_EQUALS(string::npos, StringData("foo").find("asdsadasda"));
+ ASSERT_EQUALS(string::npos, StringData("foo").find("a"));
+ ASSERT_EQUALS(string::npos, StringData("foo").find("food"));
+ ASSERT_EQUALS(string::npos, StringData("foo").find("ooo"));
+
+ ASSERT_EQUALS(0U, StringData("foo").find("f"));
+ ASSERT_EQUALS(0U, StringData("foo").find("fo"));
+ ASSERT_EQUALS(0U, StringData("foo").find("foo"));
+ ASSERT_EQUALS(1U, StringData("foo").find("o"));
+ ASSERT_EQUALS(1U, StringData("foo").find("oo"));
+
+ ASSERT_EQUALS(string("foo").find(""), StringData("foo").find(""));
+}
+
+// Helper function for Test(Hasher, Str1)
+template <int SizeofSizeT>
+void SDHasher_check(void);
+
+template <>
+void SDHasher_check<4>(void) {
+ ASSERT_EQUALS(StringData::Hasher()(""), static_cast<size_t>(0));
+ ASSERT_EQUALS(StringData::Hasher()("foo"), static_cast<size_t>(4138058784ULL));
+ ASSERT_EQUALS(StringData::Hasher()("pizza"), static_cast<size_t>(3587803311ULL));
+ ASSERT_EQUALS(StringData::Hasher()("mongo"), static_cast<size_t>(3724335885ULL));
+ ASSERT_EQUALS(StringData::Hasher()("murmur"), static_cast<size_t>(1945310157ULL));
+}
+
+template <>
+void SDHasher_check<8>(void) {
+ ASSERT_EQUALS(StringData::Hasher()(""), static_cast<size_t>(0));
+ ASSERT_EQUALS(StringData::Hasher()("foo"), static_cast<size_t>(16316970633193145697ULL));
+ ASSERT_EQUALS(StringData::Hasher()("pizza"), static_cast<size_t>(12165495155477134356ULL));
+ ASSERT_EQUALS(StringData::Hasher()("mongo"), static_cast<size_t>(2861051452199491487ULL));
+ ASSERT_EQUALS(StringData::Hasher()("murmur"), static_cast<size_t>(18237957392784716687ULL));
+}
+
+TEST(Hasher, Str1) {
+ SDHasher_check<sizeof(size_t)>();
+}
+
+TEST(Rfind, Char1) {
+ ASSERT_EQUALS(string::npos, StringData("foo").rfind('a'));
+
+ ASSERT_EQUALS(0U, StringData("foo").rfind('f'));
+ ASSERT_EQUALS(0U, StringData("foo").rfind('f', 3));
+ ASSERT_EQUALS(0U, StringData("foo").rfind('f', 2));
+ ASSERT_EQUALS(0U, StringData("foo").rfind('f', 1));
+ ASSERT_EQUALS(string::npos, StringData("foo", 0).rfind('f'));
+
+ ASSERT_EQUALS(2U, StringData("foo").rfind('o'));
+ ASSERT_EQUALS(2U, StringData("foo", 3).rfind('o'));
+ ASSERT_EQUALS(1U, StringData("foo", 2).rfind('o'));
+ ASSERT_EQUALS(string::npos, StringData("foo", 1).rfind('o'));
+ ASSERT_EQUALS(string::npos, StringData("foo", 0).rfind('o'));
+}
+
+// this is to verify we match std::string
+void SUBSTR_TEST_HELP(StringData big, StringData small, size_t start, size_t len) {
+ ASSERT_EQUALS(small.toString(), big.toString().substr(start, len));
+ ASSERT_EQUALS(small, StringData(big).substr(start, len));
+}
+void SUBSTR_TEST_HELP(StringData big, StringData small, size_t start) {
+ ASSERT_EQUALS(small.toString(), big.toString().substr(start));
+ ASSERT_EQUALS(small, StringData(big).substr(start));
+}
// [12] is number of args to substr
-#define SUBSTR_1_TEST_HELP(big,small,start) \
- ASSERT_EQUALS( StringData(small).toString(), StringData(big).toString().substr(start) ); \
- ASSERT_EQUALS( StringData(small), StringData(big).substr(start) );
-
-#define SUBSTR_2_TEST_HELP(big,small,start,len) \
- ASSERT_EQUALS( StringData(small).toString(), StringData(big).toString().substr(start, len) ); \
- ASSERT_EQUALS( StringData(small), StringData(big).substr(start, len) );
-
- TEST(Substr, Simple1 ) {
- SUBSTR_1_TEST_HELP( "abcde", "abcde", 0 );
- SUBSTR_2_TEST_HELP( "abcde", "abcde", 0, 10 );
- SUBSTR_2_TEST_HELP( "abcde", "abcde", 0, 5 );
- SUBSTR_2_TEST_HELP( "abcde", "abc", 0, 3 );
- SUBSTR_1_TEST_HELP( "abcde", "cde", 2 );
- SUBSTR_2_TEST_HELP( "abcde", "cde", 2, 5 );
- SUBSTR_2_TEST_HELP( "abcde", "cde", 2, 3 );
- SUBSTR_2_TEST_HELP( "abcde", "cd", 2, 2 );
- SUBSTR_2_TEST_HELP( "abcde", "cd", 2, 2 );
- SUBSTR_1_TEST_HELP( "abcde", "", 5 );
- SUBSTR_2_TEST_HELP( "abcde", "", 5, 0 );
- SUBSTR_2_TEST_HELP( "abcde", "", 5, 10 );
-
- // make sure we don't blow past the end of the StringData
- SUBSTR_1_TEST_HELP( StringData("abcdeXXX", 5), "abcde", 0);
- SUBSTR_2_TEST_HELP( StringData("abcdeXXX", 5), "abcde", 0, 10);
- SUBSTR_1_TEST_HELP( StringData("abcdeXXX", 5), "de", 3);
- SUBSTR_2_TEST_HELP( StringData("abcdeXXX", 5), "de", 3, 7);
- SUBSTR_1_TEST_HELP( StringData("abcdeXXX", 5), "", 5);
- SUBSTR_2_TEST_HELP( StringData("abcdeXXX", 5), "", 5, 1);
- }
-
- TEST( equalCaseInsensitiveTest, Simple1 ) {
- ASSERT( StringData( "abc" ).equalCaseInsensitive( "abc" ) );
- ASSERT( StringData( "abc" ).equalCaseInsensitive( "ABC" ) );
- ASSERT( StringData( "ABC" ).equalCaseInsensitive( "abc" ) );
- ASSERT( StringData( "ABC" ).equalCaseInsensitive( "ABC" ) );
- ASSERT( StringData( "ABC" ).equalCaseInsensitive( "AbC" ) );
- ASSERT( !StringData( "ABC" ).equalCaseInsensitive( "AbCd" ) );
- ASSERT( !StringData( "ABC" ).equalCaseInsensitive( "AdC" ) );
- }
-
- TEST(StartsWith, Simple) {
- ASSERT(StringData("").startsWith(""));
- ASSERT(!StringData("").startsWith("x"));
- ASSERT(StringData("abcde").startsWith(""));
- ASSERT(StringData("abcde").startsWith("a"));
- ASSERT(StringData("abcde").startsWith("ab"));
- ASSERT(StringData("abcde").startsWith("abc"));
- ASSERT(StringData("abcde").startsWith("abcd"));
- ASSERT(StringData("abcde").startsWith("abcde"));
- ASSERT(!StringData("abcde").startsWith("abcdef"));
- ASSERT(!StringData("abcde").startsWith("abdce"));
- ASSERT(StringData("abcde").startsWith(StringData("abcdeXXXX").substr(0, 4)));
- ASSERT(!StringData("abcde").startsWith(StringData("abdef").substr(0, 4)));
- ASSERT(!StringData("abcde").substr(0, 3).startsWith("abcd"));
- }
-
- TEST(EndsWith, Simple) {
- //ASSERT(StringData("").endsWith(""));
- ASSERT(!StringData("").endsWith("x"));
- //ASSERT(StringData("abcde").endsWith(""));
- ASSERT(StringData("abcde").endsWith(StringData("e", 0)));
- ASSERT(StringData("abcde").endsWith("e"));
- ASSERT(StringData("abcde").endsWith("de"));
- ASSERT(StringData("abcde").endsWith("cde"));
- ASSERT(StringData("abcde").endsWith("bcde"));
- ASSERT(StringData("abcde").endsWith("abcde"));
- ASSERT(!StringData("abcde").endsWith("0abcde"));
- ASSERT(!StringData("abcde").endsWith("abdce"));
- ASSERT(StringData("abcde").endsWith(StringData("bcdef").substr(0, 4)));
- ASSERT(!StringData("abcde").endsWith(StringData("bcde", 3)));
- ASSERT(!StringData("abcde").substr(0, 3).endsWith("cde"));
- }
-
- TEST(ConstIterator, StdCopy) {
- std::vector<char> chars;
- const char rawData[] = "This is some raw data.";
- StringData data(rawData, StringData::LiteralTag());
-
- chars.resize(data.size());
- std::copy(data.begin(), data.end(), chars.begin());
-
- for (size_t i = 0; i < data.size(); ++i) {
- ASSERT_EQUALS(data[i], chars[i]);
- }
+#define SUBSTR_1_TEST_HELP(big, small, start) \
+ ASSERT_EQUALS(StringData(small).toString(), StringData(big).toString().substr(start)); \
+ ASSERT_EQUALS(StringData(small), StringData(big).substr(start));
+
+#define SUBSTR_2_TEST_HELP(big, small, start, len) \
+ ASSERT_EQUALS(StringData(small).toString(), StringData(big).toString().substr(start, len)); \
+ ASSERT_EQUALS(StringData(small), StringData(big).substr(start, len));
+
+TEST(Substr, Simple1) {
+ SUBSTR_1_TEST_HELP("abcde", "abcde", 0);
+ SUBSTR_2_TEST_HELP("abcde", "abcde", 0, 10);
+ SUBSTR_2_TEST_HELP("abcde", "abcde", 0, 5);
+ SUBSTR_2_TEST_HELP("abcde", "abc", 0, 3);
+ SUBSTR_1_TEST_HELP("abcde", "cde", 2);
+ SUBSTR_2_TEST_HELP("abcde", "cde", 2, 5);
+ SUBSTR_2_TEST_HELP("abcde", "cde", 2, 3);
+ SUBSTR_2_TEST_HELP("abcde", "cd", 2, 2);
+ SUBSTR_2_TEST_HELP("abcde", "cd", 2, 2);
+ SUBSTR_1_TEST_HELP("abcde", "", 5);
+ SUBSTR_2_TEST_HELP("abcde", "", 5, 0);
+ SUBSTR_2_TEST_HELP("abcde", "", 5, 10);
+
+ // make sure we don't blow past the end of the StringData
+ SUBSTR_1_TEST_HELP(StringData("abcdeXXX", 5), "abcde", 0);
+ SUBSTR_2_TEST_HELP(StringData("abcdeXXX", 5), "abcde", 0, 10);
+ SUBSTR_1_TEST_HELP(StringData("abcdeXXX", 5), "de", 3);
+ SUBSTR_2_TEST_HELP(StringData("abcdeXXX", 5), "de", 3, 7);
+ SUBSTR_1_TEST_HELP(StringData("abcdeXXX", 5), "", 5);
+ SUBSTR_2_TEST_HELP(StringData("abcdeXXX", 5), "", 5, 1);
+}
+
+TEST(equalCaseInsensitiveTest, Simple1) {
+ ASSERT(StringData("abc").equalCaseInsensitive("abc"));
+ ASSERT(StringData("abc").equalCaseInsensitive("ABC"));
+ ASSERT(StringData("ABC").equalCaseInsensitive("abc"));
+ ASSERT(StringData("ABC").equalCaseInsensitive("ABC"));
+ ASSERT(StringData("ABC").equalCaseInsensitive("AbC"));
+ ASSERT(!StringData("ABC").equalCaseInsensitive("AbCd"));
+ ASSERT(!StringData("ABC").equalCaseInsensitive("AdC"));
+}
+
+TEST(StartsWith, Simple) {
+ ASSERT(StringData("").startsWith(""));
+ ASSERT(!StringData("").startsWith("x"));
+ ASSERT(StringData("abcde").startsWith(""));
+ ASSERT(StringData("abcde").startsWith("a"));
+ ASSERT(StringData("abcde").startsWith("ab"));
+ ASSERT(StringData("abcde").startsWith("abc"));
+ ASSERT(StringData("abcde").startsWith("abcd"));
+ ASSERT(StringData("abcde").startsWith("abcde"));
+ ASSERT(!StringData("abcde").startsWith("abcdef"));
+ ASSERT(!StringData("abcde").startsWith("abdce"));
+ ASSERT(StringData("abcde").startsWith(StringData("abcdeXXXX").substr(0, 4)));
+ ASSERT(!StringData("abcde").startsWith(StringData("abdef").substr(0, 4)));
+ ASSERT(!StringData("abcde").substr(0, 3).startsWith("abcd"));
+}
+
+TEST(EndsWith, Simple) {
+ // ASSERT(StringData("").endsWith(""));
+ ASSERT(!StringData("").endsWith("x"));
+ // ASSERT(StringData("abcde").endsWith(""));
+ ASSERT(StringData("abcde").endsWith(StringData("e", 0)));
+ ASSERT(StringData("abcde").endsWith("e"));
+ ASSERT(StringData("abcde").endsWith("de"));
+ ASSERT(StringData("abcde").endsWith("cde"));
+ ASSERT(StringData("abcde").endsWith("bcde"));
+ ASSERT(StringData("abcde").endsWith("abcde"));
+ ASSERT(!StringData("abcde").endsWith("0abcde"));
+ ASSERT(!StringData("abcde").endsWith("abdce"));
+ ASSERT(StringData("abcde").endsWith(StringData("bcdef").substr(0, 4)));
+ ASSERT(!StringData("abcde").endsWith(StringData("bcde", 3)));
+ ASSERT(!StringData("abcde").substr(0, 3).endsWith("cde"));
+}
+
+TEST(ConstIterator, StdCopy) {
+ std::vector<char> chars;
+ const char rawData[] = "This is some raw data.";
+ StringData data(rawData, StringData::LiteralTag());
+
+ chars.resize(data.size());
+ std::copy(data.begin(), data.end(), chars.begin());
+
+ for (size_t i = 0; i < data.size(); ++i) {
+ ASSERT_EQUALS(data[i], chars[i]);
}
+}
- TEST(ConstIterator, StdReverseCopy) {
- std::vector<char> chars;
- const char rawData[] = "This is some raw data.";
- StringData data(rawData, StringData::LiteralTag());
+TEST(ConstIterator, StdReverseCopy) {
+ std::vector<char> chars;
+ const char rawData[] = "This is some raw data.";
+ StringData data(rawData, StringData::LiteralTag());
- chars.resize(data.size());
- std::reverse_copy(data.begin(), data.end(), chars.begin());
+ chars.resize(data.size());
+ std::reverse_copy(data.begin(), data.end(), chars.begin());
- const char rawDataExpected[] = ".atad war emos si sihT";
+ const char rawDataExpected[] = ".atad war emos si sihT";
- for (size_t i = 0; i < data.size(); ++i) {
- ASSERT_EQUALS(rawDataExpected[i], chars[i]);
- }
+ for (size_t i = 0; i < data.size(); ++i) {
+ ASSERT_EQUALS(rawDataExpected[i], chars[i]);
}
+}
- TEST(ConstIterator, StdReplaceCopy) {
- std::vector<char> chars;
- const char rawData[] = "This is some raw data.";
- StringData data(rawData, StringData::LiteralTag());
+TEST(ConstIterator, StdReplaceCopy) {
+ std::vector<char> chars;
+ const char rawData[] = "This is some raw data.";
+ StringData data(rawData, StringData::LiteralTag());
- chars.resize(data.size());
- std::replace_copy(data.begin(), data.end(), chars.begin(), ' ', '_');
+ chars.resize(data.size());
+ std::replace_copy(data.begin(), data.end(), chars.begin(), ' ', '_');
- const char rawDataExpected[] = "This_is_some_raw_data.";
+ const char rawDataExpected[] = "This_is_some_raw_data.";
- for (size_t i = 0; i < data.size(); ++i) {
- ASSERT_EQUALS(rawDataExpected[i], chars[i]);
- }
+ for (size_t i = 0; i < data.size(); ++i) {
+ ASSERT_EQUALS(rawDataExpected[i], chars[i]);
}
+}
-} // unnamed namespace
+} // unnamed namespace