#![feature(test)]

extern crate route_recognizer;
extern crate test;

use route_recognizer::nfa::CharSet;
use std::collections::{BTreeSet, HashSet};

#[bench]
fn bench_char_set(b: &mut test::Bencher) {
    let mut set = CharSet::new();
    set.insert('p');
    set.insert('n');
    set.insert('/');

    b.iter(|| {
        assert!(set.contains('p'));
        assert!(set.contains('/'));
        assert!(!set.contains('z'));
    });
}

#[bench]
fn bench_hash_set(b: &mut test::Bencher) {
    let mut set = HashSet::new();
    set.insert('p');
    set.insert('n');
    set.insert('/');

    b.iter(|| {
        assert!(set.contains(&'p'));
        assert!(set.contains(&'/'));
        assert!(!set.contains(&'z'));
    });
}

#[bench]
fn bench_btree_set(b: &mut test::Bencher) {
    let mut set = BTreeSet::new();
    set.insert('p');
    set.insert('n');
    set.insert('/');

    b.iter(|| {
        assert!(set.contains(&'p'));
        assert!(set.contains(&'/'));
        assert!(!set.contains(&'z'));
    });
}