2 个不稳定版本
0.2.0 | 2019年10月10日 |
---|---|
0.1.0 | 2019年10月4日 |
#584 in 测试
14KB
258 行
合规性测试
简单.yaml.测试
:
1
===
a=b=c=2<3;
---
- Identifier: 1
- EqualsSign: 1
- Identifier: 1
- EqualsSign: 1
- Identifier: 1
- EqualsSign: 1
- Integer: 1
- LessThanSign: 1
- Integer: 1
- Semicolon: 1
...
test.rs
:
use {
conformance, serde_yaml,
tinyc_lexer::{tokenize, Token},
};
#[conformance::tests(exact, serde=serde_yaml, file="tests/simple.yaml.test")]
fn lex_tokens(s: &str) -> Vec<Token> {
tokenize(s).collect()
}
此代码从 ===
和 ---
之间获取输入,将其传递给测试函数,然后使用 ser
函数进行序列化。输出从 ---
和 ...
之间获取,然后通过 de
序列化和重新序列化进行归一化。使用 assert_eq!
比较两种序列化形式。文件路径相对于 Cargo 清单。
一个合规性测试文件可以包含任意数量的测试。文件名和测试名(在 ===
上方)结合并用于命名传递给标准 Rust 测试运行器的测试。
serde
参数代表可能提供的三个参数,按顺序替代其位置
ser
:fn<T>(&T) -> String
(默认serde::to_string
)de
:fn(&str) -> Result<value, impl Error>
(默认serde::from_str
)value
:一个可以被传递给ser
的类型(默认serde::Value
)
您也可以只提供 ser
和 de
,并且 value
的默认值是产生的类型。
更多信息,请参阅 dev.to 的公告帖子 或在 Discord 上 @ 我。
依赖项
~1.5MB
~35K SLoC