extern crate rmp_serde as rmps;
use std::io::Cursor;
use rmps::config::BytesMode;
use serde::Serialize;
use rmp_serde::encode::{self , Error};
use rmp_serde::{Raw, RawRef, Serializer};
#[ test]
fn pass_null() {
let mut buf = [0 x00];
let val = ();
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xc0], buf);
}
#[ test]
fn fail_null() {
let mut buf = [];
let val = ();
match val.serialize(&mut Serializer::new(&mut &mut buf[..])) {
Err(Error::InvalidValueWrite(..)) => (),
other => panic!("unexpected result: {other:?}" ),
}
}
#[ test]
fn pass_bool() {
let mut buf = [0 x00, 0 x00];
{
let mut cur = Cursor::new(&mut buf[..]);
let mut encoder = Serializer::new(&mut cur);
let val = true ;
val.serialize(&mut encoder).ok().unwrap();
let val = false ;
val.serialize(&mut encoder).ok().unwrap();
}
assert_eq!([0 xc3, 0 xc2], buf);
}
#[ test]
fn pass_usize() {
let mut buf = [0 x00, 0 x00];
let val = 255 usize;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xcc, 0 xff], buf);
}
#[ test]
fn pass_u8() {
let mut buf = [0 x00, 0 x00];
let val = 255 u8;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xcc, 0 xff], buf);
}
#[ test]
fn pass_u16() {
let mut buf = [0 x00, 0 x00, 0 x00];
let val = 65535 u16;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xcd, 0 xff, 0 xff], buf);
}
#[ test]
fn pass_u32() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = 4294967295 u32;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xce, 0 xff, 0 xff, 0 xff, 0 xff], buf);
}
#[ test]
fn pass_u64() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = 18446744073709551615 u64;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xcf, 0 xff, 0 xff, 0 xff, 0 xff, 0 xff, 0 xff, 0 xff, 0 xff], buf);
}
#[ test]
fn pass_isize() {
let mut buf = [0 x00, 0 x00];
let val = -128 isize;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xd0, 0 x80], buf);
}
#[ test]
fn pass_i8() {
let mut buf = [0 x00, 0 x00];
let val = -128 i8;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xd0, 0 x80], buf);
}
#[ test]
fn pass_i16() {
let mut buf = [0 x00, 0 x00, 0 x00];
let val = -32768 i16;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xd1, 0 x80, 0 x00], buf);
}
#[ test]
fn pass_i32() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = -2147483648 i32;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xd2, 0 x80, 0 x00, 0 x00, 0 x00], buf);
}
#[ test]
fn pass_i64() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = -9223372036854775808 i64;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xd3, 0 x80, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00], buf);
}
#[ test]
fn pass_i64_most_effective() {
let mut buf = [0 x00, 0 x00];
// This value can be represented using 2 bytes although it's i64.
let val = 128 i64;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).unwrap();
assert_eq!([0 xcc, 0 x80], buf);
}
#[ test]
fn pass_f32() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = 3 .4028234 e38_f32;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xca, 0 x7f, 0 x7f, 0 xff, 0 xff], buf);
}
#[ test]
fn pass_f64() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = 42 f64;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xcb, 0 x40, 0 x45, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00], buf);
}
#[ test]
fn pass_char() {
let mut buf = [0 x00, 0 x00];
let val = '!' ;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xa1, 0 x21], buf);
}
#[ test]
fn pass_string() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = "le message" ;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xaa, 0 x6c, 0 x65, 0 x20, 0 x6d, 0 x65, 0 x73, 0 x73, 0 x61, 0 x67, 0 x65], buf);
}
#[ test]
fn pass_tuple() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = (42 u32, 100500 u32);
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 x92, 0 x2a, 0 xce, 0 x0, 0 x1, 0 x88, 0 x94], buf);
}
#[ test]
fn pass_tuple_not_bytes() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = (42 u32, 100500 u32);
val.serialize(&mut Serializer::new(&mut &mut buf[..]).with_bytes(BytesMode::ForceAll)).ok().unwrap();
assert_eq!([0 x92, 0 x2a, 0 xce, 0 x0, 0 x1, 0 x88, 0 x94], buf);
}
#[ test]
fn pass_tuple_bytes() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = (1 u8, 100 u8, 200 u8, 254 u8);
val.serialize(&mut Serializer::new(&mut &mut buf[..]).with_bytes(BytesMode::ForceAll)).ok().unwrap();
assert_eq!([196 , 4 , 1 , 100 , 200 , 254 ], buf);
}
#[ test]
fn pass_hash_array_bytes() {
use std::collections::HashSet;
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = [[255 u8; 3 ], [1 u8; 3 ]].into_iter().collect::<HashSet<[u8;3 ]>>();
val.serialize(&mut Serializer::new(&mut &mut buf[..]).with_bytes(BytesMode::ForceAll)).ok().unwrap();
}
#[ test]
fn pass_tuple_low_bytes() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = (1 u8, 2 , 3 , 127 );
val.serialize(&mut Serializer::new(&mut &mut buf[..]).with_bytes(BytesMode::ForceAll)).ok().unwrap();
assert_eq!([148 , 1 , 2 , 3 , 127 ], buf);
}
#[ test]
fn pass_option_some() {
let mut buf = [0 x00];
let val = Some(100 u32);
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 x64], buf);
}
#[ test]
fn pass_option_none() {
let mut buf = [0 x00];
let val: Option<u32> = None;
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 xc0], buf);
}
#[ test]
fn pass_seq() {
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let val = vec!["le" , "shit" ];
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
assert_eq!([0 x92, 0 xa2, 0 x6c, 0 x65, 0 xa4, 0 x73, 0 x68, 0 x69, 0 x74], buf);
}
#[ test]
fn pass_map() {
use std::collections::BTreeMap;
let mut buf = [0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00];
let mut val = BTreeMap::new();
val.insert(0 u8, "le" );
val.insert(1 u8, "shit" );
val.serialize(&mut Serializer::new(&mut &mut buf[..])).ok().unwrap();
let out = [
0 x82, // 2 (size)
0 x00, // 0
0 xa2, 0 x6c, 0 x65, // "le"
0 x01, // 1
0 xa4, 0 x73, 0 x68, 0 x69, 0 x74, // "shit"
];
assert_eq!(out, buf);
}
#[ test]
fn pass_empty_map() {
use std::collections::BTreeMap;
let mut buf = vec![];
let val: BTreeMap<u64, u64> = BTreeMap::new();
val.serialize(&mut Serializer::new(&mut buf)).ok().unwrap();
let out = vec![
0 x80, // (size: 0)
];
assert_eq!(out, buf);
}
#[ test]
fn pass_encoding_struct_into_vec() {
let val = (42 u8, "the Answer" );
let mut buf: Vec<u8> = Vec::new();
val.serialize(&mut Serializer::new(&mut buf)).unwrap();
assert_eq!(vec![0 x92, 0 x2a, 0 xaa, 0 x74, 0 x68, 0 x65, 0 x20, 0 x41, 0 x6e, 0 x73, 0 x77, 0 x65, 0 x72], buf);
}
#[ test]
fn pass_bin() {
use serde_bytes::Bytes;
let mut buf = Vec::new();
let val = Bytes::new(&[0 xcc, 0 x80]);
val.serialize(&mut Serializer::new(&mut buf)).ok().unwrap();
assert_eq!(vec![0 xc4, 0 x02, 0 xcc, 0 x80], buf);
}
#[ test]
fn pass_to_vec() {
assert_eq!(vec![0 xc0], encode::to_vec(&()).unwrap());
assert_eq!(vec![0 xaa, 0 x6c, 0 x65, 0 x20, 0 x6d, 0 x65, 0 x73, 0 x73, 0 x61, 0 x67, 0 x65],
encode::to_vec("le message" ).unwrap());
}
#[ test]
fn get_mut() {
let mut se = Serializer::new(Vec::new());
true .serialize(&mut se).unwrap();
assert_eq!(&vec![0 xc3], se.get_ref());
se.get_mut().push(42 );
assert_eq!(vec![0 xc3, 42 ], se.into_inner());
}
#[ test]
fn pass_raw_valid_utf8() {
let raw = Raw::new("key" .into());
let mut buf = Vec::new();
raw.serialize(&mut Serializer::new(&mut buf)).unwrap();
assert_eq!(vec![0 xa3, 0 x6b, 0 x65, 0 x79], buf);
}
#[ test]
#[ allow(deprecated)]
fn pass_raw_invalid_utf8() {
// >>> msgpack.dumps(msgpack.dumps([200, []]))
// '\xa4\x92\xcc\xc8\x90'
let raw = Raw::from_utf8(vec![0 x92, 0 xcc, 0 xc8, 0 x90]);
let mut buf = Vec::new();
raw.serialize(&mut Serializer::new(&mut buf)).unwrap();
assert_eq!(vec![196 , 4 , 146 , 204 , 200 , 144 ], buf);
}
#[ test]
fn pass_raw_ref_valid_utf8() {
let raw = RawRef::new("key" );
let mut buf = Vec::new();
raw.serialize(&mut Serializer::new(&mut buf)).unwrap();
assert_eq!(vec![0 xa3, 0 x6b, 0 x65, 0 x79], buf);
}
#[ test]
#[ allow(deprecated)]
fn pass_raw_ref_invalid_utf8() {
// >>> msgpack.dumps(msgpack.dumps([200, []]))
// '\xa4\x92\xcc\xc8\x90'
let b = &[0 x92, 0 xcc, 0 xc8, 0 x90];
let raw = RawRef::from_utf8(b);
let mut buf = Vec::new();
raw.serialize(&mut Serializer::new(&mut buf)).unwrap();
assert_eq!(vec![196 , 4 , 146 , 204 , 200 , 144 ], buf);
}
#[ test]
fn serializer_one_type_arg() {
let _s: rmp_serde::Serializer<&mut dyn std::io::Write>;
}
Messung V0.5 in Prozent C=88 H=96 G=91
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-19)
¤
*© Formatika GbR, Deutschland