Zachary Turner | 0e31a38 | 2016-09-27 16:37:30 +0000 | [diff] [blame] | 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 | } |
Zachary Turner | e46b449 | 2017-04-25 20:21:35 +0000 | [diff] [blame] | 53 | |
| 54 | TEST(StringExtrasTest, ToAndFromHex) { |
| 55 | std::vector<uint8_t> OddBytes = {0x5, 0xBD, 0x0D, 0x3E, 0xCD}; |
| 56 | std::string OddStr = "05BD0D3ECD"; |
| 57 | StringRef OddData(reinterpret_cast<const char *>(OddBytes.data()), |
| 58 | OddBytes.size()); |
| 59 | EXPECT_EQ(OddStr, toHex(OddData)); |
| 60 | EXPECT_EQ(OddData, fromHex(StringRef(OddStr).drop_front())); |
| 61 | |
| 62 | std::vector<uint8_t> EvenBytes = {0xA5, 0xBD, 0x0D, 0x3E, 0xCD}; |
| 63 | std::string EvenStr = "A5BD0D3ECD"; |
| 64 | StringRef EvenData(reinterpret_cast<const char *>(EvenBytes.data()), |
| 65 | EvenBytes.size()); |
| 66 | EXPECT_EQ(EvenStr, toHex(EvenData)); |
| 67 | EXPECT_EQ(EvenData, fromHex(EvenStr)); |
| 68 | } |