use prefs::{Key, Preferences};
fn test_domain() -> String {
format!("com.myrt.test.{}", std::process::id())
}
#[test]
fn test_bool_roundtrip() {
const KEY: Key<bool> = Key::new("test_bool");
let domain = test_domain();
let prefs = Preferences::new(&domain).unwrap();
assert!(!prefs.contains(KEY).unwrap());
assert_eq!(prefs.get(KEY).unwrap(), None);
prefs.set(KEY, &true).unwrap();
assert!(prefs.contains(KEY).unwrap());
assert_eq!(prefs.get(KEY).unwrap(), Some(true));
prefs.remove(KEY).unwrap();
assert!(!prefs.contains(KEY).unwrap());
}
#[test]
fn test_i64_roundtrip() {
const KEY: Key<i64> = Key::new("test_i64");
let domain = test_domain();
let prefs = Preferences::new(&domain).unwrap();
prefs.set(KEY, &42).unwrap();
assert_eq!(prefs.get(KEY).unwrap(), Some(42));
assert_eq!(prefs.get_or(KEY, 0).unwrap(), 42);
prefs.remove(KEY).unwrap();
assert_eq!(prefs.get(KEY).unwrap(), None);
}
#[test]
fn test_f64_roundtrip() {
const KEY: Key<f64> = Key::new("test_f64");
let domain = test_domain();
let prefs = Preferences::new(&domain).unwrap();
prefs.set(KEY, &2.5).unwrap();
assert_eq!(prefs.get(KEY).unwrap(), Some(2.5));
prefs.remove(KEY).unwrap();
}
#[test]
fn test_string_roundtrip() {
const KEY: Key<String> = Key::new("test_string");
let domain = test_domain();
let prefs = Preferences::new(&domain).unwrap();
prefs.set(KEY, &"hello".into()).unwrap();
assert_eq!(prefs.get(KEY).unwrap(), Some("hello".into()));
prefs.remove(KEY).unwrap();
}
#[test]
fn test_vec_string_roundtrip() {
const KEY: Key<Vec<String>> = Key::new("test_vec");
let domain = test_domain();
let prefs = Preferences::new(&domain).unwrap();
let value = vec!["a".into(), "b".into()];
prefs.set(KEY, &value).unwrap();
assert_eq!(prefs.get(KEY).unwrap(), Some(value));
prefs.remove(KEY).unwrap();
}
#[test]
fn test_preferences_clone_and_debug() {
let prefs = Preferences::new("com.example.test").unwrap();
let cloned = prefs.clone();
let _ = format!("{prefs:?}");
let _ = format!("{cloned:?}");
}