Add testing for spec

This commit is contained in:
PedroEdiaz
2025-06-19 00:34:16 -06:00
parent b707360c85
commit 03292a15c8

View File

@@ -2,106 +2,56 @@
#+private #+private
package mustache package mustache
import "core:os"
import "core:log"
import "core:testing" import "core:testing"
import "core:encoding/json"
data_struct :: union {
map[string]data_struct,
[]data_struct,
string,
bool,
}
test_struct :: struct {
overview: string,
tests: []struct{
name, desc, template, expected: string,
data: data_struct
}
}
@(test) @(test)
test1 :: proc(t: ^testing.T){ spec_test :: proc(t: ^testing.T){
fmt := "{" test_files := []string {
tmp := mustache(fmt,{}) "./spec/specs/delimiters.json",
defer delete(tmp) "./spec/specs/sections.json",
testing.expect(t, tmp==fmt, tmp) "./spec/specs/interpolation.json",
//"./spec/specs/inverted.json",
//"./spec/specs/partials.json",
//"./spec/specs/comments.json",
} }
@(test)
test2 :: proc(t: ^testing.T){
fmt := "}"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp==fmt, tmp)
}
@(test)
test3 :: proc(t: ^testing.T){
fmt := "{{"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp==fmt, tmp)
}
@(test)
test4 :: proc(t: ^testing.T){
fmt := "{{}"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp==fmt, tmp)
}
@(test)
test5 :: proc(t: ^testing.T){
fmt := "{{}}"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp=="", tmp)
}
@(test)
test6 :: proc(t: ^testing.T){
fmt := "{{foo}}"
dict : struct { foo: string } = {"var"} for i in test_files {
data, err:=os.read_entire_file_from_filename_or_err(i)
defer delete(data)
tmp := mustache(fmt, dict) if err != nil {
defer delete(tmp) testing.expectf(t, false, "%v", err)
testing.expect(t, tmp=="var", tmp)
} }
@(test)
test7 :: proc(t: ^testing.T){ test: test_struct
fmt := "{{{}}"
tmp := mustache(fmt,{}) json.unmarshal(data, &test, allocator=context.temp_allocator)
defer delete(tmp)
testing.expect(t, tmp=="", tmp) for j in test.tests {
ret := mustache(j.template, j.data)
defer delete(ret)
if ret!=j.expected {
log.warnf( "[%s:%s]: %s", i, j.name, j.desc )
} }
@(test)
test8 :: proc(t: ^testing.T){
fmt := "{{}}}"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp=="}", tmp)
} }
@(test)
test9 :: proc(t: ^testing.T){
fmt := "{{{}}}"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp=="}", tmp)
} }
@(test)
test10 :: proc(t: ^testing.T){
fmt := "{{} }}"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp=="", tmp)
}
@(test)
test11 :: proc(t: ^testing.T){
fmt := "{{{} }}"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp=="", tmp)
}
@(test)
test12 :: proc(t: ^testing.T){
fmt := " {{{} }}"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp==" ", tmp)
}
@(test)
test13 :: proc(t: ^testing.T){
fmt := "{{{} }} "
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp==" ", tmp)
}
@(test)
test14 :: proc(t: ^testing.T){
fmt := "{{{}}}"
tmp := mustache(fmt,{})
defer delete(tmp)
testing.expect(t, tmp=="}", tmp)
} }