diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-17 10:15:11 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-17 10:15:11 +0000 |
| commit | 4c306516a6719fd32b515c573f9b8f9d04072129 (patch) | |
| tree | 56ed2db9fd8c20ae3ddc2615b1a43ba52f73e712 /tests/std/test_fs.zc | |
| parent | f026d721ef6e1708b4ec28fdb68179cb7dda75d0 (diff) | |
Added some more tests.
Diffstat (limited to 'tests/std/test_fs.zc')
| -rw-r--r-- | tests/std/test_fs.zc | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/std/test_fs.zc b/tests/std/test_fs.zc new file mode 100644 index 0000000..7f66589 --- /dev/null +++ b/tests/std/test_fs.zc @@ -0,0 +1,82 @@ +import "std.zc" +import "std/path.zc" +import "std/fs.zc" + +test "test_std_fs_extended" { + "Testing FS Extension..."; + + "Testing Path..."; + var p = Path::new("/var/log"); + var p2 = p.join("syslog"); + assert(strcmp(p2.c_str(), "/var/log/syslog") == 0, "Join failed"); + + var p3 = Path::new("file.txt"); + var ext = p3.extension(); + assert(ext.is_some(), "Extension missed"); + assert(strcmp(ext.unwrap().c_str(), ".txt") == 0, "Wrong extension"); + + var p4 = Path::new("/usr/bin/gcc"); + var parent = p4.parent(); + assert(parent.is_some(), "Parent missed"); + assert(strcmp(parent.unwrap().c_str(), "/usr/bin") == 0, "Wrong parent"); + + var fname = p4.file_name(); + assert(fname.is_some(), "Filename missed"); + assert(strcmp(fname.unwrap().c_str(), "gcc") == 0, "Wrong filename"); + + "Testing FS..."; + var test_dir = "test_fs_sandbox"; + + if (File::exists(test_dir)) { + File::remove_dir(test_dir); + } + + "Create Dir"; + var res = File::create_dir(test_dir); + if (res.is_err()) { + "Dir create failed"; + } + assert(File::exists(test_dir), "Dir create failed"); + + "Write File"; + var tmp_path = Path::new(test_dir); + var p_file = tmp_path.join("hello.txt"); + var fpath = p_file.c_str(); + var f_res = File::open(fpath, "w"); + assert(f_res.is_ok(), "File create failed"); + var f = f_res.unwrap(); + f.write_string("Hello World"); + f.close(); + + assert(File::exists(fpath), "File exists check failed"); + + "Metadata"; + var meta_res = File::metadata(fpath); + assert(meta_res.is_ok(), "Metadata failed"); + var meta = meta_res.unwrap(); + assert(meta.is_file, "Is file check failed"); + assert(!meta.is_dir, "Is dir check failed"); + assert(meta.size == 11, "Size check failed"); + + "Read Dir"; + var list_res = File::read_dir(test_dir); + assert(list_res.is_ok(), "Read dir failed"); + var entries = list_res.unwrap(); + var found_idx = -1; + for (var i: usize = 0; i < entries.length(); i = i + 1) { + var entry: DirEntry = entries.get(i); + if (strcmp(entry.name.c_str(), "hello.txt") == 0) { + found_idx = 1; + break; + } + } + assert(found_idx == 1, "File not found in dir listing"); + + "Cleanup"; + File::remove_file(fpath); + assert(!File::exists(fpath), "File remove failed"); + File::remove_dir(test_dir); + assert(!File::exists(test_dir), "Dir remove failed"); + + "FS Extension Tests Passed!"; +} |
