Jlm
StructuralNodeTests.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2023 Nico Reißmann <nico.reissmann@gmail.com>
3  * See COPYING for terms of redistribution.
4  */
5 
6 #include <gtest/gtest.h>
7 
8 #include <jlm/rvsdg/graph.hpp>
10 #include <jlm/rvsdg/TestType.hpp>
11 
12 #include <cassert>
13 
14 TEST(StructuralNodeTests, TestOutputRemoval)
15 {
16  using namespace jlm;
17 
18  // Arrange
19  rvsdg::Graph rvsdg;
20  auto valueType = rvsdg::TestType::createValueType();
21 
22  auto structuralNode = rvsdg::TestStructuralNode::create(&rvsdg.GetRootRegion(), 1);
23  auto & output0 = structuralNode->addOutputOnly(valueType);
24  auto & output1 = structuralNode->addOutputOnly(valueType);
25  auto & output2 = structuralNode->addOutputOnly(valueType);
26  auto & output3 = structuralNode->addOutputOnly(valueType);
27  auto & output4 = structuralNode->addOutputOnly(valueType);
28 
29  // Act & Assert
30  EXPECT_EQ(structuralNode->noutputs(), 5u);
31  EXPECT_EQ(output0.index(), 0u);
32  EXPECT_EQ(output1.index(), 1u);
33  EXPECT_EQ(output2.index(), 2u);
34  EXPECT_EQ(output3.index(), 3u);
35  EXPECT_EQ(output4.index(), 4u);
36 
37  structuralNode->removeOutputAndResults(2);
38  EXPECT_EQ(structuralNode->noutputs(), 4u);
39  EXPECT_EQ(output0.index(), 0u);
40  EXPECT_EQ(output1.index(), 1u);
41  EXPECT_EQ(output3.index(), 2u);
42  EXPECT_EQ(output4.index(), 3u);
43 
44  structuralNode->removeOutputAndResults(3);
45  EXPECT_EQ(structuralNode->noutputs(), 3u);
46  EXPECT_EQ(output0.index(), 0u);
47  EXPECT_EQ(output1.index(), 1u);
48  EXPECT_EQ(output3.index(), 2u);
49 }
TEST(StructuralNodeTests, TestOutputRemoval)
Region & GetRootRegion() const noexcept
Definition: graph.hpp:99
static TestStructuralNode * create(Region *parent, const size_t numSubregions)
Definition: TestNodes.hpp:152
static std::shared_ptr< const TestType > createValueType()
Definition: TestType.cpp:67