#assertion #assertions #flexible #type #self

expect

为类型添加断言的灵活库

1 个不稳定版本

使用旧的 Rust 2015

0.0.1 2015年3月19日

#74#flexible

MIT 许可证

5KB
57

expect

为类型添加断言的灵活库。

示例

extern crate expect;

use std::default::Default;
use expect::{Expect, Assertion};

#[derive(Default)]
struct Point {
    x: f64,
    y: f64
}

// Clockwise from the top left.
#[derive(Default)]
struct Square(Point, Point, Point, Point);

#[derive(Default)]
struct Contains(Point);

impl Assertion<Square> for Contains {
    fn assert(self, square: &Square) {
        assert!(self.0.x > square.0.x && self.0.x < self.1.x
             && self.0.y > square.2.y && self.1.y < self.1.y);
    }
}

fn main() {
    let square = Square(
        Point { x: 0.0, y: 1.0 },
        Point { x: 1.0, y: 1.0 },
        Point { x: 1.0, y: 0.0 },
        Point { x: 0.0, y: 0.0 },
    );


    square
        .expect(Contains(Point { x: 0.5, y: 0.18 }))
        .expect(Contains(Point { x: 0.12, y: 0.9 }))

        // You can also use tuples of Assertions.
        .expect((Contains(Point { x: 0.63, y: 0.4 }),
                 Contains(Point { x: 0.7, y: 0.85 })));
}

请注意,尽管这个示例是一个单独的文件/包,但使用 Assertionexpect 的真正强大之处在于 Assertion 可以在单独的包中定义。

用法

使用 crates.io 仓库;将其添加到您的 Cargo.toml 中,与其他依赖项一起

[dependencies]
expect = "*"

作者

Jonathan Reem 是 expect 的主要作者和维护者。

许可证

MIT

无运行时依赖