brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.5 KiB · 25335e5 Raw
161 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include "gtest/gtest.h"10#include "lldb/Interpreter/OptionArgParser.h"11#include "llvm/Support/Error.h"12 13using namespace lldb_private;14 15TEST(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 69void TestToBooleanWithExpectedBool(llvm::StringRef option_arg,70                                   bool expected_parse_success,71                                   bool expected_result) {72  llvm::Expected<bool> bool_or_error =73      OptionArgParser::ToBoolean(llvm::StringRef("test_option"), option_arg);74  EXPECT_EQ(expected_parse_success, (bool)bool_or_error);75  if (expected_parse_success)76    EXPECT_EQ(expected_result, *bool_or_error);77  else {78    std::string error = llvm::toString(bool_or_error.takeError());79    EXPECT_NE(std::string::npos, error.find("test_option"));80  }81}82 83TEST(OptionArgParserTest, toBooleanWithExpectedBool) {84  TestToBooleanWithExpectedBool(llvm::StringRef("true"), true, true);85  TestToBooleanWithExpectedBool(llvm::StringRef("on"), true, true);86  TestToBooleanWithExpectedBool(llvm::StringRef("yes"), true, true);87  TestToBooleanWithExpectedBool(llvm::StringRef("1"), true, true);88 89  TestToBooleanWithExpectedBool(llvm::StringRef("True"), true, true);90  TestToBooleanWithExpectedBool(llvm::StringRef("On"), true, true);91  TestToBooleanWithExpectedBool(llvm::StringRef("Yes"), true, true);92 93  TestToBooleanWithExpectedBool(llvm::StringRef("false"), true, false);94  TestToBooleanWithExpectedBool(llvm::StringRef("off"), true, false);95  TestToBooleanWithExpectedBool(llvm::StringRef("no"), true, false);96  TestToBooleanWithExpectedBool(llvm::StringRef("0"), true, false);97 98  TestToBooleanWithExpectedBool(llvm::StringRef("False"), true, false);99  TestToBooleanWithExpectedBool(llvm::StringRef("Off"), true, false);100  TestToBooleanWithExpectedBool(llvm::StringRef("No"), true, false);101 102  TestToBooleanWithExpectedBool(llvm::StringRef("10"), false,103                                false /* doesn't matter */);104  TestToBooleanWithExpectedBool(llvm::StringRef(""), false,105                                false /* doesn't matter */);106}107 108TEST(OptionArgParserTest, toChar) {109  bool success = false;110 111  EXPECT_EQ('A', OptionArgParser::ToChar("A", 'B', nullptr));112  EXPECT_EQ('B', OptionArgParser::ToChar("B", 'A', nullptr));113 114  EXPECT_EQ('A', OptionArgParser::ToChar("A", 'B', &success));115  EXPECT_TRUE(success);116  EXPECT_EQ('B', OptionArgParser::ToChar("B", 'A', &success));117  EXPECT_TRUE(success);118 119  EXPECT_EQ('A', OptionArgParser::ToChar("", 'A', &success));120  EXPECT_FALSE(success);121  EXPECT_EQ('A', OptionArgParser::ToChar("ABC", 'A', &success));122  EXPECT_FALSE(success);123}124 125TEST(OptionArgParserTest, toScriptLanguage) {126  bool success = false;127 128  EXPECT_EQ(lldb::eScriptLanguageDefault,129            OptionArgParser::ToScriptLanguage(llvm::StringRef("default"),130                                              lldb::eScriptLanguageNone,131                                              nullptr));132  EXPECT_EQ(lldb::eScriptLanguagePython,133            OptionArgParser::ToScriptLanguage(134                llvm::StringRef("python"), lldb::eScriptLanguageNone, nullptr));135  EXPECT_EQ(lldb::eScriptLanguageNone,136            OptionArgParser::ToScriptLanguage(137                llvm::StringRef("none"), lldb::eScriptLanguagePython, nullptr));138 139  EXPECT_EQ(lldb::eScriptLanguageDefault,140            OptionArgParser::ToScriptLanguage(llvm::StringRef("default"),141                                              lldb::eScriptLanguageNone,142                                              &success));143  EXPECT_TRUE(success);144  EXPECT_EQ(lldb::eScriptLanguagePython,145            OptionArgParser::ToScriptLanguage(llvm::StringRef("python"),146                                              lldb::eScriptLanguageNone,147                                              &success));148  EXPECT_TRUE(success);149  EXPECT_EQ(lldb::eScriptLanguageNone,150            OptionArgParser::ToScriptLanguage(llvm::StringRef("none"),151                                              lldb::eScriptLanguagePython,152                                              &success));153  EXPECT_TRUE(success);154 155  EXPECT_EQ(lldb::eScriptLanguagePython,156            OptionArgParser::ToScriptLanguage(llvm::StringRef("invalid"),157                                              lldb::eScriptLanguagePython,158                                              &success));159  EXPECT_FALSE(success);160}161