Only using that change in StringRef already decreases the number of preoprocessed lines from 7837621 to 7776151 for LLVMSupport Perhaps more interestingly, it shows that many files were relying on the inclusion of StringRef.h to have the declaration from STLExtras.h. This patch tries hard to patch relevant part of llvm-project impacted by this hidden dependency removal. Potential impact: - "llvm/ADT/StringRef.h" no longer includes <memory>, "llvm/ADT/Optional.h" nor "llvm/ADT/STLExtras.h" Related Discourse thread: https://llvm.discourse.group/t/include-what-you-use-include-cleanup/5831
77 lines
2.0 KiB
C++
77 lines
2.0 KiB
C++
//===- llvm/unittest/ADT/StringSetTest.cpp - StringSet unit tests ---------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/ADT/StringSet.h"
|
|
#include "llvm/ADT/STLExtras.h"
|
|
#include "gtest/gtest.h"
|
|
using namespace llvm;
|
|
|
|
namespace {
|
|
|
|
// Test fixture
|
|
class StringSetTest : public testing::Test {};
|
|
|
|
TEST_F(StringSetTest, IterSetKeys) {
|
|
StringSet<> Set;
|
|
Set.insert("A");
|
|
Set.insert("B");
|
|
Set.insert("C");
|
|
Set.insert("D");
|
|
|
|
auto Keys = to_vector<4>(Set.keys());
|
|
llvm::sort(Keys);
|
|
|
|
SmallVector<StringRef, 4> Expected = {"A", "B", "C", "D"};
|
|
EXPECT_EQ(Expected, Keys);
|
|
}
|
|
|
|
TEST_F(StringSetTest, InsertAndCountStringMapEntry) {
|
|
// Test insert(StringMapEntry) and count(StringMapEntry)
|
|
// which are required for set_difference(StringSet, StringSet).
|
|
StringSet<> Set;
|
|
StringMapEntry<StringRef> *Element =
|
|
StringMapEntry<StringRef>::Create("A", Set.getAllocator());
|
|
Set.insert(*Element);
|
|
size_t Count = Set.count(*Element);
|
|
size_t Expected = 1;
|
|
EXPECT_EQ(Expected, Count);
|
|
Element->Destroy(Set.getAllocator());
|
|
}
|
|
|
|
TEST_F(StringSetTest, EmptyString) {
|
|
// Verify that the empty string can by successfully inserted
|
|
StringSet<> Set;
|
|
size_t Count = Set.count("");
|
|
EXPECT_EQ(Count, 0UL);
|
|
|
|
Set.insert("");
|
|
Count = Set.count("");
|
|
EXPECT_EQ(Count, 1UL);
|
|
}
|
|
|
|
TEST_F(StringSetTest, Contains) {
|
|
StringSet<> Set;
|
|
EXPECT_FALSE(Set.contains(""));
|
|
EXPECT_FALSE(Set.contains("test"));
|
|
|
|
Set.insert("");
|
|
Set.insert("test");
|
|
EXPECT_TRUE(Set.contains(""));
|
|
EXPECT_TRUE(Set.contains("test"));
|
|
|
|
Set.insert("test");
|
|
EXPECT_TRUE(Set.contains(""));
|
|
EXPECT_TRUE(Set.contains("test"));
|
|
|
|
Set.erase("test");
|
|
EXPECT_TRUE(Set.contains(""));
|
|
EXPECT_FALSE(Set.contains("test"));
|
|
}
|
|
|
|
} // end anonymous namespace
|