github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/eval/builtin_fn_pred_test.go (about) 1 package eval_test 2 3 import ( 4 "testing" 5 6 . "github.com/markusbkk/elvish/pkg/eval/evaltest" 7 ) 8 9 func TestBool(t *testing.T) { 10 Test(t, 11 That(`bool $true`).Puts(true), 12 That(`bool a`).Puts(true), 13 That(`bool [a]`).Puts(true), 14 // "Empty" values are also true in Elvish 15 That(`bool []`).Puts(true), 16 That(`bool [&]`).Puts(true), 17 That(`bool 0`).Puts(true), 18 That(`bool ""`).Puts(true), 19 // Only errors and $false are false 20 That(`bool ?(fail x)`).Puts(false), 21 That(`bool $false`).Puts(false), 22 ) 23 } 24 25 func TestNot(t *testing.T) { 26 Test(t, 27 That(`not $false`).Puts(true), 28 That(`not ?(fail x)`).Puts(true), 29 That(`not $true`).Puts(false), 30 That(`not 0`).Puts(false), 31 ) 32 } 33 34 func TestIs(t *testing.T) { 35 Test(t, 36 That(`is 1 1`).Puts(true), 37 That(`is a b`).Puts(false), 38 That(`is [] []`).Puts(true), 39 That(`is [1] [1]`).Puts(false), 40 ) 41 } 42 43 func TestEq(t *testing.T) { 44 Test(t, 45 That(`eq 1 1`).Puts(true), 46 That(`eq a b`).Puts(false), 47 That(`eq [] []`).Puts(true), 48 That(`eq [1] [1]`).Puts(true), 49 That(`eq 1 1 2`).Puts(false), 50 ) 51 } 52 53 func TestNotEq(t *testing.T) { 54 Test(t, 55 That(`not-eq a b`).Puts(true), 56 That(`not-eq a a`).Puts(false), 57 // not-eq is true as long as each adjacent pair is not equal. 58 That(`not-eq 1 2 1`).Puts(true), 59 ) 60 }