//===- 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 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 *Element = StringMapEntry::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