added remaining enum tests
This commit is contained in:
parent
5f1eadb850
commit
cdc90d553c
|
@ -263,6 +263,12 @@ fn unit_struct_roundtrip() {
|
||||||
let actual =
|
let actual =
|
||||||
UnitStruct::from_value(UnitStruct.into_value_unknown(), Span::test_data()).unwrap();
|
UnitStruct::from_value(UnitStruct.into_value_unknown(), Span::test_data()).unwrap();
|
||||||
assert_eq!(expected, actual);
|
assert_eq!(expected, actual);
|
||||||
|
|
||||||
|
let expected = Value::test_nothing();
|
||||||
|
let actual = UnitStruct::from_value(Value::test_nothing(), Span::test_data())
|
||||||
|
.unwrap()
|
||||||
|
.into_value_unknown();
|
||||||
|
assert_eq!(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(IntoValue, FromValue, Debug, PartialEq)]
|
#[derive(IntoValue, FromValue, Debug, PartialEq)]
|
||||||
|
@ -320,3 +326,50 @@ fn enum_from_value() {
|
||||||
let actual = <[Enum; 3]>::from_value(Enum::value(), Span::test_data()).unwrap();
|
let actual = <[Enum; 3]>::from_value(Enum::value(), Span::test_data()).unwrap();
|
||||||
assert_eq!(expected, actual);
|
assert_eq!(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn enum_roundtrip() {
|
||||||
|
let expected = Enum::make();
|
||||||
|
let actual =
|
||||||
|
<[Enum; 3]>::from_value(Enum::make().into_value_unknown(), Span::test_data()).unwrap();
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
|
||||||
|
let expected = Enum::value();
|
||||||
|
let actual = <[Enum; 3]>::from_value(Enum::value(), Span::test_data())
|
||||||
|
.unwrap()
|
||||||
|
.into_value_unknown();
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn enum_type_missing() {
|
||||||
|
let value = Value::test_record(record!());
|
||||||
|
let res = Enum::from_value(value, Span::test_data());
|
||||||
|
assert!(res.is_err());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn enum_content_missing() {
|
||||||
|
let value = Value::test_record(record! {
|
||||||
|
"type" => Value::test_string("tuple")
|
||||||
|
});
|
||||||
|
let res = Enum::from_value(value, Span::test_data());
|
||||||
|
assert!(res.is_err());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn enum_unknown_variant() {
|
||||||
|
let value = Value::test_record(record! {
|
||||||
|
"type" => Value::test_string("who_knows")
|
||||||
|
});
|
||||||
|
let res = Enum::from_value(value, Span::test_data());
|
||||||
|
assert!(res.is_err());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn enum_incorrect_type() {
|
||||||
|
// Should work for every type that is not a record.
|
||||||
|
let value = Value::test_nothing();
|
||||||
|
let res = Enum::from_value(value, Span::test_data());
|
||||||
|
assert!(res.is_err());
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user