From 644f0b4c8a5350a2e27e47f285974cdaa5fc29e3 Mon Sep 17 00:00:00 2001 From: bel Date: Sun, 26 Nov 2023 22:43:56 -0700 Subject: [PATCH] nonzero unittests pass --- src/main.rs | 22 ++++++++++++++++++++-- src/testdata/standalone.yaml | 1 + 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 9a8f373..e6d09eb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,6 @@ use serde::{Serialize, Deserialize}; +use std::io::Read; +use std::fs::File; fn main() { println!("Hello, world!"); @@ -17,17 +19,33 @@ struct Add { } fn load_storage(path: String) -> Result { - Err("failed".to_string()) + match File::open(path.clone()) { + Ok(mut reader) => _load_storage(&mut reader), + Err(reason) => Err(format!("failed to read storage {}: {}", path, reason)), + } +} + +fn _load_storage(reader: &mut dyn Read) -> Result { + match serde_yaml::from_reader::<&mut dyn Read, Storage>(reader) { + Ok(storage) => Ok(storage), + Err(err) => Err(format!("failed to parse storage: {}", err)), + } } #[cfg(test)] mod tests { use super::*; + #[test] + fn test_load_storage() { + let got = _load_storage(&mut "adds: []".as_bytes()).expect("failed to parse 'adds: []' storage"); + assert_eq!(got, Storage{adds: vec![]}); + } + #[test] fn test_testdata_standalone_yaml() { assert_eq!( - load_storage("./testdata/standalone.yaml".to_string()).expect("cant load standalone.yaml"), + load_storage("./src/testdata/standalone.yaml".to_string()).expect("cant load standalone.yaml"), Storage{adds: vec![ Add{t: 1, add: "def".to_string(), tag: "abc".to_string()}, Add{t: 2, add: "ghi".to_string(), tag: "".to_string()}, diff --git a/src/testdata/standalone.yaml b/src/testdata/standalone.yaml index 423b48d..196d27a 100644 --- a/src/testdata/standalone.yaml +++ b/src/testdata/standalone.yaml @@ -4,3 +4,4 @@ adds: tag: abc - t: 2 add: ghi + tag: ""