12945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer//===- llvm/unittest/ADT/SmallPtrSetTest.cpp ------------------------------===//
22945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer//
32945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer//                     The LLVM Compiler Infrastructure
42945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer//
52945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer// This file is distributed under the University of Illinois Open Source
62945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer// License. See LICENSE.TXT for details.
72945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer//
82945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer//===----------------------------------------------------------------------===//
92945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer//
102945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer// SmallPtrSet unit tests.
112945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer//
122945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer//===----------------------------------------------------------------------===//
132945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
142945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer#include "gtest/gtest.h"
152945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer#include "llvm/ADT/SmallPtrSet.h"
162945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
172945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramerusing namespace llvm;
182945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
192945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer// SmallPtrSet swapping test.
202945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin KramerTEST(SmallPtrSetTest, SwapTest) {
212945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  int buf[10];
222945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
232945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  SmallPtrSet<int *, 2> a;
242945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  SmallPtrSet<int *, 2> b;
252945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
262945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  a.insert(&buf[0]);
272945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  a.insert(&buf[1]);
282945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  b.insert(&buf[2]);
292945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
302945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  std::swap(a, b);
312945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
322945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_EQ(1U, a.size());
332945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_EQ(2U, b.size());
342945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(a.count(&buf[2]));
352945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[0]));
362945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[1]));
372945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
382945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  b.insert(&buf[3]);
392945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  std::swap(a, b);
402945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
412945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_EQ(3U, a.size());
422945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_EQ(1U, b.size());
432945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(a.count(&buf[0]));
442945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(a.count(&buf[1]));
452945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(a.count(&buf[3]));
462945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[2]));
472945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
482945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  std::swap(a, b);
492945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
502945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_EQ(1U, a.size());
512945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_EQ(3U, b.size());
522945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(a.count(&buf[2]));
532945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[0]));
542945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[1]));
552945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[3]));
562945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
572945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  a.insert(&buf[4]);
582945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  a.insert(&buf[5]);
592945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  a.insert(&buf[6]);
602945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
612945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  std::swap(b, a);
622945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer
632945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_EQ(3U, a.size());
642945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_EQ(4U, b.size());
652945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[2]));
662945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[4]));
672945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[5]));
682945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(b.count(&buf[6]));
692945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(a.count(&buf[0]));
702945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(a.count(&buf[1]));
712945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer  EXPECT_TRUE(a.count(&buf[3]));
722945a32ffd0bf079de1b23db12bc8a0de596a167Benjamin Kramer}
73