summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp')
-rw-r--r--gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp120
1 files changed, 120 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp b/gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp
new file mode 100644
index 00000000000..921a5461f65
--- /dev/null
+++ b/gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp
@@ -0,0 +1,120 @@
+//===-- ArgsTest.cpp --------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "gtest/gtest.h"
+#include "lldb/Interpreter/OptionArgParser.h"
+
+using namespace lldb_private;
+
+TEST(OptionArgParserTest, toBoolean) {
+ bool success = false;
+ EXPECT_TRUE(
+ OptionArgParser::ToBoolean(llvm::StringRef("true"), false, nullptr));
+ EXPECT_TRUE(
+ OptionArgParser::ToBoolean(llvm::StringRef("on"), false, nullptr));
+ EXPECT_TRUE(
+ OptionArgParser::ToBoolean(llvm::StringRef("yes"), false, nullptr));
+ EXPECT_TRUE(OptionArgParser::ToBoolean(llvm::StringRef("1"), false, nullptr));
+
+ EXPECT_TRUE(
+ OptionArgParser::ToBoolean(llvm::StringRef("true"), false, &success));
+ EXPECT_TRUE(success);
+ EXPECT_TRUE(
+ OptionArgParser::ToBoolean(llvm::StringRef("on"), false, &success));
+ EXPECT_TRUE(success);
+ EXPECT_TRUE(
+ OptionArgParser::ToBoolean(llvm::StringRef("yes"), false, &success));
+ EXPECT_TRUE(success);
+ EXPECT_TRUE(
+ OptionArgParser::ToBoolean(llvm::StringRef("1"), false, &success));
+ EXPECT_TRUE(success);
+
+ EXPECT_FALSE(
+ OptionArgParser::ToBoolean(llvm::StringRef("false"), true, nullptr));
+ EXPECT_FALSE(
+ OptionArgParser::ToBoolean(llvm::StringRef("off"), true, nullptr));
+ EXPECT_FALSE(
+ OptionArgParser::ToBoolean(llvm::StringRef("no"), true, nullptr));
+ EXPECT_FALSE(OptionArgParser::ToBoolean(llvm::StringRef("0"), true, nullptr));
+
+ EXPECT_FALSE(
+ OptionArgParser::ToBoolean(llvm::StringRef("false"), true, &success));
+ EXPECT_TRUE(success);
+ EXPECT_FALSE(
+ OptionArgParser::ToBoolean(llvm::StringRef("off"), true, &success));
+ EXPECT_TRUE(success);
+ EXPECT_FALSE(
+ OptionArgParser::ToBoolean(llvm::StringRef("no"), true, &success));
+ EXPECT_TRUE(success);
+ EXPECT_FALSE(
+ OptionArgParser::ToBoolean(llvm::StringRef("0"), true, &success));
+ EXPECT_TRUE(success);
+
+ EXPECT_FALSE(
+ OptionArgParser::ToBoolean(llvm::StringRef("10"), false, &success));
+ EXPECT_FALSE(success);
+ EXPECT_TRUE(
+ OptionArgParser::ToBoolean(llvm::StringRef("10"), true, &success));
+ EXPECT_FALSE(success);
+ EXPECT_TRUE(OptionArgParser::ToBoolean(llvm::StringRef(""), true, &success));
+ EXPECT_FALSE(success);
+}
+
+TEST(OptionArgParserTest, toChar) {
+ bool success = false;
+
+ EXPECT_EQ('A', OptionArgParser::ToChar("A", 'B', nullptr));
+ EXPECT_EQ('B', OptionArgParser::ToChar("B", 'A', nullptr));
+
+ EXPECT_EQ('A', OptionArgParser::ToChar("A", 'B', &success));
+ EXPECT_TRUE(success);
+ EXPECT_EQ('B', OptionArgParser::ToChar("B", 'A', &success));
+ EXPECT_TRUE(success);
+
+ EXPECT_EQ('A', OptionArgParser::ToChar("", 'A', &success));
+ EXPECT_FALSE(success);
+ EXPECT_EQ('A', OptionArgParser::ToChar("ABC", 'A', &success));
+ EXPECT_FALSE(success);
+}
+
+TEST(OptionArgParserTest, toScriptLanguage) {
+ bool success = false;
+
+ EXPECT_EQ(lldb::eScriptLanguageDefault,
+ OptionArgParser::ToScriptLanguage(llvm::StringRef("default"),
+ lldb::eScriptLanguageNone,
+ nullptr));
+ EXPECT_EQ(lldb::eScriptLanguagePython,
+ OptionArgParser::ToScriptLanguage(
+ llvm::StringRef("python"), lldb::eScriptLanguageNone, nullptr));
+ EXPECT_EQ(lldb::eScriptLanguageNone,
+ OptionArgParser::ToScriptLanguage(
+ llvm::StringRef("none"), lldb::eScriptLanguagePython, nullptr));
+
+ EXPECT_EQ(lldb::eScriptLanguageDefault,
+ OptionArgParser::ToScriptLanguage(llvm::StringRef("default"),
+ lldb::eScriptLanguageNone,
+ &success));
+ EXPECT_TRUE(success);
+ EXPECT_EQ(lldb::eScriptLanguagePython,
+ OptionArgParser::ToScriptLanguage(llvm::StringRef("python"),
+ lldb::eScriptLanguageNone,
+ &success));
+ EXPECT_TRUE(success);
+ EXPECT_EQ(lldb::eScriptLanguageNone,
+ OptionArgParser::ToScriptLanguage(llvm::StringRef("none"),
+ lldb::eScriptLanguagePython,
+ &success));
+ EXPECT_TRUE(success);
+
+ EXPECT_EQ(lldb::eScriptLanguagePython,
+ OptionArgParser::ToScriptLanguage(llvm::StringRef("invalid"),
+ lldb::eScriptLanguagePython,
+ &success));
+ EXPECT_FALSE(success);
+}