Skip to main content

fake/impls/glam/
mod.rs

1use crate::{Dummy, Fake, Faker};
2use glam::{Mat3, Mat4, Vec2, Vec3, Vec4};
3
4impl Dummy<Faker> for Mat3 {
5    fn dummy_with_rng<R: rand::RngExt + ?Sized>(_f: &Faker, rng: &mut R) -> Self {
6        let col_1: Vec3 = Faker.fake_with_rng(rng);
7        let col_2: Vec3 = Faker.fake_with_rng(rng);
8        let col_3: Vec3 = Faker.fake_with_rng(rng);
9        Mat3::from_cols(col_1, col_2, col_3)
10    }
11}
12
13impl Dummy<Faker> for Mat4 {
14    fn dummy_with_rng<R: rand::RngExt + ?Sized>(_f: &Faker, rng: &mut R) -> Self {
15        let col_1: Vec4 = Faker.fake_with_rng(rng);
16        let col_2: Vec4 = Faker.fake_with_rng(rng);
17        let col_3: Vec4 = Faker.fake_with_rng(rng);
18        let col_4: Vec4 = Faker.fake_with_rng(rng);
19        Mat4::from_cols(col_1, col_2, col_3, col_4)
20    }
21}
22
23impl Dummy<Faker> for Vec3 {
24    fn dummy_with_rng<R: rand::RngExt + ?Sized>(_f: &Faker, rng: &mut R) -> Self {
25        let x: f32 = Faker.fake_with_rng(rng);
26        let y: f32 = Faker.fake_with_rng(rng);
27        let z: f32 = Faker.fake_with_rng(rng);
28        Vec3::new(x, y, z)
29    }
30}
31
32impl Dummy<Faker> for Vec2 {
33    fn dummy_with_rng<R: rand::RngExt + ?Sized>(_f: &Faker, rng: &mut R) -> Self {
34        let x: f32 = Faker.fake_with_rng(rng);
35        let y: f32 = Faker.fake_with_rng(rng);
36        Vec2::new(x, y)
37    }
38}
39
40impl Dummy<Faker> for Vec4 {
41    fn dummy_with_rng<R: rand::RngExt + ?Sized>(_f: &Faker, rng: &mut R) -> Self {
42        let x: f32 = Faker.fake_with_rng(rng);
43        let y: f32 = Faker.fake_with_rng(rng);
44        let z: f32 = Faker.fake_with_rng(rng);
45        let w: f32 = Faker.fake_with_rng(rng);
46        Vec4::new(x, y, z, w)
47    }
48}
49#[cfg(test)]
50mod tests {
51    use super::*;
52    use glam::{vec2, vec3, vec4};
53    use rand::rngs::StdRng;
54    use rand::{RngExt, SeedableRng};
55
56    const SEED: [u8; 32] = [
57        1, 0, 0, 0, 23, 0, 0, 0, 200, 1, 0, 0, 210, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
58        1, 3, 5, 0,
59    ];
60
61    #[test]
62    fn fake_vec2() {
63        let rng = &mut StdRng::from_seed(SEED);
64        let expected = vec2(rng.random(), rng.random());
65        let rng = &mut StdRng::from_seed(SEED);
66        let fake = Faker.fake_with_rng::<Vec2, _>(rng);
67        assert_eq!(expected, fake);
68    }
69
70    #[test]
71    fn fake_vec3() {
72        let rng = &mut StdRng::from_seed(SEED);
73        let expected = vec3(rng.random(), rng.random(), rng.random());
74        let rng = &mut StdRng::from_seed(SEED);
75        let fake = Faker.fake_with_rng::<Vec3, _>(rng);
76        assert_eq!(expected, fake);
77    }
78
79    #[test]
80    fn fake_vec4() {
81        let rng = &mut StdRng::from_seed(SEED);
82        let expected = vec4(rng.random(), rng.random(), rng.random(), rng.random());
83        let rng = &mut StdRng::from_seed(SEED);
84        let fake = Faker.fake_with_rng::<Vec4, _>(rng);
85        assert_eq!(expected, fake);
86    }
87
88    #[test]
89    fn fake_mat4() {
90        let rng = &mut StdRng::from_seed(SEED);
91        let expected: Vec<f32> = (0..16).map(|_| rng.random()).collect();
92        let rng = &mut StdRng::from_seed(SEED);
93        let fake = Faker.fake_with_rng::<Mat4, _>(rng);
94        assert_eq!(expected[0..16], fake.to_cols_array());
95    }
96}