Compare commits

...

1 Commits

Author SHA1 Message Date
phoenix 859b0fb1b3 Serialize Album collection (#2)
Release Tagging / release (push) Successful in 44s
Rust Build / Check (push) Successful in 1m0s
Rust Build / Rustfmt (push) Successful in 26s
Rust Build / Clippy (push) Successful in 1m2s
Rust Build / build (push) Successful in 1m7s
Rust Build / Test Suite (push) Successful in 2m29s
Reviewed-on: #2
2026-07-07 16:04:19 -04:00
3 changed files with 38 additions and 3 deletions
Generated
+1 -1
View File
@@ -192,7 +192,7 @@ checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
[[package]]
name = "icarus_models"
version = "0.11.2"
version = "0.11.3"
dependencies = [
"josekit",
"rand",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "icarus_models"
version = "0.11.2"
version = "0.11.3"
edition = "2024"
rust-version = "1.95"
description = "models used for the icarus project"
+36 -1
View File
@@ -37,7 +37,42 @@ pub mod collection {
pub artist: String,
pub disc: i32,
pub track: i32,
// In seconds
/// In seconds
pub duration: f64,
}
pub fn deserialize_json(json_data: &str, album: &mut Album) -> Result<(), serde_json::Error> {
match serde_json::from_str::<Album>(json_data) {
Ok(parsed_album) => {
*album = parsed_album;
Ok(())
}
Err(err) => Err(err),
}
}
}
#[cfg(test)]
mod tests {
#[test]
fn test_deserilize_album_collection_json() {
let album_file_path = "tests/album.json";
let album_file_content = match std::fs::read_to_string(album_file_path) {
Ok(content) => content,
Err(err) => {
assert!(false, "Error: {err:?}");
String::new()
}
};
let mut album = super::collection::Album::default();
match super::collection::deserialize_json(&album_file_content, &mut album) {
Ok(_) => {
assert_eq!(3, album.tracks.len(), "Track count do not match");
}
Err(err) => {
assert!(false, "Error: {err:?}");
}
}
}
}