mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-09 20:04:20 +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());
|
||||
}
|
||||
|
||||
#[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]
|
||||
fn deserialize_bool() {
|
||||
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]
|
||||
fn deserialize_first_arg_string() {
|
||||
#[derive(Deserialize, PartialEq, Debug)]
|
||||
|
|
Loading…
Reference in a new issue