aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/StringSwitchTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/ADT/StringSwitchTest.cpp')
-rw-r--r--llvm/unittests/ADT/StringSwitchTest.cpp16
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
+}