///|
test "sequence" {
let parser = sequence([pchar('a'), pchar('b'), pchar('c')])
inspect(
parser.parse(Seq::from_string("abc")),
content="Some((['a', 'b', 'c'], ))",
)
inspect(parser.parse(Seq::from_string("ab")), content="None")
}
///|
test "repeat" {
let parser = pvalue(x => match x {
'0' => Some(0)
'1' => Some(1)
_ => None
})
let repeat_n = parser.repeat_n(3)
inspect(
repeat_n.parse(Seq::from_string("0110")),
content="Some(([0, 1, 1], '0'))",
)
let repeat_0_to_n = parser.repeat_0_to_n(3)
inspect(
repeat_0_to_n.parse(Seq::from_string("0110")),
content="Some(([0, 1, 1], '0'))",
)
inspect(
repeat_0_to_n.parse(Seq::from_string("01210")),
content="Some(([0, 1], '2''1''0'))",
)
inspect(repeat_0_to_n.parse(Seq::from_string("2")), content="Some(([], '2'))")
let repeat = parser.repeat()
inspect(
repeat.parse(Seq::from_string("0110")),
content="Some(([0, 1, 1, 0], ))",
)
}
///|
test "pstring" {
let parser = pstring("asdf")
inspect(
parser.parse(Seq::from_string("asdfjkl;")),
content=
#|Some(("asdf", 'j''k''l'';'))
,
)
inspect(parser.parse(Seq::from_string("jkl;")), content="None")
}
///|
test "pint" {
inspect(pint.parse(Seq::from_string("12345")), content="Some((12345, ))")
inspect(pint.parse(Seq::from_string("-0")), content="Some((0, ))")
inspect(pint.parse(Seq::from_string("0")), content="Some((0, ))")
inspect(pint.parse(Seq::from_string("-01")), content="Some((0, '1'))")
inspect(pint.parse(Seq::from_string("-100")), content="Some((-100, ))")
}