enumoid 0.4.0

Enum Indexed Containers
Documentation
use crate::test::types::Three;
use enumoid::EnumOptionMap;
use enumoid::EnumSize;

#[test]
fn test_option_map() {
  let mut map = EnumOptionMap::<Three, u16>::new();
  assert_eq!(map.is_empty(), true);
  assert_eq!(map.is_vec(), EnumSize::from_usize(0));
  map.set(Three::B, Some(200));
  assert_eq!(map.is_empty(), false);
  assert_eq!(map.is_vec(), None);
  map.set(Three::A, Some(99));
  *map.get_mut(Three::A).unwrap() += 1;
  assert_eq!(map.is_full(), false);
  assert_eq!(map.is_vec(), EnumSize::from_usize(2));
  map.set(Three::C, Some(300));
  assert_eq!(map.is_full(), true);
  assert_eq!(map.is_vec(), EnumSize::from_usize(3));
  assert_eq!(map.get(Three::A), Some(&100));
  assert_eq!(map.get(Three::B), Some(&200));
  assert_eq!(map.get(Three::C), Some(&300));
}