use serde_utils;
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct Format {
#[serde(skip_serializing_if = "Option::is_none")]
pub w: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub h: Option<u32>,
#[serde(rename = "wratio", skip_serializing_if = "Option::is_none")]
pub w_ratio: Option<u32>,
#[serde(rename = "hratio", skip_serializing_if = "Option::is_none")]
pub h_ratio: Option<u32>,
#[serde(rename = "w_min", skip_serializing_if = "Option::is_none")]
pub w_min: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ext: Option<serde_utils::Ext>,
}
#[cfg(test)]
mod tests {
use super::*;
use serde_json;
#[test]
fn serialization_skip_fields() {
let f = Format {
w: None,
h: None,
w_ratio: None,
h_ratio: None,
w_min: None,
ext: None,
};
let expected = r#"{}"#;
let serialized = serde_json::to_string(&f).unwrap();
assert_eq!(expected, serialized)
}
#[test]
fn deserialize_defaults() {
let serialized = r#"{}"#;
let res = serde_json::from_str(serialized);
let f: Format = match res {
Ok(x) => x,
Err(e) => panic!("{:?}", e),
};
let expected = Format {
w: None,
h: None,
w_ratio: None,
h_ratio: None,
w_min: None,
ext: None,
};
assert_eq!(expected, f);
}
}