Address PR feedback: add tests

This commit is contained in:
AlexandruGG 2020-05-27 10:03:59 +01:00
parent 7479a4737b
commit df81141d6f
2 changed files with 31 additions and 13 deletions

View File

@ -12,24 +12,42 @@
// Step 1: use a `Box` in the enum definition to make the code compile // Step 1: use a `Box` in the enum definition to make the code compile
// Step 2: create both empty and non-empty cons lists of by replacing `unimplemented!()` // Step 2: create both empty and non-empty cons lists of by replacing `unimplemented!()`
// //
// Note: the tests should not be changed
//
// Execute `rustlings hint box1` for hints :) // Execute `rustlings hint box1` for hints :)
// I AM NOT DONE // I AM NOT DONE
#[derive(PartialEq, Debug)] #[derive(PartialEq, Debug)]
enum List { pub enum List {
Cons(i32, List), Cons(i32, List),
Nil, Nil,
} }
fn main() { fn main() {
let empty_list = unimplemented!(); println!("This is an empty cons list: {:?}", create_empty_list());
println!("This is an empty cons list: {:?}", empty_list); println!("This is a non-empty cons list: {:?}", create_non_empty_list());
}
let non_empty_list = unimplemented!();
println!("This is a non-empty cons list: {:?}", non_empty_list); pub fn create_empty_list() -> List {
unimplemented!()
// Do not change these }
assert_eq!(List::Nil, empty_list);
assert_ne!(empty_list, non_empty_list); pub fn create_non_empty_list() -> List {
unimplemented!()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_create_empty_list() {
assert_eq!(List::Nil, create_empty_list())
}
#[test]
fn test_create_non_empty_list() {
assert_ne!(create_empty_list(), create_non_empty_list())
}
} }

View File

@ -617,17 +617,17 @@ hint = """
[[exercises]] [[exercises]]
name = "box1" name = "box1"
path = "exercises/standard_library_types/box1.rs" path = "exercises/standard_library_types/box1.rs"
mode = "compile" mode = "test"
hint = """ hint = """
Step 1 Step 1
The compiler's message should help: since we cannot store the value of the actual type The compiler's message should help: since we cannot store the value of the actual type
when working with recursive types, we need to store a reference (pointer) to its value. when working with recursive types, we need to store a reference (pointer) to its value.
We should therefore place our `List` inside a `Box`. More details in the book here: We should, therefore, place our `List` inside a `Box`. More details in the book here:
https://doc.rust-lang.org/book/ch15-01-box.html#enabling-recursive-types-with-boxes https://doc.rust-lang.org/book/ch15-01-box.html#enabling-recursive-types-with-boxes
Step 2 Step 2
Creating an empty list should be fairly straightforward (hint: peek at the assertions). Creating an empty list should be fairly straightforward (hint: peek at the assertions).
For a non-empty list keep in mind that wee want to use our Cons "list builder". For a non-empty list keep in mind that we want to use our Cons "list builder".
Although the current list is one of integers (i32), feel free to change the definition Although the current list is one of integers (i32), feel free to change the definition
and try other types! and try other types!
""" """