brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 6b14fc6 Raw
86 lines · cpp
1//===-- VariablesTest.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 "Variables.h"10#include "lldb/API/SBValue.h"11#include "lldb/API/SBValueList.h"12#include "gtest/gtest.h"13 14using namespace lldb_dap;15 16class VariablesTest : public ::testing::Test {17protected:18  enum : bool { Permanent = true, Temporary = false };19  Variables vars;20};21 22TEST_F(VariablesTest, GetNewVariableReference_UniqueAndRanges) {23  const int64_t temp1 = vars.GetNewVariableReference(Temporary);24  const int64_t temp2 = vars.GetNewVariableReference(Temporary);25  const int64_t perm1 = vars.GetNewVariableReference(Permanent);26  const int64_t perm2 = vars.GetNewVariableReference(Permanent);27 28  EXPECT_NE(temp1, temp2);29  EXPECT_NE(perm1, perm2);30  EXPECT_LT(temp1, perm1);31  EXPECT_LT(temp2, perm1);32}33 34TEST_F(VariablesTest, InsertAndGetVariable_Temporary) {35  lldb::SBValue dummy;36  const int64_t ref = vars.InsertVariable(dummy, Temporary);37  lldb::SBValue out = vars.GetVariable(ref);38 39  EXPECT_EQ(out.IsValid(), dummy.IsValid());40}41 42TEST_F(VariablesTest, InsertAndGetVariable_Permanent) {43  lldb::SBValue dummy;44  const int64_t ref = vars.InsertVariable(dummy, Permanent);45  lldb::SBValue out = vars.GetVariable(ref);46 47  EXPECT_EQ(out.IsValid(), dummy.IsValid());48}49 50TEST_F(VariablesTest, IsPermanentVariableReference) {51  const int64_t perm = vars.GetNewVariableReference(Permanent);52  const int64_t temp = vars.GetNewVariableReference(Temporary);53 54  EXPECT_TRUE(Variables::IsPermanentVariableReference(perm));55  EXPECT_FALSE(Variables::IsPermanentVariableReference(temp));56}57 58TEST_F(VariablesTest, Clear_RemovesTemporaryKeepsPermanent) {59  lldb::SBValue dummy;60  const int64_t temp = vars.InsertVariable(dummy, Temporary);61  const int64_t perm = vars.InsertVariable(dummy, Permanent);62  vars.Clear();63 64  EXPECT_FALSE(vars.GetVariable(temp).IsValid());65  EXPECT_EQ(vars.GetVariable(perm).IsValid(), dummy.IsValid());66}67 68TEST_F(VariablesTest, GetTopLevelScope_ReturnsCorrectScope) {69  vars.locals.Append(lldb::SBValue());70  vars.globals.Append(lldb::SBValue());71  vars.registers.Append(lldb::SBValue());72 73  EXPECT_EQ(vars.GetTopLevelScope(VARREF_LOCALS), &vars.locals);74  EXPECT_EQ(vars.GetTopLevelScope(VARREF_GLOBALS), &vars.globals);75  EXPECT_EQ(vars.GetTopLevelScope(VARREF_REGS), &vars.registers);76  EXPECT_EQ(vars.GetTopLevelScope(9999), nullptr);77}78 79TEST_F(VariablesTest, FindVariable_LocalsByName) {80  lldb::SBValue dummy;81  vars.locals.Append(dummy);82  lldb::SBValue found = vars.FindVariable(VARREF_LOCALS, "");83 84  EXPECT_EQ(found.IsValid(), dummy.IsValid());85}86