]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
1 | //===---- ADT/IntEqClassesTest.cpp - IntEqClasses unit tests ----*- C++ -*-===// |
2 | // | |
3 | // The LLVM Compiler Infrastructure | |
4 | // | |
5 | // This file is distributed under the University of Illinois Open Source | |
6 | // License. See LICENSE.TXT for details. | |
7 | // | |
8 | //===----------------------------------------------------------------------===// | |
9 | ||
10 | #include "llvm/ADT/IntEqClasses.h" | |
11 | #include "gtest/gtest.h" | |
12 | ||
13 | using namespace llvm; | |
14 | ||
15 | namespace { | |
16 | ||
17 | TEST(IntEqClasses, Simple) { | |
18 | IntEqClasses ec(10); | |
19 | ||
20 | ec.join(0, 1); | |
21 | ec.join(3, 2); | |
22 | ec.join(4, 5); | |
23 | ec.join(7, 6); | |
24 | ||
25 | EXPECT_EQ(0u, ec.findLeader(0)); | |
26 | EXPECT_EQ(0u, ec.findLeader(1)); | |
27 | EXPECT_EQ(2u, ec.findLeader(2)); | |
28 | EXPECT_EQ(2u, ec.findLeader(3)); | |
29 | EXPECT_EQ(4u, ec.findLeader(4)); | |
30 | EXPECT_EQ(4u, ec.findLeader(5)); | |
31 | EXPECT_EQ(6u, ec.findLeader(6)); | |
32 | EXPECT_EQ(6u, ec.findLeader(7)); | |
33 | EXPECT_EQ(8u, ec.findLeader(8)); | |
34 | EXPECT_EQ(9u, ec.findLeader(9)); | |
35 | ||
36 | // join two non-leaders. | |
37 | ec.join(1, 3); | |
38 | ||
39 | EXPECT_EQ(0u, ec.findLeader(0)); | |
40 | EXPECT_EQ(0u, ec.findLeader(1)); | |
41 | EXPECT_EQ(0u, ec.findLeader(2)); | |
42 | EXPECT_EQ(0u, ec.findLeader(3)); | |
43 | EXPECT_EQ(4u, ec.findLeader(4)); | |
44 | EXPECT_EQ(4u, ec.findLeader(5)); | |
45 | EXPECT_EQ(6u, ec.findLeader(6)); | |
46 | EXPECT_EQ(6u, ec.findLeader(7)); | |
47 | EXPECT_EQ(8u, ec.findLeader(8)); | |
48 | EXPECT_EQ(9u, ec.findLeader(9)); | |
49 | ||
50 | // join two leaders. | |
51 | ec.join(4, 8); | |
52 | ||
53 | EXPECT_EQ(0u, ec.findLeader(0)); | |
54 | EXPECT_EQ(0u, ec.findLeader(1)); | |
55 | EXPECT_EQ(0u, ec.findLeader(2)); | |
56 | EXPECT_EQ(0u, ec.findLeader(3)); | |
57 | EXPECT_EQ(4u, ec.findLeader(4)); | |
58 | EXPECT_EQ(4u, ec.findLeader(5)); | |
59 | EXPECT_EQ(6u, ec.findLeader(6)); | |
60 | EXPECT_EQ(6u, ec.findLeader(7)); | |
61 | EXPECT_EQ(4u, ec.findLeader(8)); | |
62 | EXPECT_EQ(9u, ec.findLeader(9)); | |
63 | ||
64 | // join mixed. | |
65 | ec.join(9, 1); | |
66 | ||
67 | EXPECT_EQ(0u, ec.findLeader(0)); | |
68 | EXPECT_EQ(0u, ec.findLeader(1)); | |
69 | EXPECT_EQ(0u, ec.findLeader(2)); | |
70 | EXPECT_EQ(0u, ec.findLeader(3)); | |
71 | EXPECT_EQ(4u, ec.findLeader(4)); | |
72 | EXPECT_EQ(4u, ec.findLeader(5)); | |
73 | EXPECT_EQ(6u, ec.findLeader(6)); | |
74 | EXPECT_EQ(6u, ec.findLeader(7)); | |
75 | EXPECT_EQ(4u, ec.findLeader(8)); | |
76 | EXPECT_EQ(0u, ec.findLeader(9)); | |
77 | ||
78 | // compressed map. | |
79 | ec.compress(); | |
80 | EXPECT_EQ(3u, ec.getNumClasses()); | |
81 | ||
82 | EXPECT_EQ(0u, ec[0]); | |
83 | EXPECT_EQ(0u, ec[1]); | |
84 | EXPECT_EQ(0u, ec[2]); | |
85 | EXPECT_EQ(0u, ec[3]); | |
86 | EXPECT_EQ(1u, ec[4]); | |
87 | EXPECT_EQ(1u, ec[5]); | |
88 | EXPECT_EQ(2u, ec[6]); | |
89 | EXPECT_EQ(2u, ec[7]); | |
90 | EXPECT_EQ(1u, ec[8]); | |
91 | EXPECT_EQ(0u, ec[9]); | |
92 | ||
93 | // uncompressed map. | |
94 | ec.uncompress(); | |
95 | EXPECT_EQ(0u, ec.findLeader(0)); | |
96 | EXPECT_EQ(0u, ec.findLeader(1)); | |
97 | EXPECT_EQ(0u, ec.findLeader(2)); | |
98 | EXPECT_EQ(0u, ec.findLeader(3)); | |
99 | EXPECT_EQ(4u, ec.findLeader(4)); | |
100 | EXPECT_EQ(4u, ec.findLeader(5)); | |
101 | EXPECT_EQ(6u, ec.findLeader(6)); | |
102 | EXPECT_EQ(6u, ec.findLeader(7)); | |
103 | EXPECT_EQ(4u, ec.findLeader(8)); | |
104 | EXPECT_EQ(0u, ec.findLeader(9)); | |
105 | } | |
106 | ||
107 | } // end anonymous namespace |