16855e09eSopenharmony_ciuse nom::{
26855e09eSopenharmony_ci  bytes::complete::tag,
36855e09eSopenharmony_ci  multi::{many0, many0_count},
46855e09eSopenharmony_ci};
56855e09eSopenharmony_ci
66855e09eSopenharmony_ci#[test]
76855e09eSopenharmony_cifn parse() {
86855e09eSopenharmony_ci  let mut counter = 0;
96855e09eSopenharmony_ci
106855e09eSopenharmony_ci  let res = {
116855e09eSopenharmony_ci    let mut parser = many0::<_, _, (), _>(|i| {
126855e09eSopenharmony_ci      counter += 1;
136855e09eSopenharmony_ci      tag("abc")(i)
146855e09eSopenharmony_ci    });
156855e09eSopenharmony_ci
166855e09eSopenharmony_ci    parser("abcabcabcabc").unwrap()
176855e09eSopenharmony_ci  };
186855e09eSopenharmony_ci
196855e09eSopenharmony_ci  println!("res: {:?}", res);
206855e09eSopenharmony_ci  assert_eq!(counter, 5);
216855e09eSopenharmony_ci}
226855e09eSopenharmony_ci
236855e09eSopenharmony_ci#[test]
246855e09eSopenharmony_cifn accumulate() {
256855e09eSopenharmony_ci  let mut v = Vec::new();
266855e09eSopenharmony_ci
276855e09eSopenharmony_ci  let (_, count) = {
286855e09eSopenharmony_ci    let mut parser = many0_count::<_, _, (), _>(|i| {
296855e09eSopenharmony_ci      let (i, o) = tag("abc")(i)?;
306855e09eSopenharmony_ci      v.push(o);
316855e09eSopenharmony_ci      Ok((i, ()))
326855e09eSopenharmony_ci    });
336855e09eSopenharmony_ci    parser("abcabcabcabc").unwrap()
346855e09eSopenharmony_ci  };
356855e09eSopenharmony_ci
366855e09eSopenharmony_ci  println!("v: {:?}", v);
376855e09eSopenharmony_ci  assert_eq!(count, 4);
386855e09eSopenharmony_ci  assert_eq!(v.len(), 4);
396855e09eSopenharmony_ci}
40