45 lines
1018 B
Rust
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);
|
|
}
|
|
}
|
|
}
|
|
}
|