Add invert unit tests

This commit is contained in:
Rico Riedel 2022-08-05 19:06:17 +02:00
parent 6d60ef0088
commit cbb0c532e2
No known key found for this signature in database
GPG Key ID: 75AC868575DE7B18
2 changed files with 60 additions and 1 deletions

View File

@ -10,12 +10,13 @@ pub use wheel::*;
use crate::Vector; use crate::Vector;
#[derive(Copy, Clone, PartialEq, Debug)] #[derive(Copy, Clone, Default, PartialEq, Debug)]
pub struct Config { pub struct Config {
pub size: Vector, pub size: Vector,
pub step: f32, pub step: f32,
} }
#[cfg_attr(test, mockall::automock)]
pub trait PatternFactory { pub trait PatternFactory {
fn create(&self, config: &Config) -> Box<dyn Pattern>; fn create(&self, config: &Config) -> Box<dyn Pattern>;
} }

View File

@ -25,3 +25,61 @@ impl Pattern for Invert {
1.0 - self.child.sample(pos) 1.0 - self.child.sample(pos)
} }
} }
#[cfg(test)]
mod test {
use super::*;
use crate::MockPatternFactory;
use mockall::predicate::eq;
#[test]
fn create_config_correct() {
let input = Config {
size: Vector::new(4.0, 2.0),
step: 0.4,
};
let mut output = input.clone();
output.step = 0.6;
let mut child = MockPatternFactory::new();
child
.expect_create()
.with(eq(output))
.once()
.returning(|_| Box::new(MockPattern::new()));
InvertFactory::new(Box::new(child)).create(&input);
}
#[test]
fn sample_inverted() {
let mut child = MockPatternFactory::new();
child.expect_create().returning(|_| {
let mut sampler = MockPattern::new();
sampler.expect_sample().return_const(0.7);
Box::new(sampler)
});
let sampler = InvertFactory::new(Box::new(child)).create(&Config::default());
assert_eq!(0.3, sampler.sample(Vector::default()));
}
#[test]
fn sample_pos_correct() {
let mut child = MockPatternFactory::new();
child.expect_create().once().returning(|_| {
let mut sampler = MockPattern::new();
sampler
.expect_sample()
.with(eq(Vector::new(4.0, 2.0)))
.once()
.return_const(0.0);
Box::new(sampler)
});
let sampler = InvertFactory::new(Box::new(child)).create(&Config::default());
sampler.sample(Vector::new(4.0, 2.0));
}
}