github.com/elves/Elvish@v0.12.0/parse/pprint_test.go (about) 1 package parse 2 3 import ( 4 "testing" 5 6 "github.com/elves/elvish/tt" 7 ) 8 9 var n = mustParse("ls $x[0]$y[1];echo") 10 11 var pprintASTTests = tt.Table{ 12 tt.Args(n).Rets( 13 `Chunk 14 Pipeline/Form 15 Compound/Indexing/Primary Type=Bareword Value="ls" 16 Compound 17 Indexing 18 Primary Type=Variable Value="x" 19 Array/Compound/Indexing/Primary Type=Bareword Value="0" 20 Indexing 21 Primary Type=Variable Value="y" 22 Array/Compound/Indexing/Primary Type=Bareword Value="1" 23 Pipeline/Form/Compound/Indexing/Primary Type=Bareword Value="echo" 24 `), 25 } 26 27 func TestPPrintAST(t *testing.T) { 28 tt.Test(t, tt.Fn("PPrintAST", PPrintAST), pprintASTTests) 29 } 30 31 var pprintParseTreeTests = tt.Table{ 32 tt.Args(n).Rets( 33 `Chunk "ls $x[0]$y[1];echo" 0-18 34 Pipeline/Form "ls $x[0]$y[1]" 0-13 35 Compound/Indexing/Primary "ls" 0-2 36 Sep " " 2-3 37 Compound "$x[0]$y[1]" 3-13 38 Indexing "$x[0]" 3-8 39 Primary "$x" 3-5 40 Sep "[" 5-6 41 Array/Compound/Indexing/Primary "0" 6-7 42 Sep "]" 7-8 43 Indexing "$y[1]" 8-13 44 Primary "$y" 8-10 45 Sep "[" 10-11 46 Array/Compound/Indexing/Primary "1" 11-12 47 Sep "]" 12-13 48 Sep ";" 13-14 49 Pipeline/Form/Compound/Indexing/Primary "echo" 14-18 50 `), 51 } 52 53 func TestPprintParseTree(t *testing.T) { 54 tt.Test(t, tt.Fn("PPrintParseTree", PPrintParseTree), pprintParseTreeTests) 55 } 56 57 func mustParse(src string) Node { 58 n, err := Parse("[test]", src) 59 if err != nil { 60 panic(err) 61 } 62 return n 63 }