pub mod stream;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn compiles() {
stream::Stream::from(vec![1, 2, 3]);
}
#[test]
fn it_collects_value() {
let val = vec![1, 2, 3];
let stream = stream::Stream::from(val);
let collected = stream.collect();
let expected: u8 = 0b1;
assert_eq!(expected, *collected.get(0).unwrap());
}
#[test]
fn it_maps_ints() {
let val = vec![1, 2, 3];
let mapped_vals = stream::Stream::from(val).map(|v| v * 2).collect();
assert_eq!(2, *mapped_vals.get(0).unwrap());
assert_eq!(4, *mapped_vals.get(1).unwrap());
assert_eq!(6, *mapped_vals.get(2).unwrap());
}
#[test]
fn it_maps_strings() {
let val = vec![
String::from("foo"),
String::from("bar"),
String::from("baz"),
];
let mapped_vals = stream::Stream::from(val)
.map(|v: String| v.to_uppercase())
.collect();
assert_eq!("FOO", *mapped_vals.get(0).unwrap());
assert_eq!("BAR", *mapped_vals.get(1).unwrap());
assert_eq!("BAZ", *mapped_vals.get(2).unwrap());
}
#[test]
fn it_filters_ints() {
let val: Vec<i32> = vec![1, 2, 3];
let filtered_vals = stream::Stream::from(val).filter(|v| v >= &2).collect();
assert_eq!(2, *filtered_vals.get(0).unwrap());
assert_eq!(3, *filtered_vals.get(1).unwrap());
}
}