tuple equality
This commit is contained in:
@@ -29,10 +29,18 @@ fn tuple_z(tuple: PointVector) -> f32 {
|
|||||||
fn tuple_is_point(tuple: PointVector) -> bool {
|
fn tuple_is_point(tuple: PointVector) -> bool {
|
||||||
relative_eq!(1.0, tuple.3)
|
relative_eq!(1.0, tuple.3)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tuple_is_vector(tuple: PointVector) -> bool {
|
fn tuple_is_vector(tuple: PointVector) -> bool {
|
||||||
relative_eq!(0.0, tuple.3)
|
relative_eq!(0.0, tuple.3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn tuple_equals(lhs: PointVector, rhs: PointVector) -> bool {
|
||||||
|
relative_eq!(lhs.0, rhs.0)
|
||||||
|
&& relative_eq!(lhs.1, rhs.1)
|
||||||
|
&& relative_eq!(lhs.2, rhs.2)
|
||||||
|
&& relative_eq!(lhs.3, rhs.3)
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -70,4 +78,25 @@ mod tests {
|
|||||||
let vector = vector((4.0, -4.0, 3.0));
|
let vector = vector((4.0, -4.0, 3.0));
|
||||||
assert_eq!(true, tuple_is_vector(vector));
|
assert_eq!(true, tuple_is_vector(vector));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn tuples_equal() {
|
||||||
|
let lhs = point((1.0, 2.0, 3.0));
|
||||||
|
let rhs = point((1.0, 2.0, 3.0));
|
||||||
|
assert_eq!(true, tuple_equals(lhs, rhs));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn tuples_relative_equal() {
|
||||||
|
let lhs = point((1.0000001, 2.0, 3.0));
|
||||||
|
let rhs = point((1.0, 2.0, 3.0));
|
||||||
|
assert_eq!(true, tuple_equals(lhs, rhs));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn tuples_not_equal() {
|
||||||
|
let lhs = point((1.0, 2.0, 3.0));
|
||||||
|
let rhs = vector((1.0, 2.0, 3.0));
|
||||||
|
assert_eq!(false, tuple_equals(lhs, rhs));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user