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
#![ warn( missing_docs ) ]
#![ warn( missing_debug_implementations ) ]
#![ allow( dead_code ) ]
// #![no_std]
//!
//! Tools for writing and runnint tests.
//!
//! # Sample
//! ``` rust
//! use wtest_basic::*;
//!
//! //
//!
//! fn _pass1()
//! {
//! assert_eq!( true, true );
//! }
//!
//! //
//!
//! fn _pass2()
//! {
//! assert_eq!( 1, 1 );
//! }
//!
//! //
//!
//! test_suite!
//! {
//! pass1,
//! pass2,
//! }
//!
//! ```
pub extern crate paste;
/// Mechanism to define test suite. This macro encourages refactoring the code of the test in the most readable way, gathering a list of all test routines at the end of the test file.
#[ macro_export ]
macro_rules! test_suite
{
( $( $Name : ident ),* $(,)? ) =>
{
$( #[test] fn $Name() { $crate::paste::paste!([< _ $Name >])() } )*
// $( #[test] fn $Name() { concat_idents!( _, $Name )() } )*
}
// ( $( $Name : ident ),* $(,)? ) =>
// {
// // $( #[test] fn concat_idents!( $Name, _test )() { $Name() } )*
// $( #[test] fn paste!([< $Name _test >])() { $Name() } )*
// }
}
// /// Pass only if callback fails either returning error or panicing.
//
// pub fn should_throw< R, F : FnOnce() -> anyhow::Result< R > >( f : F ) -> anyhow::Result< R >
// {
// f()
// }
//
// #[panic_handler]
// fn panic( info : &core::panic::PanicInfo ) -> !
// {
// println!( "{:?}", info );
// loop {}
// }
