Compactify test code

This commit is contained in:
numzero 2024-11-07 01:39:29 +03:00
parent cc3d16cf2c
commit 9fc5dfb2e1
2 changed files with 29 additions and 133 deletions

View File

@ -266,154 +266,46 @@ impl Rect {
} }
} }
#[cfg(test)]
use crate::types::ray;
#[cfg(test)] #[cfg(test)]
use glam::vec3; use glam::vec3;
#[test] #[test]
fn test_rect() { fn test_rect() {
assert_eq!( assert_eq!(
Rect::flip_ray(Ray { Rect::flip_ray(ray(vec3(2., 3., 2.), vec3(4., 5., 4.))),
pos: vec3(2.0, 3.0, 2.0), ray(vec3(2., 3., 2.), vec3(4., 5., 4.)),
dir: vec3(4.0, 5.0, 4.0)
}),
Ray {
pos: vec3(2.0, 3.0, 2.0),
dir: vec3(4.0, 5.0, 4.0)
}
); );
assert_eq!( assert_eq!(
Rect::flip_ray(Ray { Rect::flip_ray(ray(vec3(2., 3., 2.), vec3(-4., 5., -4.))),
pos: vec3(2.0, 3.0, 2.0), ray(vec3(-2., 3., -2.), vec3(4., 5., 4.)),
dir: vec3(-4.0, 5.0, -4.0)
}),
Ray {
pos: vec3(-2.0, 3.0, -2.0),
dir: vec3(4.0, 5.0, 4.0)
}
); );
assert_eq!( assert_eq!(
Rect::flip_ray(Ray { Rect::flip_ray(ray(vec3(2., 3., 2.), vec3(4., -5., 4.))),
pos: vec3(2.0, 3.0, 2.0), ray(vec3(2., -3., 2.), vec3(4., 5., 4.)),
dir: vec3(4.0, -5.0, 4.0)
}),
Ray {
pos: vec3(2.0, -3.0, 2.0),
dir: vec3(4.0, 5.0, 4.0)
}
); );
assert_eq!( assert_eq!(
Rect::flip_ray(Ray { Rect::flip_ray(ray(vec3(2., 3., 2.), vec3(4., 0., 4.))),
pos: vec3(2.0, 3.0, 2.0), ray(vec3(2., 3., 2.), vec3(4., 0., 4.)),
dir: vec3(4.0, 0.0, 4.0)
}),
Ray {
pos: vec3(2.0, 3.0, 2.0),
dir: vec3(4.0, 0.0, 4.0)
}
); );
let r = Rect { let r = Rect { size: vec3(2., 3., 2.) };
size: vec3(2.0, 3.0, 2.0),
};
assert_eq!( assert_eq!(r.trace_into(ray(vec3(3., 3., 3.), vec3(1., 1., 1.))), None);
r.trace_into(Ray { assert_eq!(r.trace_into(ray(vec3(-3., 2., -3.), vec3(1., 0., 1.))), Some(1.));
pos: vec3(3.0, 3.0, 3.0), assert_eq!(r.trace_into(ray(vec3(-3., 2., -3.), vec3(-1., 0., -1.))), None);
dir: vec3(1.0, 1.0, 1.0) assert_eq!(r.trace_into(ray(vec3(-3., 1., -3.), vec3(2., 2., 2.))), Some(0.5));
}), assert_eq!(r.trace_into(ray(vec3(-3., 2.1, -3.), vec3(2., 2., 2.))), None);
None
);
assert_eq!(
r.trace_into(Ray {
pos: vec3(-3.0, 2.0, -3.0),
dir: vec3(1.0, 0.0, 1.0)
}),
Some(1.0)
);
assert_eq!(
r.trace_into(Ray {
pos: vec3(-3.0, 2.0, -3.0),
dir: vec3(-1.0, 0.0, -1.0)
}),
None
);
assert_eq!(
r.trace_into(Ray {
pos: vec3(-3.0, 1.0, -3.0),
dir: vec3(2.0, 2.0, 2.0)
}),
Some(0.5)
);
assert_eq!(
r.trace_into(Ray {
pos: vec3(-3.0, 2.1, -3.0),
dir: vec3(2.0, 2.0, 2.0)
}),
None
);
assert_eq!( assert_eq!(r.trace_into(ray(vec3(2., 3., 2.), vec3(1., 1., 1.))), None);
r.trace_into(Ray { assert_eq!(r.trace_into(ray(vec3(-2., 3., -2.), vec3(-1., 1., -1.))), None);
pos: vec3(2.0, 3.0, 2.0), assert_eq!(r.trace_into(ray(vec3(2., 3., 2.), vec3(-1., -1., -1.))), Some(0.));
dir: vec3(1.0, 1.0, 1.0) assert_eq!(r.trace_into(ray(vec3(2., -3., 2.), vec3(-1., 1., -1.))), Some(0.));
}),
None
);
assert_eq!(
r.trace_into(Ray {
pos: vec3(-2.0, 3.0, -2.0),
dir: vec3(-1.0, 1.0, -1.0)
}),
None
);
assert_eq!(
r.trace_into(Ray {
pos: vec3(2.0, 3.0, 2.0),
dir: vec3(-1.0, -1.0, -1.0)
}),
Some(0.0)
);
assert_eq!(
r.trace_into(Ray {
pos: vec3(2.0, -3.0, 2.0),
dir: vec3(-1.0, 1.0, -1.0)
}),
Some(0.0)
);
assert_eq!( assert_eq!(r.trace_out_of(ray(vec3(0., 0., 0.), vec3(1., 1., 1.))), Some(2.));
r.trace_out_of(Ray { assert_eq!(r.trace_out_of(ray(vec3(0., 0., 0.), vec3(0., 1., 0.))), Some(3.));
pos: vec3(0.0, 0.0, 0.0), assert_eq!(r.trace_out_of(ray(vec3(0., 1., 0.), vec3(0., -1., 0.))), Some(4.));
dir: vec3(1.0, 1.0, 1.0) assert_eq!(r.trace_out_of(ray(vec3(1., 1., 1.), vec3(0., -1., 0.))), Some(4.));
}), assert_eq!(r.trace_out_of(ray(vec3(2., 3., 2.), vec3(1., 1., 1.))), Some(0.));
Some(2.0)
);
assert_eq!(
r.trace_out_of(Ray {
pos: vec3(0.0, 0.0, 0.0),
dir: vec3(0.0, 1.0, 0.0)
}),
Some(3.0)
);
assert_eq!(
r.trace_out_of(Ray {
pos: vec3(0.0, 1.0, 0.0),
dir: vec3(0.0, -1.0, 0.0)
}),
Some(4.0)
);
assert_eq!(
r.trace_out_of(Ray {
pos: vec3(1.0, 1.0, 1.0),
dir: vec3(0.0, -1.0, 0.0)
}),
Some(4.0)
);
assert_eq!(
r.trace_out_of(Ray {
pos: vec3(2.0, 3.0, 2.0),
dir: vec3(1.0, 1.0, 1.0)
}),
Some(0.0)
);
} }

View File

@ -6,6 +6,10 @@ pub struct Ray {
pub dir: Vec3, pub dir: Vec3,
} }
pub fn ray(pos: Vec3, dir: Vec3) -> Ray {
Ray { pos, dir }
}
impl Ray { impl Ray {
pub fn forward(&self, dist: f32) -> Ray { pub fn forward(&self, dist: f32) -> Ray {
Ray { Ray {