Add testing for spec
This commit is contained in:
134
testing.odin
134
testing.odin
@@ -2,106 +2,56 @@
|
||||
#+private
|
||||
package mustache
|
||||
|
||||
import "core:os"
|
||||
import "core:log"
|
||||
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)
|
||||
test1 :: proc(t: ^testing.T){
|
||||
fmt := "{"
|
||||
tmp := mustache(fmt,{})
|
||||
defer delete(tmp)
|
||||
testing.expect(t, tmp==fmt, tmp)
|
||||
spec_test :: proc(t: ^testing.T){
|
||||
test_files := []string {
|
||||
"./spec/specs/delimiters.json",
|
||||
"./spec/specs/sections.json",
|
||||
"./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)
|
||||
defer delete(tmp)
|
||||
testing.expect(t, tmp=="var", tmp)
|
||||
if err != nil {
|
||||
testing.expectf(t, false, "%v", err)
|
||||
}
|
||||
@(test)
|
||||
test7 :: proc(t: ^testing.T){
|
||||
fmt := "{{{}}"
|
||||
tmp := mustache(fmt,{})
|
||||
defer delete(tmp)
|
||||
testing.expect(t, tmp=="", tmp)
|
||||
|
||||
test: test_struct
|
||||
|
||||
json.unmarshal(data, &test, allocator=context.temp_allocator)
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user