//! This tests the `defaults` module to ensure things behave as they should. use std::collections::HashMap; use cacao::appkit::{App, AppDelegate}; use cacao::defaults::{UserDefaults, Value}; #[derive(Default)] struct DefaultsTest; impl AppDelegate for DefaultsTest { fn did_finish_launching(&self) { let mut defaults = UserDefaults::standard(); defaults.register({ let mut map = HashMap::new(); map.insert("testbool", Value::Bool(true)); map.insert("testint", Value::Integer(42)); map.insert("testfloat", Value::Float(42.)); map.insert("teststring", Value::string("Testing")); let bytes = "BYTES TEST".to_string().into_bytes(); map.insert("testdata", Value::Data(bytes)); map }); let testbool = defaults.get("testbool").unwrap().as_bool().unwrap(); assert_eq!(testbool, true); let testint = defaults.get("testint").unwrap().as_i64().unwrap(); assert_eq!(testint, 42); let testfloat = defaults.get("testfloat").unwrap().as_f64().unwrap(); assert_eq!(testfloat, 42.); let teststring = defaults.get("teststring").unwrap(); assert_eq!(teststring.as_str().unwrap(), "Testing"); let bytes = defaults.get("testdata").unwrap(); let s = match std::str::from_utf8(bytes.as_data().unwrap()) { Ok(s) => s, Err(e) => { eprintln!("Error converting bytes {}", e); "Error converting bytes" }, }; assert_eq!(s, "BYTES TEST"); println!("All UserDefaults tests pass"); App::terminate(); } } fn main() { App::new("com.cacao.defaults-test", DefaultsTest::default()).run(); }