macro_rules! test_fn { ( $(#[$meta:meta])* $name:ident, $rules:expr, $(runner = $runner:expr,)? $start:literal => $($goal:literal),+ $(,)? $(@check $check_fn:expr)? ) => { ... }; }
Expand description
Utility to make a test proving expressions equivalent
Example
egg::test_fn! {
// name of the generated test function
my_test_name,
// the rules to use
[
rewrite!("my_silly_rewrite"; "(foo ?a)" => "(bar ?a)"),
rewrite!("my_other_rewrite"; "(bar ?a)" => "(baz ?a)"),
],
// the `runner = ...` is optional
// if included, this must come right after the rules
runner = Runner::<SymbolLang, (), _>::default(),
// the initial expression
"(foo 1)" =>
// 1 or more goal expressions, all of which will be check to be
// equivalent to the initial one
"(bar 1)",
"(baz 1)",
}