annotate unittests/ADT/BreadthFirstIteratorTest.cpp @ 148:63bd29f05246

merged
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 14 Aug 2019 19:46:37 +0900
parents c2174574ed3a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
121
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1 //=== llvm/unittest/ADT/BreadthFirstIteratorTest.cpp - BFS iterator tests -===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
2 //
147
c2174574ed3a LLVM 10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
c2174574ed3a LLVM 10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
c2174574ed3a LLVM 10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
121
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
6 //
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
8
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
9 #include "llvm/ADT/BreadthFirstIterator.h"
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
10 #include "TestGraph.h"
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
11 #include "gtest/gtest.h"
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
12
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
13 using namespace llvm;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
14
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
15 namespace llvm {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
16
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
17 TEST(BreadthFristIteratorTest, Basic) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
18 typedef bf_iterator<Graph<4>> BFIter;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
19
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
20 Graph<4> G;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
21 G.AddEdge(0, 1);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
22 G.AddEdge(0, 2);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
23 G.AddEdge(1, 3);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
25 auto It = BFIter::begin(G);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
26 auto End = BFIter::end(G);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
27 EXPECT_EQ(It.getLevel(), 0U);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
28 EXPECT_EQ(*It, G.AccessNode(0));
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
29 ++It;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
30 EXPECT_EQ(It.getLevel(), 1U);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
31 EXPECT_EQ(*It, G.AccessNode(1));
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
32 ++It;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
33 EXPECT_EQ(It.getLevel(), 1U);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
34 EXPECT_EQ(*It, G.AccessNode(2));
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
35 ++It;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
36 EXPECT_EQ(It.getLevel(), 2U);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
37 EXPECT_EQ(*It, G.AccessNode(3));
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
38 ++It;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
39 EXPECT_EQ(It, End);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
40 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
41
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
42 TEST(BreadthFristIteratorTest, Cycle) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
43 typedef bf_iterator<Graph<4>> BFIter;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
44
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
45 Graph<4> G;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
46 G.AddEdge(0, 1);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
47 G.AddEdge(1, 0);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
48 G.AddEdge(1, 2);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
49 G.AddEdge(2, 1);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
50 G.AddEdge(2, 1);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
51 G.AddEdge(2, 3);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
52 G.AddEdge(3, 2);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
53 G.AddEdge(3, 1);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
54 G.AddEdge(3, 0);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
55
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
56 auto It = BFIter::begin(G);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
57 auto End = BFIter::end(G);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
58 EXPECT_EQ(It.getLevel(), 0U);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
59 EXPECT_EQ(*It, G.AccessNode(0));
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
60 ++It;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
61 EXPECT_EQ(It.getLevel(), 1U);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
62 EXPECT_EQ(*It, G.AccessNode(1));
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
63 ++It;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
64 EXPECT_EQ(It.getLevel(), 2U);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
65 EXPECT_EQ(*It, G.AccessNode(2));
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
66 ++It;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
67 EXPECT_EQ(It.getLevel(), 3U);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
68 EXPECT_EQ(*It, G.AccessNode(3));
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
69 ++It;
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
70 EXPECT_EQ(It, End);
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
71 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
72
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
73 } // end namespace llvm