-
-
Notifications
You must be signed in to change notification settings - Fork 494
Expand file tree
/
Copy pathissue_test.go
More file actions
46 lines (36 loc) · 1.11 KB
/
issue_test.go
File metadata and controls
46 lines (36 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package issue_test
import (
"testing"
"github.com/expr-lang/expr"
"github.com/expr-lang/expr/internal/testify/require"
)
func TestIssue822(t *testing.T) {
t.Run("nil optional slice returns nil", func(t *testing.T) {
program, err := expr.Compile(`let x = nil; x?.[0:1]`)
require.NoError(t, err)
out, err := expr.Run(program, nil)
require.NoError(t, err)
require.Nil(t, out)
})
t.Run("non-nil optional slice works normally", func(t *testing.T) {
program, err := expr.Compile(`let x = [1, 2, 3]; x?.[0:2]`)
require.NoError(t, err)
out, err := expr.Run(program, nil)
require.NoError(t, err)
require.Equal(t, []interface{}{1, 2}, out)
})
t.Run("nil optional slice without from", func(t *testing.T) {
program, err := expr.Compile(`let x = nil; x?.[:1]`)
require.NoError(t, err)
out, err := expr.Run(program, nil)
require.NoError(t, err)
require.Nil(t, out)
})
t.Run("nil optional slice without to", func(t *testing.T) {
program, err := expr.Compile(`let x = nil; x?.[1:]`)
require.NoError(t, err)
out, err := expr.Run(program, nil)
require.NoError(t, err)
require.Nil(t, out)
})
}