github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/vars/parse_test.go (about)

     1  package vars
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func subTxt(n string) *SubTxt         { return &SubTxt{Val: n} }
    10  func subVar(n, p, exp string) *SubVar { return &SubVar{Name: n, Params: p, Expr: exp} }
    11  
    12  func TestParseExpr(t *testing.T) {
    13  	assert.Equal(t, Subs{subVar("中文", "", "@中文")}, ParseExpr("@中文"))
    14  	assert.Equal(t, Subs{subVar("fn", "", "@fn")}, ParseExpr("@fn"))
    15  	assert.Equal(t, Subs{subVar("fn.1", "", "@fn.1")}, ParseExpr("@fn.1"))
    16  	assert.Equal(t, Subs{subVar("fn-1", "", "@fn-1")}, ParseExpr("@fn-1"))
    17  	assert.Equal(t, Subs{subVar("fn_1", "", "@fn_1")}, ParseExpr("@fn_1"))
    18  	assert.Equal(t, Subs{subVar("fn", "", "@fn"), subTxt("@")}, ParseExpr("@fn@"))
    19  	assert.Equal(t, Subs{subTxt("abc"), subVar("fn", "", "@{fn}")}, ParseExpr("abc@{fn}"))
    20  	assert.Equal(t, Subs{subTxt("abc"), subVar("fn", "", "@<fn>")}, ParseExpr("abc@<fn>"))
    21  	assert.Equal(t, Subs{subVar("fn", "", "@fn"), subVar("fn", "", "@fn")}, ParseExpr("@fn@fn"))
    22  	assert.Equal(t, Subs{subTxt("abc"), subVar("fn", "", "@fn"), subVar("fn", "", "@{fn}"), subTxt("efg")}, ParseExpr("abc@fn@{fn}efg"))
    23  	assert.Equal(t, Subs{subTxt("abc"), subVar("fn", "", "@fn"), subVar("fn", "1", "@{fn(1)}"), subTxt("efg")}, ParseExpr("abc@fn@{fn(1)}efg"))
    24  	assert.Equal(t, Subs{subTxt("abc"), subVar("fn", "", "@fn"), subVar("中文", "1", "@{中文(1)}"), subTxt("efg")}, ParseExpr("abc@fn@{中文(1)}efg"))
    25  	assert.Equal(t, Subs{subVar("fn", "100", "@fn(100)")}, ParseExpr("@fn(100)"))
    26  	assert.Equal(t, Subs{subTxt("@")}, ParseExpr("@"))
    27  	assert.Equal(t, Subs{subTxt("@@")}, ParseExpr("@@"))
    28  }