()
| 428 | |
| 429 | #[test] |
| 430 | fn distance_non_negative_finite() { |
| 431 | let dim = 32; |
| 432 | let vecs: Vec<Vec<f32>> = (0..8).map(|i| rand_vec(i, dim)).collect(); |
| 433 | let refs: Vec<&[f32]> = vecs.iter().map(|v| v.as_slice()).collect(); |
| 434 | let codec = BbqCodec::calibrate(&refs, dim, 3); |
| 435 | |
| 436 | for i in 0..vecs.len() { |
| 437 | for j in 0..vecs.len() { |
| 438 | let qi = codec.encode(&vecs[i]); |
| 439 | let qj = codec.encode(&vecs[j]); |
| 440 | let sym = codec.fast_symmetric_distance(&qi, &qj); |
| 441 | assert!( |
| 442 | sym.is_finite() && sym >= 0.0, |
| 443 | "fast_symmetric_distance({i},{j}) = {sym}" |
| 444 | ); |
| 445 | |
| 446 | let query = codec.prepare_query(&vecs[i]); |
| 447 | let asym = codec.exact_asymmetric_distance(&query, &qj); |
| 448 | assert!( |
| 449 | asym.is_finite() && asym >= 0.0, |
| 450 | "exact_asymmetric_distance({i},{j}) = {asym}" |
| 451 | ); |
| 452 | } |
| 453 | } |
| 454 | } |
| 455 | |
| 456 | #[test] |
| 457 | fn oversample_default_is_three() { |
nothing calls this directly
no test coverage detected