summaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-09-16 22:38:48 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-09-16 22:38:48 +0000
commite65512809a4144c17538aac4cc59fac6d325a7e4 (patch)
treebe1cc374a08ca577ef4144eb7065872af199c499 /unittests
parent358f1ef765ba1b385795e03c80fdd4cbd924d010 (diff)
downloadllvm-e65512809a4144c17538aac4cc59fac6d325a7e4.tar.gz
llvm-e65512809a4144c17538aac4cc59fac6d325a7e4.tar.bz2
llvm-e65512809a4144c17538aac4cc59fac6d325a7e4.tar.xz
Add StringRef::{rfind, rsplit}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82087 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r--unittests/ADT/StringRefTest.cpp132
1 files changed, 90 insertions, 42 deletions
diff --git a/unittests/ADT/StringRefTest.cpp b/unittests/ADT/StringRefTest.cpp
index 320633aca8..cdc476e592 100644
--- a/unittests/ADT/StringRefTest.cpp
+++ b/unittests/ADT/StringRefTest.cpp
@@ -14,18 +14,29 @@ using namespace llvm;
namespace {
+std::ostream &operator<<(std::ostream &OS, const StringRef &S) {
+ OS << S;
+ return OS;
+}
+
+std::ostream &operator<<(std::ostream &OS,
+ const std::pair<StringRef, StringRef> &P) {
+ OS << "(" << P.first << ", " << P.second << ")";
+ return OS;
+}
+
TEST(StringRefTest, Construction) {
- EXPECT_TRUE(StringRef() == "");
- EXPECT_TRUE(StringRef("hello") == "hello");
- EXPECT_TRUE(StringRef("hello world", 5) == "hello");
- EXPECT_TRUE(StringRef(std::string("hello")) == "hello");
+ EXPECT_EQ("", StringRef());
+ EXPECT_EQ("hello", StringRef("hello"));
+ EXPECT_EQ("hello", StringRef("hello world", 5));
+ EXPECT_EQ("hello", StringRef(std::string("hello")));
}
TEST(StringRefTest, Iteration) {
StringRef S("hello");
const char *p = "hello";
for (const char *it = S.begin(), *ie = S.end(); it != ie; ++it, ++p)
- EXPECT_TRUE(*p == *it);
+ EXPECT_EQ(*it, *p);
}
TEST(StringRefTest, StringOps) {
@@ -41,7 +52,7 @@ TEST(StringRefTest, StringOps) {
}
TEST(StringRefTest, Operators) {
- EXPECT_TRUE(StringRef() == "");
+ EXPECT_EQ("", StringRef());
EXPECT_TRUE(StringRef("aab") < StringRef("aad"));
EXPECT_FALSE(StringRef("aab") < StringRef("aab"));
EXPECT_TRUE(StringRef("aab") <= StringRef("aab"));
@@ -50,58 +61,95 @@ TEST(StringRefTest, Operators) {
EXPECT_FALSE(StringRef("aab") > StringRef("aab"));
EXPECT_TRUE(StringRef("aab") >= StringRef("aab"));
EXPECT_FALSE(StringRef("aaa") >= StringRef("aab"));
- EXPECT_TRUE(StringRef("aab") == StringRef("aab"));
+ EXPECT_EQ(StringRef("aab"), StringRef("aab"));
EXPECT_FALSE(StringRef("aab") == StringRef("aac"));
EXPECT_FALSE(StringRef("aab") != StringRef("aab"));
EXPECT_TRUE(StringRef("aab") != StringRef("aac"));
EXPECT_EQ('a', StringRef("aab")[1]);
}
-TEST(StringRefTest, Utilities) {
+TEST(StringRefTest, Substr) {
StringRef Str("hello");
- EXPECT_TRUE(Str.substr(3) == "lo");
- EXPECT_TRUE(Str.substr(100) == "");
- EXPECT_TRUE(Str.substr(0, 100) == "hello");
- EXPECT_TRUE(Str.substr(4, 10) == "o");
-
- EXPECT_TRUE(Str.slice(2, 3) == "l");
- EXPECT_TRUE(Str.slice(1, 4) == "ell");
- EXPECT_TRUE(Str.slice(2, 100) == "llo");
- EXPECT_TRUE(Str.slice(2, 1) == "");
- EXPECT_TRUE(Str.slice(10, 20) == "");
-
- EXPECT_TRUE(Str.split('X') == std::make_pair(StringRef("hello"),
- StringRef("")));
- EXPECT_TRUE(Str.split('e') == std::make_pair(StringRef("h"),
- StringRef("llo")));
- EXPECT_TRUE(Str.split('h') == std::make_pair(StringRef(""),
- StringRef("ello")));
- EXPECT_TRUE(Str.split('o') == std::make_pair(StringRef("hell"),
- StringRef("")));
+ EXPECT_EQ("lo", Str.substr(3));
+ EXPECT_EQ("", Str.substr(100));
+ EXPECT_EQ("hello", Str.substr(0, 100));
+ EXPECT_EQ("o", Str.substr(4, 10));
+}
+
+TEST(StringRefTest, Slice) {
+ StringRef Str("hello");
+ EXPECT_EQ("l", Str.slice(2, 3));
+ EXPECT_EQ("ell", Str.slice(1, 4));
+ EXPECT_EQ("llo", Str.slice(2, 100));
+ EXPECT_EQ("", Str.slice(2, 1));
+ EXPECT_EQ("", Str.slice(10, 20));
+}
+
+TEST(StringRefTest, Split) {
+ StringRef Str("hello");
+ EXPECT_EQ(std::make_pair(StringRef("hello"), StringRef("")),
+ Str.split('X'));
+ EXPECT_EQ(std::make_pair(StringRef("h"), StringRef("llo")),
+ Str.split('e'));
+ EXPECT_EQ(std::make_pair(StringRef(""), StringRef("ello")),
+ Str.split('h'));
+ EXPECT_EQ(std::make_pair(StringRef("he"), StringRef("lo")),
+ Str.split('l'));
+ EXPECT_EQ(std::make_pair(StringRef("hell"), StringRef("")),
+ Str.split('o'));
+
+ EXPECT_EQ(std::make_pair(StringRef("hello"), StringRef("")),
+ Str.rsplit('X'));
+ EXPECT_EQ(std::make_pair(StringRef("h"), StringRef("llo")),
+ Str.rsplit('e'));
+ EXPECT_EQ(std::make_pair(StringRef(""), StringRef("ello")),
+ Str.rsplit('h'));
+ EXPECT_EQ(std::make_pair(StringRef("hel"), StringRef("o")),
+ Str.rsplit('l'));
+ EXPECT_EQ(std::make_pair(StringRef("hell"), StringRef("")),
+ Str.rsplit('o'));
+}
+TEST(StringRefTest, StartsWith) {
+ StringRef Str("hello");
EXPECT_TRUE(Str.startswith("he"));
EXPECT_FALSE(Str.startswith("helloworld"));
EXPECT_FALSE(Str.startswith("hi"));
+}
+TEST(StringRefTest, Find) {
+ StringRef Str("hello");
+ EXPECT_EQ(2U, Str.find('l'));
+ EXPECT_EQ(StringRef::npos, Str.find('z'));
+ EXPECT_EQ(StringRef::npos, Str.find("helloworld"));
+ EXPECT_EQ(0U, Str.find("hello"));
+ EXPECT_EQ(1U, Str.find("ello"));
+ EXPECT_EQ(StringRef::npos, Str.find("zz"));
+
+ EXPECT_EQ(3U, Str.rfind('l'));
+ EXPECT_EQ(StringRef::npos, Str.rfind('z'));
+ EXPECT_EQ(StringRef::npos, Str.rfind("helloworld"));
+ EXPECT_EQ(0U, Str.rfind("hello"));
+ EXPECT_EQ(1U, Str.rfind("ello"));
+ EXPECT_EQ(StringRef::npos, Str.rfind("zz"));
+}
+
+TEST(StringRefTest, Count) {
+ StringRef Str("hello");
+ EXPECT_EQ(2U, Str.count('l'));
+ EXPECT_EQ(1U, Str.count('o'));
+ EXPECT_EQ(0U, Str.count('z'));
+ EXPECT_EQ(0U, Str.count("helloworld"));
+ EXPECT_EQ(1U, Str.count("hello"));
+ EXPECT_EQ(1U, Str.count("ello"));
+ EXPECT_EQ(0U, Str.count("zz"));
+}
+
+TEST(StringRefTest, Misc) {
std::string Storage;
raw_string_ostream OS(Storage);
OS << StringRef("hello");
EXPECT_EQ("hello", OS.str());
-
- EXPECT_TRUE(Str.find('l') == 2);
- EXPECT_TRUE(Str.find('z') == StringRef::npos);
- EXPECT_TRUE(Str.find("helloworld") == StringRef::npos);
- EXPECT_TRUE(Str.find("hello") == 0);
- EXPECT_TRUE(Str.find("ello") == 1);
- EXPECT_TRUE(Str.find("zz") == StringRef::npos);
-
- EXPECT_TRUE(Str.count('l') == 2);
- EXPECT_TRUE(Str.count('o') == 1);
- EXPECT_TRUE(Str.count('z') == 0);
- EXPECT_TRUE(Str.count("helloworld") == 0);
- EXPECT_TRUE(Str.count("hello") == 1);
- EXPECT_TRUE(Str.count("ello") == 1);
- EXPECT_TRUE(Str.count("zz") == 0);
}
} // end anonymous namespace