1e2039142SNeal (nealsid) //===-- FormatEntityTest.cpp ---------------------------------------------===// 2e2039142SNeal (nealsid) // 3e2039142SNeal (nealsid) // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4e2039142SNeal (nealsid) // See https://llvm.org/LICENSE.txt for license information. 5e2039142SNeal (nealsid) // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6e2039142SNeal (nealsid) // 7e2039142SNeal (nealsid) //===----------------------------------------------------------------------===// 8e2039142SNeal (nealsid) 9e2039142SNeal (nealsid) #include "lldb/Core/FormatEntity.h" 10e2039142SNeal (nealsid) #include "lldb/Utility/Status.h" 11e2039142SNeal (nealsid) 12e2039142SNeal (nealsid) #include "llvm/ADT/StringRef.h" 13e2039142SNeal (nealsid) #include "gtest/gtest.h" 14e2039142SNeal (nealsid) 15e2039142SNeal (nealsid) using namespace lldb_private; 16e2039142SNeal (nealsid) 17e2039142SNeal (nealsid) using Definition = FormatEntity::Entry::Definition; 18e2039142SNeal (nealsid) using Entry = FormatEntity::Entry; 19e2039142SNeal (nealsid) 20e2039142SNeal (nealsid) TEST(FormatEntityTest, DefinitionConstructionNameAndType) { 21e2039142SNeal (nealsid) Definition d("foo", FormatEntity::Entry::Type::Invalid); 22e2039142SNeal (nealsid) 2359656c04SPavel Labath EXPECT_STREQ(d.name, "foo"); 24e2039142SNeal (nealsid) EXPECT_EQ(d.string, nullptr); 25e2039142SNeal (nealsid) EXPECT_EQ(d.type, FormatEntity::Entry::Type::Invalid); 26e2039142SNeal (nealsid) EXPECT_EQ(d.data, 0UL); 27e2039142SNeal (nealsid) EXPECT_EQ(d.num_children, 0UL); 28e2039142SNeal (nealsid) EXPECT_EQ(d.children, nullptr); 29e2039142SNeal (nealsid) EXPECT_FALSE(d.keep_separator); 30e2039142SNeal (nealsid) } 31e2039142SNeal (nealsid) 32e2039142SNeal (nealsid) TEST(FormatEntityTest, DefinitionConstructionNameAndString) { 33e2039142SNeal (nealsid) Definition d("foo", "string"); 34e2039142SNeal (nealsid) 3559656c04SPavel Labath EXPECT_STREQ(d.name, "foo"); 3659656c04SPavel Labath EXPECT_STREQ(d.string, "string"); 37e2039142SNeal (nealsid) EXPECT_EQ(d.type, FormatEntity::Entry::Type::EscapeCode); 38e2039142SNeal (nealsid) EXPECT_EQ(d.data, 0UL); 39e2039142SNeal (nealsid) EXPECT_EQ(d.num_children, 0UL); 40e2039142SNeal (nealsid) EXPECT_EQ(d.children, nullptr); 41e2039142SNeal (nealsid) EXPECT_FALSE(d.keep_separator); 42e2039142SNeal (nealsid) } 43e2039142SNeal (nealsid) 44e2039142SNeal (nealsid) TEST(FormatEntityTest, DefinitionConstructionNameTypeData) { 45e2039142SNeal (nealsid) Definition d("foo", FormatEntity::Entry::Type::Invalid, 33); 46e2039142SNeal (nealsid) 4759656c04SPavel Labath EXPECT_STREQ(d.name, "foo"); 48e2039142SNeal (nealsid) EXPECT_EQ(d.string, nullptr); 49e2039142SNeal (nealsid) EXPECT_EQ(d.type, FormatEntity::Entry::Type::Invalid); 50e2039142SNeal (nealsid) EXPECT_EQ(d.data, 33UL); 51e2039142SNeal (nealsid) EXPECT_EQ(d.num_children, 0UL); 52e2039142SNeal (nealsid) EXPECT_EQ(d.children, nullptr); 53e2039142SNeal (nealsid) EXPECT_FALSE(d.keep_separator); 54e2039142SNeal (nealsid) } 55e2039142SNeal (nealsid) 56e2039142SNeal (nealsid) TEST(FormatEntityTest, DefinitionConstructionNameTypeChildren) { 57e2039142SNeal (nealsid) Definition d("foo", FormatEntity::Entry::Type::Invalid, 33); 58e2039142SNeal (nealsid) Definition parent("parent", FormatEntity::Entry::Type::Invalid, 1, &d); 5959656c04SPavel Labath EXPECT_STREQ(parent.name, "parent"); 6059656c04SPavel Labath EXPECT_STREQ(parent.string, nullptr); 61e2039142SNeal (nealsid) EXPECT_EQ(parent.type, FormatEntity::Entry::Type::Invalid); 62e2039142SNeal (nealsid) EXPECT_EQ(parent.num_children, 1UL); 63e2039142SNeal (nealsid) EXPECT_EQ(parent.children, &d); 64e2039142SNeal (nealsid) EXPECT_FALSE(parent.keep_separator); 65e2039142SNeal (nealsid) 6659656c04SPavel Labath EXPECT_STREQ(parent.children[0].name, "foo"); 67e2039142SNeal (nealsid) EXPECT_EQ(parent.children[0].string, nullptr); 68e2039142SNeal (nealsid) EXPECT_EQ(parent.children[0].type, FormatEntity::Entry::Type::Invalid); 69e2039142SNeal (nealsid) EXPECT_EQ(parent.children[0].data, 33UL); 70e2039142SNeal (nealsid) EXPECT_EQ(parent.children[0].num_children, 0UL); 71e2039142SNeal (nealsid) EXPECT_EQ(parent.children[0].children, nullptr); 72e2039142SNeal (nealsid) EXPECT_FALSE(d.keep_separator); 73e2039142SNeal (nealsid) } 74e2039142SNeal (nealsid) 75e2039142SNeal (nealsid) constexpr llvm::StringRef lookupStrings[] = { 76e2039142SNeal (nealsid) "${addr.load}", 77e2039142SNeal (nealsid) "${addr.file}", 78e2039142SNeal (nealsid) "${ansi.fg.black}", 79e2039142SNeal (nealsid) "${ansi.fg.red}", 80e2039142SNeal (nealsid) "${ansi.fg.green}", 81e2039142SNeal (nealsid) "${ansi.fg.yellow}", 82e2039142SNeal (nealsid) "${ansi.fg.blue}", 83e2039142SNeal (nealsid) "${ansi.fg.purple}", 84e2039142SNeal (nealsid) "${ansi.fg.cyan}", 85e2039142SNeal (nealsid) "${ansi.fg.white}", 86e2039142SNeal (nealsid) "${ansi.bg.black}", 87e2039142SNeal (nealsid) "${ansi.bg.red}", 88e2039142SNeal (nealsid) "${ansi.bg.green}", 89e2039142SNeal (nealsid) "${ansi.bg.yellow}", 90e2039142SNeal (nealsid) "${ansi.bg.blue}", 91e2039142SNeal (nealsid) "${ansi.bg.purple}", 92e2039142SNeal (nealsid) "${ansi.bg.cyan}", 93e2039142SNeal (nealsid) "${ansi.bg.white}", 94e2039142SNeal (nealsid) "${file.basename}", 95e2039142SNeal (nealsid) "${file.dirname}", 96e2039142SNeal (nealsid) "${file.fullpath}", 97e2039142SNeal (nealsid) "${frame.index}", 98e2039142SNeal (nealsid) "${frame.pc}", 99e2039142SNeal (nealsid) "${frame.fp}", 100e2039142SNeal (nealsid) "${frame.sp}", 101e2039142SNeal (nealsid) "${frame.flags}", 102e2039142SNeal (nealsid) "${frame.no-debug}", 103e2039142SNeal (nealsid) "${frame.reg.*}", 104e2039142SNeal (nealsid) "${frame.is-artificial}", 105e2039142SNeal (nealsid) "${function.id}", 106e2039142SNeal (nealsid) "${function.name}", 107e2039142SNeal (nealsid) "${function.name-without-args}", 108e2039142SNeal (nealsid) "${function.name-with-args}", 109e2039142SNeal (nealsid) "${function.mangled-name}", 110e2039142SNeal (nealsid) "${function.addr-offset}", 111e2039142SNeal (nealsid) "${function.concrete-only-addr-offset-no-padding}", 112e2039142SNeal (nealsid) "${function.line-offset}", 113e2039142SNeal (nealsid) "${function.pc-offset}", 114e2039142SNeal (nealsid) "${function.initial-function}", 115e2039142SNeal (nealsid) "${function.changed}", 116e2039142SNeal (nealsid) "${function.is-optimized}", 117e2039142SNeal (nealsid) "${line.file.basename}", 118e2039142SNeal (nealsid) "${line.file.dirname}", 119e2039142SNeal (nealsid) "${line.file.fullpath}", 120e2039142SNeal (nealsid) "${line.number}", 121e2039142SNeal (nealsid) "${line.column}", 122e2039142SNeal (nealsid) "${line.start-addr}", 123e2039142SNeal (nealsid) "${line.end-addr}", 124e2039142SNeal (nealsid) "${module.file.basename}", 125e2039142SNeal (nealsid) "${module.file.dirname}", 126e2039142SNeal (nealsid) "${module.file.fullpath}", 127e2039142SNeal (nealsid) "${process.id}", 128e2039142SNeal (nealsid) "${process.name}", 129e2039142SNeal (nealsid) "${process.file.basename}", 130e2039142SNeal (nealsid) "${process.file.dirname}", 131e2039142SNeal (nealsid) "${process.file.fullpath}", 132e2039142SNeal (nealsid) "${script.frame}", 133e2039142SNeal (nealsid) "${script.process}", 134e2039142SNeal (nealsid) "${script.target}", 135e2039142SNeal (nealsid) "${script.thread}", 136e2039142SNeal (nealsid) "${script.var}", 137e2039142SNeal (nealsid) "${script.svar}", 138e2039142SNeal (nealsid) "${script.thread}", 139e2039142SNeal (nealsid) "${svar.dummy-svar-to-test-wildcard}", 140e2039142SNeal (nealsid) "${thread.id}", 141e2039142SNeal (nealsid) "${thread.protocol_id}", 142e2039142SNeal (nealsid) "${thread.index}", 143e2039142SNeal (nealsid) "${thread.info.*}", 144e2039142SNeal (nealsid) "${thread.queue}", 145e2039142SNeal (nealsid) "${thread.name}", 146e2039142SNeal (nealsid) "${thread.stop-reason}", 147e2039142SNeal (nealsid) "${thread.stop-reason-raw}", 148e2039142SNeal (nealsid) "${thread.return-value}", 149e2039142SNeal (nealsid) "${thread.completed-expression}", 150e2039142SNeal (nealsid) "${target.arch}", 151*06c54bc1SJonas Devlieghere "${target.file.basename}", 152*06c54bc1SJonas Devlieghere "${target.file.dirname}", 153*06c54bc1SJonas Devlieghere "${target.file.fullpath}", 154e2039142SNeal (nealsid) "${var.dummy-var-to-test-wildcard}"}; 155e2039142SNeal (nealsid) 156e2039142SNeal (nealsid) TEST(FormatEntity, LookupAllEntriesInTree) { 157e2039142SNeal (nealsid) for (const llvm::StringRef testString : lookupStrings) { 158e2039142SNeal (nealsid) Entry e; 159e2039142SNeal (nealsid) EXPECT_TRUE(FormatEntity::Parse(testString, e).Success()) 160e2039142SNeal (nealsid) << "Formatting " << testString << " did not succeed"; 161e2039142SNeal (nealsid) } 162e2039142SNeal (nealsid) } 163