#generic #proc-macro #test #parameterize

generic_parameterize

一个针对泛型参数的工作的测试参数化宏

5 个不稳定版本

0.3.0 2024年6月16日
0.2.2 2024年5月6日
0.2.1 2023年6月14日
0.2.0 2023年6月14日
0.1.0 2022年8月15日

#737测试

每月下载量 28
用于 vector-victor

MPL-2.0 许可证

27KB
485 代码行

泛型参数化

这个包提供了 parameterize 宏,允许为单元测试等应用参数化泛型函数。

例如:

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)
}

生成一个名为 test_array 的模块,包含名为 test_array_i32_4test_array_i32_5 等函数。属性 #[test] 被复制到子函数中,这些函数随后调用 test_array 的副本。结果如下所示:

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

依赖关系

~0.8–1.3MB
~27K SLoC