1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
extern crate rspec;
use std::collections::BTreeSet;
pub fn main() {
#[derive(Clone, Debug)]
struct Environment {
set: BTreeSet<usize>,
len_before: usize,
}
let environment = Environment {
set: BTreeSet::new(),
len_before: 0,
};
rspec::run(&rspec::given("a BTreeSet", environment, |ctx| {
ctx.when("not having added any items", |ctx| {
ctx.then("it is empty", |env| assert!(env.set.is_empty()));
});
ctx.when("adding an new item", |ctx| {
ctx.before_all(|env| {
env.len_before = env.set.len();
env.set.insert(42);
});
ctx.then("it is not empty any more", |env| {
assert!(!env.set.is_empty());
});
ctx.then("its len increases by 1", |env| {
assert_eq!(env.set.len(), env.len_before + 1);
});
ctx.when("adding it again", |ctx| {
ctx.before_all(|env| {
env.len_before = env.set.len();
env.set.insert(42);
});
ctx.then("its len remains the same", |env| {
assert_eq!(env.set.len(), env.len_before);
});
});
});
ctx.when("returning to outer context", |ctx| {
ctx.then("it is still empty", |env| assert!(env.set.is_empty()));
});
ctx.then("panic!(…) fails", |_env| {
panic!("Some reason for failure.")
});
}));
}
|