macro_rules! replace(
    ($name:ident, $which:ident, $re:expr,
     $search:expr, $replace:expr, $result:expr) => (
        #[test]
        fn $name() {
            let re = regex!($re);
            assert_eq!(re.$which(text!($search), $replace), text!($result));
        }
    );
);

replace!(first, replace, r"[0-9]", "age: 26", t!("Z"), "age: Z6");
replace!(plus, replace, r"[0-9]+", "age: 26", t!("Z"), "age: Z");
replace!(all, replace_all, r"[0-9]", "age: 26", t!("Z"), "age: ZZ");
replace!(
    groups,
    replace,
    r"(?-u)(\S+)\s+(\S+)",
    "w1 w2",
    t!("$2 $1"),
    "w2 w1"
);
replace!(
    double_dollar,
    replace,
    r"(?-u)(\S+)\s+(\S+)",
    "w1 w2",
    t!("$2 $$1"),
    "w2 $1"
);
// replace!(adjacent_index, replace,
// r"([^aeiouy])ies$", "skies", t!("$1y"), "sky");
replace!(
    named,
    replace_all,
    r"(?-u)(?P<first>\S+)\s+(?P<last>\S+)(?P<space>\s*)",
    "w1 w2 w3 w4",
    t!("$last $first$space"),
    "w2 w1 w4 w3"
);
replace!(
    trim,
    replace_all,
    "^[ \t]+|[ \t]+$",
    " \t  trim me\t   \t",
    t!(""),
    "trim me"
);
replace!(number_hypen, replace, r"(.)(.)", "ab", t!("$1-$2"), "a-b");
// replace!(number_underscore, replace, r"(.)(.)", "ab", t!("$1_$2"), "a_b");
replace!(
    simple_expand,
    replace_all,
    r"(?-u)(\w) (\w)",
    "a b",
    t!("$2 $1"),
    "b a"
);
replace!(
    literal_dollar1,
    replace_all,
    r"(?-u)(\w+) (\w+)",
    "a b",
    t!("$$1"),
    "$1"
);
replace!(
    literal_dollar2,
    replace_all,
    r"(?-u)(\w+) (\w+)",
    "a b",
    t!("$2 $$c $1"),
    "b $c a"
);
replace!(
    no_expand1,
    replace,
    r"(?-u)(\S+)\s+(\S+)",
    "w1 w2",
    no_expand!("$2 $1"),
    "$2 $1"
);
replace!(
    no_expand2,
    replace,
    r"(?-u)(\S+)\s+(\S+)",
    "w1 w2",
    no_expand!("$$1"),
    "$$1"
);
use_!(Captures);
replace!(
    closure_returning_reference,
    replace,
    r"([0-9]+)",
    "age: 26",
    |captures: &Captures<'_>| {
        match_text!(captures.get(1).unwrap())[0..1].to_owned()
    },
    "age: 2"
);
replace!(
    closure_returning_value,
    replace,
    r"[0-9]+",
    "age: 26",
    |_captures: &Captures<'_>| t!("Z").to_owned(),
    "age: Z"
);

// See https://github.com/rust-lang/regex/issues/314
replace!(
    match_at_start_replace_with_empty,
    replace_all,
    r"foo",
    "foobar",
    t!(""),
    "bar"
);

// See https://github.com/rust-lang/regex/issues/393
replace!(single_empty_match, replace, r"^", "bar", t!("foo"), "foobar");

// See https://github.com/rust-lang/regex/issues/399
replace!(
    capture_longest_possible_name,
    replace_all,
    r"(.)",
    "b",
    t!("${1}a $1a"),
    "ba "
);

replace!(
    impl_string,
    replace,
    r"[0-9]",
    "age: 26",
    t!("Z".to_string()),
    "age: Z6"
);
replace!(
    impl_string_ref,
    replace,
    r"[0-9]",
    "age: 26",
    t!(&"Z".to_string()),
    "age: Z6"
);
replace!(
    impl_cow_str_borrowed,
    replace,
    r"[0-9]",
    "age: 26",
    t!(std::borrow::Cow::<'_, str>::Borrowed("Z")),
    "age: Z6"
);
replace!(
    impl_cow_str_borrowed_ref,
    replace,
    r"[0-9]",
    "age: 26",
    t!(&std::borrow::Cow::<'_, str>::Borrowed("Z")),
    "age: Z6"
);
replace!(
    impl_cow_str_owned,
    replace,
    r"[0-9]",
    "age: 26",
    t!(std::borrow::Cow::<'_, str>::Owned("Z".to_string())),
    "age: Z6"
);
replace!(
    impl_cow_str_owned_ref,
    replace,
    r"[0-9]",
    "age: 26",
    t!(&std::borrow::Cow::<'_, str>::Owned("Z".to_string())),
    "age: Z6"
);

replace!(
    impl_vec_u8,
    replace,
    r"[0-9]",
    "age: 26",
    bytes!(vec![b'Z']),
    "age: Z6"
);
replace!(
    impl_vec_u8_ref,
    replace,
    r"[0-9]",
    "age: 26",
    bytes!(&vec![b'Z']),
    "age: Z6"
);
replace!(
    impl_cow_slice_borrowed,
    replace,
    r"[0-9]",
    "age: 26",
    bytes!(std::borrow::Cow::<'_, [u8]>::Borrowed(&[b'Z'])),
    "age: Z6"
);
replace!(
    impl_cow_slice_borrowed_ref,
    replace,
    r"[0-9]",
    "age: 26",
    bytes!(&std::borrow::Cow::<'_, [u8]>::Borrowed(&[b'Z'])),
    "age: Z6"
);
replace!(
    impl_cow_slice_owned,
    replace,
    r"[0-9]",
    "age: 26",
    bytes!(std::borrow::Cow::<'_, [u8]>::Owned(vec![b'Z'])),
    "age: Z6"
);
replace!(
    impl_cow_slice_owned_ref,
    replace,
    r"[0-9]",
    "age: 26",
    bytes!(&std::borrow::Cow::<'_, [u8]>::Owned(vec![b'Z'])),
    "age: Z6"
);
