clearcheck/assertions/bool/
mod.rs

1use crate::matchers::bool::{be_false, be_true};
2use crate::matchers::Should;
3
4/// TrueFalseAssertion enables assertions about whether a boolean evaluates to true or false.
5pub trait TrueFalseAssertion {
6    /// - Asserts that the boolean evaluates to true.
7    /// - Returns a reference to self for fluent chaining.
8    /// - Panics if the assertion fails.
9    /// # Example
10    /// ```
11    /// use clearcheck::assertions::bool::TrueFalseAssertion;
12    ///
13    /// let value = true;
14    /// value.should_be_true();
15    /// ```
16    fn should_be_true(&self) -> &Self;
17
18    /// - Asserts that the boolean evaluates to false.
19    /// - Returns a reference to self for fluent chaining.
20    /// - Panics if the assertion fails.
21    /// # Example
22    /// ```
23    /// use clearcheck::assertions::bool::TrueFalseAssertion;
24    ///
25    /// let value = false;
26    /// value.should_be_false();
27    /// ```
28    fn should_be_false(&self) -> &Self;
29}
30
31impl TrueFalseAssertion for bool {
32    fn should_be_true(&self) -> &Self {
33        self.should(&be_true());
34        self
35    }
36
37    fn should_be_false(&self) -> &Self {
38        self.should(&be_false());
39        self
40    }
41}
42
43#[cfg(test)]
44mod tests {
45    use crate::assertions::bool::TrueFalseAssertion;
46
47    #[test]
48    fn should_be_true() {
49        let value = true;
50        value.should_be_true();
51    }
52
53    #[test]
54    #[should_panic]
55    fn should_be_true_but_was_not() {
56        let value = false;
57        value.should_be_true();
58    }
59
60    #[test]
61    fn should_be_false() {
62        let value = false;
63        value.should_be_false();
64    }
65
66    #[test]
67    #[should_panic]
68    fn should_be_false_but_was_not() {
69        let value = true;
70        value.should_be_false();
71    }
72}