5个稳定版本
2.0.1 | 2023年4月29日 |
---|---|
1.0.2 | 2021年7月24日 |
#5 in #serializer
1,317 每月下载量
在 2 crate中使用
18KB
231 行
heckcheck
一个极小的测试用例生成器
安装
$ cargo add heckcheck
示例
这是一个针对RGB序列化和解析器的基本往返测试,确保输出与原始输入匹配。
use heckcheck::prelude::*;
/// A color value encoded as Red-Green-Blue
#[derive(Clone, Debug, Arbitrary, PartialEq)]
pub struct Rgb {
pub r: u8,
pub g: u8,
pub b: u8,
}
impl Rgb {
/// Convert from RGB to Hexadecimal.
pub fn to_hex(&self) -> String {
format!("#{:02X}{:02X}{:02X}", self.r, self.g, self.b)
}
/// Convert from Hexadecimal to RGB.
pub fn from_hex(s: String) -> Self {
let s = s.strip_prefix('#').unwrap();
Rgb {
r: u8::from_str_radix(&s[0..2], 16).unwrap(),
g: u8::from_str_radix(&s[2..4], 16).unwrap(),
b: u8::from_str_radix(&s[4..6], 16).unwrap(),
}
}
}
// Validate values can be converted from RGB to Hex and back.
heckcheck::check(|rgb: Rgb| {
let hex = rgb.to_hex();
let res = Rgb::from_hex(hex);
assert_eq!(rgb, res);
Ok(())
});
安全性
此crate使用#![deny(unsafe_code)]
来确保所有内容都在100%安全的Rust中实现。
贡献
想加入我们吗?查看我们的“贡献”指南并查看一些这些问题
许可协议
根据您的选择,受Apache License, Version 2.0或MIT许可协议约束。除非您明确说明,否则根据Apache-2.0许可协议定义的,您有意提交的任何贡献,都应按照上述方式双重许可,不附加任何其他条款或条件。
依赖关系
~645KB
~11K SLoC