1 //===- StringExtrasTest.cpp - Unit tests for String extras ----------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "llvm/ADT/StringExtras.h" 11 #include "gtest/gtest.h" 12 13 using namespace llvm; 14 15 TEST(StringExtrasTest, Join) { 16 std::vector<std::string> Items; 17 EXPECT_EQ("", join(Items.begin(), Items.end(), " <sep> ")); 18 19 Items = {"foo"}; 20 EXPECT_EQ("foo", join(Items.begin(), Items.end(), " <sep> ")); 21 22 Items = {"foo", "bar"}; 23 EXPECT_EQ("foo <sep> bar", join(Items.begin(), Items.end(), " <sep> ")); 24 25 Items = {"foo", "bar", "baz"}; 26 EXPECT_EQ("foo <sep> bar <sep> baz", 27 join(Items.begin(), Items.end(), " <sep> ")); 28 } 29 30 TEST(StringExtrasTest, JoinItems) { 31 const char *Foo = "foo"; 32 std::string Bar = "bar"; 33 llvm::StringRef Baz = "baz"; 34 char X = 'x'; 35 36 EXPECT_EQ("", join_items(" <sep> ")); 37 EXPECT_EQ("", join_items('/')); 38 39 EXPECT_EQ("foo", join_items(" <sep> ", Foo)); 40 EXPECT_EQ("foo", join_items('/', Foo)); 41 42 EXPECT_EQ("foo <sep> bar", join_items(" <sep> ", Foo, Bar)); 43 EXPECT_EQ("foo/bar", join_items('/', Foo, Bar)); 44 45 EXPECT_EQ("foo <sep> bar <sep> baz", join_items(" <sep> ", Foo, Bar, Baz)); 46 EXPECT_EQ("foo/bar/baz", join_items('/', Foo, Bar, Baz)); 47 48 EXPECT_EQ("foo <sep> bar <sep> baz <sep> x", 49 join_items(" <sep> ", Foo, Bar, Baz, X)); 50 51 EXPECT_EQ("foo/bar/baz/x", join_items('/', Foo, Bar, Baz, X)); 52 } 53