11794532bSEllis Hoag //===- BPFunctionNodeTest.cpp - BPFunctionNode tests ----------------------===// 21794532bSEllis Hoag // 31794532bSEllis Hoag // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41794532bSEllis Hoag // See https://llvm.org/LICENSE.txt for license information. 51794532bSEllis Hoag // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61794532bSEllis Hoag // 71794532bSEllis Hoag //===----------------------------------------------------------------------===// 81794532bSEllis Hoag 91794532bSEllis Hoag #include "llvm/ProfileData/InstrProf.h" 101794532bSEllis Hoag #include "llvm/Support/BalancedPartitioning.h" 111794532bSEllis Hoag #include "llvm/Testing/Support/SupportHelpers.h" 121794532bSEllis Hoag #include "gmock/gmock.h" 131794532bSEllis Hoag #include "gtest/gtest.h" 141794532bSEllis Hoag 151794532bSEllis Hoag using testing::Field; 161794532bSEllis Hoag using testing::UnorderedElementsAre; 17*30aa9fb4Sspupyrev using testing::UnorderedElementsAreArray; 181794532bSEllis Hoag 191794532bSEllis Hoag namespace llvm { 201794532bSEllis Hoag 211794532bSEllis Hoag void PrintTo(const BPFunctionNode &Node, std::ostream *OS) { 221794532bSEllis Hoag raw_os_ostream ROS(*OS); 231794532bSEllis Hoag Node.dump(ROS); 241794532bSEllis Hoag } 251794532bSEllis Hoag 261794532bSEllis Hoag TEST(BPFunctionNodeTest, Basic) { 271794532bSEllis Hoag auto NodeIs = [](BPFunctionNode::IDT Id, 28*30aa9fb4Sspupyrev ArrayRef<BPFunctionNode::UtilityNodeT> UNs) { 29*30aa9fb4Sspupyrev return AllOf(Field("Id", &BPFunctionNode::Id, Id), 30*30aa9fb4Sspupyrev Field("UtilityNodes", &BPFunctionNode::UtilityNodes, 31*30aa9fb4Sspupyrev UnorderedElementsAreArray(UNs))); 321794532bSEllis Hoag }; 331794532bSEllis Hoag 340c6dc805SFangrui Song auto Nodes = TemporalProfTraceTy::createBPFunctionNodes({ 350c6dc805SFangrui Song TemporalProfTraceTy({0, 1, 2, 3}), 360c6dc805SFangrui Song }); 37*30aa9fb4Sspupyrev EXPECT_THAT(Nodes, 38*30aa9fb4Sspupyrev UnorderedElementsAre(NodeIs(0, {0, 1, 2}), NodeIs(1, {1, 2}), 39*30aa9fb4Sspupyrev NodeIs(2, {1, 2}), NodeIs(3, {2}))); 400c6dc805SFangrui Song 410c6dc805SFangrui Song Nodes = TemporalProfTraceTy::createBPFunctionNodes({ 420c6dc805SFangrui Song TemporalProfTraceTy({0, 1, 2, 3, 4}), 430c6dc805SFangrui Song TemporalProfTraceTy({4, 2}), 440c6dc805SFangrui Song }); 450c6dc805SFangrui Song 46*30aa9fb4Sspupyrev EXPECT_THAT(Nodes, 47*30aa9fb4Sspupyrev UnorderedElementsAre(NodeIs(0, {0, 1, 2}), NodeIs(1, {1, 2}), 48*30aa9fb4Sspupyrev NodeIs(2, {1, 2, 4, 5}), NodeIs(3, {2}), 49*30aa9fb4Sspupyrev NodeIs(4, {2, 3, 4, 5}))); 501794532bSEllis Hoag } 511794532bSEllis Hoag 521794532bSEllis Hoag } // end namespace llvm 53