From 9fc5dfb2e17376c56053f8052204caec311d772b Mon Sep 17 00:00:00 2001 From: numzero Date: Thu, 7 Nov 2024 01:39:29 +0300 Subject: [PATCH] Compactify test code --- src/tube/mod.rs | 158 ++++++++---------------------------------------- src/types.rs | 4 ++ 2 files changed, 29 insertions(+), 133 deletions(-) diff --git a/src/tube/mod.rs b/src/tube/mod.rs index bc80d7e..9594eb0 100644 --- a/src/tube/mod.rs +++ b/src/tube/mod.rs @@ -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.)); } diff --git a/src/types.rs b/src/types.rs index 77ec8c4..59f9aa4 100644 --- a/src/types.rs +++ b/src/types.rs @@ -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 {