xref: /llvm-project/llvm/unittests/ProfileData/BPFunctionNodeTest.cpp (revision 1794532bb942bac9b82b6817e349210b6aafaaa9)
1*1794532bSEllis Hoag //===- BPFunctionNodeTest.cpp - BPFunctionNode tests ----------------------===//
2*1794532bSEllis Hoag //
3*1794532bSEllis Hoag // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*1794532bSEllis Hoag // See https://llvm.org/LICENSE.txt for license information.
5*1794532bSEllis Hoag // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*1794532bSEllis Hoag //
7*1794532bSEllis Hoag //===----------------------------------------------------------------------===//
8*1794532bSEllis Hoag 
9*1794532bSEllis Hoag #include "llvm/ProfileData/InstrProf.h"
10*1794532bSEllis Hoag #include "llvm/Support/BalancedPartitioning.h"
11*1794532bSEllis Hoag #include "llvm/Testing/Support/SupportHelpers.h"
12*1794532bSEllis Hoag #include "gmock/gmock.h"
13*1794532bSEllis Hoag #include "gtest/gtest.h"
14*1794532bSEllis Hoag 
15*1794532bSEllis Hoag using testing::Field;
16*1794532bSEllis Hoag using testing::UnorderedElementsAre;
17*1794532bSEllis Hoag using testing::UnorderedElementsAreArray;
18*1794532bSEllis Hoag 
19*1794532bSEllis Hoag namespace llvm {
20*1794532bSEllis Hoag 
21*1794532bSEllis Hoag void PrintTo(const BPFunctionNode &Node, std::ostream *OS) {
22*1794532bSEllis Hoag   raw_os_ostream ROS(*OS);
23*1794532bSEllis Hoag   Node.dump(ROS);
24*1794532bSEllis Hoag }
25*1794532bSEllis Hoag 
26*1794532bSEllis Hoag TEST(BPFunctionNodeTest, Basic) {
27*1794532bSEllis Hoag   auto Nodes = TemporalProfTraceTy::createBPFunctionNodes({
28*1794532bSEllis Hoag       TemporalProfTraceTy({0, 1, 2, 3, 4}),
29*1794532bSEllis Hoag       TemporalProfTraceTy({4, 2}),
30*1794532bSEllis Hoag   });
31*1794532bSEllis Hoag 
32*1794532bSEllis Hoag   auto NodeIs = [](BPFunctionNode::IDT Id,
33*1794532bSEllis Hoag                    ArrayRef<BPFunctionNode::UtilityNodeT> UNs) {
34*1794532bSEllis Hoag     return AllOf(Field("Id", &BPFunctionNode::Id, Id),
35*1794532bSEllis Hoag                  Field("UtilityNodes", &BPFunctionNode::UtilityNodes,
36*1794532bSEllis Hoag                        UnorderedElementsAreArray(UNs)));
37*1794532bSEllis Hoag   };
38*1794532bSEllis Hoag 
39*1794532bSEllis Hoag   EXPECT_THAT(Nodes,
40*1794532bSEllis Hoag               UnorderedElementsAre(NodeIs(0, {0, 1, 2}), NodeIs(1, {1, 2}),
41*1794532bSEllis Hoag                                    NodeIs(2, {1, 2, 4, 5}), NodeIs(3, {2}),
42*1794532bSEllis Hoag                                    NodeIs(4, {2, 3, 4, 5})));
43*1794532bSEllis Hoag }
44*1794532bSEllis Hoag 
45*1794532bSEllis Hoag } // end namespace llvm
46