github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/eval/options_test.go (about) 1 package eval 2 3 import ( 4 "reflect" 5 "testing" 6 7 . "github.com/markusbkk/elvish/pkg/tt" 8 ) 9 10 type opts struct { 11 Foo string 12 bar int 13 } 14 15 func TestScanOptions(t *testing.T) { 16 // A wrapper of ScanOptions, to make it easier to test 17 wrapper := func(src RawOptions, dstInit interface{}) (interface{}, error) { 18 ptr := reflect.New(reflect.TypeOf(dstInit)) 19 ptr.Elem().Set(reflect.ValueOf(dstInit)) 20 err := scanOptions(src, ptr.Interface()) 21 return ptr.Elem().Interface(), err 22 } 23 24 Test(t, Fn("scanOptions", wrapper), Table{ 25 Args(RawOptions{"foo": "lorem ipsum"}, opts{}). 26 Rets(opts{Foo: "lorem ipsum"}, nil), 27 Args(RawOptions{"bar": 20}, opts{bar: 10}). 28 Rets(opts{bar: 10}, UnknownOption{"bar"}), 29 }) 30 }