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 }