demonstrate 0.4.5

Declarative testing framework
Documentation
use demonstrate::demonstrate;

fn is_4() -> u8 {
    4
}

demonstrate! {
    describe "module" {
        use super::*;

        before {
            let four = 4;
        }

        #[should_panic]
        it "can fail" {
            assert!(four != 4)
        }

        test "is returnable" -> Result<(), &'static str> {
            if is_4() == four {
                Ok(())
            } else {
                Err("It isn't 4! :o")
            }
        }

        #[async_attributes::test]
        async context "asynchronous" {
            before {
                let is_4_task = async_std::task::spawn(async {
                    is_4()
                });
            }

            it "awaits" {
                assert_eq!(four, is_4_task.await)
            }
        }
    }
}