]> git.proxmox.com Git - rustc.git/blame - vendor/regex-1.4.3/tests/replace.rs
New upstream version 1.54.0+dfsg1
[rustc.git] / vendor / regex-1.4.3 / tests / replace.rs
CommitLineData
94b46f34
XL
1macro_rules! replace(
2 ($name:ident, $which:ident, $re:expr,
3 $search:expr, $replace:expr, $result:expr) => (
4 #[test]
5 fn $name() {
6 let re = regex!($re);
7 assert_eq!(re.$which(text!($search), $replace), text!($result));
8 }
9 );
10);
11
f9f354fc
XL
12replace!(first, replace, r"[0-9]", "age: 26", t!("Z"), "age: Z6");
13replace!(plus, replace, r"[0-9]+", "age: 26", t!("Z"), "age: Z");
14replace!(all, replace_all, r"[0-9]", "age: 26", t!("Z"), "age: ZZ");
15replace!(
16 groups,
17 replace,
18 r"(?-u)(\S+)\s+(\S+)",
19 "w1 w2",
20 t!("$2 $1"),
21 "w2 w1"
22);
23replace!(
24 double_dollar,
25 replace,
26 r"(?-u)(\S+)\s+(\S+)",
27 "w1 w2",
28 t!("$2 $$1"),
29 "w2 $1"
30);
94b46f34 31// replace!(adjacent_index, replace,
f9f354fc
XL
32// r"([^aeiouy])ies$", "skies", t!("$1y"), "sky");
33replace!(
34 named,
35 replace_all,
36 r"(?-u)(?P<first>\S+)\s+(?P<last>\S+)(?P<space>\s*)",
37 "w1 w2 w3 w4",
38 t!("$last $first$space"),
39 "w2 w1 w4 w3"
40);
41replace!(
42 trim,
43 replace_all,
44 "^[ \t]+|[ \t]+$",
45 " \t trim me\t \t",
46 t!(""),
47 "trim me"
48);
94b46f34
XL
49replace!(number_hypen, replace, r"(.)(.)", "ab", t!("$1-$2"), "a-b");
50// replace!(number_underscore, replace, r"(.)(.)", "ab", t!("$1_$2"), "a_b");
f9f354fc
XL
51replace!(
52 simple_expand,
53 replace_all,
54 r"(?-u)(\w) (\w)",
55 "a b",
56 t!("$2 $1"),
57 "b a"
58);
59replace!(
60 literal_dollar1,
61 replace_all,
62 r"(?-u)(\w+) (\w+)",
63 "a b",
64 t!("$$1"),
65 "$1"
66);
67replace!(
68 literal_dollar2,
69 replace_all,
70 r"(?-u)(\w+) (\w+)",
71 "a b",
72 t!("$2 $$c $1"),
73 "b $c a"
74);
75replace!(
76 no_expand1,
77 replace,
78 r"(?-u)(\S+)\s+(\S+)",
79 "w1 w2",
80 no_expand!("$2 $1"),
81 "$2 $1"
82);
83replace!(
84 no_expand2,
85 replace,
86 r"(?-u)(\S+)\s+(\S+)",
87 "w1 w2",
88 no_expand!("$$1"),
89 "$$1"
90);
0731742a 91use_!(Captures);
f9f354fc
XL
92replace!(
93 closure_returning_reference,
94 replace,
95 r"([0-9]+)",
96 "age: 26",
97 |captures: &Captures| {
98 match_text!(captures.get(1).unwrap())[0..1].to_owned()
99 },
100 "age: 2"
101);
102replace!(
103 closure_returning_value,
104 replace,
105 r"[0-9]+",
106 "age: 26",
107 |_captures: &Captures| t!("Z").to_owned(),
108 "age: Z"
109);
94b46f34
XL
110
111// See https://github.com/rust-lang/regex/issues/314
f9f354fc
XL
112replace!(
113 match_at_start_replace_with_empty,
114 replace_all,
115 r"foo",
116 "foobar",
117 t!(""),
118 "bar"
119);
94b46f34
XL
120
121// See https://github.com/rust-lang/regex/issues/393
122replace!(single_empty_match, replace, r"^", "bar", t!("foo"), "foobar");
123
124// See https://github.com/rust-lang/regex/issues/399
f9f354fc
XL
125replace!(
126 capture_longest_possible_name,
127 replace_all,
128 r"(.)",
129 "b",
130 t!("${1}a $1a"),
131 "ba "
132);