refactoring: update position builder tests

This commit is contained in:
Vadym Slizov 2020-12-20 14:34:09 +02:00
parent 90aca88c2f
commit 286dd50319
No known key found for this signature in database
GPG Key ID: AEA2A9388EF42A4A
2 changed files with 18 additions and 120 deletions

View File

@ -21,7 +21,7 @@ func TestNewTokenPosition(t *testing.T) {
}, },
} }
pos := builder.NewTokenPosition(tkn) pos := builder.NewBuilder().NewTokenPosition(tkn)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 1, EndPos: 3}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 1, EndPos: 3}, pos)
} }
@ -46,7 +46,7 @@ func TestNewTokensPosition(t *testing.T) {
}, },
} }
pos := builder.NewTokensPosition(token1, token2) pos := builder.NewBuilder().NewTokensPosition(token1, token2)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 6}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 6}, pos)
} }
@ -61,7 +61,7 @@ func TestNewNodePosition(t *testing.T) {
}, },
} }
pos := builder.NewNodePosition(n) pos := builder.NewBuilder().NewNodePosition(n)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 1, EndPos: 3}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 1, EndPos: 3}, pos)
} }
@ -85,7 +85,7 @@ func TestNewTokenNodePosition(t *testing.T) {
}, },
} }
pos := builder.NewTokenNodePosition(tkn, n) pos := builder.NewBuilder().NewTokenNodePosition(tkn, n)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 12}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 12}, pos)
} }
@ -110,7 +110,7 @@ func TestNewNodeTokenPosition(t *testing.T) {
}, },
} }
pos := builder.NewNodeTokenPosition(n, tkn) pos := builder.NewBuilder().NewNodeTokenPosition(n, tkn)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 12}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 12}, pos)
} }
@ -134,7 +134,7 @@ func TestNewNodeListPosition(t *testing.T) {
}, },
} }
pos := builder.NewNodeListPosition([]ast.Vertex{n1, n2}) pos := builder.NewBuilder().NewNodeListPosition([]ast.Vertex{n1, n2})
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 19}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 19}, pos)
} }
@ -158,7 +158,7 @@ func TestNewNodesPosition(t *testing.T) {
}, },
} }
pos := builder.NewNodesPosition(n1, n2) pos := builder.NewBuilder().NewNodesPosition(n1, n2)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 19}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 19}, pos)
} }
@ -192,7 +192,7 @@ func TestNewNodeListTokenPosition(t *testing.T) {
}, },
} }
pos := builder.NewNodeListTokenPosition([]ast.Vertex{n1, n2}, tkn) pos := builder.NewBuilder().NewNodeListTokenPosition([]ast.Vertex{n1, n2}, tkn)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 3, EndPos: 22}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 3, EndPos: 22}, pos)
} }
@ -226,7 +226,7 @@ func TestNewTokenNodeListPosition(t *testing.T) {
}, },
} }
pos := builder.NewTokenNodeListPosition(tkn, []ast.Vertex{n1, n2}) pos := builder.NewBuilder().NewTokenNodeListPosition(tkn, []ast.Vertex{n1, n2})
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 3, EndPos: 20}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 3, EndPos: 20}, pos)
} }
@ -259,7 +259,7 @@ func TestNewNodeNodeListPosition(t *testing.T) {
}, },
} }
pos := builder.NewNodeNodeListPosition(n1, []ast.Vertex{n2, n3}) pos := builder.NewBuilder().NewNodeNodeListPosition(n1, []ast.Vertex{n2, n3})
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 3, EndPos: 26}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 3, EndPos: 26}, pos)
} }
@ -290,7 +290,7 @@ func TestNewNodeListNodePosition(t *testing.T) {
}, },
} }
pos := builder.NewNodeListNodePosition([]ast.Vertex{n1, n2}, n3) pos := builder.NewBuilder().NewNodeListNodePosition([]ast.Vertex{n1, n2}, n3)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 3, EndPos: 26}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 3, EndPos: 26}, pos)
} }
@ -315,7 +315,7 @@ func TestNewOptionalListTokensPosition(t *testing.T) {
}, },
} }
pos := builder.NewOptionalListTokensPosition(nil, token1, token2) pos := builder.NewBuilder().NewOptionalListTokensPosition(nil, token1, token2)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 6}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: 2, EndPos: 6}, pos)
} }
@ -357,13 +357,13 @@ func TestNewOptionalListTokensPosition2(t *testing.T) {
}, },
} }
pos := builder.NewOptionalListTokensPosition([]ast.Vertex{n2, n3}, token1, token2) pos := builder.NewBuilder().NewOptionalListTokensPosition([]ast.Vertex{n2, n3}, token1, token2)
assert.DeepEqual(t, &position.Position{StartLine: 2, EndLine: 5, StartPos: 9, EndPos: 32}, pos) assert.DeepEqual(t, &position.Position{StartLine: 2, EndLine: 5, StartPos: 9, EndPos: 32}, pos)
} }
func TestNilNodePos(t *testing.T) { func TestNilNodePos(t *testing.T) {
pos := builder.NewNodesPosition(nil, nil) pos := builder.NewBuilder().NewNodesPosition(nil, nil)
assert.DeepEqual(t, &position.Position{StartLine: -1, EndLine: -1, StartPos: -1, EndPos: -1}, pos) assert.DeepEqual(t, &position.Position{StartLine: -1, EndLine: -1, StartPos: -1, EndPos: -1}, pos)
} }
@ -378,7 +378,7 @@ func TestNilNodeListPos(t *testing.T) {
}, },
} }
pos := builder.NewNodeNodeListPosition(n1, nil) pos := builder.NewBuilder().NewNodeNodeListPosition(n1, nil)
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: -1, EndPos: -1}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: -1, EndPos: -1}, pos)
} }
@ -394,7 +394,7 @@ func TestNilNodeListTokenPos(t *testing.T) {
}, },
} }
pos := builder.NewNodeListTokenPosition(nil, tkn) pos := builder.NewBuilder().NewNodeListTokenPosition(nil, tkn)
assert.DeepEqual(t, &position.Position{StartLine: -1, EndLine: 1, StartPos: -1, EndPos: 3}, pos) assert.DeepEqual(t, &position.Position{StartLine: -1, EndLine: 1, StartPos: -1, EndPos: 3}, pos)
} }
@ -409,7 +409,7 @@ func TestEmptyNodeListPos(t *testing.T) {
}, },
} }
pos := builder.NewNodeNodeListPosition(n1, []ast.Vertex{}) pos := builder.NewBuilder().NewNodeNodeListPosition(n1, []ast.Vertex{})
assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: -1, EndPos: -1}, pos) assert.DeepEqual(t, &position.Position{StartLine: 1, EndLine: -1, EndPos: -1}, pos)
} }
@ -425,7 +425,7 @@ func TestEmptyNodeListTokenPos(t *testing.T) {
}, },
} }
pos := builder.NewNodeListTokenPosition([]ast.Vertex{}, tkn) pos := builder.NewBuilder().NewNodeListTokenPosition([]ast.Vertex{}, tkn)
assert.DeepEqual(t, &position.Position{StartLine: -1, EndLine: 1, StartPos: -1, EndPos: 3}, pos) assert.DeepEqual(t, &position.Position{StartLine: -1, EndLine: 1, StartPos: -1, EndPos: 3}, pos)
} }

