use oni_comb_parser_rs::prelude::*;
#[test]
fn test_surround() {
let text = "(abc)";
let input = text.chars().collect::<Vec<_>>();
let left_parser = elm_ref('(');
let middle_parser = take(3);
let right_parser = elm_ref(')');
let left_result = left_parser.parse(&input);
println!("Left parser result: {:?}", left_result);
assert!(left_result.is_success());
let middle_input = &input[1..];
let middle_result = middle_parser.parse(middle_input);
println!("Middle parser result: {:?}", middle_result);
assert!(middle_result.is_success());
let right_input = &input[4..];
let right_result = right_parser.parse(right_input);
println!("Right parser result: {:?}", right_result);
assert!(right_result.is_success());
let parser = surround(elm_ref('('), take(3), elm_ref(')'));
let result = parser.parse(&input);
println!("Surround parser result: {:?}", result);
assert!(result.is_success());
assert_eq!(result.success().unwrap(), &input[1..4]);
}