StringRefTest.cpp revision 9130b42a85998238b7bbe25ed2989e0605f636f0
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" 12528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth#include "llvm/ADT/Hashing.h" 13c78c0c99a0fe1703ae72fc51e440aaa8e4e19e91Rafael Espindola#include "llvm/ADT/SmallVector.h" 14dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar#include "llvm/Support/raw_ostream.h" 154cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbarusing namespace llvm; 164cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 17c883ad2dd8d4861f6c2cbc89f079152a159778c8Douglas Gregornamespace llvm { 184cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 19e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbarstd::ostream &operator<<(std::ostream &OS, const StringRef &S) { 20b3371cdf5e6f8a9286a56fb94d70278be6f64276Chris Lattner OS << S.str(); 21e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar return OS; 22e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 23e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 24e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbarstd::ostream &operator<<(std::ostream &OS, 25e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar const std::pair<StringRef, StringRef> &P) { 26e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar OS << "(" << P.first << ", " << P.second << ")"; 27e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar return OS; 28e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 29e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 30c883ad2dd8d4861f6c2cbc89f079152a159778c8Douglas Gregor} 31c883ad2dd8d4861f6c2cbc89f079152a159778c8Douglas Gregor 32c883ad2dd8d4861f6c2cbc89f079152a159778c8Douglas Gregornamespace { 334cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel DunbarTEST(StringRefTest, Construction) { 34e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", StringRef()); 35e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("hello", StringRef("hello")); 36e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("hello", StringRef("hello world", 5)); 37e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("hello", StringRef(std::string("hello"))); 384cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} 394cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 404cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel DunbarTEST(StringRefTest, Iteration) { 414cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar StringRef S("hello"); 424cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar const char *p = "hello"; 434cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar for (const char *it = S.begin(), *ie = S.end(); it != ie; ++it, ++p) 44e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(*it, *p); 454cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} 464cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 474cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel DunbarTEST(StringRefTest, StringOps) { 484cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar const char *p = "hello"; 494cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ(p, StringRef(p, 0).data()); 504cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef().empty()); 514cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ((size_t) 5, StringRef("hello").size()); 524cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ(-1, StringRef("aab").compare("aad")); 534cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ( 0, StringRef("aab").compare("aab")); 544cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ( 1, StringRef("aab").compare("aaa")); 554cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ(-1, StringRef("aab").compare("aabb")); 564cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ( 1, StringRef("aab").compare("aa")); 570043e35b8261af607d6cf0695b79b1d6584e67acBenjamin Kramer EXPECT_EQ( 1, StringRef("\xFF").compare("\1")); 580043e35b8261af607d6cf0695b79b1d6584e67acBenjamin Kramer 590043e35b8261af607d6cf0695b79b1d6584e67acBenjamin Kramer EXPECT_EQ(-1, StringRef("AaB").compare_lower("aAd")); 600043e35b8261af607d6cf0695b79b1d6584e67acBenjamin Kramer EXPECT_EQ( 0, StringRef("AaB").compare_lower("aab")); 610043e35b8261af607d6cf0695b79b1d6584e67acBenjamin Kramer EXPECT_EQ( 1, StringRef("AaB").compare_lower("AAA")); 620043e35b8261af607d6cf0695b79b1d6584e67acBenjamin Kramer EXPECT_EQ(-1, StringRef("AaB").compare_lower("aaBb")); 630043e35b8261af607d6cf0695b79b1d6584e67acBenjamin Kramer EXPECT_EQ( 1, StringRef("AaB").compare_lower("aA")); 640043e35b8261af607d6cf0695b79b1d6584e67acBenjamin Kramer EXPECT_EQ( 1, StringRef("\xFF").compare_lower("\1")); 65160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen 66160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ(-1, StringRef("aab").compare_numeric("aad")); 67160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ( 0, StringRef("aab").compare_numeric("aab")); 68160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ( 1, StringRef("aab").compare_numeric("aaa")); 69160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ(-1, StringRef("aab").compare_numeric("aabb")); 70160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ( 1, StringRef("aab").compare_numeric("aa")); 71160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ(-1, StringRef("1").compare_numeric("10")); 72160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ( 0, StringRef("10").compare_numeric("10")); 73160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ( 0, StringRef("10a").compare_numeric("10a")); 74160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ( 1, StringRef("2").compare_numeric("1")); 75160a3bf74d1a2b048f65e2162d038ed96eddde01Jakob Stoklund Olesen EXPECT_EQ( 0, StringRef("llvm_v1i64_ty").compare_numeric("llvm_v1i64_ty")); 76837bccd052ea930915173fc83e733c7d8187002dBenjamin Kramer EXPECT_EQ( 1, StringRef("\xFF").compare_numeric("\1")); 777850dd0f25ccc5da6df54999a907e1277ed055d6Jakob Stoklund Olesen EXPECT_EQ( 1, StringRef("V16").compare_numeric("V1_q0")); 787850dd0f25ccc5da6df54999a907e1277ed055d6Jakob Stoklund Olesen EXPECT_EQ(-1, StringRef("V1_q0").compare_numeric("V16")); 797850dd0f25ccc5da6df54999a907e1277ed055d6Jakob Stoklund Olesen EXPECT_EQ(-1, StringRef("V8_q0").compare_numeric("V16")); 807850dd0f25ccc5da6df54999a907e1277ed055d6Jakob Stoklund Olesen EXPECT_EQ( 1, StringRef("V16").compare_numeric("V8_q0")); 817850dd0f25ccc5da6df54999a907e1277ed055d6Jakob Stoklund Olesen EXPECT_EQ(-1, StringRef("V1_q0").compare_numeric("V8_q0")); 827850dd0f25ccc5da6df54999a907e1277ed055d6Jakob Stoklund Olesen EXPECT_EQ( 1, StringRef("V8_q0").compare_numeric("V1_q0")); 834cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} 844cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 854cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel DunbarTEST(StringRefTest, Operators) { 86e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", StringRef()); 874cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aab") < StringRef("aad")); 884cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") < StringRef("aab")); 894cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aab") <= StringRef("aab")); 904cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") <= StringRef("aaa")); 914cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aad") > StringRef("aab")); 924cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") > StringRef("aab")); 934cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aab") >= StringRef("aab")); 944cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aaa") >= StringRef("aab")); 95e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef("aab"), StringRef("aab")); 964cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") == StringRef("aac")); 974cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_FALSE(StringRef("aab") != StringRef("aab")); 984cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_TRUE(StringRef("aab") != StringRef("aac")); 994cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar EXPECT_EQ('a', StringRef("aab")[1]); 1004cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} 1014cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar 102e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Substr) { 103f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar StringRef Str("hello"); 104e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("lo", Str.substr(3)); 105e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", Str.substr(100)); 106e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("hello", Str.substr(0, 100)); 107e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("o", Str.substr(4, 10)); 108e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 109e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 110e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Slice) { 111e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 112e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("l", Str.slice(2, 3)); 113e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("ell", Str.slice(1, 4)); 114e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("llo", Str.slice(2, 100)); 115e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", Str.slice(2, 1)); 116e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ("", Str.slice(10, 20)); 117e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 118e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 119e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Split) { 120e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 121e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hello"), StringRef("")), 122e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('X')); 123e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("h"), StringRef("llo")), 124e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('e')); 125e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef(""), StringRef("ello")), 126e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('h')); 127e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("he"), StringRef("lo")), 128e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('l')); 129e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hell"), StringRef("")), 130e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.split('o')); 131e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 132e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hello"), StringRef("")), 133e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('X')); 134e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("h"), StringRef("llo")), 135e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('e')); 136e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef(""), StringRef("ello")), 137e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('h')); 138e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hel"), StringRef("o")), 139e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('l')); 140e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(std::make_pair(StringRef("hell"), StringRef("")), 141e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar Str.rsplit('o')); 142e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 143d61918fc6898a89df8b0a03e068f234ded010cdfDaniel Dunbar 1445ccac247263ab62975f3b72421fc783f10ccf5f6Rafael EspindolaTEST(StringRefTest, Split2) { 145c78c0c99a0fe1703ae72fc51e440aaa8e4e19e91Rafael Espindola SmallVector<StringRef, 5> parts; 146c78c0c99a0fe1703ae72fc51e440aaa8e4e19e91Rafael Espindola SmallVector<StringRef, 5> expected; 1475ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1485ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("ab"); expected.push_back("c"); 1495ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef(",ab,,c,").split(parts, ",", -1, false); 1505ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1515ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1525ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1535ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back(""); expected.push_back("ab"); expected.push_back(""); 1545ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("c"); expected.push_back(""); 1555ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef(",ab,,c,").split(parts, ",", -1, true); 1565ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1575ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1585ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1595ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back(""); 1605ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("").split(parts, ",", -1, true); 1615ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1625ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1635ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1645ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("").split(parts, ",", -1, false); 1655ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1665ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1675ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1685ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef(",").split(parts, ",", -1, false); 1695ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1705ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1715ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1725ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back(""); expected.push_back(""); 1735ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef(",").split(parts, ",", -1, true); 1745ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1755ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 17620fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola expected.clear(); parts.clear(); 17720fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola expected.push_back("a"); expected.push_back("b"); 17820fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola StringRef("a,b").split(parts, ",", -1, true); 17920fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola EXPECT_TRUE(parts == expected); 18020fd4ec8c5cd3a3ec1f3258458a8899c4896ece2Rafael Espindola 1815ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola // Test MaxSplit 1825ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1835ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a,,b,c"); 1845ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 0, true); 1855ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1865ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1875ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1885ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a,,b,c"); 1895ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 0, false); 1905ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1915ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1925ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1935ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back(",b,c"); 1945ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 1, true); 1955ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 1965ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 1975ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 1985ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back(",b,c"); 1995ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 1, false); 2005ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 2015ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 2025ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 2035ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back(""); expected.push_back("b,c"); 2045ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 2, true); 2055ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 2065ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 2075ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 2085ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back("b,c"); 2095ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 2, false); 2105ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 2115ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 2125ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 2135ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back(""); expected.push_back("b"); 2145ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("c"); 2155ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 3, true); 2165ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 2175ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 2185ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.clear(); parts.clear(); 2195ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola expected.push_back("a"); expected.push_back("b"); expected.push_back("c"); 2205ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola StringRef("a,,b,c").split(parts, ",", 3, false); 2215ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola EXPECT_TRUE(parts == expected); 2225ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola} 2235ccac247263ab62975f3b72421fc783f10ccf5f6Rafael Espindola 224e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, StartsWith) { 225e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 226f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar EXPECT_TRUE(Str.startswith("he")); 227f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar EXPECT_FALSE(Str.startswith("helloworld")); 228f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar EXPECT_FALSE(Str.startswith("hi")); 229e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 230dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar 231d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli FriedmanTEST(StringRefTest, EndsWith) { 232d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman StringRef Str("hello"); 233d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman EXPECT_TRUE(Str.endswith("lo")); 234d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman EXPECT_FALSE(Str.endswith("helloworld")); 235d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman EXPECT_FALSE(Str.endswith("worldhello")); 236d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman EXPECT_FALSE(Str.endswith("so")); 237d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman} 238d5b1f8a8426e82990dafc6e3336fefc6635c8fa4Eli Friedman 239e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Find) { 240e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 241e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(2U, Str.find('l')); 242e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.find('z')); 243e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.find("helloworld")); 244e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.find("hello")); 245e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.find("ello")); 246e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.find("zz")); 24764066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(2U, Str.find("ll", 2)); 24864066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(StringRef::npos, Str.find("ll", 3)); 2496e6a558ebce556476d8fd659b419a2760f2ab154Benjamin Kramer EXPECT_EQ(0U, Str.find("")); 2506e6a558ebce556476d8fd659b419a2760f2ab154Benjamin Kramer StringRef LongStr("hellx xello hell ello world foo bar hello"); 2516e6a558ebce556476d8fd659b419a2760f2ab154Benjamin Kramer EXPECT_EQ(36U, LongStr.find("hello")); 2526e6a558ebce556476d8fd659b419a2760f2ab154Benjamin Kramer EXPECT_EQ(28U, LongStr.find("foo")); 2536e6a558ebce556476d8fd659b419a2760f2ab154Benjamin Kramer EXPECT_EQ(12U, LongStr.find("hell", 2)); 2546e6a558ebce556476d8fd659b419a2760f2ab154Benjamin Kramer EXPECT_EQ(0U, LongStr.find("")); 255e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 256e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(3U, Str.rfind('l')); 257e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.rfind('z')); 258e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.rfind("helloworld")); 259e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.rfind("hello")); 260e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.rfind("ello")); 261e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(StringRef::npos, Str.rfind("zz")); 26264066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar 26364066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(2U, Str.find_first_of('l')); 26464066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(1U, Str.find_first_of("el")); 26564066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(StringRef::npos, Str.find_first_of("xyz")); 26664066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar 26764066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(1U, Str.find_first_not_of('h')); 26864066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(4U, Str.find_first_not_of("hel")); 26964066bd8b593082f622bbc25716938a453363d2fDaniel Dunbar EXPECT_EQ(StringRef::npos, Str.find_first_not_of("hello")); 270e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 271e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 272e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Count) { 273e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar StringRef Str("hello"); 274e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(2U, Str.count('l')); 275e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.count('o')); 276e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.count('z')); 277e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.count("helloworld")); 278e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.count("hello")); 279e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(1U, Str.count("ello")); 280e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar EXPECT_EQ(0U, Str.count("zz")); 281e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar} 282e65512809a4144c17538aac4cc59fac6d325a7e4Daniel Dunbar 2837e54d5b1562f085c898bf8fcc4ac939ec893444cDouglas GregorTEST(StringRefTest, EditDistance) { 2847e54d5b1562f085c898bf8fcc4ac939ec893444cDouglas Gregor StringRef Str("hello"); 2854760467ff2c5e9d03d469cee2f14c6e68b096d65Benjamin Kramer EXPECT_EQ(2U, Str.edit_distance("hill")); 2867e54d5b1562f085c898bf8fcc4ac939ec893444cDouglas Gregor} 2877e54d5b1562f085c898bf8fcc4ac939ec893444cDouglas Gregor 288e65512809a4144c17538aac4cc59fac6d325a7e4Daniel DunbarTEST(StringRefTest, Misc) { 289dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar std::string Storage; 290dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar raw_string_ostream OS(Storage); 291dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar OS << StringRef("hello"); 292dbe77cfa0bcae10d91fbdbf118a97ec212afc88eDaniel Dunbar EXPECT_EQ("hello", OS.str()); 293f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar} 294f5fdf73238dfd923f33bcbbd397cff6752d9c41eDaniel Dunbar 295528f0bbe19553dfadedca040df13a389daa7593dChandler CarruthTEST(StringRefTest, Hashing) { 296528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_EQ(hash_value(std::string()), hash_value(StringRef())); 297528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_EQ(hash_value(std::string()), hash_value(StringRef(""))); 298528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth std::string S = "hello world"; 299528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth hash_code H = hash_value(S); 300528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_EQ(H, hash_value(StringRef("hello world"))); 301528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_EQ(H, hash_value(StringRef(S))); 302528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_NE(H, hash_value(StringRef("hello worl"))); 303528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_EQ(hash_value(std::string("hello worl")), 304528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth hash_value(StringRef("hello worl"))); 305528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_NE(H, hash_value(StringRef("hello world "))); 306528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_EQ(hash_value(std::string("hello world ")), 307528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth hash_value(StringRef("hello world "))); 308528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_EQ(H, hash_value(StringRef("hello world\0"))); 309528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth EXPECT_NE(hash_value(std::string("ello worl")), 310528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth hash_value(StringRef("hello world").slice(1, -1))); 311528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth} 312528f0bbe19553dfadedca040df13a389daa7593dChandler Carruth 3139130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencerstruct UnsignedPair { 3149130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer const char *Str; 3159130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer uint64_t Expected; 3169130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer} Unsigned[] = 3179130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer { {"0", 0} 3189130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"255", 255} 3199130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"256", 256} 3209130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"65535", 65535} 3219130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"65536", 65536} 3229130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"4294967295", 4294967295} 3239130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"4294967296", 4294967296} 3249130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"18446744073709551615", 18446744073709551615ULL} 3259130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"042", 34} 3269130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"0x42", 66} 3279130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"0b101010", 42} 3289130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer }; 3299130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer 3309130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencerstruct SignedPair { 3319130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer const char *Str; 3329130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer int64_t Expected; 3339130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer} Signed[] = 3349130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer { {"0", 0} 3359130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-0", 0} 3369130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"127", 127} 3379130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"128", 128} 3389130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-128", -128} 3399130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-129", -129} 3409130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"32767", 32767} 3419130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"32768", 32768} 3429130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-32768", -32768} 3439130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-32769", -32769} 3449130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"2147483647", 2147483647} 3459130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"2147483648", 2147483648} 3469130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-2147483648", -2147483648LL} 3479130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-2147483649", -2147483649LL} 3489130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-9223372036854775808", -(9223372036854775807LL) - 1} 3499130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"042", 34} 3509130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"0x42", 66} 3519130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"0b101010", 42} 3529130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-042", -34} 3539130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-0x42", -66} 3549130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer , {"-0b101010", -42} 3559130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer }; 3569130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer 3579130b42a85998238b7bbe25ed2989e0605f636f0Michael J. SpencerTEST(StringRefTest, getAsInteger) { 3589130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer uint8_t U8; 3599130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer uint16_t U16; 3609130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer uint32_t U32; 3619130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer uint64_t U64; 3629130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer 3639130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer for (size_t i = 0; i < array_lengthof(Unsigned); ++i) { 3649130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer bool U8Success = StringRef(Unsigned[i].Str).getAsInteger(0, U8); 3659130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer if (static_cast<uint8_t>(Unsigned[i].Expected) == Unsigned[i].Expected) { 3669130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_FALSE(U8Success); 3679130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer EXPECT_EQ(U8, Unsigned[i].Expected); 3689130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } else { 3699130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_TRUE(U8Success); 3709130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 3719130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer bool U16Success = StringRef(Unsigned[i].Str).getAsInteger(0, U16); 3729130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer if (static_cast<uint16_t>(Unsigned[i].Expected) == Unsigned[i].Expected) { 3739130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_FALSE(U16Success); 3749130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer EXPECT_EQ(U16, Unsigned[i].Expected); 3759130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } else { 3769130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_TRUE(U16Success); 3779130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 3789130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer bool U32Success = StringRef(Unsigned[i].Str).getAsInteger(0, U32); 3799130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer if (static_cast<uint32_t>(Unsigned[i].Expected) == Unsigned[i].Expected) { 3809130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_FALSE(U32Success); 3819130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer EXPECT_EQ(U32, Unsigned[i].Expected); 3829130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } else { 3839130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_TRUE(U32Success); 3849130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 3859130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer bool U64Success = StringRef(Unsigned[i].Str).getAsInteger(0, U64); 3869130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer if (static_cast<uint64_t>(Unsigned[i].Expected) == Unsigned[i].Expected) { 3879130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_FALSE(U64Success); 3889130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer EXPECT_EQ(U64, Unsigned[i].Expected); 3899130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } else { 3909130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_TRUE(U64Success); 3919130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 3929130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 3939130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer 3949130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer int8_t S8; 3959130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer int16_t S16; 3969130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer int32_t S32; 3979130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer int64_t S64; 3989130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer 3999130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer for (size_t i = 0; i < array_lengthof(Signed); ++i) { 4009130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer bool S8Success = StringRef(Signed[i].Str).getAsInteger(0, S8); 4019130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer if (static_cast<int8_t>(Signed[i].Expected) == Signed[i].Expected) { 4029130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_FALSE(S8Success); 4039130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer EXPECT_EQ(S8, Signed[i].Expected); 4049130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } else { 4059130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_TRUE(S8Success); 4069130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 4079130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer bool S16Success = StringRef(Signed[i].Str).getAsInteger(0, S16); 4089130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer if (static_cast<int16_t>(Signed[i].Expected) == Signed[i].Expected) { 4099130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_FALSE(S16Success); 4109130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer EXPECT_EQ(S16, Signed[i].Expected); 4119130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } else { 4129130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_TRUE(S16Success); 4139130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 4149130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer bool S32Success = StringRef(Signed[i].Str).getAsInteger(0, S32); 4159130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer if (static_cast<int32_t>(Signed[i].Expected) == Signed[i].Expected) { 4169130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_FALSE(S32Success); 4179130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer EXPECT_EQ(S32, Signed[i].Expected); 4189130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } else { 4199130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_TRUE(S32Success); 4209130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 4219130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer bool S64Success = StringRef(Signed[i].Str).getAsInteger(0, S64); 4229130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer if (static_cast<int64_t>(Signed[i].Expected) == Signed[i].Expected) { 4239130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_FALSE(S64Success); 4249130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer EXPECT_EQ(S64, Signed[i].Expected); 4259130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } else { 4269130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer ASSERT_TRUE(S64Success); 4279130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 4289130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer } 4299130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer} 4309130b42a85998238b7bbe25ed2989e0605f636f0Michael J. Spencer 4314cf95d75c65f37677d306952b0d2306bc6d20b1fDaniel Dunbar} // end anonymous namespace 432