github.com/kolbycrouch/elvish@v0.14.1-0.20210614162631-215b9ac1c423/pkg/eval/vals/repr_test.go (about)

     1  package vals
     2  
     3  import (
     4  	"fmt"
     5  	"math/big"
     6  	"os"
     7  	"testing"
     8  
     9  	. "src.elv.sh/pkg/tt"
    10  )
    11  
    12  type reprer struct{}
    13  
    14  func (reprer) Repr(int) string { return "<reprer>" }
    15  
    16  type nonReprer struct{}
    17  
    18  func repr(a interface{}) string { return Repr(a, NoPretty) }
    19  
    20  func TestRepr(t *testing.T) {
    21  	Test(t, Fn("repr", repr), Table{
    22  		Args(nil).Rets("$nil"),
    23  
    24  		Args(false).Rets("$false"),
    25  		Args(true).Rets("$true"),
    26  
    27  		Args("foo").Rets("foo"),
    28  
    29  		Args(1).Rets("(num 1)"),
    30  		Args(bigInt(z)).Rets("(num " + z + ")"),
    31  		Args(big.NewRat(1, 2)).Rets("(num 1/2)"),
    32  		Args(1.0).Rets("(num 1.0)"),
    33  		Args(1e10).Rets("(num 10000000000.0)"),
    34  
    35  		Args(os.Stdin).Rets(
    36  			fmt.Sprintf("<file{%s %d}>", os.Stdin.Name(), os.Stdin.Fd())),
    37  
    38  		Args(EmptyList).Rets("[]"),
    39  		Args(MakeList("foo", "bar")).Rets("[foo bar]"),
    40  
    41  		Args(EmptyMap).Rets("[&]"),
    42  		Args(MakeMap("foo", "bar")).Rets("[&foo=bar]"),
    43  
    44  		Args(reprer{}).Rets("<reprer>"),
    45  		Args(nonReprer{}).Rets("<unknown {}>"),
    46  	})
    47  }