|
| 1 | +use heed::EnvOpenOptions; |
1 | 2 | use rand::seq::SliceRandom; |
2 | 3 | use rand::Rng; |
3 | 4 |
|
4 | 5 | use super::{create_database, rng}; |
5 | | -use crate::distance::Euclidean; |
6 | | -use crate::Writer; |
| 6 | +use crate::distance::{DotProduct, Euclidean}; |
| 7 | +use crate::{Database, Reader, Writer}; |
| 8 | + |
| 9 | +#[test] |
| 10 | +fn clear_small_database() { |
| 11 | + let _ = rayon::ThreadPoolBuilder::new().num_threads(1).build_global(); |
| 12 | + |
| 13 | + let dir = tempfile::tempdir().unwrap(); |
| 14 | + let env = EnvOpenOptions::new().map_size(200 * 1024 * 1024).open(dir.path()).unwrap(); |
| 15 | + |
| 16 | + let mut wtxn = env.write_txn().unwrap(); |
| 17 | + let database: Database<DotProduct> = env.create_database(&mut wtxn, None).unwrap(); |
| 18 | + |
| 19 | + let zero_writer = Writer::new(database, 0, 3); |
| 20 | + zero_writer.add_item(&mut wtxn, 0, &[0.0, 1.0, 2.0]).unwrap(); |
| 21 | + zero_writer.clear(&mut wtxn).unwrap(); |
| 22 | + zero_writer.build(&mut wtxn, &mut rng(), None).unwrap(); |
| 23 | + |
| 24 | + let one_writer = Writer::new(database, 1, 3); |
| 25 | + one_writer.add_item(&mut wtxn, 0, &[1.0, 2.0, 3.0]).unwrap(); |
| 26 | + one_writer.build(&mut wtxn, &mut rng(), None).unwrap(); |
| 27 | + wtxn.commit().unwrap(); |
| 28 | + |
| 29 | + let mut wtxn = env.write_txn().unwrap(); |
| 30 | + let zero_writer = Writer::new(database, 0, 3); |
| 31 | + zero_writer.clear(&mut wtxn).unwrap(); |
| 32 | + |
| 33 | + let one_reader = Reader::open(&wtxn, 1, database).unwrap(); |
| 34 | + assert_eq!(one_reader.item_vector(&wtxn, 0).unwrap().unwrap(), vec![1.0, 2.0, 3.0]); |
| 35 | + wtxn.commit().unwrap(); |
| 36 | +} |
7 | 37 |
|
8 | 38 | #[test] |
9 | 39 | fn use_u32_max_minus_one_for_a_vec() { |
|
0 commit comments