package assign_test import ( "bytes" "reflect" "testing" "github.com/z7zmey/php-parser/node/expr/assign" "github.com/z7zmey/php-parser/position" "github.com/kylelemons/godebug/pretty" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/php7" ) func assertEqual(t *testing.T, expected interface{}, actual interface{}) { if !reflect.DeepEqual(expected, actual) { diff := pretty.Compare(expected, actual) if diff != "" { t.Errorf("diff: (-expected +actual)\n%s", diff) } else { t.Errorf("expected and actual are not equal\n") } } } func TestReference(t *testing.T) { src := `>= $b;` expected := &node.Root{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 4, EndPos: 13, }, Stmts: []node.Node{ &stmt.Expression{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 4, EndPos: 13, }, Expr: &assign.ShiftRight{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 4, EndPos: 12, }, Variable: &expr.Variable{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 4, EndPos: 5, }, VarName: &node.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 4, EndPos: 5, }, Value: "a", }, }, Expression: &expr.Variable{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 11, EndPos: 12, }, VarName: &node.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 11, EndPos: 12, }, Value: "b", }, }, }, }, }, } php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() assertEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() assertEqual(t, expected, actual) }