mod structure;
mod iters;
pub use self::kinds::PrimaryColor;
pub use self::kinds::SecondaryColor;
pub use self::utils::mix;
pub fn adds_two(a: i32) -> i32{
println!("The value passed: {}", a); a + 2
}
#[cfg(test)]
mod tests {
use crate::{structure::Rectangle, iters::{Iterator, self}};
#[test]
fn it_works() {
let result = 2 + 2;
assert_eq!(result, 4);
}
#[test]
fn larger_can_fit_smaller(){
let larger = Rectangle {
width: 8,
height: 7,
};
let smaller = Rectangle {
width: 5,
height: 1,
};
assert!(larger.can_hold(&smaller));
assert!(!smaller.can_hold(&larger), "The first rectangle: {:#?} cannot store the other one: {:#?}", smaller, larger);
}
#[test]
fn it_adds_two(){
assert_eq!(4, super::adds_two(2), "Number given + 2 != 4"); }
#[test]
#[should_panic(expected = "Make this test fail")]
fn it_should_panic(){
panic!("Make this test fail");
}
#[test]
#[ignore]
fn expensive_test(){
assert!(true);
}
#[test]
fn Iterator_demons(){
let v = vec![1, 2, 3];
let mut v_iter = v.iter();
assert_eq!(v_iter.next(), Some(&1));
assert_eq!(v_iter.next(), Some(&2));
assert_eq!(v_iter.next(), Some(&3));
assert_eq!(v_iter.next(), None); }
#[test]
fn iterator_sum(){
let v = vec![1, 2, 3];
let v_iter = v.iter();
let total: i32 = v_iter.sum(); assert_eq!(total, 6);
}
#[test]
fn filter_by_size(){
use super::*;
let shoes = vec![
iters::Shoe{size: 10, style: String::from("sneaker")},
iters::Shoe{size: 13, style: String::from("sandal")},
iters::Shoe{size: 10, style: String::from("boot")}
];
let in_my_size = iters::shoes_in_my_size(shoes, 10);
assert_eq!(in_my_size, vec![
iters::Shoe{size: 10, style: String::from("sneaker")},
iters::Shoe{size: 10, style: String::from("boot")}
])
}
#[test]
fn counter_iterator(){
let mut counter = iters::Counter::new();
assert_eq!(counter.next(), Some(1));
assert_eq!(counter.next(), Some(2));
assert_eq!(counter.next(), Some(3));
assert_eq!(counter.next(), Some(4));
assert_eq!(counter.next(), Some(5));
assert_eq!(counter.next(), None);
}
}
pub fn add_one(x: i32) -> i32{
x + 1
}
pub mod kinds{
pub enum PrimaryColor{
Red, Yellow, Blue
}
pub enum SecondaryColor{
Orange, Green, Purple
}
}
pub mod utils{
use crate::kinds::*;
pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor{
SecondaryColor::Orange
}
}