summaryrefslogtreecommitdiff
path: root/exercises
diff options
context:
space:
mode:
Diffstat (limited to 'exercises')
-rw-r--r--exercises/generics/generics3.rs58
-rw-r--r--exercises/quiz3.rs58
2 files changed, 45 insertions, 71 deletions
diff --git a/exercises/generics/generics3.rs b/exercises/generics/generics3.rs
deleted file mode 100644
index 64dd9bc..0000000
--- a/exercises/generics/generics3.rs
+++ /dev/null
@@ -1,58 +0,0 @@
-// An imaginary magical school has a new report card generation system written in Rust!
-// Currently the system only supports creating report cards where the student's grade
-// is represented numerically (e.g. 1.0 -> 5.5).
-// However, the school also issues alphabetical grades (A+ -> F-) and needs
-// to be able to print both types of report card!
-
-// Make the necessary code changes in the struct ReportCard and the impl block
-// to support alphabetical report cards. Change the Grade in the second test to "A+"
-// to show that your changes allow alphabetical grades.
-
-// Execute 'rustlings hint generics3' for hints!
-
-// I AM NOT DONE
-
-pub struct ReportCard {
- pub grade: f32,
- pub student_name: String,
- pub student_age: u8,
-}
-
-impl ReportCard {
- pub fn print(&self) -> String {
- format!("{} ({}) - achieved a grade of {}",
- &self.student_name, &self.student_age, &self.grade)
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn generate_numeric_report_card() {
- let report_card = ReportCard {
- grade: 2.1,
- student_name: "Tom Wriggle".to_string(),
- student_age: 12,
- };
- assert_eq!(
- report_card.print(),
- "Tom Wriggle (12) - achieved a grade of 2.1"
- );
- }
-
- #[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,
- student_name: "Gary Plotter".to_string(),
- student_age: 11,
- };
- assert_eq!(
- report_card.print(),
- "Gary Plotter (11) - achieved a grade of A+"
- );
- }
-}
diff --git a/exercises/quiz3.rs b/exercises/quiz3.rs
index fae0eed..15dc469 100644
--- a/exercises/quiz3.rs
+++ b/exercises/quiz3.rs
@@ -1,16 +1,32 @@
// quiz3.rs
-// This is a quiz for the following sections:
-// - Tests
+// This quiz tests:
+// - Generics
+// - Traits
+// An imaginary magical school has a new report card generation system written in Rust!
+// Currently the system only supports creating report cards where the student's grade
+// is represented numerically (e.g. 1.0 -> 5.5).
+// However, the school also issues alphabetical grades (A+ -> F-) and needs
+// to be able to print both types of report card!
-// This quiz isn't testing our function -- make it do that in such a way that
-// the test passes. Then write a second test that tests that we get the result
-// we expect to get when we call `times_two` with a negative number.
-// No hints, you can do this :)
+// Make the necessary code changes in the struct ReportCard and the impl block
+// to support alphabetical report cards. Change the Grade in the second test to "A+"
+// to show that your changes allow alphabetical grades.
+
+// Execute `rustlings hint quiz3` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
-pub fn times_two(num: i32) -> i32 {
- num * 2
+pub struct ReportCard {
+ pub grade: f32,
+ pub student_name: String,
+ pub student_age: u8,
+}
+
+impl ReportCard {
+ pub fn print(&self) -> String {
+ format!("{} ({}) - achieved a grade of {}",
+ &self.student_name, &self.student_age, &self.grade)
+ }
}
#[cfg(test)]
@@ -18,13 +34,29 @@ mod tests {
use super::*;
#[test]
- fn returns_twice_of_positive_numbers() {
- assert_eq!(times_two(4), ???);
+ fn generate_numeric_report_card() {
+ let report_card = ReportCard {
+ grade: 2.1,
+ student_name: "Tom Wriggle".to_string(),
+ student_age: 12,
+ };
+ assert_eq!(
+ report_card.print(),
+ "Tom Wriggle (12) - achieved a grade of 2.1"
+ );
}
#[test]
- fn returns_twice_of_negative_numbers() {
- // TODO replace unimplemented!() with an assert for `times_two(-4)`
- unimplemented!()
+ 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,
+ student_name: "Gary Plotter".to_string(),
+ student_age: 11,
+ };
+ assert_eq!(
+ report_card.print(),
+ "Gary Plotter (11) - achieved a grade of A+"
+ );
}
}