@@ -31,12 +31,90 @@ func TestTemplate_Render(t *testing.T) {
3131 assert .NoError (t , err )
3232 assert .Equal (t , "Hello, World" , rendered )
3333
34+ ts , _ = Compile (`{{ .Something }}` )
35+ rendered , err = ts .Render (nil )
36+ assert .NoError (t , err )
37+ assert .Equal (t , "" , rendered )
38+
3439 ts , _ = Compile (`Hello, {{ fail "boom" }}` )
3540 rendered , err = ts .Render (nil )
3641 assert .ErrorContains (t , err , "fail: boom" )
3742 assert .Equal (t , "" , rendered )
3843}
3944
45+ func TestTemplate_RenderBool (t * testing.T ) {
46+ ts , _ := Compile (`{{ .Value }}` )
47+ rendered , err := ts .RenderBool (map [string ]any {
48+ "Value" : "true" ,
49+ })
50+ assert .NoError (t , err )
51+ assert .Equal (t , true , rendered )
52+
53+ ts , _ = Compile (`{{ .Value }}` )
54+ rendered , err = ts .RenderBool (nil )
55+ assert .NoError (t , err )
56+ assert .Equal (t , false , rendered )
57+
58+ ts , _ = Compile (`{{ .Value }}` )
59+ rendered , err = ts .RenderBool (map [string ]any {
60+ "Value" : "not-a-bool" ,
61+ })
62+ assert .ErrorContains (t , err , "invalid syntax" )
63+ assert .Equal (t , false , rendered )
64+
65+ ts , _ = Compile (`{{ fail "boom" }}` )
66+ rendered , err = ts .RenderBool (nil )
67+ assert .ErrorContains (t , err , "fail: boom" )
68+ assert .Equal (t , false , rendered )
69+ }
70+
71+ func TestTemplate_RenderInt (t * testing.T ) {
72+ ts , _ := Compile (`{{ .Value }}` )
73+ rendered , err := ts .RenderInt (map [string ]any {
74+ "Value" : "12" ,
75+ })
76+ assert .NoError (t , err )
77+ assert .Equal (t , 12 , rendered )
78+
79+ ts , _ = Compile (`{{ .Value }}` )
80+ rendered , err = ts .RenderInt (nil )
81+ assert .NoError (t , err )
82+ assert .Equal (t , 0 , rendered )
83+
84+ ts , _ = Compile (`{{ .Value }}` )
85+ rendered , err = ts .RenderInt (map [string ]any {
86+ "Value" : "not-a-number" ,
87+ })
88+ assert .ErrorContains (t , err , "unable to cast" )
89+ assert .Equal (t , 0 , rendered )
90+
91+ ts , _ = Compile (`{{ fail "boom" }}` )
92+ rendered , err = ts .RenderInt (nil )
93+ assert .ErrorContains (t , err , "fail: boom" )
94+ assert .Equal (t , 0 , rendered )
95+ }
96+
97+ func TestTemplate_RenderRequired (t * testing.T ) {
98+ ts , _ := Compile (`{{ .Value }}` )
99+ rendered , err := ts .RenderRequired (map [string ]any {
100+ "Value" : "Howdy" ,
101+ })
102+ assert .NoError (t , err )
103+ assert .Equal (t , "Howdy" , rendered )
104+
105+ ts , _ = Compile (`{{ fail "boom" }}` )
106+ rendered , err = ts .RenderRequired (nil )
107+ assert .ErrorContains (t , err , "fail: boom" )
108+ assert .Equal (t , "" , rendered )
109+
110+ ts , _ = Compile (`{{ .Value }}` )
111+ rendered , err = ts .RenderRequired (map [string ]any {
112+ "Value" : "" ,
113+ })
114+ assert .ErrorContains (t , err , "empty string" )
115+ assert .Equal (t , "" , rendered )
116+ }
117+
40118func TestTemplate_MarshalText (t * testing.T ) {
41119 ts , err := Compile (`Hello, {{ .Name }}` )
42120 assert .NoError (t , err )
0 commit comments