[][src]Module fluid::wiki

The crate's wiki.

Get started

As a general advice, it should not be forgotten that everything related to this crate must be used only within a test config (i.e., with a #[cfg(test)] attribute). Otherwise, the library sources are mixed with the tests ones.

Add the crate in the Cargo.toml as a dev dependency:

[dev-dependencies]
fluid = "0.4"

For those stuck in the 2015 edition, reference the crate in the main file:

#[cfg(test)] extern crate fluid;

Import the needed content in scope of the test files:

use fluid::prelude::*;

The tests can then be written:

Facts and theories

Fact

#[fact]
fn cerberus_has_3_heads() {
    number_of_faces("Cerberus").should().be_equal_to(3);
}

More about facts.

Theory

#[theory]
#[case("Cerberus", 3)]
#[case("Hydra", 7)]
#[case("Janus", 2)]
#[case("Normal guy", 1)]
fn each_creature_has_a_correct_number_of_faces(name: &str, nbr_faces: u8) {
    number_of_faces(name).should().be_equal_to(nbr_faces);
}

More about theories.

Setup and teardown

Tests sessions are available: they allow to add a setup, a teardown, and a context to the tests:

use fluid::prelude::*;

struct FooTests {
    // The needed context.
}

impl Default for FooTests {
    fn default() -> Self {
        // Here goes the setup.
        FooTests {
            // ...
        }
    }
}

impl Drop for FooTests {
    fn drop(&mut self) {
        // Here goes the teardown.
    }
}

// Here go the tests:
#[session]
impl FooTests {
    #[fact]
    fn dummy_example(self) {
        // The context can be used through `self` for the tests.
    }
}

More about sessions.

Modules

assertions_list

The complete list of the implemented assertions.

fact

A #[fact] is a simple concrete fact to be verified. For example:

session

A test #[session] allow to use methods as tests.

theory

A #[theory] is a test more complex than a fact, that must be proven or inferred with multiple cases.