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  }