#type #generic #parameters #macro #test

typed_test_gen

宏,用于从具有泛型类型参数的函数生成测试

2 个版本

0.1.1 2024年7月20日
0.1.0 2023年9月1日

604测试

Download history 34/week @ 2024-05-10 62/week @ 2024-05-17 127/week @ 2024-05-24 83/week @ 2024-05-31 122/week @ 2024-06-07 95/week @ 2024-06-14 114/week @ 2024-06-21 108/week @ 2024-06-28 89/week @ 2024-07-05 84/week @ 2024-07-12 236/week @ 2024-07-19 141/week @ 2024-07-26 60/week @ 2024-08-02 39/week @ 2024-08-09

每月下载量 493
twibint 中使用

GPL-3.0-only

16KB
101 代码行

typed_test_gen

crate documentation

Rust crate,用于定义一个宏,该宏自动针对提供的类型专门化泛型测试。当我们想编写具有不同底层类型的相同测试时,这很有用。此 crate 提供了 #[test_with(Type1, Type2)] 语法,它将实例化 2 个测试:一个在 Type1 上,另一个在 Type2 上。这些类型可以是任何泛型类型的路径,例如 module::something::Type<Gen>

示例胜于言辞

#[test_with(u32, u64, char)]
fn test_vec<T>() {
    let vec = Vec::<T>::with_capacity(10);
    assert_eq!(vec.len(), 0);
    assert!(vec.capacity() >= 10);
}

此代码将生成 3 个测试函数:_specialized__test_vec__u32__specialized__test_vec__u64__specialized__test_vec__char_

此功能支持在定义中添加属性 #[should_panic]

#[test_with(u32, u64, char)]
#[should_panic]
fn test_vec_fail<T>() {
    let vec = Vec::<T>::with_capacity(10);
    assert_eq!(vec.len(), 0);
    assert!(vec.capacity() < 10);
}

依赖关系

~270–720KB
~17K SLoC