@@ -32,17 +32,9 @@ var printTests = []printTest{
3232 builtinNode {"len" , []Node {nameNode {"array" }}},
3333 "len(array)" ,
3434 },
35- {
36- binaryNode {"or" , binaryNode {"or" , nameNode {"a" }, nameNode {"b" }}, nameNode {"c" }},
37- "((a or b) or c)" ,
38- },
39- {
40- binaryNode {"or" , nameNode {"a" }, binaryNode {"and" , nameNode {"b" }, nameNode {"c" }}},
41- "(a or (b and c))" ,
42- },
4335 {
4436 binaryNode {"and" , binaryNode {"or" , nameNode {"a" }, nameNode {"b" }}, nameNode {"c" }},
45- "(( a or b) and c) " ,
37+ "(a or b) and c" ,
4638 },
4739 {
4840 conditionalNode {nameNode {"a" }, nameNode {"a" }, nameNode {"b" }},
@@ -52,6 +44,50 @@ var printTests = []printTest{
5244 matchesNode {left : nameNode {"foo" }, right : textNode {"foobar" }},
5345 "(foo matches \" foobar\" )" ,
5446 },
47+ {
48+ binaryNode {"or" , binaryNode {"or" , nameNode {"a" }, nameNode {"b" }}, nameNode {"c" }},
49+ "a or b or c" ,
50+ },
51+ {
52+ binaryNode {"and" , binaryNode {"or" , nameNode {"a" }, nameNode {"b" }}, nameNode {"c" }},
53+ "(a or b) and c" ,
54+ },
55+ {
56+ binaryNode {"or" , binaryNode {"and" , nameNode {"a" }, nameNode {"b" }}, nameNode {"c" }},
57+ "a and b or c" ,
58+ },
59+ {
60+ binaryNode {"and" , nameNode {"a" }, binaryNode {"or" , nameNode {"b" }, nameNode {"c" }}},
61+ "a and (b or c)" ,
62+ },
63+ {
64+ binaryNode {"*" , nameNode {"a" }, binaryNode {"+" , nameNode {"b" }, nameNode {"c" }}},
65+ "a * (b + c)" ,
66+ },
67+ {
68+ binaryNode {"*" , binaryNode {"+" , nameNode {"a" }, nameNode {"b" }}, binaryNode {"+" , nameNode {"c" }, nameNode {"d" }}},
69+ "(a + b) * (c + d)" ,
70+ },
71+ //{
72+ // binaryNode{"+", binaryNode{"+", nameNode{"a"}, nameNode{"b"}}, binaryNode{"+", nameNode{"c"}, nameNode{"d"}}},
73+ // "a + b + c + d",
74+ //},
75+ {
76+ binaryNode {"**" , binaryNode {"**" , nameNode {"a" }, nameNode {"b" }}, nameNode {"c" }},
77+ "(a ** b) ** c" ,
78+ },
79+ {
80+ unaryNode {"-" , unaryNode {"+" , unaryNode {"-" , nameNode {"b" }}}},
81+ "(-(+(-b)))" ,
82+ },
83+ {
84+ binaryNode {"or" , binaryNode {"and" , nameNode {"a" }, nameNode {"b" }}, nameNode {"c" }},
85+ "a and b or c" ,
86+ },
87+ {
88+ binaryNode {"or" , nameNode {"a" }, binaryNode {"and" , nameNode {"b" }, nameNode {"c" }}},
89+ "a or b and c" ,
90+ },
5591}
5692
5793func TestPrint (t * testing.T ) {
0 commit comments