@@ -9,27 +9,27 @@ import (
99
1010func TestParseDeclaration (t * testing.T ) {
1111 tests := map [string ][]string {
12- "a := 1" : []string {"a:NUM =1" },
13- "b:bool" : []string {"b:BOOL =false" },
14- "\n b:bool\n " : []string {"b:BOOL =false" },
12+ "a := 1" : []string {"a=1" },
13+ "b:bool" : []string {"b=false" },
14+ "\n b:bool\n " : []string {"b=false" },
1515 `a := "abc"
1616 b:bool
17- c := true` : []string {"a:STRING ='abc'" , "b:BOOL =false" , "c:BOOL =true" },
18- "a:num[]" : []string {"a:ARRAY NUM =[]" },
19- "a:num[]{}" : []string {"a:MAP ARRAY NUM ={}" },
20- "abc:any[]{}" : []string {"abc:MAP ARRAY ANY ={}" },
21- "a := bool[true]" : []string {"a:ARRAY BOOL =[true]" }, // TODO: should be print "a:ARRAY BOOL=[true]
22- "a := num[]" : []string {"a:ARRAY NUM =[]" },
23- "a := num[][num[1 2]num[3 4]]" : []string {"a:ARRAY ARRAY NUM =[[1, 2], [3, 4]]" },
24- "a := num{a:1 b:2}" : []string {"a:MAP NUM ={a:1, b:2}" },
25- "a := num[]{digits: num[1 2 3] nums: num[4 5]}" : []string {"a:MAP ARRAY NUM ={digits:[1, 2, 3], nums:[4, 5]}" },
26- "a := num[]{digits: num[] nums: num[4]}" : []string {"a:MAP ARRAY NUM ={digits:[], nums:[4]}" },
27- "a := num[]{digits: num[4] nums: num[]}" : []string {"a:MAP ARRAY NUM ={digits:[4], nums:[]}" },
28- "a := num{}[]" : []string {"a:ARRAY MAP NUM =[]" },
29- "a := num{}[num{}]" : []string {"a:ARRAY MAP NUM =[{}]" },
30- "a := any{a:1 b:true}" : []string {"a:MAP ANY ={a:1, b:true}" },
31- "a := any{a:1 b:true c:num[1]}" : []string {"a:MAP ANY ={a:1, b:true, c:[1]}" },
32- "a := num{}[num{a:1}]" : []string {"a:ARRAY MAP NUM =[{a:1}]" },
17+ c := true` : []string {"a='abc'" , "b=false" , "c=true" },
18+ "a:num[]" : []string {"a=[]" },
19+ "a:num[]{}" : []string {"a={}" },
20+ "abc:any[]{}" : []string {"abc={}" },
21+ "a := bool[true]" : []string {"a=[true]" },
22+ "a := num[]" : []string {"a=[]" },
23+ "a := num[][num[1 2]num[3 4]]" : []string {"a=[[1, 2], [3, 4]]" },
24+ "a := num{a:1 b:2}" : []string {"a={a:1, b:2}" },
25+ "a := num[]{digits: num[1 2 3] nums: num[4 5]}" : []string {"a={digits:[1, 2, 3], nums:[4, 5]}" },
26+ "a := num[]{digits: num[] nums: num[4]}" : []string {"a={digits:[], nums:[4]}" },
27+ "a := num[]{digits: num[4] nums: num[]}" : []string {"a={digits:[4], nums:[]}" },
28+ "a := num{}[]" : []string {"a=[]" },
29+ "a := num{}[num{}]" : []string {"a=[{}]" },
30+ "a := any{a:1 b:true}" : []string {"a={a:1, b:true}" },
31+ "a := any{a:1 b:true c:num[1]}" : []string {"a={a:1, b:true, c:[1]}" },
32+ "a := num{}[num{a:1}]" : []string {"a=[{a:1}]" },
3333 }
3434 for input , wantSlice := range tests {
3535 want := strings .Join (wantSlice , "\n " ) + "\n "
@@ -85,7 +85,7 @@ func TestParseDeclarationError(t *testing.T) {
8585 parser := New (input , testBuiltins ())
8686 _ = parser .Parse ()
8787 assertParseError (t , parser , input )
88- assert .Equal (t , err1 , parser .errors [ 0 ]. String ( ), "input: %s\n errors:\n %s" , input , parser .ErrorsString ())
88+ assert .Equal (t , err1 , parser .MaxErrorsString ( 1 ), "input: %s\n errors:\n %s" , input , parser .ErrorsString ())
8989 }
9090}
9191
@@ -94,14 +94,14 @@ func TestFunctionCall(t *testing.T) {
9494 "print" : []string {"print()" },
9595 "print 123" : []string {"print(123)" },
9696 `print 123 "abc"` : []string {"print(123, 'abc')" },
97- "a:=1 \n print a" : []string {"a:NUM =1" , "print(a:NUM )" },
98- `a := len "abc"` : []string {"a:NUM =len('abc')" },
97+ "a:=1 \n print a" : []string {"a=1" , "print(a)" },
98+ `a := len "abc"` : []string {"a=len('abc')" },
9999 `len "abc"` : []string {"len('abc')" },
100100 `len num[]` : []string {"len([])" },
101- "a:string \n print a" : []string {"a:STRING =''" , "print(a:STRING )" },
101+ "a:string \n print a" : []string {"a=''" , "print(a)" },
102102 `a:=true
103103 b:string
104- print a b` : []string {"a:BOOL =true" , "b:STRING =''" , "print(a:BOOL , b:STRING )" },
104+ print a b` : []string {"a=true" , "b=''" , "print(a, b)" },
105105 }
106106 for input , wantSlice := range tests {
107107 want := strings .Join (wantSlice , "\n " ) + "\n "
@@ -138,7 +138,7 @@ func TestFunctionCallError(t *testing.T) {
138138 parser := New (input , builtins )
139139 _ = parser .Parse ()
140140 assertParseError (t , parser , input )
141- assert .Equal (t , err1 , parser .errors [ 0 ]. String ( ), "input: %s\n errors:\n %s" , input , parser .ErrorsString ())
141+ assert .Equal (t , err1 , parser .MaxErrorsString ( 1 ), "input: %s\n errors:\n %s" , input , parser .ErrorsString ())
142142 }
143143}
144144
@@ -170,7 +170,7 @@ x := len "123"
170170 got := parser .Parse ()
171171 assertNoParseError (t , parser , input )
172172 want := `
173- x:NUM =len('123')
173+ x=len('123')
174174` [1 :]
175175 assert .Equal (t , want , got .String ())
176176}
206206 assert .Equal (t , NUM_TYPE , n1 .Type ())
207207 assert .Equal (t , 1 , len (got .Body .Statements )) // return statement; if statement not yet implemented.
208208 returnStmt := got .Body .Statements [0 ]
209- assert .Equal (t , "return n1:NUM " , returnStmt .String ())
209+ assert .Equal (t , "return n1" , returnStmt .String ())
210210}
211211
212212func TestScope (t * testing.T ) {
307307 parser := New (input , testBuiltins ())
308308 _ = parser .Parse ()
309309 assertParseError (t , parser , input )
310- assert .Equal (t , wantErr , parser .errors [ 0 ]. String ( ))
310+ assert .Equal (t , wantErr , parser .MaxErrorsString ( 1 ))
311311 }
312312}
313313
@@ -324,11 +324,11 @@ end`
324324 parser := New (input , testBuiltins ())
325325 got := parser .Parse ()
326326 assertParseError (t , parser , input )
327- assert .Equal (t , "line 2 column 1: unknown function 'move'" , parser .errors [ 0 ]. String ( ))
327+ assert .Equal (t , "line 2 column 1: unknown function 'move'" , parser .MaxErrorsString ( 1 ))
328328 assert .Equal (t , "line 3 column 1: unknown function 'line'" , parser .errors [1 ].String ())
329329 want := `
330- x:NUM =12
331- print('x:', x:NUM )
330+ x=12
331+ print('x:', x)
332332` [1 :]
333333 assert .Equal (t , want , got .String ())
334334}
0 commit comments