diff options
Diffstat (limited to 'llvm/unittests/ADT/StringSwitchTest.cpp')
| -rw-r--r-- | llvm/unittests/ADT/StringSwitchTest.cpp | 17 | 
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/StringSwitchTest.cpp b/llvm/unittests/ADT/StringSwitchTest.cpp index c94feb5..75d50f4 100644 --- a/llvm/unittests/ADT/StringSwitchTest.cpp +++ b/llvm/unittests/ADT/StringSwitchTest.cpp @@ -240,6 +240,23 @@ TEST(StringSwitchTest, CasesCopies) {    EXPECT_EQ(NumCopies, 1u);  } +TEST(StringSwitchTest, StringSwitchMultipleMatches) { +  auto Translate = [](StringRef S) { +    return llvm::StringSwitch<int>(S) +        .CaseLower("A", 0) +        .Case("b", 1) +        .Case("a", 2) +        .CasesLower({"a", "b"}, 3) +        .DefaultUnreachable(); +  }; + +  // Check that the value of the first match is returned. +  EXPECT_EQ(0, Translate("A")); +  EXPECT_EQ(0, Translate("a")); +  EXPECT_EQ(3, Translate("B")); +  EXPECT_EQ(1, Translate("b")); +} +  TEST(StringSwitchTest, DefaultUnreachable) {    auto Translate = [](StringRef S) {      return llvm::StringSwitch<int>(S)  | 
