StringRefTest.cpp revision 7e54d5b1562f085c898bf8fcc4ac939ec893444c
14cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar//===- llvm/unittest/ADT/StringRefTest.cpp - StringRef unit tests ---------===// 24cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar// 34cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar// The LLVM Compiler Infrastructure 44cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar// 54cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar// This file is distributed under the University of Illinois Open Source 64cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar// License. See LICENSE.TXT for details. 74cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar// 84cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar//===----------------------------------------------------------------------===// 94cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 104cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar#include "gtest/gtest.h" 114cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar#include "llvm/ADT/StringRef.h" 12c78c0c99a0fe1703ae72fc51e440aaa8e4e19e91Rafael Espindola#include "llvm/ADT/SmallVector.h" 13dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar#include "llvm/Support/raw_ostream.h" 144cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbarusing namespace llvm; 154cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 16c883ad2dd8d4861f6c2cbc89f079152a159778c8Douglas Gregornamespace llvm { 174cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 18e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbarstd::ostream &operator<<(std::ostream &OS, const StringRef &S) { 19e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar OS << S; 20e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar return OS; 21e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 22e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 23e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbarstd::ostream &operator<<(std::ostream &OS, 24e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar const std::pair<StringRef, StringRef> &P) { 25e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar OS << "(" << P.first << ", " << P.second << ")"; 26e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar return OS; 27e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 28e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 29c883ad2dd8d4861f6c2cbc89f079152a159778c8Douglas Gregor} 30c883ad2dd8d4861f6c2cbc89f079152a159778c8Douglas Gregor 31c883ad2dd8d4861f6c2cbc89f079152a159778c8Douglas Gregornamespace { 324cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel DunbarTEST(StringRefTest, Construction) { 33e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", StringRef()); 34e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("hello", StringRef("hello")); 35e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("hello", StringRef("hello world", 5)); 36e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("hello", StringRef(std::string("hello"))); 374cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} 384cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 394cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel DunbarTEST(StringRefTest, Iteration) { 404cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar StringRef S("hello"); 414cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar const char *p = "hello"; 424cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar for (const char *it = S.begin(), *ie = S.end(); it != ie; ++it, ++p) 43e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(*it, *p); 444cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} 454cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 464cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel DunbarTEST(StringRefTest, StringOps) { 474cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar const char *p = "hello"; 484cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ(p, StringRef(p, 0).data()); 494cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef().empty()); 504cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ((size_t) 5, StringRef("hello").size()); 514cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ(-1, StringRef("aab").compare("aad")); 524cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ( 0, StringRef("aab").compare("aab")); 534cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ( 1, StringRef("aab").compare("aaa")); 544cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ(-1, StringRef("aab").compare("aabb")); 554cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ( 1, StringRef("aab").compare("aa")); 564cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} 574cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 584cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel DunbarTEST(StringRefTest, Operators) { 59e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", StringRef()); 604cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aab") < StringRef("aad")); 614cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") < StringRef("aab")); 624cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aab") <= StringRef("aab")); 634cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") <= StringRef("aaa")); 644cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aad") > StringRef("aab")); 654cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") > StringRef("aab")); 664cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aab") >= StringRef("aab")); 674cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aaa") >= StringRef("aab")); 68e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef("aab"), StringRef("aab")); 694cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") == StringRef("aac")); 704cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") != StringRef("aab")); 714cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aab") != StringRef("aac")); 724cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ('a', StringRef("aab")[1]); 734cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} 744cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 75e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Substr) { 76f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar StringRef Str("hello"); 77e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("lo", Str.substr(3)); 78e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", Str.substr(100)); 79e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("hello", Str.substr(0, 100)); 80e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("o", Str.substr(4, 10)); 81e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 82e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 83e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Slice) { 84e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 85e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("l", Str.slice(2, 3)); 86e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("ell", Str.slice(1, 4)); 87e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("llo", Str.slice(2, 100)); 88e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", Str.slice(2, 1)); 89e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", Str.slice(10, 20)); 90e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 91e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 92e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Split) { 93e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 94e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hello"), StringRef("")), 95e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('X')); 96e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("h"), StringRef("llo")), 97e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('e')); 98e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef(""), StringRef("ello")), 99e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('h')); 100e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("he"), StringRef("lo")), 101e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('l')); 102e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hell"), StringRef("")), 103e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('o')); 104e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 105e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hello"), StringRef("")), 106e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('X')); 107e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("h"), StringRef("llo")), 108e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('e')); 109e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef(""), StringRef("ello")), 110e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('h')); 111e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hel"), StringRef("o")), 112e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('l')); 113e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hell"), StringRef("")), 114e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('o')); 115e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 116d61918fc6898a89df8b0a03e068f234ded010cdfDaniel Dunbar 1175ccac247263ab62975f3b72421fc783f10ccf5f6Rafael EspindolaTEST(StringRefTest, Split2) { 118c78c0c99a0fe1703ae72fc51e440aaa8e4e19e91Rafael Espindola SmallVector<StringRef, 5> parts; 119c78c0c99a0fe1703ae72fc51e440aaa8e4e19e91Rafael Espindola SmallVector<StringRef, 5> expected; 1205ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1215ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("ab"); expected.push_back("c"); 1225ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef(",ab,,c,").split(parts, ",", -1, false); 1235ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1245ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1255ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1265ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back(""); expected.push_back("ab"); expected.push_back(""); 1275ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("c"); expected.push_back(""); 1285ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef(",ab,,c,").split(parts, ",", -1, true); 1295ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1305ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1315ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1325ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back(""); 1335ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("").split(parts, ",", -1, true); 1345ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1355ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1365ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1375ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("").split(parts, ",", -1, false); 1385ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1395ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1405ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1415ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef(",").split(parts, ",", -1, false); 1425ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1435ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1445ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1455ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back(""); expected.push_back(""); 1465ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef(",").split(parts, ",", -1, true); 1475ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1485ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 14920fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola expected.clear(); parts.clear(); 15020fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola expected.push_back("a"); expected.push_back("b"); 15120fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola StringRef("a,b").split(parts, ",", -1, true); 15220fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola EXPECT_TRUE(parts == expected); 15320fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola 1545ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola // Test MaxSplit 1555ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1565ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a,,b,c"); 1575ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 0, true); 1585ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1595ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1605ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1615ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a,,b,c"); 1625ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 0, false); 1635ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1645ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1655ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1665ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back(",b,c"); 1675ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 1, true); 1685ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1695ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1705ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1715ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back(",b,c"); 1725ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 1, false); 1735ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1745ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1755ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1765ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back(""); expected.push_back("b,c"); 1775ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 2, true); 1785ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1795ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1805ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1815ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back("b,c"); 1825ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 2, false); 1835ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1845ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1855ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1865ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back(""); expected.push_back("b"); 1875ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("c"); 1885ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 3, true); 1895ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1905ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1915ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1925ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back("b"); expected.push_back("c"); 1935ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 3, false); 1945ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1955ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola} 1965ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 197e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, StartsWith) { 198e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 199f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar EXPECT_TRUE(Str.startswith("he")); 200f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar EXPECT_FALSE(Str.startswith("helloworld")); 201f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar EXPECT_FALSE(Str.startswith("hi")); 202e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 203dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar 204d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli FriedmanTEST(StringRefTest, EndsWith) { 205d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman StringRef Str("hello"); 206d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman EXPECT_TRUE(Str.endswith("lo")); 207d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman EXPECT_FALSE(Str.endswith("helloworld")); 208d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman EXPECT_FALSE(Str.endswith("worldhello")); 209d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman EXPECT_FALSE(Str.endswith("so")); 210d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman} 211d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman 212e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Find) { 213e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 214e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(2U, Str.find('l')); 215e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.find('z')); 216e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.find("helloworld")); 217e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.find("hello")); 218e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.find("ello")); 219e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.find("zz")); 22064066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(2U, Str.find("ll", 2)); 22164066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(StringRef::npos, Str.find("ll", 3)); 222e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 223e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(3U, Str.rfind('l')); 224e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.rfind('z')); 225e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.rfind("helloworld")); 226e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.rfind("hello")); 227e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.rfind("ello")); 228e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.rfind("zz")); 22964066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar 23064066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(2U, Str.find_first_of('l')); 23164066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(1U, Str.find_first_of("el")); 23264066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(StringRef::npos, Str.find_first_of("xyz")); 23364066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar 23464066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(1U, Str.find_first_not_of('h')); 23564066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(4U, Str.find_first_not_of("hel")); 23664066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(StringRef::npos, Str.find_first_not_of("hello")); 237e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 238e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 239e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Count) { 240e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 241e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(2U, Str.count('l')); 242e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.count('o')); 243e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.count('z')); 244e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.count("helloworld")); 245e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.count("hello")); 246e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.count("ello")); 247e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.count("zz")); 248e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 249e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 2507e54d5b1562f085c898bf8fcc4ac939ec893444cDouglas GregorTEST(StringRefTest, EditDistance) { 2517e54d5b1562f085c898bf8fcc4ac939ec893444cDouglas Gregor StringRef Str("hello"); 2527e54d5b1562f085c898bf8fcc4ac939ec893444cDouglas Gregor EXPECT_EQ(2, Str.edit_distance("hill")); 2537e54d5b1562f085c898bf8fcc4ac939ec893444cDouglas Gregor} 2547e54d5b1562f085c898bf8fcc4ac939ec893444cDouglas Gregor 255e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Misc) { 256dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar std::string Storage; 257dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar raw_string_ostream OS(Storage); 258dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar OS << StringRef("hello"); 259dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar EXPECT_EQ("hello", OS.str()); 260f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar} 261f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar 2624cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} // end anonymous namespace 263