Skip to content

Commit 4f7ac01

Browse files
committed
Add unit tests for site::interpolate
1 parent a48584d commit 4f7ac01

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

site/src/interpolate.rs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,63 @@ where
136136
}
137137
}
138138
}
139+
140+
#[cfg(test)]
141+
mod tests {
142+
use super::{Interpolate, Interpolated};
143+
144+
#[test]
145+
fn test_no_interpolation() {
146+
let v = vec![("a", 1.0), ("b", 2.0)];
147+
let mut iter = Interpolate::new(v.into_iter());
148+
149+
assert_eq!(iter.next().unwrap(), (("a", 1.0), Interpolated::No));
150+
assert_eq!(iter.next().unwrap(), (("b", 2.0), Interpolated::No));
151+
assert!(iter.next().is_none());
152+
}
153+
154+
#[test]
155+
fn test_leading_interpolation() {
156+
let v = vec![("a", None), ("b", None), ("c", Some(3.0)), ("d", Some(4.0))];
157+
let mut iter = Interpolate::new(v.into_iter());
158+
159+
assert_eq!(iter.next().unwrap(), (("a", Some(3.0)), Interpolated::Yes));
160+
assert_eq!(iter.next().unwrap(), (("b", Some(3.0)), Interpolated::Yes));
161+
assert_eq!(iter.next().unwrap(), (("c", Some(3.0)), Interpolated::No));
162+
assert_eq!(iter.next().unwrap(), (("d", Some(4.0)), Interpolated::No));
163+
assert!(iter.next().is_none());
164+
}
165+
166+
#[test]
167+
fn test_inner_interpolation() {
168+
let v = vec![
169+
("a", Some(1.0)),
170+
("b", Some(2.0)),
171+
("c", None),
172+
("d", None),
173+
("e", Some(5.0)),
174+
("f", Some(6.0)),
175+
];
176+
let mut iter = Interpolate::new(v.into_iter());
177+
178+
assert_eq!(iter.next().unwrap(), (("a", Some(1.0)), Interpolated::No));
179+
assert_eq!(iter.next().unwrap(), (("b", Some(2.0)), Interpolated::No));
180+
assert_eq!(iter.next().unwrap(), (("c", Some(2.0)), Interpolated::Yes));
181+
assert_eq!(iter.next().unwrap(), (("d", Some(2.0)), Interpolated::Yes));
182+
assert_eq!(iter.next().unwrap(), (("e", Some(5.0)), Interpolated::No));
183+
assert_eq!(iter.next().unwrap(), (("f", Some(6.0)), Interpolated::No));
184+
assert!(iter.next().is_none());
185+
}
186+
187+
#[test]
188+
fn test_trailing_interpolation() {
189+
let v = vec![("a", Some(1.0)), ("b", Some(2.0)), ("c", None), ("d", None)];
190+
let mut iter = Interpolate::new(v.into_iter());
191+
192+
assert_eq!(iter.next().unwrap(), (("a", Some(1.0)), Interpolated::No));
193+
assert_eq!(iter.next().unwrap(), (("b", Some(2.0)), Interpolated::No));
194+
assert_eq!(iter.next().unwrap(), (("c", Some(2.0)), Interpolated::Yes));
195+
assert_eq!(iter.next().unwrap(), (("d", Some(2.0)), Interpolated::Yes));
196+
assert!(iter.next().is_none());
197+
}
198+
}

0 commit comments

Comments
 (0)