aboutsummaryrefslogtreecommitdiff
path: root/tests/issues.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/issues.rs')
-rw-r--r--tests/issues.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/issues.rs b/tests/issues.rs
index 6df183b..7985702 100644
--- a/tests/issues.rs
+++ b/tests/issues.rs
@@ -206,3 +206,37 @@ fn issue_1231_bits_expect_fn_closure() {
}
assert_eq!(example(&[0xff]), Ok((&b""[..], (1, 1))));
}
+
+#[test]
+fn issue_1282_findtoken_char() {
+ use nom::character::complete::one_of;
+ use nom::error::Error;
+ let parser = one_of::<_, _, Error<_>>(&['a', 'b', 'c'][..]);
+ assert_eq!(parser("aaa"), Ok(("aa", 'a')));
+}
+
+#[test]
+fn issue_1459_clamp_capacity() {
+ use nom::character::complete::char;
+
+ // shouldn't panic
+ use nom::multi::many_m_n;
+ let mut parser = many_m_n::<_, _, (), _>(usize::MAX, usize::MAX, char('a'));
+ assert_eq!(parser("a"), Err(nom::Err::Error(())));
+
+ // shouldn't panic
+ use nom::multi::count;
+ let mut parser = count::<_, _, (), _>(char('a'), usize::MAX);
+ assert_eq!(parser("a"), Err(nom::Err::Error(())));
+}
+
+#[test]
+fn issue_1617_count_parser_returning_zero_size() {
+ use nom::{bytes::complete::tag, combinator::map, error::Error, multi::count};
+
+ // previously, `count()` panicked if the parser had type `O = ()`
+ let parser = map(tag::<_, _, Error<&str>>("abc"), |_| ());
+ // shouldn't panic
+ let result = count(parser, 3)("abcabcabcdef").expect("parsing should succeed");
+ assert_eq!(result, ("def", vec![(), (), ()]));
+}