use tempfile::TempDir;
use vecdb::{
AnyStoredVec, AnyVec, Bytes, BytesVec, Database, ImportableVec, ReadableVec, Version,
WritableVec,
};
#[derive(Debug, Clone, Copy, PartialEq, Bytes)]
struct Timestamp(u64);
#[test]
fn test_derive_bytes_vec_value() -> vecdb::Result<()> {
let temp = TempDir::new()?;
let db = Database::open(temp.path())?;
let mut vec: BytesVec<usize, Timestamp> = BytesVec::import(&db, "test", Version::TWO)?;
vec.push(Timestamp(12345));
vec.push(Timestamp(67890));
vec.push(Timestamp(111213));
vec.write()?;
let collected: Vec<Timestamp> = vec.collect();
assert_eq!(
collected,
vec![Timestamp(12345), Timestamp(67890), Timestamp(111213)]
);
assert_eq!(vec.len(), 3);
Ok(())
}
#[derive(Debug, Clone, Copy, PartialEq, Bytes)]
struct Price(f64);
#[test]
fn test_derive_with_float() -> vecdb::Result<()> {
let temp = TempDir::new()?;
let db = Database::open(temp.path())?;
let mut vec: BytesVec<usize, Price> = BytesVec::import(&db, "prices", Version::TWO)?;
vec.push(Price(19.99));
vec.push(Price(29.99));
vec.push(Price(39.99));
vec.write()?;
let collected: Vec<Price> = vec.collect();
assert_eq!(collected.len(), 3);
assert_eq!(collected[0], Price(19.99));
assert_eq!(collected[1], Price(29.99));
assert_eq!(collected[2], Price(39.99));
Ok(())
}