mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 16:17:17 +00:00
SmallPtrSet: Provide a more efficient implementation of swap than the default triple-copy std::swap.
This currently assumes that both sets have the same SmallSize to keep the implementation simple, a limitation that can be lifted if someone cares. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152143 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
72
unittests/ADT/SmallPtrSetTest.cpp
Normal file
72
unittests/ADT/SmallPtrSetTest.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
//===- llvm/unittest/ADT/SmallPtrSetTest.cpp ------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// SmallPtrSet unit tests.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
// SmallPtrSet swapping test.
|
||||
TEST(SmallPtrSetTest, SwapTest) {
|
||||
int buf[10];
|
||||
|
||||
SmallPtrSet<int *, 2> a;
|
||||
SmallPtrSet<int *, 2> b;
|
||||
|
||||
a.insert(&buf[0]);
|
||||
a.insert(&buf[1]);
|
||||
b.insert(&buf[2]);
|
||||
|
||||
std::swap(a, b);
|
||||
|
||||
EXPECT_EQ(1U, a.size());
|
||||
EXPECT_EQ(2U, b.size());
|
||||
EXPECT_TRUE(a.count(&buf[2]));
|
||||
EXPECT_TRUE(b.count(&buf[0]));
|
||||
EXPECT_TRUE(b.count(&buf[1]));
|
||||
|
||||
b.insert(&buf[3]);
|
||||
std::swap(a, b);
|
||||
|
||||
EXPECT_EQ(3U, a.size());
|
||||
EXPECT_EQ(1U, b.size());
|
||||
EXPECT_TRUE(a.count(&buf[0]));
|
||||
EXPECT_TRUE(a.count(&buf[1]));
|
||||
EXPECT_TRUE(a.count(&buf[3]));
|
||||
EXPECT_TRUE(b.count(&buf[2]));
|
||||
|
||||
std::swap(a, b);
|
||||
|
||||
EXPECT_EQ(1U, a.size());
|
||||
EXPECT_EQ(3U, b.size());
|
||||
EXPECT_TRUE(a.count(&buf[2]));
|
||||
EXPECT_TRUE(b.count(&buf[0]));
|
||||
EXPECT_TRUE(b.count(&buf[1]));
|
||||
EXPECT_TRUE(b.count(&buf[3]));
|
||||
|
||||
a.insert(&buf[4]);
|
||||
a.insert(&buf[5]);
|
||||
a.insert(&buf[6]);
|
||||
|
||||
std::swap(b, a);
|
||||
|
||||
EXPECT_EQ(3U, a.size());
|
||||
EXPECT_EQ(4U, b.size());
|
||||
EXPECT_TRUE(b.count(&buf[2]));
|
||||
EXPECT_TRUE(b.count(&buf[4]));
|
||||
EXPECT_TRUE(b.count(&buf[5]));
|
||||
EXPECT_TRUE(b.count(&buf[6]));
|
||||
EXPECT_TRUE(a.count(&buf[0]));
|
||||
EXPECT_TRUE(a.count(&buf[1]));
|
||||
EXPECT_TRUE(a.count(&buf[3]));
|
||||
}
|
Reference in New Issue
Block a user