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 }