| use super::*; | 
 | use crate::unpeek; | 
 | use crate::IResult; | 
 |  | 
 | mod complete { | 
 |     use super::*; | 
 |     use crate::error::InputError; | 
 |  | 
 |     macro_rules! assert_parse( | 
 |     ($left: expr, $right: expr) => { | 
 |       let res: $crate::IResult<_, _, InputError<_>> = $left; | 
 |       assert_eq!(res, $right); | 
 |     }; | 
 |   ); | 
 |  | 
 |     #[test] | 
 |     fn i8_tests() { | 
 |         assert_parse!(i8.parse_peek(&[0x00][..]), Ok((&b""[..], 0))); | 
 |         assert_parse!(i8.parse_peek(&[0x7f][..]), Ok((&b""[..], 127))); | 
 |         assert_parse!(i8.parse_peek(&[0xff][..]), Ok((&b""[..], -1))); | 
 |         assert_parse!(i8.parse_peek(&[0x80][..]), Ok((&b""[..], -128))); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_i8_tests() { | 
 |         assert_parse!(be_i8.parse_peek(&[0x00][..]), Ok((&b""[..], 0))); | 
 |         assert_parse!(be_i8.parse_peek(&[0x7f][..]), Ok((&b""[..], 127))); | 
 |         assert_parse!(be_i8.parse_peek(&[0xff][..]), Ok((&b""[..], -1))); | 
 |         assert_parse!(be_i8.parse_peek(&[0x80][..]), Ok((&b""[..], -128))); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_i16_tests() { | 
 |         assert_parse!(be_i16.parse_peek(&[0x00, 0x00][..]), Ok((&b""[..], 0))); | 
 |         assert_parse!( | 
 |             be_i16.parse_peek(&[0x7f, 0xff][..]), | 
 |             Ok((&b""[..], 32_767_i16)) | 
 |         ); | 
 |         assert_parse!(be_i16.parse_peek(&[0xff, 0xff][..]), Ok((&b""[..], -1))); | 
 |         assert_parse!( | 
 |             be_i16.parse_peek(&[0x80, 0x00][..]), | 
 |             Ok((&b""[..], -32_768_i16)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_u24_tests() { | 
 |         assert_parse!( | 
 |             be_u24.parse_peek(&[0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_u24.parse_peek(&[0x00, 0xFF, 0xFF][..]), | 
 |             Ok((&b""[..], 65_535_u32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_u24.parse_peek(&[0x12, 0x34, 0x56][..]), | 
 |             Ok((&b""[..], 1_193_046_u32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_i24_tests() { | 
 |         assert_parse!( | 
 |             be_i24.parse_peek(&[0xFF, 0xFF, 0xFF][..]), | 
 |             Ok((&b""[..], -1_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i24.parse_peek(&[0xFF, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], -65_536_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i24.parse_peek(&[0xED, 0xCB, 0xAA][..]), | 
 |             Ok((&b""[..], -1_193_046_i32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_i32_tests() { | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(&[0x00, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(&[0x7f, 0xff, 0xff, 0xff][..]), | 
 |             Ok((&b""[..], 2_147_483_647_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(&[0xff, 0xff, 0xff, 0xff][..]), | 
 |             Ok((&b""[..], -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(&[0x80, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], -2_147_483_648_i32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_i64_tests() { | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(&[0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..]), | 
 |             Ok((&b""[..], 9_223_372_036_854_775_807_i64)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(&[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..]), | 
 |             Ok((&b""[..], -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(&[0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], -9_223_372_036_854_775_808_i64)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_i128_tests() { | 
 |         assert_parse!( | 
 |             be_i128.parse_peek( | 
 |                 &[ | 
 |                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00, 0x00, 0x00 | 
 |                 ][..] | 
 |             ), | 
 |             Ok((&b""[..], 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek( | 
 |                 &[ | 
 |                     0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 
 |                     0xff, 0xff, 0xff | 
 |                 ][..] | 
 |             ), | 
 |             Ok(( | 
 |                 &b""[..], | 
 |                 170_141_183_460_469_231_731_687_303_715_884_105_727_i128 | 
 |             )) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek( | 
 |                 &[ | 
 |                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 
 |                     0xff, 0xff, 0xff | 
 |                 ][..] | 
 |             ), | 
 |             Ok((&b""[..], -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek( | 
 |                 &[ | 
 |                     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00, 0x00, 0x00 | 
 |                 ][..] | 
 |             ), | 
 |             Ok(( | 
 |                 &b""[..], | 
 |                 -170_141_183_460_469_231_731_687_303_715_884_105_728_i128 | 
 |             )) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i8_tests() { | 
 |         assert_parse!(le_i8.parse_peek(&[0x00][..]), Ok((&b""[..], 0))); | 
 |         assert_parse!(le_i8.parse_peek(&[0x7f][..]), Ok((&b""[..], 127))); | 
 |         assert_parse!(le_i8.parse_peek(&[0xff][..]), Ok((&b""[..], -1))); | 
 |         assert_parse!(le_i8.parse_peek(&[0x80][..]), Ok((&b""[..], -128))); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i16_tests() { | 
 |         assert_parse!(le_i16.parse_peek(&[0x00, 0x00][..]), Ok((&b""[..], 0))); | 
 |         assert_parse!( | 
 |             le_i16.parse_peek(&[0xff, 0x7f][..]), | 
 |             Ok((&b""[..], 32_767_i16)) | 
 |         ); | 
 |         assert_parse!(le_i16.parse_peek(&[0xff, 0xff][..]), Ok((&b""[..], -1))); | 
 |         assert_parse!( | 
 |             le_i16.parse_peek(&[0x00, 0x80][..]), | 
 |             Ok((&b""[..], -32_768_i16)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_u24_tests() { | 
 |         assert_parse!( | 
 |             le_u24.parse_peek(&[0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_u24.parse_peek(&[0xFF, 0xFF, 0x00][..]), | 
 |             Ok((&b""[..], 65_535_u32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_u24.parse_peek(&[0x56, 0x34, 0x12][..]), | 
 |             Ok((&b""[..], 1_193_046_u32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i24_tests() { | 
 |         assert_parse!( | 
 |             le_i24.parse_peek(&[0xFF, 0xFF, 0xFF][..]), | 
 |             Ok((&b""[..], -1_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i24.parse_peek(&[0x00, 0x00, 0xFF][..]), | 
 |             Ok((&b""[..], -65_536_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i24.parse_peek(&[0xAA, 0xCB, 0xED][..]), | 
 |             Ok((&b""[..], -1_193_046_i32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i32_tests() { | 
 |         assert_parse!( | 
 |             le_i32.parse_peek(&[0x00, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i32.parse_peek(&[0xff, 0xff, 0xff, 0x7f][..]), | 
 |             Ok((&b""[..], 2_147_483_647_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i32.parse_peek(&[0xff, 0xff, 0xff, 0xff][..]), | 
 |             Ok((&b""[..], -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i32.parse_peek(&[0x00, 0x00, 0x00, 0x80][..]), | 
 |             Ok((&b""[..], -2_147_483_648_i32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i64_tests() { | 
 |         assert_parse!( | 
 |             le_i64.parse_peek(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i64.parse_peek(&[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f][..]), | 
 |             Ok((&b""[..], 9_223_372_036_854_775_807_i64)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i64.parse_peek(&[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..]), | 
 |             Ok((&b""[..], -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i64.parse_peek(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80][..]), | 
 |             Ok((&b""[..], -9_223_372_036_854_775_808_i64)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i128_tests() { | 
 |         assert_parse!( | 
 |             le_i128.parse_peek( | 
 |                 &[ | 
 |                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00, 0x00, 0x00 | 
 |                 ][..] | 
 |             ), | 
 |             Ok((&b""[..], 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i128.parse_peek( | 
 |                 &[ | 
 |                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 
 |                     0xff, 0xff, 0x7f | 
 |                 ][..] | 
 |             ), | 
 |             Ok(( | 
 |                 &b""[..], | 
 |                 170_141_183_460_469_231_731_687_303_715_884_105_727_i128 | 
 |             )) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i128.parse_peek( | 
 |                 &[ | 
 |                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 
 |                     0xff, 0xff, 0xff | 
 |                 ][..] | 
 |             ), | 
 |             Ok((&b""[..], -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i128.parse_peek( | 
 |                 &[ | 
 |                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00, 0x00, 0x80 | 
 |                 ][..] | 
 |             ), | 
 |             Ok(( | 
 |                 &b""[..], | 
 |                 -170_141_183_460_469_231_731_687_303_715_884_105_728_i128 | 
 |             )) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_f32_tests() { | 
 |         assert_parse!( | 
 |             be_f32.parse_peek(&[0x00, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0_f32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_f32.parse_peek(&[0x4d, 0x31, 0x1f, 0xd8][..]), | 
 |             Ok((&b""[..], 185_728_380_f32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_f64_tests() { | 
 |         assert_parse!( | 
 |             be_f64.parse_peek(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0_f64)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_f64.parse_peek(&[0x41, 0xa6, 0x23, 0xfb, 0x10, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 185_728_392_f64)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_f32_tests() { | 
 |         assert_parse!( | 
 |             le_f32.parse_peek(&[0x00, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0_f32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_f32.parse_peek(&[0xd8, 0x1f, 0x31, 0x4d][..]), | 
 |             Ok((&b""[..], 185_728_380_f32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_f64_tests() { | 
 |         assert_parse!( | 
 |             le_f64.parse_peek(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]), | 
 |             Ok((&b""[..], 0_f64)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_f64.parse_peek(&[0x00, 0x00, 0x00, 0x10, 0xfb, 0x23, 0xa6, 0x41][..]), | 
 |             Ok((&b""[..], 185_728_392_f64)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn configurable_endianness() { | 
 |         use crate::binary::Endianness; | 
 |  | 
 |         fn be_tst16(i: &[u8]) -> IResult<&[u8], u16> { | 
 |             u16(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tst16(i: &[u8]) -> IResult<&[u8], u16> { | 
 |             u16(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!(be_tst16(&[0x80, 0x00]), Ok((&b""[..], 32_768_u16))); | 
 |         assert_eq!(le_tst16(&[0x80, 0x00]), Ok((&b""[..], 128_u16))); | 
 |  | 
 |         fn be_tst32(i: &[u8]) -> IResult<&[u8], u32> { | 
 |             u32(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tst32(i: &[u8]) -> IResult<&[u8], u32> { | 
 |             u32(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tst32(&[0x12, 0x00, 0x60, 0x00]), | 
 |             Ok((&b""[..], 302_014_464_u32)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tst32(&[0x12, 0x00, 0x60, 0x00]), | 
 |             Ok((&b""[..], 6_291_474_u32)) | 
 |         ); | 
 |  | 
 |         fn be_tst64(i: &[u8]) -> IResult<&[u8], u64> { | 
 |             u64(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tst64(i: &[u8]) -> IResult<&[u8], u64> { | 
 |             u64(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tst64(&[0x12, 0x00, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00]), | 
 |             Ok((&b""[..], 1_297_142_246_100_992_000_u64)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tst64(&[0x12, 0x00, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00]), | 
 |             Ok((&b""[..], 36_028_874_334_666_770_u64)) | 
 |         ); | 
 |  | 
 |         fn be_tsti16(i: &[u8]) -> IResult<&[u8], i16> { | 
 |             i16(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tsti16(i: &[u8]) -> IResult<&[u8], i16> { | 
 |             i16(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!(be_tsti16(&[0x00, 0x80]), Ok((&b""[..], 128_i16))); | 
 |         assert_eq!(le_tsti16(&[0x00, 0x80]), Ok((&b""[..], -32_768_i16))); | 
 |  | 
 |         fn be_tsti32(i: &[u8]) -> IResult<&[u8], i32> { | 
 |             i32(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tsti32(i: &[u8]) -> IResult<&[u8], i32> { | 
 |             i32(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tsti32(&[0x00, 0x12, 0x60, 0x00]), | 
 |             Ok((&b""[..], 1_204_224_i32)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tsti32(&[0x00, 0x12, 0x60, 0x00]), | 
 |             Ok((&b""[..], 6_296_064_i32)) | 
 |         ); | 
 |  | 
 |         fn be_tsti64(i: &[u8]) -> IResult<&[u8], i64> { | 
 |             i64(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tsti64(i: &[u8]) -> IResult<&[u8], i64> { | 
 |             i64(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tsti64(&[0x00, 0xFF, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00]), | 
 |             Ok((&b""[..], 71_881_672_479_506_432_i64)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tsti64(&[0x00, 0xFF, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00]), | 
 |             Ok((&b""[..], 36_028_874_334_732_032_i64)) | 
 |         ); | 
 |     } | 
 | } | 
 |  | 
 | mod partial { | 
 |     use super::*; | 
 |     use crate::error::ErrMode; | 
 |     use crate::error::InputError; | 
 |     use crate::error::Needed; | 
 |     #[cfg(feature = "alloc")] | 
 |     use crate::lib::std::vec::Vec; | 
 |     use crate::Partial; | 
 |     use crate::{ | 
 |         ascii::digit1 as digit, | 
 |         binary::{be_u16, be_u8}, | 
 |         error::ErrorKind, | 
 |         lib::std::str::{self, FromStr}, | 
 |         IResult, | 
 |     }; | 
 |  | 
 |     macro_rules! assert_parse( | 
 |     ($left: expr, $right: expr) => { | 
 |       let res: $crate::IResult<_, _, InputError<_>> = $left; | 
 |       assert_eq!(res, $right); | 
 |     }; | 
 |   ); | 
 |  | 
 |     #[test] | 
 |     fn i8_tests() { | 
 |         assert_parse!( | 
 |             be_i8.parse_peek(Partial::new(&[0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i8.parse_peek(Partial::new(&[0x7f][..])), | 
 |             Ok((Partial::new(&b""[..]), 127)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i8.parse_peek(Partial::new(&[0xff][..])), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i8.parse_peek(Partial::new(&[0x80][..])), | 
 |             Ok((Partial::new(&b""[..]), -128)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i8.parse_peek(Partial::new(&[][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn i16_tests() { | 
 |         assert_parse!( | 
 |             be_i16.parse_peek(Partial::new(&[0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i16.parse_peek(Partial::new(&[0x7f, 0xff][..])), | 
 |             Ok((Partial::new(&b""[..]), 32_767_i16)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i16.parse_peek(Partial::new(&[0xff, 0xff][..])), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i16.parse_peek(Partial::new(&[0x80, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), -32_768_i16)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i16.parse_peek(Partial::new(&[][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(2))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i16.parse_peek(Partial::new(&[0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn u24_tests() { | 
 |         assert_parse!( | 
 |             be_u24.parse_peek(Partial::new(&[0x00, 0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_u24.parse_peek(Partial::new(&[0x00, 0xFF, 0xFF][..])), | 
 |             Ok((Partial::new(&b""[..]), 65_535_u32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_u24.parse_peek(Partial::new(&[0x12, 0x34, 0x56][..])), | 
 |             Ok((Partial::new(&b""[..]), 1_193_046_u32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_u24.parse_peek(Partial::new(&[][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(3))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_u24.parse_peek(Partial::new(&[0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(2))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_u24.parse_peek(Partial::new(&[0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn i24_tests() { | 
 |         assert_parse!( | 
 |             be_i24.parse_peek(Partial::new(&[0xFF, 0xFF, 0xFF][..])), | 
 |             Ok((Partial::new(&b""[..]), -1_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i24.parse_peek(Partial::new(&[0xFF, 0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), -65_536_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i24.parse_peek(Partial::new(&[0xED, 0xCB, 0xAA][..])), | 
 |             Ok((Partial::new(&b""[..]), -1_193_046_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i24.parse_peek(Partial::new(&[][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(3))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i24.parse_peek(Partial::new(&[0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(2))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i24.parse_peek(Partial::new(&[0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn i32_tests() { | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(Partial::new(&[0x7f, 0xff, 0xff, 0xff][..])), | 
 |             Ok((Partial::new(&b""[..]), 2_147_483_647_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(Partial::new(&[0xff, 0xff, 0xff, 0xff][..])), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(Partial::new(&[0x80, 0x00, 0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), -2_147_483_648_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(Partial::new(&[][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(4))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(Partial::new(&[0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(3))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(Partial::new(&[0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(2))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i32.parse_peek(Partial::new(&[0x00, 0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn i64_tests() { | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new( | 
 |                 &[0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 9_223_372_036_854_775_807_i64)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new( | 
 |                 &[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new( | 
 |                 &[0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), -9_223_372_036_854_775_808_i64)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new(&[][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(8))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new(&[0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(7))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new(&[0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(6))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new(&[0x00, 0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(5))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(4))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(3))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(2))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i64.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn i128_tests() { | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00, 0x00, 0x00 | 
 |                 ][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 
 |                     0xff, 0xff, 0xff | 
 |                 ][..] | 
 |             )), | 
 |             Ok(( | 
 |                 Partial::new(&b""[..]), | 
 |                 170_141_183_460_469_231_731_687_303_715_884_105_727_i128 | 
 |             )) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 
 |                     0xff, 0xff, 0xff | 
 |                 ][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00, 0x00, 0x00 | 
 |                 ][..] | 
 |             )), | 
 |             Ok(( | 
 |                 Partial::new(&b""[..]), | 
 |                 -170_141_183_460_469_231_731_687_303_715_884_105_728_i128 | 
 |             )) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new(&[][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(16))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new(&[0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(15))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new(&[0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(14))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new(&[0x00, 0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(13))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(12))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(11))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(10))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(9))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(8))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(7))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(6))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(5))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(4))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(3))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00 | 
 |                 ][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(2))) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00, 0x00 | 
 |                 ][..] | 
 |             )), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i8_tests() { | 
 |         assert_parse!( | 
 |             le_i8.parse_peek(Partial::new(&[0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i8.parse_peek(Partial::new(&[0x7f][..])), | 
 |             Ok((Partial::new(&b""[..]), 127)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i8.parse_peek(Partial::new(&[0xff][..])), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i8.parse_peek(Partial::new(&[0x80][..])), | 
 |             Ok((Partial::new(&b""[..]), -128)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i16_tests() { | 
 |         assert_parse!( | 
 |             le_i16.parse_peek(Partial::new(&[0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i16.parse_peek(Partial::new(&[0xff, 0x7f][..])), | 
 |             Ok((Partial::new(&b""[..]), 32_767_i16)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i16.parse_peek(Partial::new(&[0xff, 0xff][..])), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i16.parse_peek(Partial::new(&[0x00, 0x80][..])), | 
 |             Ok((Partial::new(&b""[..]), -32_768_i16)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_u24_tests() { | 
 |         assert_parse!( | 
 |             le_u24.parse_peek(Partial::new(&[0x00, 0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_u24.parse_peek(Partial::new(&[0xFF, 0xFF, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 65_535_u32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_u24.parse_peek(Partial::new(&[0x56, 0x34, 0x12][..])), | 
 |             Ok((Partial::new(&b""[..]), 1_193_046_u32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i24_tests() { | 
 |         assert_parse!( | 
 |             le_i24.parse_peek(Partial::new(&[0xFF, 0xFF, 0xFF][..])), | 
 |             Ok((Partial::new(&b""[..]), -1_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i24.parse_peek(Partial::new(&[0x00, 0x00, 0xFF][..])), | 
 |             Ok((Partial::new(&b""[..]), -65_536_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i24.parse_peek(Partial::new(&[0xAA, 0xCB, 0xED][..])), | 
 |             Ok((Partial::new(&b""[..]), -1_193_046_i32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i32_tests() { | 
 |         assert_parse!( | 
 |             le_i32.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i32.parse_peek(Partial::new(&[0xff, 0xff, 0xff, 0x7f][..])), | 
 |             Ok((Partial::new(&b""[..]), 2_147_483_647_i32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i32.parse_peek(Partial::new(&[0xff, 0xff, 0xff, 0xff][..])), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i32.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x80][..])), | 
 |             Ok((Partial::new(&b""[..]), -2_147_483_648_i32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i64_tests() { | 
 |         assert_parse!( | 
 |             le_i64.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i64.parse_peek(Partial::new( | 
 |                 &[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 9_223_372_036_854_775_807_i64)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i64.parse_peek(Partial::new( | 
 |                 &[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i64.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), -9_223_372_036_854_775_808_i64)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_i128_tests() { | 
 |         assert_parse!( | 
 |             le_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00, 0x00, 0x00 | 
 |                 ][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 0)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 
 |                     0xff, 0xff, 0x7f | 
 |                 ][..] | 
 |             )), | 
 |             Ok(( | 
 |                 Partial::new(&b""[..]), | 
 |                 170_141_183_460_469_231_731_687_303_715_884_105_727_i128 | 
 |             )) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | 
 |                     0xff, 0xff, 0xff | 
 |                 ][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), -1)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_i128.parse_peek(Partial::new( | 
 |                 &[ | 
 |                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                     0x00, 0x00, 0x80 | 
 |                 ][..] | 
 |             )), | 
 |             Ok(( | 
 |                 Partial::new(&b""[..]), | 
 |                 -170_141_183_460_469_231_731_687_303_715_884_105_728_i128 | 
 |             )) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_f32_tests() { | 
 |         assert_parse!( | 
 |             be_f32.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0_f32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_f32.parse_peek(Partial::new(&[0x4d, 0x31, 0x1f, 0xd8][..])), | 
 |             Ok((Partial::new(&b""[..]), 185_728_380_f32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn be_f64_tests() { | 
 |         assert_parse!( | 
 |             be_f64.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 0_f64)) | 
 |         ); | 
 |         assert_parse!( | 
 |             be_f64.parse_peek(Partial::new( | 
 |                 &[0x41, 0xa6, 0x23, 0xfb, 0x10, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 185_728_392_f64)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_f32_tests() { | 
 |         assert_parse!( | 
 |             le_f32.parse_peek(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])), | 
 |             Ok((Partial::new(&b""[..]), 0_f32)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_f32.parse_peek(Partial::new(&[0xd8, 0x1f, 0x31, 0x4d][..])), | 
 |             Ok((Partial::new(&b""[..]), 185_728_380_f32)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn le_f64_tests() { | 
 |         assert_parse!( | 
 |             le_f64.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 0_f64)) | 
 |         ); | 
 |         assert_parse!( | 
 |             le_f64.parse_peek(Partial::new( | 
 |                 &[0x00, 0x00, 0x00, 0x10, 0xfb, 0x23, 0xa6, 0x41][..] | 
 |             )), | 
 |             Ok((Partial::new(&b""[..]), 185_728_392_f64)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn configurable_endianness() { | 
 |         use crate::binary::Endianness; | 
 |  | 
 |         fn be_tst16(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u16> { | 
 |             u16(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tst16(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u16> { | 
 |             u16(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tst16(Partial::new(&[0x80, 0x00])), | 
 |             Ok((Partial::new(&b""[..]), 32_768_u16)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tst16(Partial::new(&[0x80, 0x00])), | 
 |             Ok((Partial::new(&b""[..]), 128_u16)) | 
 |         ); | 
 |  | 
 |         fn be_tst32(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> { | 
 |             u32(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tst32(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> { | 
 |             u32(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tst32(Partial::new(&[0x12, 0x00, 0x60, 0x00])), | 
 |             Ok((Partial::new(&b""[..]), 302_014_464_u32)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tst32(Partial::new(&[0x12, 0x00, 0x60, 0x00])), | 
 |             Ok((Partial::new(&b""[..]), 6_291_474_u32)) | 
 |         ); | 
 |  | 
 |         fn be_tst64(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u64> { | 
 |             u64(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tst64(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u64> { | 
 |             u64(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tst64(Partial::new(&[ | 
 |                 0x12, 0x00, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00 | 
 |             ])), | 
 |             Ok((Partial::new(&b""[..]), 1_297_142_246_100_992_000_u64)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tst64(Partial::new(&[ | 
 |                 0x12, 0x00, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00 | 
 |             ])), | 
 |             Ok((Partial::new(&b""[..]), 36_028_874_334_666_770_u64)) | 
 |         ); | 
 |  | 
 |         fn be_tsti16(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i16> { | 
 |             i16(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tsti16(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i16> { | 
 |             i16(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tsti16(Partial::new(&[0x00, 0x80])), | 
 |             Ok((Partial::new(&b""[..]), 128_i16)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tsti16(Partial::new(&[0x00, 0x80])), | 
 |             Ok((Partial::new(&b""[..]), -32_768_i16)) | 
 |         ); | 
 |  | 
 |         fn be_tsti32(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i32> { | 
 |             i32(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tsti32(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i32> { | 
 |             i32(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tsti32(Partial::new(&[0x00, 0x12, 0x60, 0x00])), | 
 |             Ok((Partial::new(&b""[..]), 1_204_224_i32)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tsti32(Partial::new(&[0x00, 0x12, 0x60, 0x00])), | 
 |             Ok((Partial::new(&b""[..]), 6_296_064_i32)) | 
 |         ); | 
 |  | 
 |         fn be_tsti64(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i64> { | 
 |             i64(Endianness::Big).parse_peek(i) | 
 |         } | 
 |         fn le_tsti64(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i64> { | 
 |             i64(Endianness::Little).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             be_tsti64(Partial::new(&[ | 
 |                 0x00, 0xFF, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00 | 
 |             ])), | 
 |             Ok((Partial::new(&b""[..]), 71_881_672_479_506_432_i64)) | 
 |         ); | 
 |         assert_eq!( | 
 |             le_tsti64(Partial::new(&[ | 
 |                 0x00, 0xFF, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00 | 
 |             ])), | 
 |             Ok((Partial::new(&b""[..]), 36_028_874_334_732_032_i64)) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     #[cfg(feature = "alloc")] | 
 |     fn length_repeat_test() { | 
 |         fn number(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> { | 
 |             digit | 
 |                 .try_map(str::from_utf8) | 
 |                 .try_map(FromStr::from_str) | 
 |                 .parse_peek(i) | 
 |         } | 
 |  | 
 |         fn cnt(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> { | 
 |             length_repeat(unpeek(number), "abc").parse_peek(i) | 
 |         } | 
 |  | 
 |         assert_eq!( | 
 |             cnt(Partial::new(&b"2abcabcabcdef"[..])), | 
 |             Ok((Partial::new(&b"abcdef"[..]), vec![&b"abc"[..], &b"abc"[..]])) | 
 |         ); | 
 |         assert_eq!( | 
 |             cnt(Partial::new(&b"2ab"[..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |         assert_eq!( | 
 |             cnt(Partial::new(&b"3abcab"[..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |         assert_eq!( | 
 |             cnt(Partial::new(&b"xxx"[..])), | 
 |             Err(ErrMode::Backtrack(error_position!( | 
 |                 &Partial::new(&b"xxx"[..]), | 
 |                 ErrorKind::Slice | 
 |             ))) | 
 |         ); | 
 |         assert_eq!( | 
 |             cnt(Partial::new(&b"2abcxxx"[..])), | 
 |             Err(ErrMode::Backtrack(error_position!( | 
 |                 &Partial::new(&b"xxx"[..]), | 
 |                 ErrorKind::Tag | 
 |             ))) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn partial_length_bytes() { | 
 |         use crate::binary::le_u8; | 
 |  | 
 |         fn x(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> { | 
 |             length_take(le_u8).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             x(Partial::new(b"\x02..>>")), | 
 |             Ok((Partial::new(&b">>"[..]), &b".."[..])) | 
 |         ); | 
 |         assert_eq!( | 
 |             x(Partial::new(b"\x02..")), | 
 |             Ok((Partial::new(&[][..]), &b".."[..])) | 
 |         ); | 
 |         assert_eq!( | 
 |             x(Partial::new(b"\x02.")), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |         assert_eq!( | 
 |             x(Partial::new(b"\x02")), | 
 |             Err(ErrMode::Incomplete(Needed::new(2))) | 
 |         ); | 
 |  | 
 |         fn y(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> { | 
 |             let (i, _) = "magic".parse_peek(i)?; | 
 |             length_take(le_u8).parse_peek(i) | 
 |         } | 
 |         assert_eq!( | 
 |             y(Partial::new(b"magic\x02..>>")), | 
 |             Ok((Partial::new(&b">>"[..]), &b".."[..])) | 
 |         ); | 
 |         assert_eq!( | 
 |             y(Partial::new(b"magic\x02..")), | 
 |             Ok((Partial::new(&[][..]), &b".."[..])) | 
 |         ); | 
 |         assert_eq!( | 
 |             y(Partial::new(b"magic\x02.")), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |         assert_eq!( | 
 |             y(Partial::new(b"magic\x02")), | 
 |             Err(ErrMode::Incomplete(Needed::new(2))) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn length_take_test() { | 
 |         fn number(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> { | 
 |             digit | 
 |                 .try_map(str::from_utf8) | 
 |                 .try_map(FromStr::from_str) | 
 |                 .parse_peek(i) | 
 |         } | 
 |  | 
 |         fn take(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> { | 
 |             length_take(unpeek(number)).parse_peek(i) | 
 |         } | 
 |  | 
 |         assert_eq!( | 
 |             take(Partial::new(&b"6abcabcabcdef"[..])), | 
 |             Ok((Partial::new(&b"abcdef"[..]), &b"abcabc"[..])) | 
 |         ); | 
 |         assert_eq!( | 
 |             take(Partial::new(&b"3ab"[..])), | 
 |             Err(ErrMode::Incomplete(Needed::new(1))) | 
 |         ); | 
 |         assert_eq!( | 
 |             take(Partial::new(&b"xxx"[..])), | 
 |             Err(ErrMode::Backtrack(error_position!( | 
 |                 &Partial::new(&b"xxx"[..]), | 
 |                 ErrorKind::Slice | 
 |             ))) | 
 |         ); | 
 |         assert_eq!( | 
 |             take(Partial::new(&b"2abcxxx"[..])), | 
 |             Ok((Partial::new(&b"cxxx"[..]), &b"ab"[..])) | 
 |         ); | 
 |     } | 
 |  | 
 |     #[test] | 
 |     fn length_and_then_test() { | 
 |         use crate::stream::StreamIsPartial; | 
 |  | 
 |         fn length_and_then_1(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u16> { | 
 |             length_and_then(be_u8, be_u16).parse_peek(i) | 
 |         } | 
 |         fn length_and_then_2(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, (u8, u8)> { | 
 |             length_and_then(be_u8, (be_u8, be_u8)).parse_peek(i) | 
 |         } | 
 |  | 
 |         let mut empty_complete = Partial::new(&b""[..]); | 
 |         let _ = empty_complete.complete(); | 
 |  | 
 |         let i1 = [0, 5, 6]; | 
 |         assert_eq!( | 
 |             length_and_then_1(Partial::new(&i1)), | 
 |             Err(ErrMode::Backtrack(error_position!( | 
 |                 &empty_complete, | 
 |                 ErrorKind::Slice | 
 |             ))) | 
 |         ); | 
 |         assert_eq!( | 
 |             length_and_then_2(Partial::new(&i1)), | 
 |             Err(ErrMode::Backtrack(error_position!( | 
 |                 &empty_complete, | 
 |                 ErrorKind::Token | 
 |             ))) | 
 |         ); | 
 |  | 
 |         let i2 = [1, 5, 6, 3]; | 
 |         { | 
 |             let mut middle_complete = Partial::new(&i2[1..2]); | 
 |             let _ = middle_complete.complete(); | 
 |             assert_eq!( | 
 |                 length_and_then_1(Partial::new(&i2)), | 
 |                 Err(ErrMode::Backtrack(error_position!( | 
 |                     &middle_complete, | 
 |                     ErrorKind::Slice | 
 |                 ))) | 
 |             ); | 
 |             assert_eq!( | 
 |                 length_and_then_2(Partial::new(&i2)), | 
 |                 Err(ErrMode::Backtrack(error_position!( | 
 |                     &empty_complete, | 
 |                     ErrorKind::Token | 
 |                 ))) | 
 |             ); | 
 |         } | 
 |  | 
 |         let i3 = [2, 5, 6, 3, 4, 5, 7]; | 
 |         assert_eq!( | 
 |             length_and_then_1(Partial::new(&i3)), | 
 |             Ok((Partial::new(&i3[3..]), 1286)) | 
 |         ); | 
 |         assert_eq!( | 
 |             length_and_then_2(Partial::new(&i3)), | 
 |             Ok((Partial::new(&i3[3..]), (5, 6))) | 
 |         ); | 
 |  | 
 |         let i4 = [3, 5, 6, 3, 4, 5]; | 
 |         assert_eq!( | 
 |             length_and_then_1(Partial::new(&i4)), | 
 |             Ok((Partial::new(&i4[4..]), 1286)) | 
 |         ); | 
 |         assert_eq!( | 
 |             length_and_then_2(Partial::new(&i4)), | 
 |             Ok((Partial::new(&i4[4..]), (5, 6))) | 
 |         ); | 
 |     } | 
 | } |