@@ -31,12 +31,90 @@ func TestTemplate_Render(t *testing.T) {
31
31
assert .NoError (t , err )
32
32
assert .Equal (t , "Hello, World" , rendered )
33
33
34
+ ts , _ = Compile (`{{ .Something }}` )
35
+ rendered , err = ts .Render (nil )
36
+ assert .NoError (t , err )
37
+ assert .Equal (t , "" , rendered )
38
+
34
39
ts , _ = Compile (`Hello, {{ fail "boom" }}` )
35
40
rendered , err = ts .Render (nil )
36
41
assert .ErrorContains (t , err , "fail: boom" )
37
42
assert .Equal (t , "" , rendered )
38
43
}
39
44
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
+
40
118
func TestTemplate_MarshalText (t * testing.T ) {
41
119
ts , err := Compile (`Hello, {{ .Name }}` )
42
120
assert .NoError (t , err )
0 commit comments