rules 0.0.2

An implementation of Perl 6 regex rules
Documentation
use super::generate;
use rules::range_set::Range;

#[test]
fn partial_overlap() {
    let mut left  = generate(vec![('4', '7')]);
    let mut right = left.clone();

    left.remove(Range('3', '5'));
    right.remove(Range('6', '9'));

    let other_left  = generate(vec![('6', '7')]);
    let other_right = generate(vec![('4', '5')]);

    assert_eq!(left,  other_left);
    assert_eq!(right, other_right);
}
#[test]
fn subset() {
    let mut inner  = generate(vec![('3', '8')]);
    let mut left   = inner.clone();
    let mut right  = inner.clone();
    let mut both   = inner.clone();
    
    inner.remove(Range('4', '7'));
    left .remove(Range('3', '7'));
    right.remove(Range('4', '8'));
    both .remove(Range('3', '8'));

    let other_inner = generate(vec![('3', '3'), ('8', '8')]);
    let other_left  = generate(vec![('8', '8')]);
    let other_right = generate(vec![('3', '3')]);
    let other_both  = generate(vec![]);

    assert_eq!(inner, other_inner);
    assert_eq!(left, other_left);
    assert_eq!(right, other_right);
    assert_eq!(both, other_both);
}
#[test]
fn superset() {
    let mut set = generate(vec![('5', '6')]);
    set.remove(Range('3', '8'));

    let other = generate(vec![]);
    assert_eq!(set, other);
}
#[test]
fn disjoint() {
    let mut set = generate(vec![('3', '4')]);
    set.remove(Range('6', '8'));
    set.remove(Range('1', '2'));

    let other = generate(vec![('3', '4')]);
    assert_eq!(set, other);
}