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}