xref: /llvm-project/lldb/unittests/Core/FormatEntityTest.cpp (revision 06c54bc1a200fd87bbf4b81db70f52159c79f5bf)
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