remove treehouse-format crate and collapse everything into src

This commit is contained in:
りき萌 2025-07-10 16:50:41 +02:00
parent ca127a9411
commit b792688776
66 changed files with 145 additions and 112 deletions

1
tests/it/main.rs Normal file
View file

@ -0,0 +1 @@
mod vfs;

4
tests/it/vfs.rs Normal file
View file

@ -0,0 +1,4 @@
mod cd;
mod file;
mod mount_points;
mod physical;

63
tests/it/vfs/cd.rs Normal file
View file

@ -0,0 +1,63 @@
use treehouse::vfs::{
entries, query, BufferedFile, Cd, Content, MemDir, ToDynDir, VPath, VPathBuf,
};
const HEWWO: &[u8] = b"hewwo :3";
const FWOOFEE: &[u8] = b"fwoofee -w-";
const BOOP: &[u8] = b"boop >w<";
fn vfs() -> MemDir {
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()));
let mut innermost = MemDir::new();
innermost.add(VPath::new("file3.txt"), file3.to_dyn());
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());
let mut vfs = MemDir::new();
vfs.add(VPath::new("inner"), inner.to_dyn());
vfs
}
#[test]
fn dir1() {
let outer = vfs();
let inner = Cd::new(outer, VPathBuf::new("inner"));
let mut dir = entries(&inner, VPath::ROOT);
dir.sort();
assert_eq!(
dir,
vec![
VPathBuf::new("file1.txt"),
VPathBuf::new("file2.txt"),
VPathBuf::new("innermost"),
]
);
}
#[test]
fn dir2() {
let outer = vfs();
let innermost = Cd::new(&outer, VPathBuf::new("inner/innermost"));
let mut dir = entries(&innermost, VPath::ROOT);
dir.sort();
assert_eq!(dir, vec![VPathBuf::new("file3.txt")]);
}
#[test]
fn content() {
let outer = vfs();
let inner = Cd::new(&outer, VPathBuf::new("inner"));
assert_eq!(
query::<Content>(&inner, VPath::new("test1.txt")).map(Content::bytes),
query::<Content>(&outer, VPath::new("inner/test1.txt")).map(Content::bytes)
);
}

22
tests/it/vfs/file.rs Normal file
View file

@ -0,0 +1,22 @@
use treehouse::vfs::{entries, query, BufferedFile, Content, VPath};
fn vfs() -> BufferedFile {
BufferedFile::new(Content::new("text/plain", b"hewwo :3".to_vec()))
}
#[test]
fn dir() {
let vfs = vfs();
assert!(entries(&vfs, VPath::ROOT).is_empty());
}
#[test]
fn content() {
let vfs = vfs();
assert_eq!(
query::<Content>(&vfs, VPath::ROOT)
.map(|c| c.bytes())
.as_deref(),
Some(b"hewwo :3".as_slice()),
);
}

View file

@ -0,0 +1,67 @@
use treehouse::vfs::{entries, query, BufferedFile, Content, MemDir, ToDynDir, VPath, VPathBuf};
const HEWWO: &[u8] = b"hewwo :3";
const FWOOFEE: &[u8] = b"fwoofee -w-";
const BOOP: &[u8] = b"boop >w<";
fn vfs() -> MemDir {
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()));
let mut inner = MemDir::new();
inner.add(VPath::new("file3.txt"), file3.to_dyn());
let mut vfs = MemDir::new();
vfs.add(VPath::new("file1.txt"), file1.to_dyn());
vfs.add(VPath::new("file2.txt"), file2.to_dyn());
vfs.add(VPath::new("inner"), inner.to_dyn());
vfs
}
#[test]
fn dir() {
let vfs = vfs();
let mut dir = entries(&vfs, VPath::ROOT);
dir.sort();
assert_eq!(
dir,
vec![
VPathBuf::new("file1.txt"),
VPathBuf::new("file2.txt"),
VPathBuf::new("inner"),
]
);
assert!(entries(&vfs, VPath::new("file1.txt")).is_empty());
assert!(entries(&vfs, VPath::new("file2.txt")).is_empty());
assert_eq!(
entries(&vfs, VPath::new("inner")),
vec![VPathBuf::new("inner/file3.txt")]
);
}
#[test]
fn content() {
let vfs = vfs();
assert_eq!(
query::<Content>(&vfs, VPath::new("file1.txt"))
.map(Content::bytes)
.as_deref(),
Some(HEWWO)
);
assert_eq!(
query::<Content>(&vfs, VPath::new("file2.txt"))
.map(Content::bytes)
.as_deref(),
Some(FWOOFEE)
);
assert_eq!(
query::<Content>(&vfs, VPath::new("inner/file3.txt"))
.map(Content::bytes)
.as_deref(),
Some(BOOP)
);
}

22
tests/it/vfs/physical.rs Normal file
View file

@ -0,0 +1,22 @@
use std::path::Path;
use treehouse::vfs::{entries, query, Content, PhysicalDir, VPath, VPathBuf};
fn vfs() -> PhysicalDir {
let root = Path::new("tests/it/vfs_physical").to_path_buf();
PhysicalDir::new(root)
}
#[test]
fn dir() {
let vfs = vfs();
let dir = entries(&vfs, VPath::ROOT);
assert_eq!(&dir[..], &[VPathBuf::new("test.txt")]);
}
#[test]
fn content() {
let vfs = vfs();
let content = query::<Content>(&vfs, VPath::new("test.txt")).map(Content::bytes);
assert_eq!(content.as_deref(), Some(b"hewwo :3\n".as_slice()));
}

View file

@ -0,0 +1 @@
hewwo :3