29 lines
919 B
Rust
29 lines
919 B
Rust
/// Given the start and end points of a journey, and the time it took to complete the journey,
|
|
/// calculate the average speed of the journey.
|
|
fn speed(start: u32, end: u32, time_elapsed: u32) -> u32 {
|
|
// TODO: Panic with a custom message if `time_elapsed` is 0
|
|
if time_elapsed == 0 {
|
|
panic!("The journey took no time at all. That's impossible!");
|
|
}
|
|
(end - start) / time_elapsed
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use crate::speed;
|
|
|
|
#[test]
|
|
fn case1() {
|
|
assert_eq!(speed(0, 10, 10), 1);
|
|
}
|
|
|
|
#[test]
|
|
// 👇 With the `#[should_panic]` annotation we can assert that we expect the code
|
|
// under test to panic. We can also check the panic message by using `expected`.
|
|
// This is all part of Rust's built-in test framework!
|
|
#[should_panic(expected = "The journey took no time at all. That's impossible!")]
|
|
fn by_zero() {
|
|
speed(0, 10, 0);
|
|
}
|
|
}
|