test_gen

A comprehensive declarative macro, for concisely defining parameterized tests.

This crate provides the declarative macro of its namesake, test_gen, which enables the concise definition of batches of named tests, implementing a parameterized argument format to minimise the boilerplate otherwise required for specifying batches of similar tests.

Documentation can be found at [Docs.rs].

Usage

Minimum Supported Rust Version: 1.61.0

test_gen can be included, by adding this to your Cargo.toml:

toml [dev-dependancies] test_gen = "0.1.0"

Examples

Fruits: ```rust use test_gen::*;

enum Fruit { Apple, Pear, Other(T), }

enum BrambleFruit { BlackBerry, }

trait NameOf { fn name_of(&self) -> &str; }

impl NameOf for Fruit { fn name_of(&self) -> &str { use Fruit::*;

    match self {
        Apple => "apple",
        Pear => "pear",
        Other(fruit) => fruit.name_of(),
    }
}

}

impl NameOf for BrambleFruit { fn name_of(&self) -> &str { use BrambleFruit::*;

    match self {
        BlackBerry => "blackberry",
    }
}

}

// Helper function fn assertfruit(fruit: Fruit, name: &str) { asserteq!(fruit.name_of(), name); }

// Test specification testgen! { // Normal turbofish syntax can be used, // when concrete type specification is required assertfruit:: => { apple: { (Fruit::Apple, "apple") }, // Applying case specific attributes pear: { [ignore], (Fruit::Pear, "pear") }, isntpear: { [shouldpanic], (Fruit::Pear, "apple") }, blackberry: { (Fruit::Other(BrambleFruit::BlackBerry), "blackberry") } } } ```

License

test_gen is licensed under the BSD 3-Clause license.

See LICENSE for details.