@@ -14,57 +14,115 @@ namespace {
14
14
15
15
class GlobPatternTest : public ::testing::Test {};
16
16
17
- TEST_F (GlobPatternTest, Basics ) {
17
+ TEST_F (GlobPatternTest, Empty ) {
18
18
Expected<GlobPattern> Pat1 = GlobPattern::create (" " );
19
19
EXPECT_TRUE ((bool )Pat1);
20
20
EXPECT_TRUE (Pat1->match (" " ));
21
21
EXPECT_FALSE (Pat1->match (" a" ));
22
+ }
23
+
24
+ TEST_F (GlobPatternTest, Glob) {
25
+ Expected<GlobPattern> Pat1 = GlobPattern::create (" ab*c*def" );
26
+ EXPECT_TRUE ((bool )Pat1);
27
+ EXPECT_TRUE (Pat1->match (" abcdef" ));
28
+ EXPECT_TRUE (Pat1->match (" abxcxdef" ));
29
+ EXPECT_FALSE (Pat1->match (" " ));
30
+ EXPECT_FALSE (Pat1->match (" xabcdef" ));
31
+ EXPECT_FALSE (Pat1->match (" abcdefx" ));
32
+ }
33
+
34
+ TEST_F (GlobPatternTest, Wildcard) {
35
+ Expected<GlobPattern> Pat1 = GlobPattern::create (" a??c" );
36
+ EXPECT_TRUE ((bool )Pat1);
37
+ EXPECT_TRUE (Pat1->match (" axxc" ));
38
+ EXPECT_FALSE (Pat1->match (" axxx" ));
39
+ EXPECT_FALSE (Pat1->match (" " ));
40
+ }
22
41
23
- Expected<GlobPattern> Pat2 = GlobPattern::create (" ab*c*def" );
42
+ TEST_F (GlobPatternTest, Escape) {
43
+ Expected<GlobPattern> Pat1 = GlobPattern::create (" \\ *" );
44
+ EXPECT_TRUE ((bool )Pat1);
45
+ EXPECT_TRUE (Pat1->match (" *" ));
46
+ EXPECT_FALSE (Pat1->match (" \\ *" ));
47
+ EXPECT_FALSE (Pat1->match (" a" ));
48
+
49
+ Expected<GlobPattern> Pat2 = GlobPattern::create (" a?\\ ?c" );
24
50
EXPECT_TRUE ((bool )Pat2);
25
- EXPECT_TRUE (Pat2->match (" abcdef " ));
26
- EXPECT_TRUE (Pat2->match (" abxcxdef " ));
51
+ EXPECT_TRUE (Pat2->match (" ax?c " ));
52
+ EXPECT_FALSE (Pat2->match (" axxc " ));
27
53
EXPECT_FALSE (Pat2->match (" " ));
28
- EXPECT_FALSE (Pat2->match (" xabcdef" ));
29
- EXPECT_FALSE (Pat2->match (" abcdefx" ));
30
-
31
- Expected<GlobPattern> Pat3 = GlobPattern::create (" a??c" );
32
- EXPECT_TRUE ((bool )Pat3);
33
- EXPECT_TRUE (Pat3->match (" axxc" ));
34
- EXPECT_FALSE (Pat3->match (" axxx" ));
35
- EXPECT_FALSE (Pat3->match (" " ));
36
-
37
- Expected<GlobPattern> Pat4 = GlobPattern::create (" [abc-fy-z]" );
38
- EXPECT_TRUE ((bool )Pat4);
39
- EXPECT_TRUE (Pat4->match (" a" ));
40
- EXPECT_TRUE (Pat4->match (" b" ));
41
- EXPECT_TRUE (Pat4->match (" c" ));
42
- EXPECT_TRUE (Pat4->match (" d" ));
43
- EXPECT_TRUE (Pat4->match (" e" ));
44
- EXPECT_TRUE (Pat4->match (" f" ));
45
- EXPECT_TRUE (Pat4->match (" y" ));
46
- EXPECT_TRUE (Pat4->match (" z" ));
47
- EXPECT_FALSE (Pat4->match (" g" ));
48
- EXPECT_FALSE (Pat4->match (" " ));
49
-
50
- Expected<GlobPattern> Pat5 = GlobPattern::create (" [^abc-fy-z]" );
51
- EXPECT_TRUE ((bool )Pat5);
52
- EXPECT_TRUE (Pat5->match (" g" ));
53
- EXPECT_FALSE (Pat5->match (" a" ));
54
- EXPECT_FALSE (Pat5->match (" b" ));
55
- EXPECT_FALSE (Pat5->match (" c" ));
56
- EXPECT_FALSE (Pat5->match (" d" ));
57
- EXPECT_FALSE (Pat5->match (" e" ));
58
- EXPECT_FALSE (Pat5->match (" f" ));
59
- EXPECT_FALSE (Pat5->match (" y" ));
60
- EXPECT_FALSE (Pat5->match (" z" ));
61
- EXPECT_FALSE (Pat5->match (" " ));
54
+ }
55
+
56
+ TEST_F (GlobPatternTest, BasicCharacterClass) {
57
+ Expected<GlobPattern> Pat1 = GlobPattern::create (" [abc-fy-z]" );
58
+ EXPECT_TRUE ((bool )Pat1);
59
+ EXPECT_TRUE (Pat1->match (" a" ));
60
+ EXPECT_TRUE (Pat1->match (" b" ));
61
+ EXPECT_TRUE (Pat1->match (" c" ));
62
+ EXPECT_TRUE (Pat1->match (" d" ));
63
+ EXPECT_TRUE (Pat1->match (" e" ));
64
+ EXPECT_TRUE (Pat1->match (" f" ));
65
+ EXPECT_TRUE (Pat1->match (" y" ));
66
+ EXPECT_TRUE (Pat1->match (" z" ));
67
+ EXPECT_FALSE (Pat1->match (" g" ));
68
+ EXPECT_FALSE (Pat1->match (" " ));
69
+ }
70
+
71
+ TEST_F (GlobPatternTest, NegatedCharacterClass) {
72
+ Expected<GlobPattern> Pat1 = GlobPattern::create (" [^abc-fy-z]" );
73
+ EXPECT_TRUE ((bool )Pat1);
74
+ EXPECT_TRUE (Pat1->match (" g" ));
75
+ EXPECT_FALSE (Pat1->match (" a" ));
76
+ EXPECT_FALSE (Pat1->match (" b" ));
77
+ EXPECT_FALSE (Pat1->match (" c" ));
78
+ EXPECT_FALSE (Pat1->match (" d" ));
79
+ EXPECT_FALSE (Pat1->match (" e" ));
80
+ EXPECT_FALSE (Pat1->match (" f" ));
81
+ EXPECT_FALSE (Pat1->match (" y" ));
82
+ EXPECT_FALSE (Pat1->match (" z" ));
83
+ EXPECT_FALSE (Pat1->match (" " ));
84
+
85
+ Expected<GlobPattern> Pat2 = GlobPattern::create (" [!abc-fy-z]" );
86
+ EXPECT_TRUE ((bool )Pat2);
87
+ EXPECT_TRUE (Pat2->match (" g" ));
88
+ EXPECT_FALSE (Pat2->match (" a" ));
89
+ EXPECT_FALSE (Pat2->match (" b" ));
90
+ EXPECT_FALSE (Pat2->match (" c" ));
91
+ EXPECT_FALSE (Pat2->match (" d" ));
92
+ EXPECT_FALSE (Pat2->match (" e" ));
93
+ EXPECT_FALSE (Pat2->match (" f" ));
94
+ EXPECT_FALSE (Pat2->match (" y" ));
95
+ EXPECT_FALSE (Pat2->match (" z" ));
96
+ EXPECT_FALSE (Pat2->match (" " ));
97
+ }
98
+
99
+ TEST_F (GlobPatternTest, BracketFrontOfCharacterClass) {
100
+ Expected<GlobPattern> Pat1 = GlobPattern::create (" []a]x" );
101
+ EXPECT_TRUE ((bool )Pat1);
102
+ EXPECT_TRUE (Pat1->match (" ]x" ));
103
+ EXPECT_TRUE (Pat1->match (" ax" ));
104
+ EXPECT_FALSE (Pat1->match (" a]x" ));
105
+ EXPECT_FALSE (Pat1->match (" " ));
106
+ }
107
+
108
+ TEST_F (GlobPatternTest, SpecialCharsInCharacterClass) {
109
+ Expected<GlobPattern> Pat1 = GlobPattern::create (" [*?^]" );
110
+ EXPECT_TRUE ((bool )Pat1);
111
+ EXPECT_TRUE (Pat1->match (" *" ));
112
+ EXPECT_TRUE (Pat1->match (" ?" ));
113
+ EXPECT_TRUE (Pat1->match (" ^" ));
114
+ EXPECT_FALSE (Pat1->match (" *?^" ));
115
+ EXPECT_FALSE (Pat1->match (" " ));
62
116
}
63
117
64
118
TEST_F (GlobPatternTest, Invalid) {
65
119
Expected<GlobPattern> Pat1 = GlobPattern::create (" [" );
66
120
EXPECT_FALSE ((bool )Pat1);
67
121
handleAllErrors (Pat1.takeError (), [&](ErrorInfoBase &EIB) {});
122
+
123
+ Expected<GlobPattern> Pat2 = GlobPattern::create (" []" );
124
+ EXPECT_FALSE ((bool )Pat2);
125
+ handleAllErrors (Pat2.takeError (), [&](ErrorInfoBase &EIB) {});
68
126
}
69
127
70
128
TEST_F (GlobPatternTest, ExtSym) {
0 commit comments