use crate::core::store::FeoxStore;
use crate::error::FeoxError;
#[test]
fn test_timestamp_conflict_resolution() {
let store = FeoxStore::new(None).unwrap();
let key = b"ts_key";
store.insert_with_timestamp(key, b"v1", Some(100)).unwrap();
store.insert_with_timestamp(key, b"v2", Some(200)).unwrap();
assert_eq!(store.get(key).unwrap(), b"v2");
let result = store.insert_with_timestamp(key, b"v3", Some(150));
assert!(result.is_err());
assert!(matches!(result.unwrap_err(), FeoxError::OlderTimestamp));
assert_eq!(store.get(key).unwrap(), b"v2");
}
#[test]
fn test_delete_with_timestamp() {
let store = FeoxStore::new(None).unwrap();
let key = b"del_ts_key";
store
.insert_with_timestamp(key, b"value", Some(100))
.unwrap();
let result = store.delete_with_timestamp(key, Some(50));
assert!(result.is_err());
assert!(matches!(result.unwrap_err(), FeoxError::OlderTimestamp));
assert!(store.contains_key(key));
store.delete_with_timestamp(key, Some(200)).unwrap();
assert!(!store.contains_key(key));
}