From 03292a15c8882778dd4fdcacc2268a7cced33d0e Mon Sep 17 00:00:00 2001 From: PedroEdiaz Date: Thu, 19 Jun 2025 00:34:16 -0600 Subject: [PATCH] Add testing for spec --- testing.odin | 144 +++++++++++++++++---------------------------------- 1 file changed, 47 insertions(+), 97 deletions(-) diff --git a/testing.odin b/testing.odin index 2d96939..ccad94c 100644 --- a/testing.odin +++ b/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) -} -@(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}}" +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", + } - 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) -} -@(test) -test7 :: proc(t: ^testing.T){ - fmt := "{{{}}" - tmp := mustache(fmt,{}) - defer delete(tmp) - testing.expect(t, tmp=="", tmp) -} -@(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) + if err != nil { + testing.expectf(t, false, "%v", err) + } + + 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 ) + } + } + } }