use enum2map::Enum2Map;
#[derive(Debug, PartialEq, Eq, Clone, Enum2Map)]
pub enum TestValue {
Padding(usize),
Margin(String),
}
#[test]
fn complete_test() {
let mut map = TestValueMap::new();
assert_eq!(map.get(TestValueKey::Padding), None);
assert_eq!(map.get(TestValueKey::Margin), None);
assert_eq!(map.get_or_default(TestValueKey::Padding), TestValue::Padding(0));
assert_eq!(map.get_or_default(TestValueKey::Margin), TestValue::Margin("".to_string()));
assert_eq!(map.get_padding(), 0);
assert_eq!(map.get_margin(), "".to_string());
assert_eq!(map.set(TestValue::Padding(10)), None);
assert_eq!(map.set(TestValue::Margin("string test".to_string())), None);
assert_eq!(map.set(TestValue::Padding(50)), Some(TestValue::Padding(10)));
assert_eq!(map.set(TestValue::Margin("another test".to_string())), Some(TestValue::Margin("string test".to_string())));
assert_eq!(map.get(TestValueKey::Padding).unwrap(), &TestValue::Padding(50));
assert_eq!(
map.get(TestValueKey::Margin).unwrap(),
&TestValue::Margin("another test".to_string())
);
assert_eq!(map.set_padding(70), Some(50));
assert_eq!(map.set_margin("final test".to_string()), Some("another test".to_string()));
assert_eq!(map.get_padding(), 70);
assert_eq!(map.get_margin(), "final test".to_string());
}
#[test]
#[should_panic(expected = "Unexpected condition: Didn't find type String for Margin")]
fn panic_test() {
let mut map = TestValueMap::new();
map.values.insert(TestValueKey::Margin, TestValue::Padding(10));
map.get_margin();
}