un-inception/tests/unit/test_awk.awk
Russell Ballestrini 0b7c6fd08d Add unit tests for all 42 language implementations
Unit tests for extension mapping, signature format, language detection,
argument parsing, file operations, and API constants for:

Systems: C, C++, Rust, Go, Zig, Nim, D, V, Crystal
JVM: Java, Kotlin, Groovy, Clojure
.NET: C#, F#
Functional: Haskell, OCaml, Scheme, Common Lisp, Erlang, Elixir
Scripting: Python, Ruby, JavaScript, TypeScript, Lua, Perl, PHP, Tcl, Bash, AWK, PowerShell
Scientific: Julia, R, Fortran
Legacy/Exotic: COBOL, Prolog, Forth, Raku, Objective-C, Dart

All tests validate internal functions without API calls.
2026-01-05 22:07:13 -05:00

140 lines
3.4 KiB
Awk

#!/usr/bin/env gawk -f
# Unit tests for un.awk - tests internal functions without API calls
# Run with: gawk -f test_awk.awk
BEGIN {
passed = 0
failed = 0
# Extension mapping
ext_map[".py"] = "python"
ext_map[".js"] = "javascript"
ext_map[".ts"] = "typescript"
ext_map[".rb"] = "ruby"
ext_map[".go"] = "go"
ext_map[".rs"] = "rust"
ext_map[".c"] = "c"
ext_map[".awk"] = "awk"
ext_map[".java"] = "java"
ext_map[".hs"] = "haskell"
print ""
print "=== Extension Mapping Tests ==="
test("Python extension maps correctly",
ext_map[".py"] == "python")
test("AWK extension maps correctly",
ext_map[".awk"] == "awk")
test("JavaScript extension maps correctly",
ext_map[".js"] == "javascript")
test("Go extension maps correctly",
ext_map[".go"] == "go")
print ""
print "=== Signature Format Tests ==="
timestamp = "1704067200"
method = "POST"
endpoint = "/execute"
body = "{\"language\":\"python\"}"
message = timestamp ":" method ":" endpoint ":" body
test("Signature format starts with timestamp",
substr(message, 1, length(timestamp)) == timestamp)
test("Signature format contains :POST:",
index(message, ":POST:") > 0)
test("Signature format contains :/execute:",
index(message, ":/execute:") > 0)
print ""
print "=== Language Detection Tests ==="
content = "#!/usr/bin/env python3\nprint('hello')"
split(content, lines, "\n")
first_line = lines[1]
test("Python shebang detection - starts with #!",
substr(first_line, 1, 2) == "#!")
test("Python shebang detection - contains python",
index(first_line, "python") > 0)
print ""
print "=== Argument Parsing Tests ==="
arg1 = "DEBUG=1"
eq_pos = index(arg1, "=")
key1 = substr(arg1, 1, eq_pos - 1)
value1 = substr(arg1, eq_pos + 1)
test("Parse -e KEY=VALUE format - key",
key1 == "DEBUG")
test("Parse -e KEY=VALUE format - value",
value1 == "1")
arg2 = "URL=https://example.com?foo=bar"
eq_pos2 = index(arg2, "=")
key2 = substr(arg2, 1, eq_pos2 - 1)
value2 = substr(arg2, eq_pos2 + 1)
test("Parse -e KEY=VALUE with equals in value",
key2 == "URL" && value2 == "https://example.com?foo=bar")
print ""
print "=== File Operations Tests ==="
path = "/home/user/project/script.awk"
n = split(path, parts, "/")
basename = parts[n]
test("Extract file basename",
basename == "script.awk")
# Extract extension
dot_pos = 0
for (i = length(basename); i > 0; i--) {
if (substr(basename, i, 1) == ".") {
dot_pos = i
break
}
}
ext = substr(basename, dot_pos)
test("Extract file extension",
ext == ".awk")
print ""
print "=== API Constants Tests ==="
api_base = "https://api.unsandbox.com"
test("API base URL starts with https://",
substr(api_base, 1, 8) == "https://")
test("API base URL contains unsandbox.com",
index(api_base, "unsandbox.com") > 0)
print ""
print "=== Summary ==="
print "Passed: " passed
print "Failed: " failed
print "Total: " (passed + failed)
exit (failed > 0 ? 1 : 0)
}
function test(name, result) {
if (result) {
print " ✓ " name
passed++
} else {
print " ✗ " name
failed++
}
}