Fix tests after recent refactor
This commit is contained in:
parent
78a360ae89
commit
3cf580f607
@ -1,4 +1,4 @@
|
|||||||
use rtchallenge::tuples::{point, vector, Tuple};
|
use rtchallenge::tuples::Tuple;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct Environment {
|
struct Environment {
|
||||||
@ -18,12 +18,12 @@ fn tick(env: &Environment, proj: &Projectile) -> Projectile {
|
|||||||
}
|
}
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut p = Projectile {
|
let mut p = Projectile {
|
||||||
position: point(0., 1., 0.),
|
position: Tuple::point(0., 1., 0.),
|
||||||
velocity: 4. * vector(1., 1., 0.).normalize(),
|
velocity: 4. * Tuple::vector(1., 1., 0.).normalize(),
|
||||||
};
|
};
|
||||||
let e = Environment {
|
let e = Environment {
|
||||||
gravity: vector(0., -0.1, 0.).normalize(),
|
gravity: Tuple::vector(0., -0.1, 0.).normalize(),
|
||||||
wind: vector(-0.01, 0., 0.),
|
wind: Tuple::vector(-0.01, 0., 0.),
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut i = 0;
|
let mut i = 0;
|
||||||
|
|||||||
@ -72,13 +72,13 @@ impl Canvas {
|
|||||||
}
|
}
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::canvas;
|
use super::Canvas;
|
||||||
|
|
||||||
use crate::tuples::Color;
|
use crate::tuples::Color;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn create_canvas() {
|
fn create_canvas() {
|
||||||
let c = canvas(10, 20);
|
let c = Canvas::new(10, 20);
|
||||||
assert_eq!(c.width, 10);
|
assert_eq!(c.width, 10);
|
||||||
assert_eq!(c.height, 20);
|
assert_eq!(c.height, 20);
|
||||||
let black = Color::new(0., 0., 0.);
|
let black = Color::new(0., 0., 0.);
|
||||||
@ -89,7 +89,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn write_to_canvas() {
|
fn write_to_canvas() {
|
||||||
let mut c = canvas(10, 20);
|
let mut c = Canvas::new(10, 20);
|
||||||
let red = Color::new(1., 0., 0.);
|
let red = Color::new(1., 0., 0.);
|
||||||
c.set(2, 3, red);
|
c.set(2, 3, red);
|
||||||
assert_eq!(c.get(2, 3), red);
|
assert_eq!(c.get(2, 3), red);
|
||||||
|
|||||||
@ -214,11 +214,11 @@ impl Sub for Color {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use float_cmp::approx_eq;
|
use float_cmp::approx_eq;
|
||||||
|
|
||||||
use super::{color, cross, dot, point, tuple, vector};
|
use super::{cross, dot, Color, Tuple};
|
||||||
#[test]
|
#[test]
|
||||||
fn is_point() {
|
fn is_point() {
|
||||||
// A tuple with w = 1 is a point
|
// A tuple with w = 1 is a point
|
||||||
let a = tuple(4.3, -4.2, 3.1, 1.0);
|
let a = Tuple::new(4.3, -4.2, 3.1, 1.0);
|
||||||
assert_eq!(a.x, 4.3);
|
assert_eq!(a.x, 4.3);
|
||||||
assert_eq!(a.y, -4.2);
|
assert_eq!(a.y, -4.2);
|
||||||
assert_eq!(a.z, 3.1);
|
assert_eq!(a.z, 3.1);
|
||||||
@ -229,7 +229,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn is_vector() {
|
fn is_vector() {
|
||||||
// A tuple with w = 0 is a point
|
// A tuple with w = 0 is a point
|
||||||
let a = tuple(4.3, -4.2, 3.1, 0.0);
|
let a = Tuple::new(4.3, -4.2, 3.1, 0.0);
|
||||||
assert_eq!(a.x, 4.3);
|
assert_eq!(a.x, 4.3);
|
||||||
assert_eq!(a.y, -4.2);
|
assert_eq!(a.y, -4.2);
|
||||||
assert_eq!(a.z, 3.1);
|
assert_eq!(a.z, 3.1);
|
||||||
@ -239,78 +239,81 @@ mod tests {
|
|||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn point_tuple() {
|
fn point_tuple() {
|
||||||
assert_eq!(point(4., -4., 3.), tuple(4., -4., 3., 1.))
|
assert_eq!(Tuple::point(4., -4., 3.), Tuple::new(4., -4., 3., 1.))
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn vector_tuple() {
|
fn vector_tuple() {
|
||||||
assert_eq!(vector(4., -4., 3.), tuple(4., -4., 3., 0.))
|
assert_eq!(Tuple::vector(4., -4., 3.), Tuple::new(4., -4., 3., 0.))
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn add_two_tuples() {
|
fn add_two_tuples() {
|
||||||
let a1 = tuple(3., -2., 5., 1.);
|
let a1 = Tuple::new(3., -2., 5., 1.);
|
||||||
let a2 = tuple(-2., 3., 1., 0.);
|
let a2 = Tuple::new(-2., 3., 1., 0.);
|
||||||
assert_eq!(a1 + a2, tuple(1., 1., 6., 1.));
|
assert_eq!(a1 + a2, Tuple::new(1., 1., 6., 1.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn sub_two_points() {
|
fn sub_two_points() {
|
||||||
let p1 = point(3., 2., 1.);
|
let p1 = Tuple::point(3., 2., 1.);
|
||||||
let p2 = point(5., 6., 7.);
|
let p2 = Tuple::point(5., 6., 7.);
|
||||||
assert_eq!(p1 - p2, vector(-2., -4., -6.));
|
assert_eq!(p1 - p2, Tuple::vector(-2., -4., -6.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn sub_vector_point() {
|
fn sub_vector_point() {
|
||||||
let p = point(3., 2., 1.);
|
let p = Tuple::point(3., 2., 1.);
|
||||||
let v = vector(5., 6., 7.);
|
let v = Tuple::vector(5., 6., 7.);
|
||||||
assert_eq!(p - v, point(-2., -4., -6.));
|
assert_eq!(p - v, Tuple::point(-2., -4., -6.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn sub_two_vectors() {
|
fn sub_two_vectors() {
|
||||||
let v1 = vector(3., 2., 1.);
|
let v1 = Tuple::vector(3., 2., 1.);
|
||||||
let v2 = vector(5., 6., 7.);
|
let v2 = Tuple::vector(5., 6., 7.);
|
||||||
assert_eq!(v1 - v2, vector(-2., -4., -6.));
|
assert_eq!(v1 - v2, Tuple::vector(-2., -4., -6.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn sub_zero_vector() {
|
fn sub_zero_vector() {
|
||||||
let zero = vector(0., 0., 0.);
|
let zero = Tuple::vector(0., 0., 0.);
|
||||||
let v = vector(1., -2., 3.);
|
let v = Tuple::vector(1., -2., 3.);
|
||||||
assert_eq!(zero - v, vector(-1., 2., -3.));
|
assert_eq!(zero - v, Tuple::vector(-1., 2., -3.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn negate_tuple() {
|
fn negate_tuple() {
|
||||||
let a = tuple(1., -2., 3., -4.);
|
let a = Tuple::new(1., -2., 3., -4.);
|
||||||
assert_eq!(-a, tuple(-1., 2., -3., 4.));
|
assert_eq!(-a, Tuple::new(-1., 2., -3., 4.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn mul_tuple_scalar() {
|
fn mul_tuple_scalar() {
|
||||||
let a = tuple(1., -2., 3., -4.);
|
let a = Tuple::new(1., -2., 3., -4.);
|
||||||
assert_eq!(a * 3.5, tuple(3.5, -7., 10.5, -14.));
|
assert_eq!(a * 3.5, Tuple::new(3.5, -7., 10.5, -14.));
|
||||||
assert_eq!(3.5 * a, tuple(3.5, -7., 10.5, -14.));
|
assert_eq!(3.5 * a, Tuple::new(3.5, -7., 10.5, -14.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn mul_tuple_fraction() {
|
fn mul_tuple_fraction() {
|
||||||
let a = tuple(1., -2., 3., -4.);
|
let a = Tuple::new(1., -2., 3., -4.);
|
||||||
assert_eq!(a * 0.5, tuple(0.5, -1., 1.5, -2.));
|
assert_eq!(a * 0.5, Tuple::new(0.5, -1., 1.5, -2.));
|
||||||
assert_eq!(0.5 * a, tuple(0.5, -1., 1.5, -2.));
|
assert_eq!(0.5 * a, Tuple::new(0.5, -1., 1.5, -2.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn div_tuple_scalar() {
|
fn div_tuple_scalar() {
|
||||||
let a = tuple(1., -2., 3., -4.);
|
let a = Tuple::new(1., -2., 3., -4.);
|
||||||
assert_eq!(a / 2., tuple(0.5, -1., 1.5, -2.));
|
assert_eq!(a / 2., Tuple::new(0.5, -1., 1.5, -2.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn vector_magnitude() {
|
fn vector_magnitude() {
|
||||||
assert_eq!(1., vector(1., 0., 0.).magnitude());
|
assert_eq!(1., Tuple::vector(1., 0., 0.).magnitude());
|
||||||
assert_eq!(1., vector(0., 1., 0.).magnitude());
|
assert_eq!(1., Tuple::vector(0., 1., 0.).magnitude());
|
||||||
assert_eq!(1., vector(0., 0., 1.).magnitude());
|
assert_eq!(1., Tuple::vector(0., 0., 1.).magnitude());
|
||||||
assert_eq!(14_f32.sqrt(), vector(1., 2., 3.).magnitude());
|
assert_eq!(14_f32.sqrt(), Tuple::vector(1., 2., 3.).magnitude());
|
||||||
assert_eq!(14_f32.sqrt(), vector(-1., -2., -3.).magnitude());
|
assert_eq!(14_f32.sqrt(), Tuple::vector(-1., -2., -3.).magnitude());
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn vector_normalize() {
|
fn vector_normalize() {
|
||||||
assert_eq!(vector(1., 0., 0.), vector(4., 0., 0.).normalize());
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
vector(1. / 14_f32.sqrt(), 2. / 14_f32.sqrt(), 3. / 14_f32.sqrt()),
|
Tuple::vector(1., 0., 0.),
|
||||||
vector(1., 2., 3.).normalize()
|
Tuple::vector(4., 0., 0.).normalize()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
Tuple::vector(1. / 14_f32.sqrt(), 2. / 14_f32.sqrt(), 3. / 14_f32.sqrt()),
|
||||||
|
Tuple::vector(1., 2., 3.).normalize()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
@ -318,53 +321,53 @@ mod tests {
|
|||||||
assert!(approx_eq!(
|
assert!(approx_eq!(
|
||||||
f32,
|
f32,
|
||||||
1.,
|
1.,
|
||||||
vector(1., 2., 3.).normalize().magnitude(),
|
Tuple::vector(1., 2., 3.).normalize().magnitude(),
|
||||||
ulps = 1
|
ulps = 1
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn dot_two_tuples() {
|
fn dot_two_tuples() {
|
||||||
let a = vector(1., 2., 3.);
|
let a = Tuple::vector(1., 2., 3.);
|
||||||
let b = vector(2., 3., 4.);
|
let b = Tuple::vector(2., 3., 4.);
|
||||||
assert_eq!(20., dot(a, b));
|
assert_eq!(20., dot(a, b));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn cross_two_tuples() {
|
fn cross_two_tuples() {
|
||||||
let a = vector(1., 2., 3.);
|
let a = Tuple::vector(1., 2., 3.);
|
||||||
let b = vector(2., 3., 4.);
|
let b = Tuple::vector(2., 3., 4.);
|
||||||
assert_eq!(vector(-1., 2., -1.), cross(a, b));
|
assert_eq!(Tuple::vector(-1., 2., -1.), cross(a, b));
|
||||||
assert_eq!(vector(1., -2., 1.), cross(b, a));
|
assert_eq!(Tuple::vector(1., -2., 1.), cross(b, a));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn color_rgb() {
|
fn color_rgb() {
|
||||||
let c = color(-0.5, 0.4, 1.7);
|
let c = Color::new(-0.5, 0.4, 1.7);
|
||||||
assert_eq!(c.red, -0.5);
|
assert_eq!(c.red, -0.5);
|
||||||
assert_eq!(c.green, 0.4);
|
assert_eq!(c.green, 0.4);
|
||||||
assert_eq!(c.blue, 1.7);
|
assert_eq!(c.blue, 1.7);
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn add_color() {
|
fn add_color() {
|
||||||
let c1 = color(0.9, 0.6, 0.75);
|
let c1 = Color::new(0.9, 0.6, 0.75);
|
||||||
let c2 = color(0.7, 0.1, 0.25);
|
let c2 = Color::new(0.7, 0.1, 0.25);
|
||||||
assert_eq!(c1 + c2, color(0.9 + 0.7, 0.6 + 0.1, 0.75 + 0.25));
|
assert_eq!(c1 + c2, Color::new(0.9 + 0.7, 0.6 + 0.1, 0.75 + 0.25));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn sub_color() {
|
fn sub_color() {
|
||||||
let c1 = color(0.9, 0.6, 0.75);
|
let c1 = Color::new(0.9, 0.6, 0.75);
|
||||||
let c2 = color(0.7, 0.1, 0.25);
|
let c2 = Color::new(0.7, 0.1, 0.25);
|
||||||
assert_eq!(c1 - c2, color(0.9 - 0.7, 0.6 - 0.1, 0.75 - 0.25));
|
assert_eq!(c1 - c2, Color::new(0.9 - 0.7, 0.6 - 0.1, 0.75 - 0.25));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn mul_color_scalar() {
|
fn mul_color_scalar() {
|
||||||
let c = color(0.2, 0.3, 0.4);
|
let c = Color::new(0.2, 0.3, 0.4);
|
||||||
assert_eq!(c * 2., color(0.2 * 2., 0.3 * 2., 0.4 * 2.));
|
assert_eq!(c * 2., Color::new(0.2 * 2., 0.3 * 2., 0.4 * 2.));
|
||||||
assert_eq!(2. * c, color(0.2 * 2., 0.3 * 2., 0.4 * 2.));
|
assert_eq!(2. * c, Color::new(0.2 * 2., 0.3 * 2., 0.4 * 2.));
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn mul_colors() {
|
fn mul_colors() {
|
||||||
let c1 = color(1., 0.2, 0.4);
|
let c1 = Color::new(1., 0.2, 0.4);
|
||||||
let c2 = color(0.9, 1., 0.1);
|
let c2 = Color::new(0.9, 1., 0.1);
|
||||||
assert_eq!(c1 * c2, color(1.0 * 0.9, 0.2 * 1., 0.4 * 0.1));
|
assert_eq!(c1 * c2, Color::new(1.0 * 0.9, 0.2 * 1., 0.4 * 0.1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user