github.com/oweisse/u-root@v0.0.0-20181109060735-d005ad25fef1/cmds/elvish/eval/vals/assoc_NOTESTgo (about) 1 package vals 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/u-root/u-root/cmds/elvish/tt" 8 ) 9 10 type customAssocer struct{} 11 12 var customAssocError = errors.New("custom assoc error") 13 14 func (a customAssocer) Assoc(k, v interface{}) (interface{}, error) { 15 return "custom result", customAssocError 16 } 17 18 var assocTests = tt.Table{ 19 Args("0123", "0", "foo").Rets("foo123", nil), 20 Args("0123", "1:3", "bar").Rets("0bar3", nil), 21 Args("0123", "1:3", 12).Rets(nil, errReplacementMustBeString), 22 Args("0123", "x", "y").Rets(nil, errIndexMustBeNumber), 23 24 Args(MakeList("0", "1", "2", "3"), "0", "foo").Rets( 25 eq(MakeList("foo", "1", "2", "3")), nil), 26 Args(MakeList("0"), MakeList("0"), "1").Rets(nil, errIndexMustBeString), 27 Args(MakeList("0"), "1", "x").Rets(nil, errIndexOutOfRange), 28 // TODO: Support list assoc with slice 29 Args(MakeList("0", "1", "2", "3"), "1:3", MakeList("foo")).Rets( 30 nil, errAssocWithSlice), 31 32 Args(MakeMapFromKV("k", "v", "k2", "v2"), "k", "newv").Rets( 33 eq(MakeMapFromKV("k", "newv", "k2", "v2")), nil), 34 Args(MakeMapFromKV("k", "v"), "k2", "v2").Rets( 35 eq(MakeMapFromKV("k", "v", "k2", "v2")), nil), 36 37 Args(customAssocer{}, "x", "y").Rets("custom result", customAssocError), 38 39 Args(struct{}{}, "x", "y").Rets(nil, errAssocUnsupported), 40 } 41 42 func TestAssoc(t *testing.T) { 43 tt.Test(t, tt.Fn("Assoc", Assoc), assocTests) 44 }