#![cfg(feature = "jit")]
use facet_msgpack::from_slice;
#[test]
fn test_vec_bool_empty() {
let bytes: Vec<u8> = rmp_serde::to_vec(&Vec::<bool>::new()).unwrap();
let result: Vec<bool> = from_slice(&bytes).unwrap();
assert_eq!(result, Vec::<bool>::new());
}
#[test]
fn test_vec_bool_single() {
let data = vec![true];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<bool> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_bool_multiple() {
let data = vec![true, false, true, false, true];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<bool> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_bool_large() {
let data: Vec<bool> = (0..1000).map(|i| i % 3 != 0).collect();
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<bool> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_u64_empty() {
let bytes: Vec<u8> = rmp_serde::to_vec(&Vec::<u64>::new()).unwrap();
let result: Vec<u64> = from_slice(&bytes).unwrap();
assert_eq!(result, Vec::<u64>::new());
}
#[test]
fn test_vec_u64_fixints() {
let data: Vec<u64> = (0..=127).collect();
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<u64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_u64_u8() {
let data: Vec<u64> = vec![128, 200, 255];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<u64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_u64_u16() {
let data: Vec<u64> = vec![256, 1000, 65535];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<u64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_u64_u32() {
let data: Vec<u64> = vec![65536, 1000000, 4294967295];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<u64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_u64_u64() {
let data: Vec<u64> = vec![4294967296, u64::MAX / 2, u64::MAX];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<u64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_u64_mixed() {
let data: Vec<u64> = vec![
0, 127, 128, 255, 256, 65535, 65536, 4294967295, 4294967296, u64::MAX, ];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<u64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_i64_empty() {
let bytes: Vec<u8> = rmp_serde::to_vec(&Vec::<i64>::new()).unwrap();
let result: Vec<i64> = from_slice(&bytes).unwrap();
assert_eq!(result, Vec::<i64>::new());
}
#[test]
fn test_vec_i64_positive_fixints() {
let data: Vec<i64> = (0..=127).collect();
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<i64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_i64_negative_fixints() {
let data: Vec<i64> = (-32..=-1).collect();
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<i64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_i64_i8() {
let data: Vec<i64> = vec![-128, -100, -50, -33];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<i64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_i64_i16() {
let data: Vec<i64> = vec![-32768, -1000, -129];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<i64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_i64_i32() {
let data: Vec<i64> = vec![-2147483648, -100000, -32769];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<i64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_i64_i64() {
let data: Vec<i64> = vec![i64::MIN, -2147483649, i64::MIN / 2];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<i64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_i64_mixed() {
let data: Vec<i64> = vec![
0, 127, -1, -32, -128, 128, -32768, 32767, -2147483648, 2147483647, i64::MIN, i64::MAX, ];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<i64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_u32_roundtrip() {
let data: Vec<u32> = vec![0, 127, 128, 255, 256, 65535, 65536, u32::MAX];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<u32> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_vec_i32_roundtrip() {
let data: Vec<i32> = vec![
0,
127,
-1,
-32,
-128,
128,
-32768,
32767,
i32::MIN,
i32::MAX,
];
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<i32> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_large_vec_u64() {
let data: Vec<u64> = (0..1000).map(|i| i * 12345).collect();
let bytes = rmp_serde::to_vec(&data).unwrap();
let result: Vec<u64> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_fixarray_max() {
let data: Vec<bool> = vec![true; 15];
let bytes = rmp_serde::to_vec(&data).unwrap();
assert_eq!(bytes[0], 0x9F);
let result: Vec<bool> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_array16_min() {
let data: Vec<bool> = vec![true; 16];
let bytes = rmp_serde::to_vec(&data).unwrap();
assert_eq!(bytes[0], 0xDC);
let result: Vec<bool> = from_slice(&bytes).unwrap();
assert_eq!(result, data);
}
#[test]
fn test_truncated_input() {
let result = from_slice::<Vec<bool>>(&[]);
assert!(result.is_err());
}
#[test]
fn test_truncated_array() {
let bytes = &[0x93, 0xC3, 0xC2]; let result = from_slice::<Vec<bool>>(bytes);
assert!(result.is_err());
}
#[test]
fn test_wrong_type() {
let bytes = &[0x91, 0x42]; let result = from_slice::<Vec<bool>>(bytes);
assert!(result.is_err());
}