github.com/elves/elvish@v0.15.0/pkg/eval/vals/equal_test.go (about)

     1  package vals
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	. "github.com/elves/elvish/pkg/tt"
     8  )
     9  
    10  type customEqualer struct{ ret bool }
    11  
    12  func (c customEqualer) Equal(interface{}) bool { return c.ret }
    13  
    14  type customStruct struct{ a, b string }
    15  
    16  func TestEqual(t *testing.T) {
    17  	Test(t, Fn("Equal", Equal), Table{
    18  		Args(nil, nil).Rets(true),
    19  		Args(nil, "").Rets(false),
    20  
    21  		Args(true, true).Rets(true),
    22  		Args(true, false).Rets(false),
    23  
    24  		Args(1.0, 1.0).Rets(true),
    25  
    26  		Args("lorem", "lorem").Rets(true),
    27  		Args("lorem", "ipsum").Rets(false),
    28  
    29  		Args(os.Stdin, os.Stdin).Rets(true),
    30  		Args(os.Stdin, os.Stderr).Rets(false),
    31  		Args(os.Stdin, "").Rets(false),
    32  		Args(os.Stdin, 0).Rets(false),
    33  
    34  		Args(MakeList("a", "b"), MakeList("a", "b")).Rets(true),
    35  		Args(MakeList("a", "b"), MakeList("a")).Rets(false),
    36  		Args(MakeList("a", "b"), MakeList("a", "c")).Rets(false),
    37  		Args(MakeList("a", "b"), "").Rets(false),
    38  		Args(MakeList("a", "b"), 1.0).Rets(false),
    39  
    40  		Args(MakeMap("k", "v"), MakeMap("k", "v")).Rets(true),
    41  		Args(MakeMap("k", "v"), MakeMap("k2", "v")).Rets(false),
    42  		Args(MakeMap("k", "v", "k2", "v2"), MakeMap("k", "v")).Rets(false),
    43  		Args(MakeMap("k", "v"), "").Rets(false),
    44  		Args(MakeMap("k", "v"), 1.0).Rets(false),
    45  
    46  		Args(customEqualer{true}, 2).Rets(true),
    47  		Args(customEqualer{false}, 2).Rets(false),
    48  
    49  		Args(&customStruct{"a", "b"}, &customStruct{"a", "b"}).Rets(true),
    50  	})
    51  }