extern crate nine; mod util; use nine::ser::*; use std::iter::repeat; use std::{u16, u32}; use util::BlackHoleWriter; fn ser() -> WriteSerializer { WriteSerializer::new(BlackHoleWriter) } fn expect_err(t: &T) -> SerFail { let mut serializer = ser(); t.serialize(&mut serializer).unwrap_err().0.into_inner() } #[test] fn overlong_seq_known() { let long_seq = repeat(false) .take(u16::MAX as usize + 1) .collect::>(); assert!(if let SerFail::SeqTooLong = expect_err(&long_seq) { true } else { false }); } #[test] fn max_seq() { let long_seq = repeat(false).take(u16::MAX as usize).collect::>(); let mut serializer = ser(); long_seq.serialize(&mut serializer).unwrap(); } #[test] fn overlong_str() { let long_string = "x".repeat(u16::MAX as usize + 1); assert!(if let SerFail::StringTooLong = expect_err(&long_string) { true } else { false }) } #[test] fn max_str() { let length = u16::MAX as u32; let string = "x".repeat(length as usize); let mut serializer = ser(); assert_eq!(length + 2, string.serialize(&mut serializer).unwrap()) } #[test] #[ignore] fn overlong_bytes() { let bytes = vec![1u8; u32::MAX as usize]; let mut serializer = ser(); assert!( if let SerFail::BytesTooLong = nine::common::serialize_bytes(&bytes, &mut serializer) .unwrap_err() .0 .into_inner() { true } else { false } ) } #[test] #[ignore] fn max_bytes() { let bytes = vec![1u8; u32::MAX as usize - 8]; let mut serializer = ser(); nine::common::serialize_bytes(&bytes, &mut serializer).unwrap(); }