38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package builtins_test
|
|
|
|
import (
|
|
"context"
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
"ucl.lmika.dev/ucl"
|
|
"ucl.lmika.dev/ucl/builtins"
|
|
)
|
|
|
|
func TestItrs_ToList(t *testing.T) {
|
|
tests := []struct {
|
|
desc string
|
|
eval string
|
|
want any
|
|
wantErr bool
|
|
}{
|
|
{desc: "to-list 1", eval: `itrs:from (seq 5) | itrs:to-list`, want: []any{0, 1, 2, 3, 4}},
|
|
{desc: "to-list 2", eval: `itrs:from (seq 10) | filter { |x| eq (mod $x 2) 0 } | itrs:to-list`, want: []any{0, 2, 4, 6, 8}},
|
|
{desc: "to-list 3", eval: `itrs:from (seq 10) | filter { |x| eq (mod $x 2) 0 } | map { |x| (add $x 2) } | itrs:to-list`, want: []any{2, 4, 6, 8, 10}},
|
|
{desc: "to-list 4", eval: `itrs:from (seq 10) | filter { |x| () } | map { |x| (add $x 2) } | itrs:to-list`, want: []any{}},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.desc, func(t *testing.T) {
|
|
inst := ucl.New(
|
|
ucl.WithModule(builtins.Itrs()),
|
|
)
|
|
res, err := inst.EvalString(context.Background(), tt.eval)
|
|
if tt.wantErr {
|
|
assert.Error(t, err)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, tt.want, res)
|
|
}
|
|
})
|
|
}
|
|
}
|