2024-11-29 20:03:32 +01:00
|
|
|
use treehouse::vfs::{
|
|
|
|
entries, query, BufferedFile, Cd, Content, MemDir, ToDynDir, VPath, VPathBuf,
|
|
|
|
};
|
2024-11-16 18:33:41 +01:00
|
|
|
|
|
|
|
const HEWWO: &[u8] = b"hewwo :3";
|
|
|
|
const FWOOFEE: &[u8] = b"fwoofee -w-";
|
|
|
|
const BOOP: &[u8] = b"boop >w<";
|
|
|
|
|
2024-11-17 22:34:43 +01:00
|
|
|
fn vfs() -> MemDir {
|
2025-01-14 23:09:01 +01:00
|
|
|
let file1 = BufferedFile::new(Content::new("text/plain", HEWWO.to_vec()));
|
|
|
|
let file2 = BufferedFile::new(Content::new("text/plain", FWOOFEE.to_vec()));
|
|
|
|
let file3 = BufferedFile::new(Content::new("text/plain", BOOP.to_vec()));
|
2024-11-16 18:33:41 +01:00
|
|
|
|
2024-11-17 22:34:43 +01:00
|
|
|
let mut innermost = MemDir::new();
|
|
|
|
innermost.add(VPath::new("file3.txt"), file3.to_dyn());
|
2024-11-16 18:33:41 +01:00
|
|
|
|
2024-11-17 22:34:43 +01:00
|
|
|
let mut inner = MemDir::new();
|
|
|
|
inner.add(VPath::new("file1.txt"), file1.to_dyn());
|
|
|
|
inner.add(VPath::new("file2.txt"), file2.to_dyn());
|
|
|
|
inner.add(VPath::new("innermost"), innermost.to_dyn());
|
2024-11-16 18:33:41 +01:00
|
|
|
|
2024-11-17 22:34:43 +01:00
|
|
|
let mut vfs = MemDir::new();
|
|
|
|
vfs.add(VPath::new("inner"), inner.to_dyn());
|
2024-11-16 18:33:41 +01:00
|
|
|
vfs
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn dir1() {
|
|
|
|
let outer = vfs();
|
2024-11-17 22:34:43 +01:00
|
|
|
let inner = Cd::new(outer, VPathBuf::new("inner"));
|
2024-11-16 18:33:41 +01:00
|
|
|
|
2024-11-29 20:03:32 +01:00
|
|
|
let mut dir = entries(&inner, VPath::ROOT);
|
2024-11-16 18:33:41 +01:00
|
|
|
dir.sort();
|
|
|
|
assert_eq!(
|
|
|
|
dir,
|
|
|
|
vec![
|
2024-11-29 20:03:32 +01:00
|
|
|
VPathBuf::new("file1.txt"),
|
|
|
|
VPathBuf::new("file2.txt"),
|
|
|
|
VPathBuf::new("innermost"),
|
2024-11-16 18:33:41 +01:00
|
|
|
]
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn dir2() {
|
|
|
|
let outer = vfs();
|
|
|
|
let innermost = Cd::new(&outer, VPathBuf::new("inner/innermost"));
|
|
|
|
|
2024-11-29 20:03:32 +01:00
|
|
|
let mut dir = entries(&innermost, VPath::ROOT);
|
2024-11-16 18:33:41 +01:00
|
|
|
dir.sort();
|
2024-11-29 20:03:32 +01:00
|
|
|
assert_eq!(dir, vec![VPathBuf::new("file3.txt")]);
|
2024-11-16 18:33:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn content() {
|
|
|
|
let outer = vfs();
|
|
|
|
let inner = Cd::new(&outer, VPathBuf::new("inner"));
|
|
|
|
|
|
|
|
assert_eq!(
|
2024-11-29 20:03:32 +01:00
|
|
|
query::<Content>(&inner, VPath::new("test1.txt")).map(Content::bytes),
|
|
|
|
query::<Content>(&outer, VPath::new("inner/test1.txt")).map(Content::bytes)
|
2024-11-16 18:33:41 +01:00
|
|
|
);
|
|
|
|
}
|