github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/eval/vals/equal_test.go (about)

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