1//===- llvm/unittest/ADT/SmallPtrSetTest.cpp ------------------------------===//
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// SmallPtrSet unit tests.
11//
12//===----------------------------------------------------------------------===//
13
14#include "gtest/gtest.h"
15#include "llvm/ADT/SmallPtrSet.h"
16
17using namespace llvm;
18
19// SmallPtrSet swapping test.
20TEST(SmallPtrSetTest, SwapTest) {
21  int buf[10];
22
23  SmallPtrSet<int *, 2> a;
24  SmallPtrSet<int *, 2> b;
25
26  a.insert(&buf[0]);
27  a.insert(&buf[1]);
28  b.insert(&buf[2]);
29
30  std::swap(a, b);
31
32  EXPECT_EQ(1U, a.size());
33  EXPECT_EQ(2U, b.size());
34  EXPECT_TRUE(a.count(&buf[2]));
35  EXPECT_TRUE(b.count(&buf[0]));
36  EXPECT_TRUE(b.count(&buf[1]));
37
38  b.insert(&buf[3]);
39  std::swap(a, b);
40
41  EXPECT_EQ(3U, a.size());
42  EXPECT_EQ(1U, b.size());
43  EXPECT_TRUE(a.count(&buf[0]));
44  EXPECT_TRUE(a.count(&buf[1]));
45  EXPECT_TRUE(a.count(&buf[3]));
46  EXPECT_TRUE(b.count(&buf[2]));
47
48  std::swap(a, b);
49
50  EXPECT_EQ(1U, a.size());
51  EXPECT_EQ(3U, b.size());
52  EXPECT_TRUE(a.count(&buf[2]));
53  EXPECT_TRUE(b.count(&buf[0]));
54  EXPECT_TRUE(b.count(&buf[1]));
55  EXPECT_TRUE(b.count(&buf[3]));
56
57  a.insert(&buf[4]);
58  a.insert(&buf[5]);
59  a.insert(&buf[6]);
60
61  std::swap(b, a);
62
63  EXPECT_EQ(3U, a.size());
64  EXPECT_EQ(4U, b.size());
65  EXPECT_TRUE(b.count(&buf[2]));
66  EXPECT_TRUE(b.count(&buf[4]));
67  EXPECT_TRUE(b.count(&buf[5]));
68  EXPECT_TRUE(b.count(&buf[6]));
69  EXPECT_TRUE(a.count(&buf[0]));
70  EXPECT_TRUE(a.count(&buf[1]));
71  EXPECT_TRUE(a.count(&buf[3]));
72}
73