new_matchers/
new_matchers.rs

1use rest::prelude::*;
2use std::collections::HashMap;
3
4fn main() {
5    // Enable enhanced output for this example
6    config().enhanced_output(true).apply();
7
8    // Boolean matchers
9    let is_enabled = true;
10    expect!(is_enabled).to_be_true();
11    expect!(!is_enabled).to_be_false();
12
13    // Option matchers
14    let maybe_value: Option<i32> = Some(42);
15    expect!(&maybe_value).to_be_some();
16    expect!(&maybe_value).to_contain(&42);
17
18    let empty_option: Option<i32> = None;
19    expect!(&empty_option).to_be_none();
20    expect!(&empty_option).not().to_be_some();
21
22    // Result matchers
23    let success_result: Result<i32, &str> = Ok(42);
24    expect!(&success_result).to_be_ok();
25    expect!(&success_result).to_contain_ok(&42);
26
27    let error_result: Result<i32, &str> = Err("failed");
28    expect!(&error_result).to_be_err();
29    expect!(&error_result).to_contain_err(&"failed");
30
31    // Collection matchers
32    let numbers = vec![1, 2, 3, 4, 5];
33    let numbers_slice = numbers.as_slice();
34    expect!(numbers_slice).to_have_length(5);
35    expect!(numbers_slice).to_contain(3);
36    expect!(numbers_slice).to_contain_all_of(&[1, 5]);
37    expect!(numbers_slice).to_equal_collection(&[1, 2, 3, 4, 5]);
38
39    let empty_vec: Vec<i32> = vec![];
40    let empty_slice = empty_vec.as_slice();
41    expect!(empty_slice).to_be_empty();
42
43    // HashMap matchers
44    let mut user_scores = HashMap::new();
45    user_scores.insert("Alice", 100);
46    user_scores.insert("Bob", 85);
47
48    expect!(&user_scores).to_have_length(2);
49    expect!(&user_scores).to_contain_key("Alice");
50    expect!(&user_scores).to_contain_entry("Bob", &85);
51    expect!(&user_scores).not().to_contain_key("Charlie");
52
53    // Report test results
54    rest::Reporter::summarize();
55}