From bacbb59c773df15d79890099fe40240c4895e4d0 Mon Sep 17 00:00:00 2001 From: Phan Huy Hoang Date: Thu, 12 Jan 2023 00:01:03 +0700 Subject: [PATCH] [Add] exercises\tests --- exercises/quiz3.rs | 26 +++++++++++++++++++++----- exercises/tests/tests1.rs | 4 +--- exercises/tests/tests2.rs | 4 +--- exercises/tests/tests3.rs | 6 ++---- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/exercises/quiz3.rs b/exercises/quiz3.rs index 15dc4699..5cea8bba 100644 --- a/exercises/quiz3.rs +++ b/exercises/quiz3.rs @@ -14,10 +14,27 @@ // Execute `rustlings hint quiz3` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE +use std::fmt::{Display, Formatter, Result as FmtResult}; + +pub enum Grade { + Numeric(f32), + Alphabetical(String), +} + +impl Display for Grade { + fn fmt(&self, fmt: &mut Formatter<'_>) -> FmtResult { + let grade = match &self { + Grade::Numeric(grade) => grade.to_string(), + Grade::Alphabetical(grade) => grade.to_string(), + }; + + write!(fmt, "{}", grade); + Ok(()) + } +} pub struct ReportCard { - pub grade: f32, + pub grade: Grade, pub student_name: String, pub student_age: u8, } @@ -36,7 +53,7 @@ mod tests { #[test] fn generate_numeric_report_card() { let report_card = ReportCard { - grade: 2.1, + grade: Grade::Numeric(2.1), student_name: "Tom Wriggle".to_string(), student_age: 12, }; @@ -48,9 +65,8 @@ mod tests { #[test] fn generate_alphabetic_report_card() { - // TODO: Make sure to change the grade here after you finish the exercise. let report_card = ReportCard { - grade: 2.1, + grade: Grade::Alphabetical("A+".into()), student_name: "Gary Plotter".to_string(), student_age: 11, }; diff --git a/exercises/tests/tests1.rs b/exercises/tests/tests1.rs index 8b6ea374..abbd1e92 100644 --- a/exercises/tests/tests1.rs +++ b/exercises/tests/tests1.rs @@ -7,12 +7,10 @@ // pass! Make the test fail! // Execute `rustlings hint tests1` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - #[cfg(test)] mod tests { #[test] fn you_can_assert() { - assert!(); + assert!(true, true); } } diff --git a/exercises/tests/tests2.rs b/exercises/tests/tests2.rs index a5ac15b1..6384582b 100644 --- a/exercises/tests/tests2.rs +++ b/exercises/tests/tests2.rs @@ -3,12 +3,10 @@ // pass! Make the test fail! // Execute `rustlings hint tests2` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - #[cfg(test)] mod tests { #[test] fn you_can_assert_eq() { - assert_eq!(); + assert_eq!(true, true); } } diff --git a/exercises/tests/tests3.rs b/exercises/tests/tests3.rs index 196a81a0..7912f225 100644 --- a/exercises/tests/tests3.rs +++ b/exercises/tests/tests3.rs @@ -4,8 +4,6 @@ // we expect to get when we call `is_even(5)`. // Execute `rustlings hint tests3` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - pub fn is_even(num: i32) -> bool { num % 2 == 0 } @@ -16,11 +14,11 @@ mod tests { #[test] fn is_true_when_even() { - assert!(); + assert!(is_even(4)); } #[test] fn is_false_when_odd() { - assert!(); + assert!(is_even(5) == false); } }