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

     1  package eval_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	. "github.com/markusbkk/elvish/pkg/eval"
     7  
     8  	"github.com/markusbkk/elvish/pkg/tt"
     9  )
    10  
    11  var Args = tt.Args
    12  
    13  func TestSplitSigil(t *testing.T) {
    14  	tt.Test(t, tt.Fn("SplitSigil", SplitSigil), tt.Table{
    15  		Args("").Rets("", ""),
    16  		Args("x").Rets("", "x"),
    17  		Args("@x").Rets("@", "x"),
    18  		Args("a:b").Rets("", "a:b"),
    19  		Args("@a:b").Rets("@", "a:b"),
    20  	})
    21  }
    22  
    23  func TestSplitQName(t *testing.T) {
    24  	tt.Test(t, tt.Fn("SplitQName", SplitQName), tt.Table{
    25  		Args("").Rets("", ""),
    26  		Args("a").Rets("a", ""),
    27  		Args("a:").Rets("a:", ""),
    28  		Args("a:b").Rets("a:", "b"),
    29  		Args("a:b:").Rets("a:", "b:"),
    30  		Args("a:b:c").Rets("a:", "b:c"),
    31  		Args("a:b:c:").Rets("a:", "b:c:"),
    32  	})
    33  }
    34  
    35  func TestSplitQNameSegs(t *testing.T) {
    36  	tt.Test(t, tt.Fn("SplitQNameSegs", SplitQNameSegs), tt.Table{
    37  		Args("").Rets([]string{}),
    38  		Args("a").Rets([]string{"a"}),
    39  		Args("a:").Rets([]string{"a:"}),
    40  		Args("a:b").Rets([]string{"a:", "b"}),
    41  		Args("a:b:").Rets([]string{"a:", "b:"}),
    42  		Args("a:b:c").Rets([]string{"a:", "b:", "c"}),
    43  		Args("a:b:c:").Rets([]string{"a:", "b:", "c:"}),
    44  	})
    45  }
    46  
    47  func TestSplitIncompleteQNameNs(t *testing.T) {
    48  	tt.Test(t, tt.Fn("SplitIncompleteQNameNs", SplitIncompleteQNameNs), tt.Table{
    49  		Args("").Rets("", ""),
    50  		Args("a").Rets("", "a"),
    51  		Args("a:").Rets("a:", ""),
    52  		Args("a:b").Rets("a:", "b"),
    53  		Args("a:b:").Rets("a:b:", ""),
    54  		Args("a:b:c").Rets("a:b:", "c"),
    55  		Args("a:b:c:").Rets("a:b:c:", ""),
    56  	})
    57  }