test_gen

A comprehensive function-like macro, for concisely defining parameterized tests.

This crate provides the function-like 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.63.0

test_gen can be added to a project, using the following command: text cargo add test_gen --dev

Or alternatively, by adding the following lines to its Cargo.toml file: toml [dev-dependancies] test_gen = "0.2.2"

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 fn 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.