use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Clone, PartialEq, Deserialize, Serialize)]
#[serde(rename_all(deserialize = "lowercase"))]
pub struct Image {
pub large: String,
pub medium: String,
}
impl Image {
pub fn largest(&self) -> &str {
if self.large.is_empty() {
&self.medium
} else {
&self.large
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_largest_with_large() {
let image = Image {
large: "https://example.com/large.jpg".to_string(),
medium: "https://example.com/medium.jpg".to_string(),
};
assert_eq!(image.largest(), "https://example.com/large.jpg");
}
#[test]
fn test_largest_with_empty_large() {
let image = Image {
large: "".to_string(),
medium: "https://example.com/medium.jpg".to_string(),
};
assert_eq!(image.largest(), "https://example.com/medium.jpg");
}
#[test]
fn test_largest_with_empty_large_and_medium() {
let image = Image {
large: "".to_string(),
medium: "".to_string(),
};
assert_eq!(image.largest(), "");
}
}