Files
herolib/lib/vfs/vfs_db/model_fsentry_test.v
2025-03-09 20:01:00 +01:00

197 lines
3.8 KiB
V

module vfs_db
import freeflowuniverse.herolib.vfs as vfs_mod
fn test_fsentry_directory() {
// Create a directory entry
dir := Directory{
metadata: vfs_mod.Metadata{
id: 1
name: 'test_dir'
path: '/test_dir'
file_type: .directory
size: 0
mode: 0o755
owner: 'user'
group: 'user'
created_at: 0
modified_at: 0
accessed_at: 0
}
children: []
parent_id: 0
}
// Convert to FSEntry
entry := FSEntry(dir)
// Test methods
assert entry.get_metadata().id == 1
assert entry.get_metadata().name == 'test_dir'
assert entry.get_metadata().file_type == .directory
assert entry.get_path() == '/test_dir'
assert entry.is_dir() == true
assert entry.is_file() == false
assert entry.is_symlink() == false
}
fn test_fsentry_file() {
// Create a file entry
file := File{
metadata: vfs_mod.Metadata{
id: 2
name: 'test_file.txt'
path: '/test_file.txt'
file_type: .file
size: 13
mode: 0o644
owner: 'user'
group: 'user'
created_at: 0
modified_at: 0
accessed_at: 0
}
parent_id: 0
chunk_ids: []
}
// Convert to FSEntry
entry := FSEntry(file)
// Test methods
assert entry.get_metadata().id == 2
assert entry.get_metadata().name == 'test_file.txt'
assert entry.get_metadata().file_type == .file
assert entry.get_path() == '/test_file.txt'
assert entry.is_dir() == false
assert entry.is_file() == true
assert entry.is_symlink() == false
}
fn test_fsentry_symlink() {
// Create a symlink entry
symlink := Symlink{
metadata: vfs_mod.Metadata{
id: 3
name: 'test_link'
path: '/test_link'
file_type: .symlink
size: 0
mode: 0o777
owner: 'user'
group: 'user'
created_at: 0
modified_at: 0
accessed_at: 0
}
target: '/path/to/target'
parent_id: 0
}
// Convert to FSEntry
entry := FSEntry(symlink)
// Test methods
assert entry.get_metadata().id == 3
assert entry.get_metadata().name == 'test_link'
assert entry.get_metadata().file_type == .symlink
assert entry.get_path() == '/test_link'
assert entry.is_dir() == false
assert entry.is_file() == false
assert entry.is_symlink() == true
}
fn test_fsentry_match() {
// Create entries of different types
dir := Directory{
metadata: vfs_mod.Metadata{
id: 1
name: 'test_dir'
path: '/test_dir'
file_type: .directory
size: 0
mode: 0o755
owner: 'user'
group: 'user'
created_at: 0
modified_at: 0
accessed_at: 0
}
children: []
parent_id: 0
}
file := File{
metadata: vfs_mod.Metadata{
id: 2
name: 'test_file.txt'
path: '/test_file.txt'
file_type: .file
size: 13
mode: 0o644
owner: 'user'
group: 'user'
created_at: 0
modified_at: 0
accessed_at: 0
}
chunk_ids: []
parent_id: 0
}
symlink := Symlink{
metadata: vfs_mod.Metadata{
id: 3
name: 'test_link'
path: '/test_link'
file_type: .symlink
size: 0
mode: 0o777
owner: 'user'
group: 'user'
created_at: 0
modified_at: 0
accessed_at: 0
}
target: '/path/to/target'
parent_id: 0
}
// Test match with directory
dir_entry := FSEntry(dir)
match dir_entry {
Directory {
assert dir_entry.metadata.id == 1
assert dir_entry.metadata.name == 'test_dir'
}
File, Symlink {
assert false, 'Expected Directory type'
}
}
// Test match with file
file_entry := FSEntry(file)
match file_entry {
File {
assert file_entry.metadata.id == 2
assert file_entry.metadata.name == 'test_file.txt'
}
Directory, Symlink {
assert false, 'Expected File type'
}
}
// Test match with symlink
symlink_entry := FSEntry(symlink)
match symlink_entry {
Symlink {
assert symlink_entry.metadata.id == 3
assert symlink_entry.metadata.name == 'test_link'
assert symlink_entry.target == '/path/to/target'
}
Directory, File {
assert false, 'Expected Symlink type'
}
}
}