extern crate simple_kbuckets; use simple_kbuckets::Table; #[test] fn retrieve_one_exact() { let mut table = Table::new(0b0101, 3, 4); table.update(0b1111, 42); table.update(0b0000, 43); table.update(0b1010, 44); table.update(0b0101, 45); assert_eq!(table.find(&0b1111, 1), vec![(0b1111, &42)]); assert_eq!(table.find(&0b0000, 1), vec![(0b0000, &43)]); assert_eq!(table.find(&0b1010, 1), vec![(0b1010, &44)]); assert_eq!(table.find(&0b0101, 1), vec![(0b0101, &45)]); } #[test] fn retrieve_one_closest() { let mut table = Table::new(0b0101, 3, 4); table.update(0b1111, 42); table.update(0b0000, 43); table.update(0b1010, 44); table.update(0b0101, 45); assert_eq!(table.find(&0b1110, 1), vec![(0b1111, &42)]); assert_eq!(table.find(&0b0001, 1), vec![(0b0000, &43)]); assert_eq!(table.find(&0b1000, 1), vec![(0b1010, &44)]); assert_eq!(table.find(&0b0111, 1), vec![(0b0101, &45)]); } #[test] fn bucket_ageing() { let mut table = Table::new(0b0101, 3, 4); table.update(0b1101, 42); table.update(0b1111, 43); table.update(0b1100, 44); assert_eq!(table.find(&0b0101, 4), vec![(0b1101, &42), (0b1100, &44), (0b1111, &43)]); table.update(0b1110, 45); assert_eq!(table.find(&0b0101, 4), vec![(0b1100, &44), (0b1111, &43), (0b1110, &45)]); } #[test] fn bucket_ageing_refresh() { let mut table = Table::new(0b0101, 3, 4); table.update(0b1101, 42); table.update(0b1111, 43); table.update(0b1100, 44); assert_eq!(table.find(&0b0101, 4), vec![(0b1101, &42), (0b1100, &44), (0b1111, &43)]); table.update(0b1101, 100); assert_eq!(table.find(&0b0101, 4), vec![(0b1101, &100), (0b1100, &44), (0b1111, &43)]); table.update(0b1110, 45); assert_eq!(table.find(&0b0101, 4), vec![(0b1101, &100), (0b1100, &44), (0b1110, &45)]); }