4个版本
使用旧的Rust 2015
0.2.2 | 2018年1月8日 |
---|---|
0.2.1 | 2017年12月13日 |
0.2.0 | 2017年12月12日 |
0.1.0 | 2017年9月19日 |
#822 in 测试
32 每月下载量
100KB
2K SLoC
Proptest, Arbitrary
注意:此版本仍然是WIP;不要使用,只是在crates.io上预留。
Proptest是一个属性测试框架(即QuickCheck家族),灵感来自Hypothesis框架(Python)。
此crate,proptest-arbitrary
,还提供了一个Arbitrary
特质,允许你对每种类型有一个规范化的Strategy
。这相当于Haskell QuickCheck的Arbitrary
实现。在这个对Arbitrary
的解释中,Strategy
相当于Gen
monad。
Arbitrary当前实现如下:
/// Arbitrary determines a canonical Strategy [..]
pub trait Arbitrary<'a> : Sized + Debug {
fn arbitrary() -> Self::Strategy {
Self::arbitrary_with(Default::default())
}
fn arbitrary_with(args: Self::Parameters) -> Self::Strategy;
type Parameters: Default;
type Strategy: Strategy<Value = Self::ValueTree>;
/// NOTE:
/// This type should NOT be relied upon outside of this crate
/// other than for implementing `Arbitrary` for other types.
type ValueTree: ValueTree<Value = Self>;
}
此crate的状态
此crate目前处于实验阶段。希望将来会被包含在proptest
中。
当前[Arbitrary]特质的定义可能会在Rust中存在类型之后发生变化。然而,只要你不依赖Arbitrary在调用Arbitrary时具有关联类型,实际上这不应该是一个问题。
此crate主要只包含Arbitrary及其实现。因此,不太可能看到破坏性的变化。如果发生任何变化,它可能是针对常见类型的新实现或新类型。
请参阅变更日志以获取所有重大历史变化的完整列表,包括破坏性和其他类型的变更。
致谢
待办事项
贡献
除非你明确声明,否则,你提交的任何贡献(根据Apache-2.0许可定义的工作)将被双重许可,如上所述,没有任何附加条款或条件。
依赖关系
~5MB
~116K SLoC