updatehub_package_schema/
imxkobs.rs

1// Copyright (C) 2019 O.S. Systems Sofware LTDA
2//
3// SPDX-License-Identifier: Apache-2.0
4
5use crate::definitions::InstallIfDifferent;
6use serde::Deserialize;
7use std::path::PathBuf;
8
9#[derive(Clone, Deserialize, PartialEq, Eq, Debug)]
10pub struct Imxkobs {
11    pub filename: String,
12    pub size: u64,
13    pub sha256sum: String,
14
15    pub install_if_different: Option<InstallIfDifferent>,
16    #[serde(rename = "1k_padding")]
17    #[serde(default)]
18    pub padding_1k: bool,
19    #[serde(default)]
20    pub search_exponent: usize,
21    #[serde(default)]
22    pub chip_0_device_path: Option<PathBuf>,
23    #[serde(default)]
24    pub chip_1_device_path: Option<PathBuf>,
25}
26
27#[test]
28fn deserialize() {
29    use pretty_assertions::assert_eq;
30    use serde_json::json;
31
32    assert_eq!(
33        super::Object::Imxkobs(Box::new(Imxkobs {
34            filename: "imxkobs-filename".to_string(),
35            size: 1024,
36            sha256sum: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
37                .to_string(),
38
39            install_if_different: None,
40            padding_1k: true,
41            search_exponent: 2,
42            chip_0_device_path: Some(PathBuf::from("/dev/sda1")),
43            chip_1_device_path: Some(PathBuf::from("/dev/sda2")),
44        })),
45        serde_json::from_value::<super::Object>(json!({
46            "mode": "imxkobs",
47            "filename": "imxkobs-filename",
48            "sha256sum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
49            "size": 1024,
50            "1k_padding": true,
51            "search_exponent": 2,
52            "chip_0_device_path": "/dev/sda1",
53            "chip_1_device_path": "/dev/sda2",
54        }))
55        .unwrap()
56    );
57}