61 lines
1.9 KiB
Rust
61 lines
1.9 KiB
Rust
pub fn sploosh(x: i32, y: i32, z: i32) -> i32 {
|
|
match (x, y, z) {
|
|
(x, _, _) if x < 0 => 99,
|
|
(1, 2, 3) => 4,
|
|
(5, 6, 7) => 3,
|
|
(8, 9, 10) => 7,
|
|
(x, y, z) => x + y - z,
|
|
}
|
|
}
|
|
|
|
pub fn splish(a: i32, b: i32) -> i32 {
|
|
-a + 3 * b
|
|
}
|
|
|
|
// 1. Use the `cfg` attribute to mark the `test` module below as a test module
|
|
|
|
#[cfg(test)]
|
|
mod test {
|
|
// 2. Bring all the library items into scope with a `use` statement
|
|
// Hint: It's okay to use `*` here.
|
|
use super::*;
|
|
|
|
// 3. Write a test function that verifies the following condition using the `assert_eq!` or
|
|
// `assert_ne!` macros
|
|
// - sploosh(1, 2, 3) returns 4
|
|
// - sploosh(5, 6, 7) does not return 4
|
|
// - If you pass sploosh a negative number for the first argument, 99 is returned
|
|
//
|
|
// `cargo test` should run your tests and pass
|
|
// Hint: Don't forget the `#[test]` attribute for your test function!
|
|
|
|
#[test]
|
|
fn test_sploosh() {
|
|
assert_eq!(sploosh(1, 2, 3), 4);
|
|
assert_ne!(sploosh(5, 6, 7), 4);
|
|
assert_eq!(sploosh(-1, 2, 3), 99);
|
|
}
|
|
|
|
// 4. Write a test function that verifies the following conditions using the `assert!` macro
|
|
// - splish(100, 10) is negative
|
|
// - splish(40, 20) is positive
|
|
// - splish(9, 3) is 0
|
|
|
|
#[test]
|
|
fn test_splish() {
|
|
assert!(splish(100, 10) < 0);
|
|
assert!(splish(40, 20) > 0);
|
|
assert!(splish(9, 3) == 0);
|
|
}
|
|
}
|
|
|
|
// 5. Create a `tests/` directory and an integration test file `tests/more_tests.rs`
|
|
// Inside that file, create a test function that verifies:
|
|
// - that `sploosh(splish(-1, 0), splish(1, 1), splish(3, 2))` returns the value `4`
|
|
//
|
|
// `cargo test` should run your `more_tests.rs` file and pass
|
|
|
|
// Challenge: Create a benchmark that measures the speed of sploosh(8, 9, 10)
|
|
// - Speed up the implementation of sploosh(8, 9, 10) without breaking the other tests.
|
|
// - Hint: See Cargo.toml to get you started
|