#include "GlobList.h" #include "gtest/gtest.h" namespace clang { namespace tidy { template struct GlobListTest : public ::testing::Test {}; using GlobListTypes = ::testing::Types; TYPED_TEST_SUITE(GlobListTest, GlobListTypes, ); TYPED_TEST(GlobListTest, Empty) { TypeParam Filter(""); EXPECT_TRUE(Filter.contains("")); EXPECT_FALSE(Filter.contains("aaa")); } TYPED_TEST(GlobListTest, Nothing) { TypeParam Filter("-*"); EXPECT_FALSE(Filter.contains("")); EXPECT_FALSE(Filter.contains("a")); EXPECT_FALSE(Filter.contains("-*")); EXPECT_FALSE(Filter.contains("-")); EXPECT_FALSE(Filter.contains("*")); } TYPED_TEST(GlobListTest, Everything) { TypeParam Filter("*"); EXPECT_TRUE(Filter.contains("")); EXPECT_TRUE(Filter.contains("aaaa")); EXPECT_TRUE(Filter.contains("-*")); EXPECT_TRUE(Filter.contains("-")); EXPECT_TRUE(Filter.contains("*")); } TYPED_TEST(GlobListTest, OneSimplePattern) { TypeParam Filter("aaa"); EXPECT_TRUE(Filter.contains("aaa")); EXPECT_FALSE(Filter.contains("")); EXPECT_FALSE(Filter.contains("aa")); EXPECT_FALSE(Filter.contains("aaaa")); EXPECT_FALSE(Filter.contains("bbb")); } TYPED_TEST(GlobListTest, TwoSimplePatterns) { TypeParam Filter("aaa,bbb"); EXPECT_TRUE(Filter.contains("aaa")); EXPECT_TRUE(Filter.contains("bbb")); EXPECT_FALSE(Filter.contains("")); EXPECT_FALSE(Filter.contains("aa")); EXPECT_FALSE(Filter.contains("aaaa")); EXPECT_FALSE(Filter.contains("bbbb")); } TYPED_TEST(GlobListTest, PatternPriority) { // The last glob that matches the string decides whether that string is // included or excluded. { TypeParam Filter("a*,-aaa"); EXPECT_FALSE(Filter.contains("")); EXPECT_TRUE(Filter.contains("a")); EXPECT_TRUE(Filter.contains("aa")); EXPECT_FALSE(Filter.contains("aaa")); EXPECT_TRUE(Filter.contains("aaaa")); } { TypeParam Filter("-aaa,a*"); EXPECT_FALSE(Filter.contains("")); EXPECT_TRUE(Filter.contains("a")); EXPECT_TRUE(Filter.contains("aa")); EXPECT_TRUE(Filter.contains("aaa")); EXPECT_TRUE(Filter.contains("aaaa")); } } TYPED_TEST(GlobListTest, WhitespacesAtBegin) { TypeParam Filter("-*, a.b.*"); EXPECT_TRUE(Filter.contains("a.b.c")); EXPECT_FALSE(Filter.contains("b.c")); } TYPED_TEST(GlobListTest, Complex) { TypeParam Filter( "*,-a.*, -b.*, \r \n a.1.* ,-a.1.A.*,-..,-...,-..+,-*$, -*qwe* "); EXPECT_TRUE(Filter.contains("aaa")); EXPECT_TRUE(Filter.contains("qqq")); EXPECT_FALSE(Filter.contains("a.")); EXPECT_FALSE(Filter.contains("a.b")); EXPECT_FALSE(Filter.contains("b.")); EXPECT_FALSE(Filter.contains("b.b")); EXPECT_TRUE(Filter.contains("a.1.b")); EXPECT_FALSE(Filter.contains("a.1.A.a")); EXPECT_FALSE(Filter.contains("qwe")); EXPECT_FALSE(Filter.contains("asdfqweasdf")); EXPECT_TRUE(Filter.contains("asdfqwEasdf")); } TYPED_TEST(GlobListTest, NewlineCharactersAsSeparators) { TypeParam Filter("a* \n b,\n-c*,dd"); EXPECT_FALSE(Filter.contains("")); EXPECT_TRUE(Filter.contains("aaa")); EXPECT_TRUE(Filter.contains("b")); EXPECT_FALSE(Filter.contains("c")); EXPECT_FALSE(Filter.contains("ccc")); EXPECT_FALSE(Filter.contains("d")); EXPECT_TRUE(Filter.contains("dd")); EXPECT_FALSE(Filter.contains("ddd")); } } // namespace tidy } // namespace clang