Index: src/libchcore/Tests/TestsTStringPattern.cpp =================================================================== diff -u -N -r3401d5079f33b29a7783b65bfad5f34d89a33ba5 -r6d90b96005710c802d5f141b69528e9e87a380c9 --- src/libchcore/Tests/TestsTStringPattern.cpp (.../TestsTStringPattern.cpp) (revision 3401d5079f33b29a7783b65bfad5f34d89a33ba5) +++ src/libchcore/Tests/TestsTStringPattern.cpp (.../TestsTStringPattern.cpp) (revision 6d90b96005710c802d5f141b69528e9e87a380c9) @@ -10,105 +10,175 @@ TStringPattern patternEmpty; EXPECT_STREQ(L"", patternEmpty.ToString().c_str()); EXPECT_STREQ(L"", patternEmpty.GetPattern().c_str()); - EXPECT_EQ(TStringPattern::EPatternType::eType_Wildcard, patternEmpty.GetPatternType()); + EXPECT_EQ(TStringPattern::EPatternType::eType_FilenameWildcard, patternEmpty.GetPatternType()); } TEST(TestsTStringPattern, PatternConstruction) { - TStringPattern patternEmpty(L"*.*", TStringPattern::EPatternType::eType_Wildcard); + TStringPattern patternEmpty(L"*.*", TStringPattern::EPatternType::eType_FilenameWildcard); EXPECT_STREQ(L"*.*", patternEmpty.ToString().c_str()); EXPECT_STREQ(L"*.*", patternEmpty.GetPattern().c_str()); - EXPECT_EQ(TStringPattern::EPatternType::eType_Wildcard, patternEmpty.GetPatternType()); + EXPECT_EQ(TStringPattern::EPatternType::eType_FilenameWildcard, patternEmpty.GetPatternType()); } TEST(TestsTStringPattern, SetPattern) { - TStringPattern patternEmpty(L"*.*", TStringPattern::EPatternType::eType_Wildcard); + TStringPattern patternEmpty(L"*.*", TStringPattern::EPatternType::eType_FilenameWildcard); - patternEmpty.SetPattern(L"*.bat", TStringPattern::EPatternType::eType_Wildcard); + patternEmpty.SetPattern(L"*.bat", TStringPattern::EPatternType::eType_FilenameWildcard); EXPECT_STREQ(L"*.bat", patternEmpty.ToString().c_str()); EXPECT_STREQ(L"*.bat", patternEmpty.GetPattern().c_str()); - EXPECT_EQ(TStringPattern::EPatternType::eType_Wildcard, patternEmpty.GetPatternType()); + EXPECT_EQ(TStringPattern::EPatternType::eType_FilenameWildcard, patternEmpty.GetPatternType()); } TEST(TestsTStringPattern, CreateFromSerializedString) { - TStringPattern patternEmpty = TStringPattern::CreateFromString(L"WC;*.*"); + TStringPattern patternEmpty = TStringPattern::CreateFromString(L"file:*.*"); EXPECT_STREQ(L"*.*", patternEmpty.ToString().c_str()); EXPECT_STREQ(L"*.*", patternEmpty.GetPattern().c_str()); - EXPECT_EQ(TStringPattern::EPatternType::eType_Wildcard, patternEmpty.GetPatternType()); + EXPECT_EQ(TStringPattern::EPatternType::eType_FilenameWildcard, patternEmpty.GetPatternType()); } TEST(TestsTStringPattern, FromStringString) { TStringPattern patternEmpty; - patternEmpty.FromString(L"WC;*.*"); + patternEmpty.FromString(L"file:*.*"); - EXPECT_STREQ(L"*.*", patternEmpty.ToString().c_str()); + EXPECT_EQ(TStringPattern::EPatternType::eType_FilenameWildcard, patternEmpty.GetPatternType()); EXPECT_STREQ(L"*.*", patternEmpty.GetPattern().c_str()); - EXPECT_EQ(TStringPattern::EPatternType::eType_Wildcard, patternEmpty.GetPatternType()); + EXPECT_STREQ(L"*.*", patternEmpty.ToString().c_str()); } +TEST(TestsTStringPattern, Matches_DoubleWildcard) +{ + TStringPattern patternEmpty(L"*.*", TStringPattern::EPatternType::eType_FilenameWildcard); + + EXPECT_TRUE(patternEmpty.Matches(PathFromString(L"autorun"))); + EXPECT_TRUE(patternEmpty.Matches(PathFromString(L"autorun.txt"))); +} + +TEST(TestsTStringPattern, Matches_SingleWildcard) +{ + TStringPattern patternEmpty(L"*", TStringPattern::EPatternType::eType_FilenameWildcard); + + EXPECT_TRUE(patternEmpty.Matches(PathFromString(L"autorun"))); + EXPECT_TRUE(patternEmpty.Matches(PathFromString(L"autorun.txt"))); +} + TEST(TestsTStringPattern, Matches_Positive_StarDotBat) { - TStringPattern patternEmpty(L"*.bat", TStringPattern::EPatternType::eType_Wildcard); + TStringPattern patternEmpty(L"*.bat", TStringPattern::EPatternType::eType_FilenameWildcard); EXPECT_TRUE(patternEmpty.Matches(PathFromString(L"autorun.bat"))); } TEST(TestsTStringPattern, Matches_Negative_StarDotBat) { - TStringPattern patternEmpty(L"*.bat", TStringPattern::EPatternType::eType_Wildcard); + TStringPattern patternEmpty(L"*.bat", TStringPattern::EPatternType::eType_FilenameWildcard); EXPECT_FALSE(patternEmpty.Matches(PathFromString(L"autorun.batx"))); } TEST(TestsTStringPattern, Matches_Positive_StarDotStar) { - TStringPattern patternEmpty(L"*.*", TStringPattern::EPatternType::eType_Wildcard); + TStringPattern patternEmpty(L"*.*", TStringPattern::EPatternType::eType_FilenameWildcard); EXPECT_TRUE(patternEmpty.Matches(PathFromString(L"autorun.bat"))); } -TEST(TestsTStringPattern, Matches_Negative_StarDotStar) -{ - TStringPattern patternEmpty(L"*.*", TStringPattern::EPatternType::eType_Wildcard); - - EXPECT_FALSE(patternEmpty.Matches(PathFromString(L"autorun"))); -} - /////////////////////////////////////////////////////////// // Multiple asterisks TEST(TestsTStringPattern, Matches_Positive_MultiStar) { - TStringPattern patternEmpty(L"ad*bo*", TStringPattern::EPatternType::eType_Wildcard); + TStringPattern patternEmpty(L"ad*bo*", TStringPattern::EPatternType::eType_FilenameWildcard); EXPECT_TRUE(patternEmpty.Matches(PathFromString(L"addon-boo.bat"))); } TEST(TestsTStringPattern, Matches_Negative_MultiStar) { - TStringPattern patternEmpty(L"ad*bo*", TStringPattern::EPatternType::eType_Wildcard); + TStringPattern patternEmpty(L"ad*bo*", TStringPattern::EPatternType::eType_FilenameWildcard); EXPECT_FALSE(patternEmpty.Matches(PathFromString(L"addon-doo.bat"))); } //////////////////////////////////////////////////////////// // asterisks - TEST(TestsTStringPattern, Matches_Positive_QuestionMultiPos) { - TStringPattern patternEmpty(L"a??b?r", TStringPattern::EPatternType::eType_Wildcard); + TStringPattern patternEmpty(L"a??b?r", TStringPattern::EPatternType::eType_FilenameWildcard); EXPECT_TRUE(patternEmpty.Matches(PathFromString(L"arbbar"))); } TEST(TestsTStringPattern, Matches_Negative_QuestionMultiPos) { - TStringPattern patternEmpty(L"a??b?r", TStringPattern::EPatternType::eType_Wildcard); + TStringPattern patternEmpty(L"a??b?r", TStringPattern::EPatternType::eType_FilenameWildcard); EXPECT_FALSE(patternEmpty.Matches(PathFromString(L"arbxar"))); } + +// full path matching +TEST(TestsTStringPattern, FullPath_MatchFilename) +{ + TStringPattern patternEmpty(L"a??b?r", TStringPattern::EPatternType::eType_FilenameWildcard); + + EXPECT_TRUE(patternEmpty.Matches(PathFromString(LR"(c:\windows\arbbar)"))); +} + +TEST(TestsTStringPattern, FullPath_NotMatchWholePath) +{ + TStringPattern patternEmpty(L"a??b?r", TStringPattern::EPatternType::eType_FullPathWildcard); + + EXPECT_FALSE(patternEmpty.Matches(PathFromString(LR"(c:\windows\arbbar)"))); +} + +TEST(TestsTStringPattern, FullPath_MatchWholePath) +{ + TStringPattern patternEmpty(L"*a??b?r", TStringPattern::EPatternType::eType_FullPathWildcard); + + EXPECT_TRUE(patternEmpty.Matches(PathFromString(LR"(c:\windows\arbbar)"))); +} + +TEST(TestsTStringPattern, FullPath_MatchComplexPattern) +{ + TStringPattern patternEmpty(LR"(c:\*\a??b?r)", TStringPattern::EPatternType::eType_FullPathWildcard); + + EXPECT_TRUE(patternEmpty.Matches(PathFromString(LR"(c:\windows\arbbar)"))); +} + +// auto-detection +TEST(TestsTStringPattern, FullPath_DetectWildcard) +{ + TStringPattern patternEmpty(L"file:a??b?r"); + + EXPECT_TRUE(patternEmpty.Matches(PathFromString(LR"(c:\windows\arbbar)"))); +} + +TEST(TestsTStringPattern, FullPath_DetectFullPathWildcard) +{ + TStringPattern patternEmpty(L"path:a??b?r"); + + EXPECT_FALSE(patternEmpty.Matches(PathFromString(LR"(c:\windows\arbbar)"))); +} + +/////////////////////////////////////////////// +// regex + +// auto-detection +TEST(TestsTStringPattern, RegexFullPath_DetectWildcard) +{ + TStringPattern patternEmpty(L"rfile:ar[bar]+"); + + EXPECT_TRUE(patternEmpty.Matches(PathFromString(LR"(c:\windows\arbbar)"))); +} + +TEST(TestsTStringPattern, RegexFullPath_DetectFullPathWildcard) +{ + TStringPattern patternEmpty(L"rpath:c:\\\\[a-z]+\\\\a[bar]*"); + + EXPECT_TRUE(patternEmpty.Matches(PathFromString(LR"(c:\windows\arbbar)"))); +}