View File

@ -1,102 +0,0 @@
package ast_test
import (
"fmt"
"github.com/z7zmey/php-parser/pkg/ast"
"github.com/z7zmey/php-parser/pkg/ast/traverser"
"github.com/z7zmey/php-parser/pkg/ast/visitor"
"os"
"strings"
)
func ExampleStxTree() {
stxTree := &ast.Root{
Stmts: []ast.Vertex{
&ast.Nullable{
Expr: &ast.Parameter{
Type: nil,
Var: nil,
DefaultValue: nil,
},
},
&ast.Identifier{},
&ast.ArgumentList{
Arguments: []ast.Vertex{
&ast.Argument{},
&ast.Argument{
Expr: &ast.ScalarDnumber{},
},
},
},
},
}
traverser.NewDFS(&testVisitor{}).Traverse(stxTree)
//output:
//=> *ast.Root
//=> Stmts:
//=> *ast.Nullable
//=> Expr:
//=> *ast.Parameter
//=> *ast.Identifier
//=> *ast.ArgumentList
//=> Arguments:
//=> *ast.Argument
//=> *ast.Argument
//=> Expr:
//=> *ast.ScalarDnumber
}
type testVisitor struct {
visitor.Null
depth int
}
func (v *testVisitor) Enter(key string, _ bool) {
v.depth++
fmt.Fprint(os.Stdout, "=>", strings.Repeat(" ", v.depth), key, ":\n")
}
func (v *testVisitor) Leave(key string, _ bool) {
v.depth--
}
func (v *testVisitor) EnterNode(n ast.Vertex) bool {
v.depth++
n.Accept(v)
return true
}
func (v *testVisitor) LeaveNode(_ ast.Vertex) {
v.depth--
}
func (v *testVisitor) Root(_ *ast.Root) {
fmt.Fprintln(os.Stdout, "=>", strings.Repeat(" ", v.depth-1), "*ast.Root")
}
func (v *testVisitor) Nullable(_ *ast.Nullable) {
fmt.Fprintln(os.Stdout, "=>", strings.Repeat(" ", v.depth-1), "*ast.Nullable")
}
func (v *testVisitor) Parameter(_ *ast.Parameter) {
fmt.Fprintln(os.Stdout, "=>", strings.Repeat(" ", v.depth-1), "*ast.Parameter")
}
func (v *testVisitor) Identifier(_ *ast.Identifier) {
fmt.Fprintln(os.Stdout, "=>", strings.Repeat(" ", v.depth-1), "*ast.Identifier")
}
func (v *testVisitor) ArgumentList(_ *ast.ArgumentList) {
fmt.Fprintln(os.Stdout, "=>", strings.Repeat(" ", v.depth-1), "*ast.ArgumentList")
}
func (v *testVisitor) Argument(_ *ast.Argument) {
fmt.Fprintln(os.Stdout, "=>", strings.Repeat(" ", v.depth-1), "*ast.Argument")
}
func (v *testVisitor) ScalarDnumber(_ *ast.ScalarDnumber) {
fmt.Fprintln(os.Stdout, "=>", strings.Repeat(" ", v.depth-1), "*ast.ScalarDnumber")
}