Skip to content

Commit c937d16

Browse files
committed
add tests of is_finite
1 parent 4ce7626 commit c937d16

File tree

8 files changed

+108
-0
lines changed

8 files changed

+108
-0
lines changed

tests/mat2.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,3 +198,14 @@ fn test_product() {
198198
let two = Mat2::identity() + Mat2::identity();
199199
assert_eq!(vec![two, two].iter().product::<Mat2>(), two * two);
200200
}
201+
202+
#[test]
203+
fn test_mat2_is_finite() {
204+
use std::f32::INFINITY;
205+
use std::f32::NAN;
206+
use std::f32::NEG_INFINITY;
207+
assert!(Mat2::identity().is_finite());
208+
assert!(!(Mat2::identity() * INFINITY).is_finite());
209+
assert!(!(Mat2::identity() * NEG_INFINITY).is_finite());
210+
assert!(!(Mat2::identity() * NAN).is_finite());
211+
}

tests/mat3.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,14 @@ fn test_product() {
262262
let two = Mat3::identity() + Mat3::identity();
263263
assert_eq!(vec![two, two].iter().product::<Mat3>(), two * two);
264264
}
265+
266+
#[test]
267+
fn test_mat3_is_finite() {
268+
use std::f32::INFINITY;
269+
use std::f32::NAN;
270+
use std::f32::NEG_INFINITY;
271+
assert!(Mat3::identity().is_finite());
272+
assert!(!(Mat3::identity() * INFINITY).is_finite());
273+
assert!(!(Mat3::identity() * NEG_INFINITY).is_finite());
274+
assert!(!(Mat3::identity() * NAN).is_finite());
275+
}

tests/mat4.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,3 +543,14 @@ fn test_product() {
543543
let two = Mat4::identity() + Mat4::identity();
544544
assert_eq!(vec![two, two].iter().product::<Mat4>(), two * two);
545545
}
546+
547+
#[test]
548+
fn test_mat4_is_finite() {
549+
use std::f32::INFINITY;
550+
use std::f32::NAN;
551+
use std::f32::NEG_INFINITY;
552+
assert!(Mat4::identity().is_finite());
553+
assert!(!(Mat4::identity() * INFINITY).is_finite());
554+
assert!(!(Mat4::identity() * NEG_INFINITY).is_finite());
555+
assert!(!(Mat4::identity() * NAN).is_finite());
556+
}

tests/quat.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,3 +402,16 @@ fn test_product() {
402402
let two = quat(2.0, 2.0, 2.0, 2.0).normalize();
403403
assert_eq!(vec![two, two].iter().product::<Quat>(), two * two);
404404
}
405+
406+
#[test]
407+
fn test_quat_is_finite() {
408+
use std::f32::INFINITY;
409+
use std::f32::NAN;
410+
use std::f32::NEG_INFINITY;
411+
assert!(Quat::from_xyzw(0.0, 0.0, 0.0, 0.0).is_finite());
412+
assert!(Quat::from_xyzw(-1e-10, 1.0, 1e10, 42.0).is_finite());
413+
assert!(!Quat::from_xyzw(INFINITY, 0.0, 0.0, 0.0).is_finite());
414+
assert!(!Quat::from_xyzw(0.0, NAN, 0.0, 0.0).is_finite());
415+
assert!(!Quat::from_xyzw(0.0, 0.0, NEG_INFINITY, 0.0).is_finite());
416+
assert!(!Quat::from_xyzw(0.0, 0.0, 0.0, NAN).is_finite());
417+
}

