Es 07 Lists
- with T generic
This commit is contained in:
187
tests/es07_list_generic.rs
Normal file
187
tests/es07_list_generic.rs
Normal file
@@ -0,0 +1,187 @@
|
||||
use esercizi::es07_list_generic::LinkedList;
|
||||
|
||||
#[test]
|
||||
fn test_front() {
|
||||
let mut list = LinkedList::new();
|
||||
|
||||
assert_eq!(0, list.len());
|
||||
assert_eq!(true, list.is_empty());
|
||||
assert_eq!(None, list.pop_front());
|
||||
assert_eq!(true, list.is_empty());
|
||||
assert_eq!(0, list.len());
|
||||
|
||||
list.push_front(50);
|
||||
assert_eq!(1, list.len());
|
||||
assert_eq!(false, list.is_empty());
|
||||
assert_eq!(Some(50), list.pop_front());
|
||||
assert_eq!(true, list.is_empty());
|
||||
assert_eq!(0, list.len());
|
||||
assert_eq!(None, list.pop_front());
|
||||
|
||||
list.push_front(50);
|
||||
list.push_front(20);
|
||||
assert_eq!(2, list.len());
|
||||
assert_eq!(false, list.is_empty());
|
||||
assert_eq!(Some(20), list.pop_front());
|
||||
assert_eq!(Some(50), list.pop_front());
|
||||
assert_eq!(None, list.pop_front());
|
||||
|
||||
list.push_front(50);
|
||||
list.push_front(20);
|
||||
list.push_front(150);
|
||||
assert_eq!(3, list.len());
|
||||
assert_eq!(false, list.is_empty());
|
||||
assert_eq!(Some(150), list.pop_front());
|
||||
assert_eq!(Some(20), list.pop_front());
|
||||
assert_eq!(Some(50), list.pop_front());
|
||||
assert_eq!(None, list.pop_front());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_back() {
|
||||
let mut list = LinkedList::new();
|
||||
|
||||
assert_eq!(0, list.len());
|
||||
assert_eq!(true, list.is_empty());
|
||||
assert_eq!(None, list.pop_back());
|
||||
assert_eq!(true, list.is_empty());
|
||||
assert_eq!(0, list.len());
|
||||
|
||||
list.push_back(50);
|
||||
assert_eq!(1, list.len());
|
||||
assert_eq!(false, list.is_empty());
|
||||
assert_eq!(Some(50), list.pop_back());
|
||||
assert_eq!(true, list.is_empty());
|
||||
assert_eq!(0, list.len());
|
||||
assert_eq!(None, list.pop_back());
|
||||
|
||||
list.push_back(50);
|
||||
list.push_back(20);
|
||||
assert_eq!(2, list.len());
|
||||
assert_eq!(false, list.is_empty());
|
||||
assert_eq!(Some(20), list.pop_back());
|
||||
assert_eq!(Some(50), list.pop_back());
|
||||
assert_eq!(None, list.pop_back());
|
||||
|
||||
list.push_back(50);
|
||||
list.push_back(20);
|
||||
list.push_back(150);
|
||||
assert_eq!(3, list.len());
|
||||
assert_eq!(false, list.is_empty());
|
||||
assert_eq!(Some(150), list.pop_back());
|
||||
assert_eq!(Some(20), list.pop_back());
|
||||
assert_eq!(Some(50), list.pop_back());
|
||||
assert_eq!(None, list.pop_back());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_mixed() {
|
||||
let mut list: LinkedList<u32> = LinkedList::new();
|
||||
assert_eq!(0, list.len());
|
||||
|
||||
list.push_back(50);
|
||||
assert_eq!(1, list.len());
|
||||
|
||||
list.push_front(20);
|
||||
assert_eq!(2, list.len());
|
||||
|
||||
list.push_front(10);
|
||||
assert_eq!(3, list.len());
|
||||
|
||||
list.push_back(150);
|
||||
list.push_back(15);
|
||||
list.push_front(0);
|
||||
assert_eq!(6, list.len());
|
||||
|
||||
assert_eq!(Some(15), list.pop_back());
|
||||
assert_eq!(5, list.len());
|
||||
assert_eq!(Some(0), list.pop_front());
|
||||
assert_eq!(4, list.len());
|
||||
assert_eq!(Some(150), list.pop_back());
|
||||
assert_eq!(3, list.len());
|
||||
assert_eq!(Some(50), list.pop_back());
|
||||
assert_eq!(2, list.len());
|
||||
assert_eq!(Some(10), list.pop_front());
|
||||
assert_eq!(1, list.len());
|
||||
assert_eq!(Some(20), list.pop_front());
|
||||
assert_eq!(0, list.len());
|
||||
|
||||
assert_eq!(None, list.pop_back());
|
||||
assert_eq!(None, list.pop_front());
|
||||
|
||||
// creo lista [50, 20, 10, 30, 40]
|
||||
list.push_back(10);
|
||||
list.push_front(20);
|
||||
list.push_back(30);
|
||||
list.push_back(40);
|
||||
list.push_front(50);
|
||||
|
||||
assert_eq!(Some(50), list.pop_front());
|
||||
assert_eq!(Some(20), list.pop_front());
|
||||
assert_eq!(Some(10), list.pop_front());
|
||||
assert_eq!(Some(30), list.pop_front());
|
||||
assert_eq!(Some(40), list.pop_front());
|
||||
assert_eq!(None, list.pop_front());
|
||||
|
||||
list.push_back(10);
|
||||
list.push_front(20);
|
||||
list.push_back(30);
|
||||
list.push_back(40);
|
||||
list.push_front(50);
|
||||
|
||||
assert_eq!(Some(40), list.pop_back());
|
||||
assert_eq!(Some(30), list.pop_back());
|
||||
assert_eq!(Some(10), list.pop_back());
|
||||
assert_eq!(Some(20), list.pop_back());
|
||||
assert_eq!(Some(50), list.pop_back());
|
||||
assert_eq!(None, list.pop_back());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get() {
|
||||
let mut list = LinkedList::new();
|
||||
// creo lista [50, 20, 10, 30, 40]
|
||||
list.push_back(10);
|
||||
list.push_front(20);
|
||||
list.push_back(30);
|
||||
list.push_back(40);
|
||||
list.push_front(50);
|
||||
|
||||
assert_eq!(5, list.len());
|
||||
// [50, 20, 10, 30, 40]
|
||||
assert_eq!(Some(10), list.get(2));
|
||||
// [50, 20, 30, 40]
|
||||
assert_eq!(Some(20), list.get(1));
|
||||
// [50, 30, 40]
|
||||
assert_eq!(Some(30), list.get(1));
|
||||
// [30, 40]
|
||||
assert_eq!(Some(40), list.get(1));
|
||||
// [30]
|
||||
assert_eq!(Some(50), list.get(0));
|
||||
// []
|
||||
assert_eq!(None, list.get(0));
|
||||
assert_eq!(None, list.pop_back());
|
||||
assert_eq!(None, list.pop_front());
|
||||
assert_eq!(0, list.len());
|
||||
|
||||
// creo lista [50, 20, 10, 30, 40]
|
||||
list.push_back(10);
|
||||
list.push_front(20);
|
||||
list.push_back(30);
|
||||
list.push_back(40);
|
||||
list.push_front(50);
|
||||
|
||||
assert_eq!(5, list.len());
|
||||
assert_eq!(None, list.get(-6));
|
||||
assert_eq!(Some(50), list.get(-5));
|
||||
assert_eq!(4, list.len());
|
||||
assert_eq!(Some(20), list.get(-4));
|
||||
assert_eq!(3, list.len());
|
||||
assert_eq!(Some(10), list.get(-3));
|
||||
assert_eq!(2, list.len());
|
||||
assert_eq!(Some(30), list.get(-2));
|
||||
assert_eq!(1, list.len());
|
||||
assert_eq!(Some(40), list.get(-1));
|
||||
assert_eq!(None, list.get(-1));
|
||||
assert_eq!(0, list.len());
|
||||
}
|
||||
Reference in New Issue
Block a user