#[macro_use] extern crate scan_rules;
#[macro_use] mod util;
use scan_rules::scanner::{Space, max_width_a};
#[test]
fn test_scan_space() {
let inp = " \t \n x\r\n y z \t\r ";
assert_match!(
scan!(inp; (let a: Space, "x", let b: Space, "y z", let c: Space, ..tail) => (a, b, c, tail)),
Ok((" \t \n ", "\r\n ", " \t\r ", ""))
);
assert_match!(
scan!(inp; (let a: Space, "x", let b: Space, "y", "z", let c: Space, ..tail) => (a, b, c, tail)),
Ok((" \t \n ", "\r\n ", " \t\r ", ""))
);
assert_match!(
scan!(inp; (let a: Space, "x", let b: Space, "y", let c: Space, "z", let d: Space, ..tail) => (a, b, c, d, tail)),
Ok((" \t \n ", "\r\n ", " ", " \t\r ", ""))
);
assert_match!(
scan!(inp; (let a <| max_width_a::<Space>(3), let b: Space, "x", ..tail) => (a, b, tail)),
Ok((" \t", " \n ", "\r\n y z \t\r "))
);
}