mirror of
https://github.com/kmc7468/cs220.git
synced 2025-12-14 22:18:46 +00:00
159 lines
4.4 KiB
Rust
159 lines
4.4 KiB
Rust
#[cfg(test)]
|
|
mod test {
|
|
use super::super::assignment10::*;
|
|
|
|
#[test]
|
|
fn test_inversion() {
|
|
assert_eq!(inversion(vec![3, 5, 4]), vec![(1, 2)]);
|
|
assert_eq!(inversion(vec!["c", "a", "b", "d"]), vec![(0, 1), (0, 2)]);
|
|
assert_eq!(
|
|
inversion(vec![2, 5, 4, 6, 3, 1]),
|
|
vec![
|
|
(0, 5),
|
|
(1, 2),
|
|
(1, 4),
|
|
(1, 5),
|
|
(2, 4),
|
|
(2, 5),
|
|
(3, 4),
|
|
(3, 5),
|
|
(4, 5)
|
|
]
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_traverse_preorder() {
|
|
let root = Node::NonLeaf((
|
|
1,
|
|
vec![
|
|
Node::NonLeaf((2, vec![Node::Leaf(5), Node::Leaf(6)])),
|
|
Node::Leaf(3),
|
|
Node::NonLeaf((4, vec![Node::Leaf(7), Node::Leaf(8), Node::Leaf(9)])),
|
|
],
|
|
));
|
|
|
|
assert_eq!(traverse_preorder(root), vec![1, 2, 5, 6, 3, 4, 7, 8, 9]);
|
|
}
|
|
|
|
#[test]
|
|
fn test_du_sort() {
|
|
let rootfile = File::Directory(
|
|
"root".to_string(),
|
|
vec![
|
|
File::Directory(
|
|
"a".to_string(),
|
|
vec![
|
|
File::Data("a1".to_string(), 1),
|
|
File::Data("a2".to_string(), 3),
|
|
],
|
|
),
|
|
File::Directory(
|
|
"b".to_string(),
|
|
vec![
|
|
File::Data("b1".to_string(), 3),
|
|
File::Data("b2".to_string(), 15),
|
|
],
|
|
),
|
|
File::Data("c".to_string(), 8),
|
|
],
|
|
);
|
|
|
|
assert_eq!(
|
|
du_sort(&rootfile),
|
|
vec![
|
|
("a1", 1),
|
|
("a2", 3),
|
|
("b1", 3),
|
|
("a", 4),
|
|
("c", 8),
|
|
("b2", 15),
|
|
("b", 18),
|
|
("root", 1 + 3 + 3 + 15 + 8)
|
|
]
|
|
);
|
|
|
|
let rootfile = File::Directory(
|
|
"root".to_string(),
|
|
vec![
|
|
File::Directory(
|
|
"b".to_string(),
|
|
vec![
|
|
File::Data("b1".to_string(), 3),
|
|
File::Data("b2".to_string(), 15),
|
|
],
|
|
),
|
|
File::Data("c".to_string(), 8),
|
|
File::Directory(
|
|
"a".to_string(),
|
|
vec![
|
|
File::Data("a1".to_string(), 1),
|
|
File::Data("a2".to_string(), 3),
|
|
],
|
|
),
|
|
],
|
|
);
|
|
|
|
assert_eq!(
|
|
du_sort(&rootfile),
|
|
vec![
|
|
("a1", 1),
|
|
("a2", 3),
|
|
("b1", 3),
|
|
("a", 4),
|
|
("c", 8),
|
|
("b2", 15),
|
|
("b", 18),
|
|
("root", 1 + 3 + 3 + 15 + 8)
|
|
]
|
|
);
|
|
|
|
let rootfile = File::Directory(
|
|
"root".to_string(),
|
|
vec![
|
|
File::Directory(
|
|
"a".to_string(),
|
|
vec![
|
|
File::Data("a1".to_string(), 1),
|
|
File::Data("a2".to_string(), 3),
|
|
File::Directory(
|
|
"a3".to_string(),
|
|
vec![
|
|
File::Data("a31".to_string(), 1),
|
|
File::Data("a32".to_string(), 3),
|
|
File::Data("a33".to_string(), 6),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
File::Directory(
|
|
"b".to_string(),
|
|
vec![
|
|
File::Data("b1".to_string(), 3),
|
|
File::Data("b2".to_string(), 15),
|
|
],
|
|
),
|
|
File::Data("c".to_string(), 16),
|
|
],
|
|
);
|
|
|
|
assert_eq!(
|
|
du_sort(&rootfile),
|
|
vec![
|
|
("a1", 1),
|
|
("a31", 1),
|
|
("a2", 3),
|
|
("a32", 3),
|
|
("b1", 3),
|
|
("a33", 6),
|
|
("a3", 10),
|
|
("a", 14),
|
|
("b2", 15),
|
|
("c", 16),
|
|
("b", 18),
|
|
("root", 48)
|
|
]
|
|
);
|
|
}
|
|
}
|