mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-10 20:19:07 +00:00
serde_keyvalue: add a few tests
Add tests for a unit type and an untagged enum. TEST=cargo test -p serde_keyvalue Change-Id: Ifb840e3270624ef0e54d69b7eba2e631ffcac4e5 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3906752 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
This commit is contained in:
parent
90063081cb
commit
aad77ff1e2
1 changed files with 39 additions and 0 deletions
|
@ -922,6 +922,16 @@ mod tests {
|
||||||
assert_eq!(res.m, r#"Escaped slash\\"#.to_string());
|
assert_eq!(res.m, r#"Escaped slash\\"#.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn deserialize_unit() {
|
||||||
|
from_key_values::<SingleStruct<()>>("m").unwrap();
|
||||||
|
from_key_values::<SingleStruct<()>>("m=").unwrap();
|
||||||
|
|
||||||
|
from_key_values::<SingleStruct<()>>("").unwrap_err();
|
||||||
|
from_key_values::<SingleStruct<()>>("p").unwrap_err();
|
||||||
|
from_key_values::<SingleStruct<()>>("m=10").unwrap_err();
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn deserialize_bool() {
|
fn deserialize_bool() {
|
||||||
let res = from_key_values::<SingleStruct<bool>>("m=true").unwrap();
|
let res = from_key_values::<SingleStruct<bool>>("m=true").unwrap();
|
||||||
|
@ -1108,6 +1118,35 @@ mod tests {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn deserialize_untagged_enum() {
|
||||||
|
#[derive(Deserialize, PartialEq, Debug)]
|
||||||
|
#[serde(untagged)]
|
||||||
|
enum TestEnum {
|
||||||
|
FirstVariant { first: u32 },
|
||||||
|
SecondVariant { second: bool },
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, PartialEq, Debug)]
|
||||||
|
struct TestStruct {
|
||||||
|
#[serde(flatten)]
|
||||||
|
variant: TestEnum,
|
||||||
|
}
|
||||||
|
|
||||||
|
let res: TestStruct = from_key_values("first=10").unwrap();
|
||||||
|
assert_eq!(res.variant, TestEnum::FirstVariant { first: 10 });
|
||||||
|
|
||||||
|
let res: TestStruct = from_key_values("second=false").unwrap();
|
||||||
|
assert_eq!(res.variant, TestEnum::SecondVariant { second: false },);
|
||||||
|
|
||||||
|
let res: TestStruct = from_key_values("second").unwrap();
|
||||||
|
assert_eq!(res.variant, TestEnum::SecondVariant { second: true },);
|
||||||
|
|
||||||
|
from_key_values::<TestStruct>("third=10").unwrap_err();
|
||||||
|
from_key_values::<TestStruct>("first=some_string").unwrap_err();
|
||||||
|
from_key_values::<TestStruct>("second=10").unwrap_err();
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn deserialize_first_arg_string() {
|
fn deserialize_first_arg_string() {
|
||||||
#[derive(Deserialize, PartialEq, Debug)]
|
#[derive(Deserialize, PartialEq, Debug)]
|
||||||
|
|
Loading…
Reference in a new issue