From 004946bc712b41bd7f7de0b62b9c2e797b842240 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Sun, 26 Jul 2020 14:29:45 +0200 Subject: [PATCH] [#111] cover by a unit test a property type name resolving --- visitor/namespace_resolver_test.go | 52 ++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/visitor/namespace_resolver_test.go b/visitor/namespace_resolver_test.go index d626dbb..b9137cd 100644 --- a/visitor/namespace_resolver_test.go +++ b/visitor/namespace_resolver_test.go @@ -974,3 +974,55 @@ func TestDoNotResolveReservedSpecialNames(t *testing.T) { assert.DeepEqual(t, expected, nsResolver.ResolvedNames) } + +func TestResolvePropertyTypeName(t *testing.T) { + nameSimple := &name.Name{Parts: []node.Node{&name.NamePart{Value: "A"}, &name.NamePart{Value: "B"}}} + nameRelative := &name.Relative{Parts: []node.Node{&name.NamePart{Value: "A"}, &name.NamePart{Value: "B"}}} + nameFullyQualified := &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "A"}, &name.NamePart{Value: "B"}}} + + propertyNodeSimple := &stmt.PropertyList{ + Type: nameSimple, + } + + propertyNodeRelative := &stmt.PropertyList{ + Type: nameRelative, + } + + propertyNodeFullyQualified := &stmt.PropertyList{ + Type: nameFullyQualified, + } + + classNode := &stmt.Class{ + ClassName: &node.Identifier{Value: "Bar"}, + Stmts: []node.Node{ + propertyNodeSimple, + propertyNodeRelative, + propertyNodeFullyQualified, + }, + } + + ast := &stmt.StmtList{ + Stmts: []node.Node{ + &stmt.Namespace{ + NamespaceName: &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Foo"}, + }, + }, + }, + classNode, + }, + } + + expected := map[node.Node]string{ + nameSimple: "Foo\\A\\B", + nameRelative: "Foo\\A\\B", + nameFullyQualified: "A\\B", + classNode: "Foo\\Bar", + } + + nsResolver := visitor.NewNamespaceResolver() + ast.Walk(nsResolver) + + assert.DeepEqual(t, expected, nsResolver.ResolvedNames) +}