123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package help
- import (
- "strconv"
- "testing"
- )
- func TestSelect(t *testing.T) {
- tests := []struct {
- input interface{}
- selector func(interface{}) interface{}
- output []interface{}
- }{
- {[]int{1, 2, 3}, func(i interface{}) interface{} {
- return i.(int) * 2
- }, []interface{}{2, 4, 6}},
- {"str", func(i interface{}) interface{} {
- return string(i.(rune)) + "1"
- }, []interface{}{"s1", "t1", "r1"}},
- }
- for _, test := range tests {
- if q := From(test.input).Select(test.selector); !validateQuery(q, test.output) {
- t.Errorf("From(%v).Select()=%v expected %v", test.input, toSlice(q), test.output)
- }
- }
- }
- func TestSelectT_PanicWhenSelectorFnIsInvalid(t *testing.T) {
- mustPanicWithError(t, "SelectT: parameter [selectorFn] has a invalid function signature. Expected: 'func(T)T', actual: 'func(int,int)int'", func() {
- From([]int{1, 1, 1, 2, 1, 2, 3, 4, 2}).SelectT(func(item, idx int) int { return item + 2 })
- })
- }
- func TestSelectIndexed(t *testing.T) {
- tests := []struct {
- input interface{}
- selector func(int, interface{}) interface{}
- output []interface{}
- }{
- {[]int{1, 2, 3}, func(i int, x interface{}) interface{} {
- return x.(int) * i
- }, []interface{}{0, 2, 6}},
- {"str", func(i int, x interface{}) interface{} {
- return string(x.(rune)) + strconv.Itoa(i)
- }, []interface{}{"s0", "t1", "r2"}},
- }
- for _, test := range tests {
- if q := From(test.input).SelectIndexed(test.selector); !validateQuery(q, test.output) {
- t.Errorf("From(%v).SelectIndexed()=%v expected %v", test.input, toSlice(q), test.output)
- }
- }
- }
- func TestSelectIndexedT_PanicWhenSelectorFnIsInvalid(t *testing.T) {
- mustPanicWithError(t, "SelectIndexedT: parameter [selectorFn] has a invalid function signature. Expected: 'func(int,T)T', actual: 'func(string,int)int'", func() {
- From([]int{1, 1, 1, 2, 1, 2, 3, 4, 2}).SelectIndexedT(func(index string, item int) int { return item + 2 })
- })
- }
|