src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/eval/var_parse_test.go (about)

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