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 | |
| parent | f026d721ef6e1708b4ec28fdb68179cb7dda75d0 (diff) | |
Added some more tests.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/modules/test_dynamic_plugin.zc | 15 | ||||
| -rw-r--r-- | tests/std/test_fs.zc | 82 | ||||
| -rw-r--r-- | tests/std/test_net.zc | 74 | ||||
| -rw-r--r-- | tests/std/test_readln_scan.zc | 21 | ||||
| -rw-r--r-- | tests/std/test_std_expansion.zc | 39 |
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!"; +} |
