]>
git.proxmox.com Git - rustc.git/blob - vendor/regex-0.2.11/tests/macros.rs
4 ($re
:expr
, $text
:expr
) => {{
5 $re
.find_iter(text
!($text
))
6 .map(|m
| (m
.start(), m
.end())).collect
::<Vec
<_
>>()
10 // Macros for automatically producing tests.
12 macro_rules
! ismatch
{
13 ($name
:ident
, $re
:expr
, $text
:expr
, $ismatch
:expr
) => {
17 assert_eq
!($ismatch
, re
.is_match(text
!($text
)));
23 ($name
:ident
, $re
:expr
, $text
:expr
, $
($loc
:tt
)+) => (
26 let text
= text
!($text
);
27 let expected
: Vec
<Option
<_
>> = vec
![$
($loc
)+];
29 let got
: Vec
<Option
<_
>> = match r
.captures(text
) {
31 assert
!(r
.is_match(text
));
32 assert
!(r
.shortest_match(text
).is_some());
35 .map(|(i
, _
)| c
.get(i
).map(|m
| (m
.start(), m
.end())))
40 // The test set sometimes leave out capture groups, so truncate
41 // actual capture groups to match test set.
42 let mut sgot
= &got
[..];
43 if sgot
.len() > expected
.len() {
44 sgot
= &sgot
[0..expected
.len()]
47 panic
!("For RE '{}' against '{:?}', \
48 expected '{:?}' but got '{:?}'",
49 $re
, text
, expected
, sgot
);
56 ($name
:ident
, $re
:expr
, $text
:expr
) => (
59 let text
= text
!($text
);
60 let expected
: Vec
<(usize, usize)> = vec
![];
63 r
.find_iter(text
).map(|m
| (m
.start(), m
.end())).collect();
65 panic
!("For RE '{}' against '{:?}', \
66 expected '{:?}' but got '{:?}'",
67 $re
, text
, expected
, got
);
69 let captures_got
: Vec
<_
> =
71 .map(|c
| c
.get(0).unwrap())
72 .map(|m
| (m
.start(), m
.end()))
74 if captures_got
!= got
{
75 panic
!("For RE '{}' against '{:?}', \
76 got '{:?}' using find_iter but got '{:?}' \
78 $re
, text
, got
, captures_got
);
82 ($name
:ident
, $re
:expr
, $text
:expr
, $
($loc
:tt
)+) => (
85 let text
= text
!($text
);
86 let expected
: Vec
<_
> = vec
![$
($loc
)+];
89 r
.find_iter(text
).map(|m
| (m
.start(), m
.end())).collect();
91 panic
!("For RE '{}' against '{:?}', \
92 expected '{:?}' but got '{:?}'",
93 $re
, text
, expected
, got
);
95 let captures_got
: Vec
<_
> =
97 .map(|c
| c
.get(0).unwrap())
98 .map(|m
| (m
.start(), m
.end()))
100 if captures_got
!= got
{
101 panic
!("For RE '{}' against '{:?}', \
102 got '{:?}' using find_iter but got '{:?}' \
103 using captures_iter",
104 $re
, text
, got
, captures_got
);
110 macro_rules
! matset
{
111 ($name
:ident
, $res
:expr
, $text
:expr
, $
($match_index
:expr
),*) => {
114 let text
= text
!($text
);
115 let set
= regex_set
!($res
);
116 assert
!(set
.is_match(text
));
117 let expected
= vec
![$
($match_index
),*];
118 let matches
= set
.matches(text
);
119 assert
!(matches
.matched_any());
120 let got
: Vec
<_
> = matches
.into_iter().collect();
121 assert_eq
!(expected
, got
);
126 macro_rules
! nomatset
{
127 ($name
:ident
, $res
:expr
, $text
:expr
) => {
130 let text
= text
!($text
);
131 let set
= regex_set
!($res
);
132 assert
!(!set
.is_match(text
));
133 let matches
= set
.matches(text
);
134 assert
!(!matches
.matched_any());
135 assert_eq
!(0, matches
.into_iter().count());
141 ($name
:ident
, $re
:expr
, $text
:expr
, $expected
:expr
) => {
144 let re
= regex
!($re
);
145 let splitted
: Vec
<_
> = re
.split(t
!($text
)).collect();
146 assert_eq
!($expected
, &*splitted
);