1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//! Testing library that provides some tools to apply "Advanced"
//! [Arrange-Act-Assert](https://github.com/testdouble/contributing-tests/wiki/Arrange-Act-Assert)
//! testing design.
//!
//! # Examples
//!
//! ```rust
//! use test4a::{Equal, Message, PanicWhen, Runner};
//!
//! // Definition of the structure that contains expected values.
//! struct Expected {
//!     value: usize,
//! }
//!
//! // Definition of the "act" methods.
//! fn add_0(message: &mut Message, value: &mut usize) {
//!     message.set("Add 0 to the initial integer");
//!     *value += 0;
//! }
//!
//! fn add_1(message: &mut Message, value: &mut usize) {
//!     message.set("Add 1 to the initial integer");
//!     *value += 1;
//! }
//!
//! fn subtract_1(message: &mut Message, value: &mut usize) {
//!     message.set("Subtract 1 to the initial integer");
//!     *value -= 1;
//! }
//!
//! // Definition of the "assert" methods.
//! fn expect_value(
//!     message: &mut Message,
//!     value: usize,
//!     expected: Expected,
//! ) -> Equal<usize> {
//!     message.set("value == expected.value");
//!     Equal::new(value, expected.value)
//! }
//!
//! // Definition of the tests to execute.
//! #[test]
//! fn test_zero() {
//!     Runner::arrange(|message| {
//!         message.set("Initial value of 0");
//!         0
//!     })
//!     .act(add_0, || Expected { value: 0 })
//!     .act(add_1, || Expected { value: 1 })
//!     .act_panic(PanicWhen::Debug, subtract_1)
//!     .assert(expect_value);
//! }
//!
//! #[test]
//! fn test_other() {
//!     Runner::arrange(|message| {
//!         message.set("Initial value of 42");
//!         42
//!     })
//!     .act(add_0, || Expected { value: 42 })
//!     .act(add_1, || Expected { value: 43 })
//!     .act(subtract_1, || Expected { value: 41 })
//!     .assert(expect_value);
//! }
//! ```

#![deny(clippy::all)]
#![deny(clippy::pedantic)]
#![deny(clippy::nursery)]
#![deny(clippy::cargo)]

mod asserts;
mod messages;
mod runners;

pub use self::asserts::Assert;
pub use self::asserts::Contains;
pub use self::asserts::Equal;
pub use self::asserts::False;
pub use self::asserts::Greater;
pub use self::asserts::GreaterEqual;
pub use self::asserts::Less;
pub use self::asserts::LessEqual;
pub use self::asserts::Multiple;
pub use self::asserts::NotEqual;
pub use self::asserts::True;
pub use self::messages::Message;
pub use self::runners::PanicWhen;
pub use self::runners::Runner;