5 unstable releases
0.3.0 | Jun 16, 2024 |
---|---|
0.2.2 | May 6, 2024 |
0.2.1 | Jun 14, 2023 |
0.2.0 | Jun 14, 2023 |
0.1.0 | Aug 15, 2022 |
#844 in Testing
304 downloads per month
Used in vector-victor
27KB
485 lines
Generic Parameterize
This crate provides the parameterize
macro, which allow parameterizing generic functions for applications like unit
testing.
for example,
use generic_parameterize::parameterize;
use std::fmt::Debug;
#[parameterize(T = (i32, f32), N = [4, 5, 6])]
#[test]
fn test_array<T: Default, const N: usize>() where [T; N]: Default + Debug {
let foo: [T; N] = Default::default();
println!("{:?}", foo)
}
generates a module called test_array
containing functions called test_array_i32_4
, test_array_i32_5
etc.
The #[test]
attribute gets copied to the child functions, which in turn call a copy of test_array
. The result looks
like:
mod test_array {
use std::println;
fn test_array<T: Default, const N : usize>() where [T;N]: Default + std::fmt::Debug{
let foo: [T;N] = Default::default();
println!("{:?}", foo)
}
#[test]
fn test_array_i32_4() {test_array::<i32,4>();}
#[test]
fn test_array_f32_4() {test_array::<f32,4>();}
#[test]
fn test_array_i32_5() {test_array::<i32,5>();}
// etc...
}
Dependencies
~0.7–1.2MB
~26K SLoC