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