summaryrefslogtreecommitdiff
path: root/tests/std/test_fs.zc
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-17 10:15:11 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-17 10:15:11 +0000
commit4c306516a6719fd32b515c573f9b8f9d04072129 (patch)
tree56ed2db9fd8c20ae3ddc2615b1a43ba52f73e712 /tests/std/test_fs.zc
parentf026d721ef6e1708b4ec28fdb68179cb7dda75d0 (diff)
Added some more tests.
Diffstat (limited to 'tests/std/test_fs.zc')
-rw-r--r--tests/std/test_fs.zc82
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!";
+}