| //===-- OperandGraphTest.cpp ------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "OperandGraph.h" |
| #include "gmock/gmock.h" |
| #include "gtest/gtest.h" |
| |
| using testing::ElementsAre; |
| using testing::IsEmpty; |
| using testing::Not; |
| |
| namespace exegesis { |
| namespace graph { |
| namespace { |
| |
| static const auto In = Node::In(); |
| static const auto Out = Node::Out(); |
| |
| TEST(OperandGraphTest, NoPath) { |
| Graph TheGraph; |
| EXPECT_THAT(TheGraph.getPathFrom(In, Out), IsEmpty()); |
| } |
| |
| TEST(OperandGraphTest, Connecting) { |
| Graph TheGraph; |
| TheGraph.connect(In, Out); |
| EXPECT_THAT(TheGraph.getPathFrom(In, Out), Not(IsEmpty())); |
| EXPECT_THAT(TheGraph.getPathFrom(In, Out), ElementsAre(In, Out)); |
| } |
| |
| TEST(OperandGraphTest, ConnectingThroughVariable) { |
| const Node Var = Node::Var(1); |
| Graph TheGraph; |
| TheGraph.connect(In, Var); |
| TheGraph.connect(Var, Out); |
| EXPECT_THAT(TheGraph.getPathFrom(In, Out), Not(IsEmpty())); |
| EXPECT_THAT(TheGraph.getPathFrom(In, Out), ElementsAre(In, Var, Out)); |
| } |
| |
| } // namespace |
| } // namespace graph |
| } // namespace exegesis |