wibble
1.1
Main Page
Namespaces
Classes
Files
File List
File Members
wibble
regexp.test.h
Go to the documentation of this file.
1
/* -*- C++ -*- (c) 2007 Petr Rockai <me@mornfall.net>
2
(c) 2007 Enrico Zini <enrico@enricozini.org> */
3
4
#include <
wibble/test.h
>
5
#include <
wibble/regexp.h
>
6
7
namespace
{
8
9
using namespace
std;
10
using namespace
wibble;
11
12
struct
TestRegexp {
13
14
Test
basicMatch() {
15
Regexp
re(
"^fo\\+bar()$"
);
16
assert
(re.match(
"fobar()"
));
17
assert
(re.match(
"foobar()"
));
18
assert
(re.match(
"fooobar()"
));
19
assert
(!re.match(
"fbar()"
));
20
assert
(!re.match(
" foobar()"
));
21
assert
(!re.match(
"foobar() "
));
22
}
23
24
Test
extendedMatch() {
25
ERegexp
re(
"^fo+bar()$"
);
26
assert
(re.match(
"fobar"
));
27
assert
(re.match(
"foobar"
));
28
assert
(re.match(
"fooobar"
));
29
assert
(!re.match(
"fbar"
));
30
assert
(!re.match(
" foobar"
));
31
assert
(!re.match(
"foobar "
));
32
}
33
34
Test
capture() {
35
ERegexp
re(
"^f(o+)bar([0-9]*)$"
, 3);
36
assert
(re.match(
"fobar"
));
37
assert_eq
(re[0],
string
(
"fobar"
));
38
assert_eq
(re[1],
string
(
"o"
));
39
assert_eq
(re[2],
string
(
""
));
40
assert_eq
(re.matchStart(0), 0u);
41
assert_eq
(re.matchEnd(0), 5u);
42
assert_eq
(re.matchLength(0), 5u);
43
assert_eq
(re.matchStart(1), 1u);
44
assert_eq
(re.matchEnd(1), 2u);
45
assert_eq
(re.matchLength(1), 1u);
46
47
assert
(re.match(
"foobar42"
));
48
assert_eq
(re[0],
string
(
"foobar42"
));
49
assert_eq
(re[1],
string
(
"oo"
));
50
assert_eq
(re[2],
string
(
"42"
));
51
}
52
53
Test
tokenize() {
54
string
str(
"antani blinda la supercazzola!"
);
55
Tokenizer
tok(str,
"[a-z]+"
, REG_EXTENDED);
56
Tokenizer::const_iterator
i = tok.begin();
57
58
assert
(i != tok.end());
59
assert_eq
(*i,
"antani"
);
60
++i;
61
assert
(i != tok.end());
62
assert_eq
(*i,
"blinda"
);
63
++i;
64
assert
(i != tok.end());
65
assert_eq
(*i,
"la"
);
66
++i;
67
assert
(i != tok.end());
68
assert_eq
(*i,
"supercazzola"
);
69
++i;
70
assert
(i == tok.end());
71
}
72
73
Test
splitter()
74
{
75
Splitter
splitter(
"[ \t]+or[ \t]+"
, REG_EXTENDED | REG_ICASE);
76
Splitter::const_iterator
i = splitter.begin(
"a or b OR c or dadada"
);
77
assert_eq
(*i,
"a"
);
78
assert_eq
(i->size(), 1u);
79
++i;
80
assert_eq
(*i,
"b"
);
81
assert_eq
(i->size(), 1u);
82
++i;
83
assert_eq
(*i,
"c"
);
84
assert_eq
(i->size(), 1u);
85
++i;
86
assert_eq
(*i,
"dadada"
);
87
assert_eq
(i->size(), 6u);
88
++i;
89
assert
(i == splitter.end());
90
}
91
92
Test
emptySplitter()
93
{
94
Splitter
splitter(
"Z*"
, REG_EXTENDED | REG_ICASE);
95
Splitter::const_iterator
i = splitter.begin(
"ciao"
);
96
assert_eq
(*i,
"c"
);
97
assert_eq
(i->size(), 1u);
98
++i;
99
assert_eq
(*i,
"i"
);
100
assert_eq
(i->size(), 1u);
101
++i;
102
assert_eq
(*i,
"a"
);
103
assert_eq
(i->size(), 1u);
104
++i;
105
assert_eq
(*i,
"o"
);
106
assert_eq
(i->size(), 1u);
107
++i;
108
assert
(i == splitter.end());
109
}
110
111
};
112
113
}
114
115
// vim:set ts=4 sw=4:
Generated on Wed Oct 23 2013 17:14:25 for wibble by
1.8.4