summaryrefslogtreecommitdiffstats
path: root/vendor/winnow/src/combinator/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/winnow/src/combinator/tests.rs')
-rw-r--r--vendor/winnow/src/combinator/tests.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/vendor/winnow/src/combinator/tests.rs b/vendor/winnow/src/combinator/tests.rs
index 62dc420e5..9d2b49d80 100644
--- a/vendor/winnow/src/combinator/tests.rs
+++ b/vendor/winnow/src/combinator/tests.rs
@@ -13,6 +13,7 @@ use crate::stream::Stream;
use crate::token::take;
use crate::unpeek;
use crate::IResult;
+use crate::PResult;
use crate::Parser;
use crate::Partial;
@@ -649,6 +650,28 @@ fn alt_incomplete() {
}
#[test]
+fn alt_array() {
+ fn alt1<'i>(i: &mut &'i [u8]) -> PResult<&'i [u8]> {
+ alt(["a", "bc", "def"]).parse_next(i)
+ }
+
+ let i = &b"a"[..];
+ assert_eq!(alt1.parse_peek(i), Ok((&b""[..], (&b"a"[..]))));
+
+ let i = &b"bc"[..];
+ assert_eq!(alt1.parse_peek(i), Ok((&b""[..], (&b"bc"[..]))));
+
+ let i = &b"defg"[..];
+ assert_eq!(alt1.parse_peek(i), Ok((&b"g"[..], (&b"def"[..]))));
+
+ let i = &b"z"[..];
+ assert_eq!(
+ alt1.parse_peek(i),
+ Err(ErrMode::Backtrack(error_position!(&i, ErrorKind::Tag)))
+ );
+}
+
+#[test]
fn permutation_test() {
#[allow(clippy::type_complexity)]
fn perm(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, (&[u8], &[u8], &[u8])> {