From df81141d6fb3f43a7a035c4efc1150b6ede0b472 Mon Sep 17 00:00:00 2001 From: AlexandruGG Date: Wed, 27 May 2020 10:03:59 +0100 Subject: [PATCH] Address PR feedback: add tests --- exercises/standard_library_types/box1.rs | 38 +++++++++++++++++------- info.toml | 6 ++-- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/exercises/standard_library_types/box1.rs b/exercises/standard_library_types/box1.rs index 11156ea..2248962 100644 --- a/exercises/standard_library_types/box1.rs +++ b/exercises/standard_library_types/box1.rs @@ -12,24 +12,42 @@ // 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!()` // +// Note: the tests should not be changed +// // Execute `rustlings hint box1` for hints :) // I AM NOT DONE #[derive(PartialEq, Debug)] -enum List { +pub enum List { Cons(i32, List), Nil, } fn main() { - let empty_list = unimplemented!(); - println!("This is an empty cons list: {:?}", empty_list); - - let non_empty_list = unimplemented!(); - println!("This is a non-empty cons list: {:?}", non_empty_list); - - // Do not change these - assert_eq!(List::Nil, empty_list); - assert_ne!(empty_list, non_empty_list); + println!("This is an empty cons list: {:?}", create_empty_list()); + println!("This is a non-empty cons list: {:?}", create_non_empty_list()); +} + +pub fn create_empty_list() -> List { + unimplemented!() +} + +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()) + } } diff --git a/info.toml b/info.toml index dcd93bf..842253c 100644 --- a/info.toml +++ b/info.toml @@ -617,17 +617,17 @@ hint = """ [[exercises]] name = "box1" path = "exercises/standard_library_types/box1.rs" -mode = "compile" +mode = "test" hint = """ Step 1 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. -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 Step 2 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 and try other types! """