Expand description
Utility for test cases with panic.
The author of this crate is not good at English.
Forgive me if the document is hard to read.
For the same purpose, the shoud_panic attribute is provided in the
Rust standard, but it is not so useful, hence we created this crate.
§Examples
Example with always panic.
use test_panic::prelude::*;
#[test]
fn test() {
let result = test_panic(|| panic!("message."));
assert!(result.is_panic());
assert!(result.message().contains("message"));
}Example with multiple tests.
use test_panic::prelude::*;
#[test]
fn with_multi_tests() {
let datas = [
((10, 3), ok(3)),
((10, 0), ng()),
((10, 15), msg("Result is too small")),
];
for ((x, y), tobe) in datas {
let asis = test_panic(|| divide(x, y));
assert!(asis.almost_eq(&tobe));
}
}
fn divide(x: i32, y: i32) -> i32 {
assert!(y > 0);
assert!(x / y >= 1, "Result is too small");
x / y
}Modules§
- prelude
- Crate’s prelude.
Enums§
- Test
Panic Result - Result of
test_panicfunction.
Functions§
- msg
- Shorthand of
TestPanicResult::Panicwith payload. - ng
- Shorthand of
TestPanicResult::Panicwithout payload. - ok
- Shorthand of
TestPanicResult::Cool. - test_
panic - Execute the closure and get its return value or panic information.