use super ::Cursor;
use rmp::decode::*;
use rmp::Marker;
#[ test]
fn from_positive_fixnum() {
let buf = [0 x00, 0 x7f, 0 x20];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(0 u8, read_pfix(&mut cur).unwrap());
assert_eq!(1 , cur.position());
assert_eq!(127 u8, read_pfix(&mut cur).unwrap());
assert_eq!(2 , cur.position());
assert_eq!(32 u8, read_pfix(&mut cur).unwrap());
assert_eq!(3 , cur.position());
}
#[ test]
fn from_u8_min() {
let buf = [0 xcc, 0 x00];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(0 , read_u8(&mut cur).unwrap());
assert_eq!(2 , cur.position());
}
#[ test]
fn from_u8_max() {
let buf = [0 xcc, 0 xff];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(255 , read_u8(&mut cur).unwrap());
assert_eq!(2 , cur.position());
}
#[ test]
fn from_u8_type_mismatch() {
let buf = [0 xc0, 0 x80];
let mut cur = Cursor::new(&buf[..]);
match read_u8(&mut cur) {
Err(ValueReadError::TypeMismatch(Marker::Null)) => (),
other => panic!("unexpected result: {other:?}" ),
}
assert_eq!(1 , cur.position());
}
#[ test]
fn from_u8_unexpected_eof() {
let buf = [0 xcc];
let mut cur = Cursor::new(&buf[..]);
read_u8(&mut cur).err().unwrap();
assert_eq!(1 , cur.position());
}
#[ test]
fn from_u16_min() {
let buf = [0 xcd, 0 x00, 0 x00];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(0 , read_u16(&mut cur).unwrap());
assert_eq!(3 , cur.position());
}
#[ test]
fn from_u32_max() {
let buf = [0 xce, 0 xff, 0 xff, 0 xff, 0 xff];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(4294967295 , read_u32(&mut cur).unwrap());
assert_eq!(5 , cur.position());
}
#[ test]
fn from_unsigned_fixnum_read_int() {
let buf = [0 x00, 0 x7f, 0 x20];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(0 u64, read_int(&mut cur).unwrap());
assert_eq!(1 , cur.position());
assert_eq!(127 u64, read_int(&mut cur).unwrap());
assert_eq!(2 , cur.position());
assert_eq!(32 u64, read_int(&mut cur).unwrap());
assert_eq!(3 , cur.position());
}
#[ test]
fn from_unsigned_u8_read_int() {
let buf = [0 xcc, 0 x80, 0 xcc, 0 xff];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(128 u64, read_int(&mut cur).unwrap());
assert_eq!(2 , cur.position());
assert_eq!(255 u64, read_int(&mut cur).unwrap());
assert_eq!(4 , cur.position());
}
#[ test]
fn from_unsigned_u8_incomplete_read_int() {
let buf = [0 xcc];
let mut cur = Cursor::new(&buf[..]);
read_int::<u64, _>(&mut cur).err().unwrap();
assert_eq!(1 , cur.position());
}
#[ test]
fn from_unsigned_u16_read_int() {
let buf = [0 xcd, 0 x01, 0 x00, 0 xcd, 0 xff, 0 xff];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(256 u64, read_int(&mut cur).unwrap());
assert_eq!(3 , cur.position());
assert_eq!(65535 u64, read_int(&mut cur).unwrap());
assert_eq!(6 , cur.position());
}
#[ test]
fn from_unsigned_u16_incomplete_read_int() {
let buf = [0 xcd];
let mut cur = Cursor::new(&buf[..]);
read_int::<u64, _>(&mut cur).err().unwrap();
assert_eq!(1 , cur.position());
}
#[ test]
fn from_unsigned_u32_read_int() {
let buf = [0 xce, 0 x00, 0 x01, 0 x00, 0 x00, 0 xce, 0 xff, 0 xff, 0 xff, 0 xff];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(65536 u64, read_int(&mut cur).unwrap());
assert_eq!(5 , cur.position());
assert_eq!(4294967295 u64, read_int(&mut cur).unwrap());
assert_eq!(10 , cur.position());
}
#[ test]
fn from_unsigned_u32_incomplete_read_int() {
let buf = [0 xce];
let mut cur = Cursor::new(&buf[..]);
read_int::<u64, _>(&mut cur).err().unwrap();
assert_eq!(1 , cur.position());
}
#[ test]
fn from_unsigned_u64_read_int() {
let buf = [
0 xcf, 0 x00, 0 x00, 0 x00, 0 x01, 0 x00, 0 x00, 0 x00, 0 x00,
0 xcf, 0 xff, 0 xff, 0 xff, 0 xff, 0 xff, 0 xff, 0 xff, 0 xff
];
let mut cur = Cursor::new(&buf[..]);
assert_eq!(4294967296 u64, read_int(&mut cur).unwrap());
assert_eq!(9 , cur.position());
assert_eq!(18446744073709551615 u64, read_int(&mut cur).unwrap());
assert_eq!(18 , cur.position());
}
#[ test]
fn from_unsigned_u64_incomplete_read_int() {
let buf = [0 xcf];
let mut cur = Cursor::new(&buf[..]);
read_int::<u64, _>(&mut cur).err().unwrap();
assert_eq!(1 , cur.position());
}
#[ test]
fn from_unsigned_invalid_marker_read_int() {
let buf = [0 xc0];
let mut cur = Cursor::new(&buf[..]);
match read_int::<u64, _>(&mut cur) {
Err(NumValueReadError::TypeMismatch(Marker::Null)) => (),
other => panic!("unexpected result: {other:?}" )
}
assert_eq!(1 , cur.position());
}
#[ test]
fn from_unsigned_invalid_unknown_marker_read_int() {
let buf = [0 xc1];
let mut cur = Cursor::new(&buf[..]);
match read_int::<u64, _>(&mut cur) {
Err(NumValueReadError::TypeMismatch(Marker::Reserved)) => (),
other => panic!("unexpected result: {other:?}" )
}
assert_eq!(1 , cur.position());
}
Messung V0.5 in Prozent C=85 H=96 G=90
¤ Dauer der Verarbeitung: 0.7 Sekunden
(vorverarbeitet am 2026-06-19)
¤
*© Formatika GbR, Deutschland