test: Convert main function to working tests

This commit is contained in:
magnusrodseth 2022-08-17 12:50:34 +02:00
parent d0c7b06eff
commit 52a29aa84b
2 changed files with 27 additions and 16 deletions

View File

@ -3,23 +3,34 @@
// I AM NOT DONE // I AM NOT DONE
fn main() { #[cfg(test)]
let optional_word = Some(String::from("rustlings")); mod tests {
use super::*;
#[test]
fn simple_option() {
let target = "rustlings";
let optional_target = Some(target);
// TODO: Make this an if let statement whose value is "Some" type // TODO: Make this an if let statement whose value is "Some" type
word = optional_word { if let Some(word) = optional_target {
println!("The word is: {}", word); assert_eq!(word, target);
} else { }
println!("The optional word doesn't contain anything");
} }
let mut optional_integers_vec: Vec<Option<i8>> = Vec::new(); #[test]
for x in 1..10 { fn layered_option() {
optional_integers_vec.push(Some(x)); let mut range = 10;
let mut optional_integers: Vec<Option<i8>> = Vec::new();
for i in 0..(range + 1) {
optional_integers.push(Some(i));
} }
// TODO: make this a while let statement - remember that vector.pop also adds another layer of Option<T> // TODO: make this a while let statement - remember that vector.pop also adds another layer of Option<T>
// You can stack `Option<T>`'s into while let and if let // You can stack `Option<T>`'s into while let and if let
integer = optional_integers_vec.pop() { while let Some(Some(integer)) = optional_integers.pop() {
println!("current value: {}", integer); assert_eq!(integer, range);
range -= 1;
}
} }
} }

View File

@ -545,7 +545,7 @@ is the easiest, but how do you do it safely so that it doesn't panic in your fac
[[exercises]] [[exercises]]
name = "options2" name = "options2"
path = "exercises/options/options2.rs" path = "exercises/options/options2.rs"
mode = "compile" mode = "test"
hint = """ hint = """
check out: check out:
https://doc.rust-lang.org/rust-by-example/flow_control/if_let.html https://doc.rust-lang.org/rust-by-example/flow_control/if_let.html