tests/vec2.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,3 +518,16 @@ fn test_product() {
518518
let two = Vec2::new(2.0, 2.0);
519519
assert_eq!(vec![two, two].iter().product::<Vec2>(), two * two);
520520
}
521+
522+
#[test]
523+
fn test_vec2_is_finite() {
524+
use std::f32::INFINITY;
525+
use std::f32::NAN;
526+
use std::f32::NEG_INFINITY;
527+
assert!(Vec2::new(0.0, 0.0).is_finite());
528+
assert!(Vec2::new(-1e-10, 1e10).is_finite());
529+
assert!(!Vec2::new(INFINITY, 0.0).is_finite());
530+
assert!(!Vec2::new(0.0, NAN).is_finite());
531+
assert!(!Vec2::new(0.0, NEG_INFINITY).is_finite());
532+
assert!(!Vec2::new(INFINITY, NEG_INFINITY).is_finite());
533+
}

tests/vec3.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,3 +566,16 @@ fn test_product() {
566566
let two = Vec3::new(2.0, 2.0, 2.0);
567567
assert_eq!(vec![two, two].iter().product::<Vec3>(), two * two);
568568
}
569+
570+
#[test]
571+
fn test_vec3_is_finite() {
572+
use std::f32::INFINITY;
573+
use std::f32::NAN;
574+
use std::f32::NEG_INFINITY;
575+
assert!(Vec3::new(0.0, 0.0, 0.0).is_finite());
576+
assert!(Vec3::new(-1e-10, 1.0, 1e10).is_finite());
577+
assert!(!Vec3::new(INFINITY, 0.0, 0.0).is_finite());
578+
assert!(!Vec3::new(0.0, NAN, 0.0).is_finite());
579+
assert!(!Vec3::new(0.0, 0.0, NEG_INFINITY).is_finite());
580+
assert!(!Vec3::splat(NAN).is_finite());
581+
}

tests/vec3a.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,3 +604,26 @@ fn test_product() {
604604
let two = Vec3A::new(2.0, 2.0, 2.0);
605605
assert_eq!(vec![two, two].iter().product::<Vec3A>(), two * two);
606606
}
607+
608+
#[test]
609+
fn test_vec3a_is_finite() {
610+
use std::f32::INFINITY;
611+
use std::f32::NAN;
612+
use std::f32::NEG_INFINITY;
613+
assert!(Vec3A::new(0.0, 0.0, 0.0).is_finite());
614+
assert!(Vec3A::new(-1e-10, 1.0, 1e10).is_finite());
615+
assert!(!Vec3A::new(INFINITY, 0.0, 0.0).is_finite());
616+
assert!(!Vec3A::new(0.0, NAN, 0.0).is_finite());
617+
assert!(!Vec3A::new(0.0, 0.0, NEG_INFINITY).is_finite());
618+
assert!(!Vec3A::splat(NAN).is_finite());
619+
620+
{
621+
// Check that the implicit fourth element (in simd) does not affect `is_finite()`:
622+
let mut v = Vec3A::splat(NAN);
623+
assert!(!v.is_finite());
624+
v.x = 42.0;
625+
v.y = 42.0;
626+
v.z = 42.0;
627+
assert!(v.is_finite());
628+
}
629+
}

tests/vec4.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,3 +638,16 @@ fn test_product() {
638638
let two = Vec4::new(2.0, 2.0, 2.0, 2.0);
639639
assert_eq!(vec![two, two].iter().product::<Vec4>(), two * two);
640640
}
641+
642+
#[test]
643+
fn test_vec4_is_finite() {
644+
use std::f32::INFINITY;
645+
use std::f32::NAN;
646+
use std::f32::NEG_INFINITY;
647+
assert!(Vec4::new(0.0, 0.0, 0.0, 0.0).is_finite());
648+
assert!(Vec4::new(-1e-10, 1.0, 1e10, 42.0).is_finite());
649+
assert!(!Vec4::new(INFINITY, 0.0, 0.0, 0.0).is_finite());
650+
assert!(!Vec4::new(0.0, NAN, 0.0, 0.0).is_finite());
651+
assert!(!Vec4::new(0.0, 0.0, NEG_INFINITY, 0.0).is_finite());
652+
assert!(!Vec4::new(0.0, 0.0, 0.0, NAN).is_finite());
653+
}

0 commit comments

Comments
 (0)