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)]
use glam::vec3;
#[test]
fn test_rect() {
assert_eq!(
Rect::flip_ray(Ray {
pos: vec3(2.0, 3.0, 2.0),
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)
}
Rect::flip_ray(ray(vec3(2., 3., 2.), vec3(4., 5., 4.))),
ray(vec3(2., 3., 2.), vec3(4., 5., 4.)),
);
assert_eq!(
Rect::flip_ray(Ray {
pos: vec3(2.0, 3.0, 2.0),
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)
}
Rect::flip_ray(ray(vec3(2., 3., 2.), vec3(-4., 5., -4.))),
ray(vec3(-2., 3., -2.), vec3(4., 5., 4.)),
);
assert_eq!(
Rect::flip_ray(Ray {
pos: vec3(2.0, 3.0, 2.0),
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)
}
Rect::flip_ray(ray(vec3(2., 3., 2.), vec3(4., -5., 4.))),
ray(vec3(2., -3., 2.), vec3(4., 5., 4.)),
);
assert_eq!(
Rect::flip_ray(Ray {
pos: vec3(2.0, 3.0, 2.0),
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)
}
Rect::flip_ray(ray(vec3(2., 3., 2.), vec3(4., 0., 4.))),
ray(vec3(2., 3., 2.), vec3(4., 0., 4.)),
);
let r = Rect {
size: vec3(2.0, 3.0, 2.0),
};
let r = Rect { size: vec3(2., 3., 2.) };
assert_eq!(
r.trace_into(Ray {
pos: vec3(3.0, 3.0, 3.0),
dir: vec3(1.0, 1.0, 1.0)
}),
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!(r.trace_into(ray(vec3(3., 3., 3.), vec3(1., 1., 1.))), None);
assert_eq!(r.trace_into(ray(vec3(-3., 2., -3.), vec3(1., 0., 1.))), Some(1.));
assert_eq!(r.trace_into(ray(vec3(-3., 2., -3.), vec3(-1., 0., -1.))), None);
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);
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)
}),
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!(r.trace_into(ray(vec3(2., 3., 2.), vec3(1., 1., 1.))), None);
assert_eq!(r.trace_into(ray(vec3(-2., 3., -2.), vec3(-1., 1., -1.))), None);
assert_eq!(r.trace_into(ray(vec3(2., 3., 2.), vec3(-1., -1., -1.))), Some(0.));
assert_eq!(r.trace_into(ray(vec3(2., -3., 2.), vec3(-1., 1., -1.))), Some(0.));
assert_eq!(
r.trace_out_of(Ray {
pos: vec3(0.0, 0.0, 0.0),
dir: vec3(1.0, 1.0, 1.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)
);
assert_eq!(r.trace_out_of(ray(vec3(0., 0., 0.), vec3(1., 1., 1.))), Some(2.));
assert_eq!(r.trace_out_of(ray(vec3(0., 0., 0.), vec3(0., 1., 0.))), Some(3.));
assert_eq!(r.trace_out_of(ray(vec3(0., 1., 0.), vec3(0., -1., 0.))), Some(4.));
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.));
}

View File

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