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;