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