completed test part

This commit is contained in:
Samuele Iacoponi
2026-03-08 16:39:04 +01:00
parent 8c99d4187d
commit bf88815583
8 changed files with 105 additions and 20 deletions

View File

@@ -1,6 +1,6 @@
DON'T EDIT THIS FILE! DON'T EDIT THIS FILE!
tests1 iterators1
intro1 intro1
intro2 intro2
@@ -68,4 +68,7 @@ traits5
quiz3 quiz3
lifetimes1 lifetimes1
lifetimes2 lifetimes2
lifetimes3 lifetimes3
tests1
tests2
tests3

View File

@@ -8,7 +8,7 @@ struct Book<'a> {
// Will the strings pointed to by book still be valid? // Will the strings pointed to by book still be valid?
fn main() { fn main() {
let book = Book { // let book = Book {
author: "George Orwell", author: "George Orwell",
title: "1984", title: "1984",
}; };

View File

@@ -13,11 +13,12 @@ fn main() {
mod tests { mod tests {
// TODO: Import `is_even`. You can use a wildcard to import everything in // TODO: Import `is_even`. You can use a wildcard to import everything in
// the outer module. // the outer module.
use super::*;
#[test] #[test]
fn you_can_assert() { fn you_can_assert() {
// TODO: Test the function `is_even` with some values. // TODO: Test the function `is_even` with some values.
assert!(); assert!(is_even(32));
assert!(); assert!(is_even(12));
} }
} }

View File

@@ -15,9 +15,9 @@ mod tests {
#[test] #[test]
fn you_can_assert_eq() { fn you_can_assert_eq() {
// TODO: Test the function `power_of_2` with some values. // TODO: Test the function `power_of_2` with some values.
assert_eq!(); assert_eq!(power_of_2(3), 8);
assert_eq!(); assert_eq!(power_of_2(4), 16);
assert_eq!(); assert_eq!(power_of_2(3), 8);
assert_eq!(); assert_eq!(power_of_2(2), 4);
} }
} }

View File

@@ -29,13 +29,14 @@ mod tests {
// TODO: This test should check if the rectangle has the size that we // TODO: This test should check if the rectangle has the size that we
// pass to its constructor. // pass to its constructor.
let rect = Rectangle::new(10, 20); let rect = Rectangle::new(10, 20);
assert_eq!(todo!(), 10); // Check width assert_eq!(rect.width, 10); // Check width
assert_eq!(todo!(), 20); // Check height assert_eq!(rect.height, 20); // Check height
} }
// TODO: This test should check if the program panics when we try to create // TODO: This test should check if the program panics when we try to create
// a rectangle with negative width. // a rectangle with negative width.
#[test] #[test]
#[should_panic]
fn negative_width() { fn negative_width() {
let _rect = Rectangle::new(-10, 10); let _rect = Rectangle::new(-10, 10);
} }
@@ -43,6 +44,7 @@ mod tests {
// TODO: This test should check if the program panics when we try to create // TODO: This test should check if the program panics when we try to create
// a rectangle with negative height. // a rectangle with negative height.
#[test] #[test]
#[should_panic]
fn negative_height() { fn negative_height() {
let _rect = Rectangle::new(10, -10); let _rect = Rectangle::new(10, -10);
} }

View File

@@ -1,4 +1,24 @@
fn main() { // Tests are important to ensure that your code does what you think it should
// DON'T EDIT THIS SOLUTION FILE! // do.
// It will be automatically filled after you finish the exercise.
fn is_even(n: i64) -> bool {
n % 2 == 0
}
fn main() {
// You can optionally experiment here.
}
#[cfg(test)]
mod tests {
// When writing unit tests, it is common to import everything from the outer
// module (`super`) using a wildcard.
use super::*;
#[test]
fn you_can_assert() {
assert!(is_even(0));
assert!(!is_even(-1));
// ^ You can assert `false` using the negation operator `!`.
}
} }

View File

@@ -1,4 +1,22 @@
fn main() { // Calculates the power of 2 using a bit shift.
// DON'T EDIT THIS SOLUTION FILE! // `1 << n` is equivalent to "2 to the power of n".
// It will be automatically filled after you finish the exercise. fn power_of_2(n: u8) -> u64 {
1 << n
}
fn main() {
// You can optionally experiment here.
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn you_can_assert_eq() {
assert_eq!(power_of_2(0), 1);
assert_eq!(power_of_2(1), 2);
assert_eq!(power_of_2(2), 4);
assert_eq!(power_of_2(3), 8);
}
} }

View File

@@ -1,4 +1,45 @@
fn main() { struct Rectangle {
// DON'T EDIT THIS SOLUTION FILE! width: i32,
// It will be automatically filled after you finish the exercise. height: i32,
}
impl Rectangle {
// Don't change this function.
fn new(width: i32, height: i32) -> Self {
if width <= 0 || height <= 0 {
// Returning a `Result` would be better here. But we want to learn
// how to test functions that can panic.
panic!("Rectangle width and height must be positive");
}
Rectangle { width, height }
}
}
fn main() {
// You can optionally experiment here.
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn correct_width_and_height() {
let rect = Rectangle::new(10, 20);
assert_eq!(rect.width, 10); // Check width
assert_eq!(rect.height, 20); // Check height
}
#[test]
#[should_panic] // Added this attribute to check that the test panics.
fn negative_width() {
let _rect = Rectangle::new(-10, 10);
}
#[test]
#[should_panic] // Added this attribute to check that the test panics.
fn negative_height() {
let _rect = Rectangle::new(10, -10);
}
} }