use super::Register;
#[test]
fn get_empty() {
let mut register = Register::<u8, u8>::new(100);
assert!(register.get(0).is_none());
}
#[test]
fn set_one() {
let mut register = Register::<u8, u8>::new(100);
assert!(!register.set(0, Some(1)));
}
#[test]
fn set_again() {
let mut register = Register::<u8, u8>::new(100);
assert!(!register.set(0, Some(1)));
assert!(register.set(0, Some(2)));
}
#[test]
fn get_one() {
let mut register = Register::<u8, u8>::new(100);
assert!(!register.set(0, Some(1)));
assert!(*register.get(0).unwrap() == 1);
}
#[test]
fn set_many() {
let mut register = Register::<u8, u8>::new(100);
let mut range = 0..200;
loop {
match range.next() {
Some(i) => { assert!(!register.set(i, Some(i+1))); },
None => { break; }
}
}
range = 100..200;
loop {
match range.next() {
Some(i) => { assert!(register.set(i, Some(i+1))); },
None => { break; }
}
}
range = 0..100;
loop {
match range.next() {
Some(i) => { assert!(!register.set(i, Some(i+1))); },
None => { break; }
}
}
}
#[test]
fn get_many() {
let mut register = Register::<u8, u8>::new(100);
let mut range = 0..200;
loop {
match range.next() {
Some(i) => {
assert!(!register.set(i, Some(i+1)));
assert!(*register.get(i).unwrap() == i+1);
},
None => { break; }
}
}
range = 100..200;
loop {
match range.next() {
Some(i) => {
assert!(register.set(i, Some(i+1)));
assert!(*register.get(i).unwrap() == i+1);
},
None => { break; }
}
}
range = 0..100;
loop {
match range.next() {
Some(i) => {
assert!(register.get(i).is_none());
},
None => { break; }
}
}
}
#[test]
fn reset() {
let mut register = Register::<u8, u8>::new(100);
let mut range = 0..100;
loop {
match range.next() {
Some(i) => {
assert!(!register.set(i, Some(i+1)));
assert!(*register.get(i).unwrap() == i+1);
},
None => { break; }
}
}
register.reset();
range = 0..100;
loop {
match range.next() {
Some(i) => {
assert!(register.get(i).is_none());
assert!(!register.set(i, Some(i+1)));
},
None => { break; }
}
}
}