Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/afshinm/morq
BDD/TDD assertion interface
https://github.com/afshinm/morq
rust unit-testing
Last synced: 3 months ago
JSON representation
BDD/TDD assertion interface
- Host: GitHub
- URL: https://github.com/afshinm/morq
- Owner: afshinm
- License: mit
- Created: 2017-10-10T15:58:14.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-11-25T12:31:31.000Z (about 7 years ago)
- Last Synced: 2024-10-07T23:35:15.180Z (4 months ago)
- Topics: rust, unit-testing
- Language: Rust
- Homepage: http://morq.rs
- Size: 46.9 KB
- Stars: 83
- Watchers: 4
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# morq [![Build Status](https://travis-ci.com/afshinm/morq.svg?token=ACapzCFmBh92g8rnRsrq&branch=master)](https://travis-ci.com/afshinm/morq)
Write unit tests like humans
## Install
```
cargo install morq
```Morq Crate: https://crates.io/crates/morq
## Grammar
Since we are using a macro here, you need to wrap the following rules in `morq!` macro.
Example:
```rust
morq!(
expect(3).to.be.an(i32);
);
```### Chains
You use following chains to make the assertions more user friendly and readable.
- to
- be
- have### Equal
```rust
expect(30).to.be.equal(10 * 3);
expect(3).to.be.equal(1 + 2);
```### Close
To compare two given `float` values
```rust
expect(3f32).to.be.close(3.0001f32);
expect(3f32).to.be.close_to(3.0001f32);
```### Not
Negates the chain.
```rust
expect(30).to.not.be.equal(10);
expect(3).to.not.be.equal(1);
expect(vec![1, 2, 3]).to.not.be.a(Vec);
```### A / An
To check the data type.
```rust
expect(30).to.be.an(i32);
expect("hola".to_string()).to.not.be.a(f32);
expect(vec![1, 2, 3]).to.be.a(Vec);
```### Empty
To check and see if the iterator is empty or not
```rust
expect(vec![1, 2, 3]).to.not.be.empty();
expect(0..2).to.not.be.empty();
```### LengthOf
To check the count of elements in an iterator
```rust
expect(vec![1, 2, 3]).to.not.have.length_of(1usize);
expect(0..3).to.have.length_of(3usize);
```### Contain
Given iterator must contain the element
```rust
expect(vec![1, 2, 3]).to.contain(2);
expect(vec![false, false]).to.not.contain(true);
```### Ok / Err
To check a Result enum
```rust
let res: Result = Ok(format!("boo"));morq!(
expect(res).to.be.ok();
);
``````rust
let res: Result = Err(format!("boo"));morq!(
expect(res).to.be.err();
);
```Of course, you can combine it with `not`:
```rust
let res: Result = Err(format!("boo"));morq!(
expect(res).to.not.be.ok();
);
```## Roadmap
- Adding more chain rules
- Adding more assert (terminal)
- Ability to add two or more asserts in one chain:```rust
expect("hello").to.be.equal("hello").and.not.be.a(i32);
```## FAQ
### morq?
Means chicken in Farsi. Like a lazy chicken, you know.
Artwork: clipart-library.com
### Author
Afshin Mehrabani
### License
MIT
Inspired by http://chaijs.com and https://github.com/carllerche/hamcrest-rust