use ordmask::{OrdMask, ordmask};
#[test]
fn test_empty() {
let mask: OrdMask<i32> = ordmask![];
assert_eq!(mask.values().collect::<Vec<_>>(), vec![]);
assert_eq!(mask.into_values().collect::<Vec<_>>(), vec![]);
}
#[test]
fn test_single_value() {
let mask = ordmask![<i32> 1, 2];
assert_eq!(mask.values().collect::<Vec<_>>(), vec![1]);
}
#[test]
fn test_multiple_values() {
let mask = ordmask![<i32> 1, 4];
assert_eq!(mask.values().collect::<Vec<_>>(), vec![1, 2, 3]);
}
#[test]
fn test_multiple_spans() {
let mask = ordmask![<i32> 1, 3, 5, 7];
assert_eq!(mask.values().collect::<Vec<_>>(), vec![1, 2, 5, 6]);
}
#[test]
fn test_into_iter() {
let mask = ordmask![<i32> 1, 4];
assert_eq!(mask.into_values().collect::<Vec<_>>(), vec![1, 2, 3]);
}
#[test]
fn test_for_loop() {
let mask = ordmask![<i32> 1, 4];
let mut values = Vec::new();
for v in mask.values() {
values.push(v);
}
assert_eq!(values, vec![1, 2, 3]);
}
#[test]
fn test_for_loop_into_iter() {
let mask = ordmask![<i32> 1, 4];
let mut values = Vec::new();
for v in mask.into_values() {
values.push(v);
}
assert_eq!(values, vec![1, 2, 3]);
}
#[test]
fn test_into_iterator() {
let mask = ordmask![<i32> 1, 4];
let values: Vec<i32> = mask.into_values().collect();
assert_eq!(values, vec![1, 2, 3]);
}
#[test]
fn test_from_universal() {
let mask = ordmask![<u8> .., 2];
assert_eq!(mask.values().collect::<Vec<_>>(), vec![0, 1]);
}
#[test]
fn test_mixed_spans() {
let mask = ordmask![<u8> .., 2, 4];
let values: Vec<u8> = mask.values().collect();
assert!(values.contains(&0));
assert!(values.contains(&1));
assert!(values.contains(&4));
assert!(values.contains(&255));
assert!(!values.contains(&2));
assert!(!values.contains(&3));
}
#[test]
fn test_empty_span() {
let mask = ordmask![<i32> 5, 5];
assert!(mask.is_empty());
assert_eq!(mask.values().collect::<Vec<_>>(), vec![]);
}
#[test]
fn test_u8_type() {
let mask = ordmask![<u8> 1, 4];
assert_eq!(mask.values().collect::<Vec<_>>(), vec![1u8, 2, 3]);
}
#[test]
fn test_u64_type() {
let mask = ordmask![<u64> 10, 13];
assert_eq!(mask.values().collect::<Vec<_>>(), vec![10u64, 11, 12]);
}