summaryrefslogtreecommitdiff
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
parentf026d721ef6e1708b4ec28fdb68179cb7dda75d0 (diff)
Added some more tests.
-rw-r--r--tests/modules/test_dynamic_plugin.zc15
-rw-r--r--tests/std/test_fs.zc82
-rw-r--r--tests/std/test_net.zc74
-rw-r--r--tests/std/test_readln_scan.zc21
-rw-r--r--tests/std/test_std_expansion.zc39
5 files changed, 231 insertions, 0 deletions
diff --git a/tests/modules/test_dynamic_plugin.zc b/tests/modules/test_dynamic_plugin.zc
new file mode 100644
index 0000000..f9f6a71
--- /dev/null
+++ b/tests/modules/test_dynamic_plugin.zc
@@ -0,0 +1,15 @@
+
+import plugin "plugins/brainfuck.so" as bf
+import "std/io.zc"
+
+test "dynamic plugin loading" {
+ // Basic Brainfuck: prints 'A' (ASCII 65)
+ // +++++ +++++ [ > +++++ + < - ] > +++++ .
+ // 10 * 6 + 5 = 65
+ bf! {
+ ++++++++++[>++++++<-]>+++++.
+ }
+
+ println "";
+ assert(true, "Plugin loaded and executed");
+}
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!";
+}
diff --git a/tests/std/test_net.zc b/tests/std/test_net.zc
new file mode 100644
index 0000000..98ba32f
--- /dev/null
+++ b/tests/std/test_net.zc
@@ -0,0 +1,74 @@
+
+//> link: -lpthread
+
+import "std/net.zc"
+import "std/fs.zc"
+import "std/thread.zc"
+import "std/result.zc"
+
+test "test_net" {
+ "Testing Networking...";
+
+ var t = Thread::spawn(fn() {
+ var listener = TcpListener::bind("127.0.0.1", 9090);
+ if (listener.is_err()) {
+ !"Server bind failed";
+ return;
+ }
+
+ var l = listener.unwrap();
+
+ var client_res = l.accept();
+ if (client_res.is_err()) {
+ !"Accept failed";
+ l.close();
+ return;
+ }
+
+ var client = client_res.unwrap();
+
+ var buf: char* = malloc(100);
+ var n_res = client.read(buf, 100);
+
+ if (n_res.is_ok()) {
+ var n = n_res.unwrap();
+ buf[n] = 0;
+ if (strcmp(buf, "Ping") == 0) {
+ client.write("Pong", 4);
+ }
+ }
+
+ free(buf);
+ client.close();
+ l.close();
+ });
+
+ if (t.is_err()) {
+ !"Thread spawn failed";
+ exit(1);
+ }
+
+ sleep_ms(100);
+
+ var stream_res = TcpStream::connect("127.0.0.1", 9090);
+ if (stream_res.is_err()) {
+ !"Client connect failed";
+ exit(1);
+ }
+
+ var stream = stream_res.unwrap();
+ stream.write("Ping", 4);
+
+ var buf2: char* = malloc(100);
+ var n2_res = stream.read(buf2, 100);
+
+ if (n2_res.is_ok()) {
+ buf2[n2_res.unwrap()] = 0;
+ "Client Received: {buf2}";
+ }
+ free(buf2);
+
+ stream.close();
+
+ "Net Test Done";
+}
diff --git a/tests/std/test_readln_scan.zc b/tests/std/test_readln_scan.zc
new file mode 100644
index 0000000..5ea196d
--- /dev/null
+++ b/tests/std/test_readln_scan.zc
@@ -0,0 +1,21 @@
+
+test "test_readln_scan" {
+ "Testing readln compilation...";
+
+ var x: int = 0;
+ var f: float = 0.0;
+
+ if (1 == 0) {
+ var s = readln();
+
+ var count = readln(x);
+ readln(f);
+
+ readln(x, f);
+
+ var count2 = ?"Age? "(x);
+ ?"Coords? "(x, f);
+ }
+
+ "Smart readln compiled successfully";
+}
diff --git a/tests/std/test_std_expansion.zc b/tests/std/test_std_expansion.zc
new file mode 100644
index 0000000..5f400e4
--- /dev/null
+++ b/tests/std/test_std_expansion.zc
@@ -0,0 +1,39 @@
+import "std.zc"
+
+test "test_std_expansion" {
+ "Testing Standard Library Expansion...";
+
+ "Testing Map...";
+ var m = Map<int>::new();
+ m.put("one", 1);
+ m.put("two", 2);
+
+ assert(m.get("one").unwrap() == 1, "Map get one failed");
+ assert(m.get("two").unwrap() == 2, "Map get two failed");
+ assert(m.contains("two"), "Map contains failed");
+ assert(!m.contains("three"), "Map contains non-existent failed");
+
+ m.remove("one");
+ assert(!m.contains("one"), "Map remove failed");
+
+ "Testing Time...";
+ var t1 = Time::now();
+ Time::sleep_ms(10);
+ var t2 = Time::now();
+ assert(t2 >= t1, "Time went backwards!");
+ "Time passed: {t2 - t1} ms";
+
+ "Testing FS...";
+ var content_res = File::read_all("tests/test_0.zc");
+ if (content_res.is_ok()) {
+ "Read file successfully.";
+ } else {
+ "FS Error: {content_res.err}";
+ }
+
+ "Testing JSON...";
+ var j = JsonValue::string("hello");
+ assert(j.kind == JsonType::JSON_STRING, "Json string kind failed");
+
+ "All expansion tests passed!";
+}