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  }