diff options
Diffstat (limited to 'llvm/unittests/ADT/StringSwitchTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/StringSwitchTest.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/StringSwitchTest.cpp b/llvm/unittests/ADT/StringSwitchTest.cpp index 2953f4b..bcb1521 100644 --- a/llvm/unittests/ADT/StringSwitchTest.cpp +++ b/llvm/unittests/ADT/StringSwitchTest.cpp @@ -230,3 +230,19 @@ TEST(StringSwitchTest, CasesCopies) { "Foo", "Bar", "Baz", "Qux", Copyable{NumCopies}); EXPECT_EQ(NumCopies, 1u); } + +TEST(StringSwitchTest, DefaultUnreachable) { + auto Translate = [](StringRef S) { + return llvm::StringSwitch<int>(S) + .Case("A", 0) + .Case("B", 1) + .DefaultUnreachable("Unhandled case"); + }; + + EXPECT_EQ(0, Translate("A")); + EXPECT_EQ(1, Translate("B")); + +#if defined(GTEST_HAS_DEATH_TEST) && !defined(NDEBUG) + EXPECT_DEATH((void)Translate("C"), "Unhandled case"); +#endif +} |