(t *testing.T)
| 183 | } |
| 184 | |
| 185 | func TestFuncall(t *testing.T) { |
| 186 | v, e := NewFuncall('[', "[", ExprList{}) // any symbol can name function |
| 187 | assert.NotNil(t, v) |
| 188 | assert.NoError(t, e) |
| 189 | |
| 190 | assert.False(t, v.IsLiteral()) |
| 191 | assert.True(t, v.IsFuncall()) |
| 192 | assert.False(t, v.IsBinary()) |
| 193 | assert.False(t, v.IsUnary()) |
| 194 | assert.False(t, v.IsVariadic()) |
| 195 | |
| 196 | assert.Equal(t, "[()", v.String()) |
| 197 | |
| 198 | v, e = NewFuncall('[', "[", nil) |
| 199 | assert.NotNil(t, v) |
| 200 | assert.NoError(t, e) |
| 201 | |
| 202 | assert.False(t, v.IsLiteral()) |
| 203 | assert.True(t, v.IsFuncall()) |
| 204 | assert.False(t, v.IsBinary()) |
| 205 | assert.False(t, v.IsUnary()) |
| 206 | assert.False(t, v.IsVariadic()) |
| 207 | |
| 208 | assert.Equal(t, "[()", v.String()) |
| 209 | |
| 210 | v, e = NewFuncall(1, "sum", ExprList{literalOrDie(1, "2")}) |
| 211 | assert.NotNil(t, v) |
| 212 | assert.NoError(t, e) |
| 213 | |
| 214 | assert.False(t, v.IsLiteral()) |
| 215 | assert.True(t, v.IsFuncall()) |
| 216 | assert.False(t, v.IsBinary()) |
| 217 | assert.False(t, v.IsUnary()) |
| 218 | assert.False(t, v.IsVariadic()) |
| 219 | |
| 220 | assert.Equal(t, "sum(2)", v.String()) |
| 221 | |
| 222 | v, e = NewFuncall(1, "print", ExprList{v, literalOrDie(1, "1")}) |
| 223 | assert.NotNil(t, v) |
| 224 | assert.NoError(t, e) |
| 225 | |
| 226 | assert.False(t, v.IsLiteral()) |
| 227 | assert.True(t, v.IsFuncall()) |
| 228 | assert.False(t, v.IsBinary()) |
| 229 | assert.False(t, v.IsUnary()) |
| 230 | assert.False(t, v.IsVariadic()) |
| 231 | |
| 232 | assert.Equal(t, "print(sum(2), 1)", v.String()) |
| 233 | } |
nothing calls this directly
no test coverage detected