use compressed_intvec::fixed::{SFixedVec, UFixedVec};
use compressed_intvec::{fixed_vec, sfixed_vec};
#[test]
fn test_fixed_vec_macro_empty() {
let v: UFixedVec<u32> = fixed_vec![];
assert!(v.is_empty());
assert_eq!(v.len(), 0);
assert_eq!(v.bit_width(), 1);
}
#[test]
fn test_fixed_vec_macro_from_list_unsigned() {
let v = fixed_vec![100u32, 200, 300, 400, 500];
let expected: &[u32] = &[100, 200, 300, 400, 500];
assert_eq!(v.len(), 5);
assert_eq!(v.get(0), Some(100));
assert_eq!(v.get(4), Some(500));
assert_eq!(v, expected);
let _: UFixedVec<u32> = v;
}
#[test]
fn test_fixed_vec_macro_from_list_signed() {
let v = fixed_vec![-100i16, 0, 200, -300, 500];
let expected: &[i16] = &[-100, 0, 200, -300, 500];
assert_eq!(v.len(), 5);
assert_eq!(v.get(0), Some(-100));
assert_eq!(v, expected);
let _: SFixedVec<i16> = v;
}
#[test]
fn test_fixed_vec_macro_from_list_with_trailing_comma() {
let v = fixed_vec![1u8, 2, 3,];
assert_eq!(v.len(), 3);
assert_eq!(v.get(2), Some(3));
let _: UFixedVec<u8> = v;
}
#[test]
fn test_fixed_vec_macro_from_repeated_element() {
let v_unsigned = fixed_vec![42u64; 100];
assert_eq!(v_unsigned.len(), 100);
for i in 0..100 {
assert_eq!(v_unsigned.get(i), Some(42));
}
assert_eq!(v_unsigned.bit_width(), 6);
let _: UFixedVec<u64> = v_unsigned;
let v_signed = fixed_vec![-5isize; 50];
assert_eq!(v_signed.len(), 50);
for i in 0..50 {
assert_eq!(v_signed.get(i), Some(-5));
}
assert_eq!(v_signed.bit_width(), 4);
let _: SFixedVec<isize> = v_signed;
}
#[test]
fn test_sfixed_vec_macro() {
let v_empty: SFixedVec<i64> = sfixed_vec![];
assert!(v_empty.is_empty());
let v = sfixed_vec![-100, 200, -300];
assert_eq!(v.len(), 3);
assert_eq!(v.get(0), Some(-100));
assert_eq!(v.get(2), Some(-300));
let _: SFixedVec<i64> = v;
let v_rep = sfixed_vec![-42; 10];
assert_eq!(v_rep.len(), 10);
assert_eq!(v_rep.get(5), Some(-42));
let _: SFixedVec<i64> = v_rep;
}