diff --git a/navigator_root_test.go b/navigator_root_test.go new file mode 100644 index 0000000..d162971 --- /dev/null +++ b/navigator_root_test.go @@ -0,0 +1,27 @@ +package htmlquery + +import ( + "strings" + "testing" + + "github.com/antchfx/xpath" +) + +func TestMoveToRootFromAttribute(t *testing.T) { + doc, err := Parse(strings.NewReader(`
`)) + if err != nil { + t.Fatal(err) + } + iter := xpath.MustCompile("//div/@id").Select(CreateXPathNavigator(doc)) + if !iter.MoveNext() { + t.Fatal("attribute not found") + } + nav := iter.Current().Copy() + nav.MoveToRoot() + if !nav.MoveToChild() { + t.Fatal("root still has an attribute cursor and cannot move to its child") + } + if nav.NodeType() != xpath.ElementNode || nav.LocalName() != "html" { + t.Fatalf("unexpected child after root navigation: %v", nav) + } +} diff --git a/query.go b/query.go index cb8b337..4930aa1 100644 --- a/query.go +++ b/query.go @@ -301,6 +301,7 @@ func (h *NodeNavigator) Copy() xpath.NodeNavigator { func (h *NodeNavigator) MoveToRoot() { h.curr = h.root + h.attr = -1 } func (h *NodeNavigator) MoveToParent() bool {