1 //===-- ArgsTest.cpp ------------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "gtest/gtest.h" 10 #include "lldb/Interpreter/OptionArgParser.h" 11 12 using namespace lldb_private; 13 14 TEST(OptionArgParserTest, toBoolean) { 15 bool success = false; 16 EXPECT_TRUE( 17 OptionArgParser::ToBoolean(llvm::StringRef("true"), false, nullptr)); 18 EXPECT_TRUE( 19 OptionArgParser::ToBoolean(llvm::StringRef("on"), false, nullptr)); 20 EXPECT_TRUE( 21 OptionArgParser::ToBoolean(llvm::StringRef("yes"), false, nullptr)); 22 EXPECT_TRUE(OptionArgParser::ToBoolean(llvm::StringRef("1"), false, nullptr)); 23 24 EXPECT_TRUE( 25 OptionArgParser::ToBoolean(llvm::StringRef("true"), false, &success)); 26 EXPECT_TRUE(success); 27 EXPECT_TRUE( 28 OptionArgParser::ToBoolean(llvm::StringRef("on"), false, &success)); 29 EXPECT_TRUE(success); 30 EXPECT_TRUE( 31 OptionArgParser::ToBoolean(llvm::StringRef("yes"), false, &success)); 32 EXPECT_TRUE(success); 33 EXPECT_TRUE( 34 OptionArgParser::ToBoolean(llvm::StringRef("1"), false, &success)); 35 EXPECT_TRUE(success); 36 37 EXPECT_FALSE( 38 OptionArgParser::ToBoolean(llvm::StringRef("false"), true, nullptr)); 39 EXPECT_FALSE( 40 OptionArgParser::ToBoolean(llvm::StringRef("off"), true, nullptr)); 41 EXPECT_FALSE( 42 OptionArgParser::ToBoolean(llvm::StringRef("no"), true, nullptr)); 43 EXPECT_FALSE(OptionArgParser::ToBoolean(llvm::StringRef("0"), true, nullptr)); 44 45 EXPECT_FALSE( 46 OptionArgParser::ToBoolean(llvm::StringRef("false"), true, &success)); 47 EXPECT_TRUE(success); 48 EXPECT_FALSE( 49 OptionArgParser::ToBoolean(llvm::StringRef("off"), true, &success)); 50 EXPECT_TRUE(success); 51 EXPECT_FALSE( 52 OptionArgParser::ToBoolean(llvm::StringRef("no"), true, &success)); 53 EXPECT_TRUE(success); 54 EXPECT_FALSE( 55 OptionArgParser::ToBoolean(llvm::StringRef("0"), true, &success)); 56 EXPECT_TRUE(success); 57 58 EXPECT_FALSE( 59 OptionArgParser::ToBoolean(llvm::StringRef("10"), false, &success)); 60 EXPECT_FALSE(success); 61 EXPECT_TRUE( 62 OptionArgParser::ToBoolean(llvm::StringRef("10"), true, &success)); 63 EXPECT_FALSE(success); 64 EXPECT_TRUE(OptionArgParser::ToBoolean(llvm::StringRef(""), true, &success)); 65 EXPECT_FALSE(success); 66 } 67 68 TEST(OptionArgParserTest, toChar) { 69 bool success = false; 70 71 EXPECT_EQ('A', OptionArgParser::ToChar("A", 'B', nullptr)); 72 EXPECT_EQ('B', OptionArgParser::ToChar("B", 'A', nullptr)); 73 74 EXPECT_EQ('A', OptionArgParser::ToChar("A", 'B', &success)); 75 EXPECT_TRUE(success); 76 EXPECT_EQ('B', OptionArgParser::ToChar("B", 'A', &success)); 77 EXPECT_TRUE(success); 78 79 EXPECT_EQ('A', OptionArgParser::ToChar("", 'A', &success)); 80 EXPECT_FALSE(success); 81 EXPECT_EQ('A', OptionArgParser::ToChar("ABC", 'A', &success)); 82 EXPECT_FALSE(success); 83 } 84 85 TEST(OptionArgParserTest, toScriptLanguage) { 86 bool success = false; 87 88 EXPECT_EQ(lldb::eScriptLanguageDefault, 89 OptionArgParser::ToScriptLanguage(llvm::StringRef("default"), 90 lldb::eScriptLanguageNone, 91 nullptr)); 92 EXPECT_EQ(lldb::eScriptLanguagePython, 93 OptionArgParser::ToScriptLanguage( 94 llvm::StringRef("python"), lldb::eScriptLanguageNone, nullptr)); 95 EXPECT_EQ(lldb::eScriptLanguageNone, 96 OptionArgParser::ToScriptLanguage( 97 llvm::StringRef("none"), lldb::eScriptLanguagePython, nullptr)); 98 99 EXPECT_EQ(lldb::eScriptLanguageDefault, 100 OptionArgParser::ToScriptLanguage(llvm::StringRef("default"), 101 lldb::eScriptLanguageNone, 102 &success)); 103 EXPECT_TRUE(success); 104 EXPECT_EQ(lldb::eScriptLanguagePython, 105 OptionArgParser::ToScriptLanguage(llvm::StringRef("python"), 106 lldb::eScriptLanguageNone, 107 &success)); 108 EXPECT_TRUE(success); 109 EXPECT_EQ(lldb::eScriptLanguageNone, 110 OptionArgParser::ToScriptLanguage(llvm::StringRef("none"), 111 lldb::eScriptLanguagePython, 112 &success)); 113 EXPECT_TRUE(success); 114 115 EXPECT_EQ(lldb::eScriptLanguagePython, 116 OptionArgParser::ToScriptLanguage(llvm::StringRef("invalid"), 117 lldb::eScriptLanguagePython, 118 &success)); 119 EXPECT_FALSE(success); 120 } 121