llvm-project/llvm/unittests/ADT/StringSetTest.cpp
serge-sans-paille 5f290c090a Move STLFunctionalExtras out of STLExtras
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
2022-01-24 14:13:21 +01:00

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