kmeans/src/test.rs

45 lines
1018 B
Rust

#[cfg(test)]
mod test {
#[test]
fn iterators() {
use kmeansdata::KmeansData;
let data = vec![4.0, 5.0, 11.0, 12.0, 13.0];
let kmeans = KmeansData::from_clusters(vec![
vec![4.0, 5.0],
vec![11.0, 12.0, 13.0],
]);
for (val1, val2) in kmeans.into_iter().zip(data) {
assert_eq!(val1, val2);
}
}
#[test]
fn iterate() {
use kmeans::Kmeans;
let data = vec![
vec![4.0, 5.0, 11.0, 12.0],
vec![13.0],
];
let solution = vec![
vec![4.0, 5.0],
vec![11.0, 12.0, 13.0],
];
let mut kmeans = Kmeans::guess_centroids(data.clone());
for _ in 0..4 {
let (new_kmeans, stable) = kmeans.next_iteration();
kmeans = new_kmeans;
}
for (k1, k2) in kmeans.iter().zip(solution) {
for (i, j) in k1.iter().zip(&k2) {
assert_eq!(i, j);
}
}
}
}