#assertions #assert #testing #diff #replace

无 std assert_unordered

用于无序集合的 assert_eq 的直接替代品

10 个版本

0.3.5 2022 年 4 月 17 日
0.3.4 2022 年 4 月 17 日
0.2.1 2022 年 4 月 16 日
0.1.1 2022 年 4 月 16 日

949Rust 模式 中排名

Download history 2275/week @ 2024-03-14 2182/week @ 2024-03-21 2062/week @ 2024-03-28 2124/week @ 2024-04-04 1921/week @ 2024-04-11 2146/week @ 2024-04-18 2259/week @ 2024-04-25 1940/week @ 2024-05-02 2503/week @ 2024-05-09 2502/week @ 2024-05-16 2349/week @ 2024-05-23 2252/week @ 2024-05-30 3064/week @ 2024-06-06 6570/week @ 2024-06-13 7887/week @ 2024-06-20 5485/week @ 2024-06-27

每月下载量 23,379
68 个crate(7 个直接) 中使用

MIT/Apache 许可证

37KB
275 行代码(不含注释)

assert_unordered

Crate Docs

用于无序集合的 assert_eq 的直接替代品

此宏在集合的顺序不重要的情况下非常有用,即使它们总是以相同的顺序出现。这是因为 stdlib 的 assert_eq 会显示左边的整个集合和右边的整个集合,并让用户自己扫描差异。相比之下,这个 crate 仅与集合(实现 IntoIterator 的类型)一起工作,因此只能显示差异(下面是一个输出示例)。

注意:从 0.3.2 版本开始,默认输出是彩色,类似于 pretty_assertions

用法

注意:可以使用 no-default-features 来禁用彩色输出(并启用 no-std 支持)

[dev-dependencies]
assert_unordered = "0.3"

哪个宏?

TLDR; - 如果无法满足特质要求,则首选 assert_eq_unordered_sort

  • assert_eq_unordered
    • 仅需要元素上的 DebugPartialEq
    • 集合级别相等性检查,如果不相等,则回退到逐项比较(O(n^2))
  • assert_eq_unordered_sort
    • 需要元素上的 DebugEqOrd
    • 集合级别相等性检查,如果不相等,则排序并再次比较,如果仍然不相等,则回退到逐项比较(O(n^2))

示例

use assert_unordered::assert_eq_unordered;

#[derive(Debug, PartialEq)]
struct MyType(i32);

fn main() {
    let expected = vec![MyType(1), MyType(2), MyType(4), MyType(5)];
    let actual = vec![MyType(2), MyType(0), MyType(4)];

    assert_eq_unordered!(expected, actual);
}

输出

example_error

许可证

此项目可以选择性地在以下许可证下使用

依赖项