use crate::types::Position;
pub(crate) fn equals(p1: Position, p2: Position) -> bool {
p1[0] == p2[0] && p1[1] == p2[1]
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn identical_points_equal() {
assert!(equals([1.0, 2.0], [1.0, 2.0]));
}
#[test]
fn different_x_unequal() {
assert!(!equals([1.0, 2.0], [1.1, 2.0]));
}
#[test]
fn different_y_unequal() {
assert!(!equals([1.0, 2.0], [1.0, 2.1]));
}
#[test]
fn zero_zero_equals_zero_zero() {
assert!(equals([0.0, 0.0], [0.0, 0.0]));
}
#[test]
fn positive_and_negative_zero_are_equal() {
assert!(equals([0.0, 1.0], [-0.0, 1.0]));
assert!(equals([1.0, 0.0], [1.0, -0.0]));
}
#[test]
fn nan_never_equals_anything() {
let nan = f64::NAN;
assert!(!equals([nan, 1.0], [nan, 1.0]));
assert!(!equals([1.0, nan], [1.0, nan]));
assert!(!equals([nan, nan], [nan, nan]));
}
}