-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTestFnMatch.cpp
129 lines (115 loc) · 3.79 KB
/
TestFnMatch.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "FnMatch.h"
#include "gtest/gtest.h"
TEST(CFnMatch, MatchEmpty)
{
CFnMatch match;
const char* const pattern = "";
EXPECT_TRUE(match.Match("", pattern));
EXPECT_FALSE(match.Match("a", pattern));
}
TEST(CFnMatch, MatchText)
{
CFnMatch match;
const char* const pattern = "abc";
EXPECT_FALSE(match.Match("", pattern));
EXPECT_FALSE(match.Match("a", pattern));
EXPECT_FALSE(match.Match("cba, pattern", pattern));
EXPECT_TRUE(match.Match("abc", pattern));
EXPECT_FALSE(match.Match("pre abc post", pattern));
}
TEST(CFnMatch, MatchQuestionMark1)
{
CFnMatch match;
const char* const pattern = "?";
EXPECT_FALSE(match.Match("", pattern));
EXPECT_TRUE(match.Match("a", pattern));
EXPECT_TRUE(match.Match("?", pattern));
EXPECT_TRUE(match.Match("*", pattern));
EXPECT_FALSE(match.Match("abc", pattern));
}
TEST(CFnMatch, MatchQuestionMark2)
{
CFnMatch match;
const char* const pattern = "ab??cd";
EXPECT_FALSE(match.Match("", pattern));
EXPECT_FALSE(match.Match("abcd", pattern));
EXPECT_FALSE(match.Match("abXcd", pattern));
EXPECT_TRUE(match.Match("ab??cd", pattern));
EXPECT_TRUE(match.Match("abXYcd", pattern));
EXPECT_FALSE(match.Match("abXYZcd", pattern));
}
TEST(CFnMatch, MatchAsterisk1)
{
CFnMatch match;
const char* const pattern = "*";
EXPECT_TRUE(match.Match("", pattern));
EXPECT_TRUE(match.Match("a", pattern));
EXPECT_TRUE(match.Match("abc", pattern));
EXPECT_TRUE(match.Match("?", pattern));
EXPECT_TRUE(match.Match("???", pattern));
EXPECT_TRUE(match.Match("*", pattern));
EXPECT_TRUE(match.Match("***", pattern));
}
TEST(CFnMatch, MatchAsterisk1Prefix)
{
CFnMatch match;
const char* const pattern = "a*";
EXPECT_FALSE(match.Match("", pattern));
EXPECT_TRUE(match.Match("a", pattern));
EXPECT_TRUE(match.Match("abc", pattern));
EXPECT_FALSE(match.Match("Xa", pattern));
EXPECT_FALSE(match.Match("Xabc", pattern));
EXPECT_FALSE(match.Match("**", pattern));
EXPECT_FALSE(match.Match("?*", pattern));
}
TEST(CFnMatch, MatchAsterisk1Postfix)
{
CFnMatch match;
const char* const pattern = "*a";
EXPECT_FALSE(match.Match("", pattern));
EXPECT_TRUE(match.Match("a", pattern));
EXPECT_TRUE(match.Match("cba", pattern));
EXPECT_FALSE(match.Match("aX", pattern));
EXPECT_FALSE(match.Match("cbaX", pattern));
EXPECT_FALSE(match.Match("**", pattern));
EXPECT_FALSE(match.Match("*?", pattern));
}
TEST(CFnMatch, MatchAsterisk1Inside)
{
CFnMatch match;
const char* const pattern = "ab*cd";
EXPECT_FALSE(match.Match("", pattern));
EXPECT_FALSE(match.Match("<abcd>", pattern));
EXPECT_TRUE(match.Match("abcd", pattern));
EXPECT_TRUE(match.Match("abXYXcd", pattern));
}
TEST(CFnMatch, MatchAsterisk2Outside)
{
CFnMatch match;
const char* const pattern = "*abc*";
EXPECT_FALSE(match.Match("", pattern));
EXPECT_TRUE(match.Match("abc", pattern));
EXPECT_TRUE(match.Match("<abcd>", pattern));
EXPECT_FALSE(match.Match("a-b-c", pattern));
}
TEST(CFnMatch, MatchAsterisk3)
{
CFnMatch match;
const char* const pattern = "*ab*cd*";
EXPECT_FALSE(match.Match("", pattern));
EXPECT_FALSE(match.Match("a b c d", pattern));
EXPECT_TRUE(match.Match("abcd", pattern));
EXPECT_TRUE(match.Match("-=<ab><cd>=-", pattern));
}
TEST(CFnMatch, MatchSpeedTest1)
{
CFnMatch match;
const char* const pattern = "*******************";
EXPECT_TRUE(match.Match("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", pattern));
}
TEST(CFnMatch, MatchSpeedTest2)
{
CFnMatch match;
const char* const pattern = "*a*a*a*a*a*a*a*a*a*a*a*a*a*a*";
EXPECT_TRUE(match.Match("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", pattern));
}