| package goquery |
| |
| import ( |
| "strings" |
| "testing" |
| ) |
| |
| func TestFind(t *testing.T) { |
| sel := Doc().Find("div.row-fluid") |
| assertLength(t, sel.Nodes, 9) |
| } |
| |
| func TestFindRollback(t *testing.T) { |
| sel := Doc().Find("div.row-fluid") |
| sel2 := sel.Find("a").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestFindNotSelf(t *testing.T) { |
| sel := Doc().Find("h1").Find("h1") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestFindInvalid(t *testing.T) { |
| sel := Doc().Find(":+ ^") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestFindBig(t *testing.T) { |
| doc := DocW() |
| sel := doc.Find("li") |
| assertLength(t, sel.Nodes, 373) |
| sel2 := doc.Find("span") |
| assertLength(t, sel2.Nodes, 448) |
| sel3 := sel.FindSelection(sel2) |
| assertLength(t, sel3.Nodes, 248) |
| } |
| |
| func TestChainedFind(t *testing.T) { |
| sel := Doc().Find("div.hero-unit").Find(".row-fluid") |
| assertLength(t, sel.Nodes, 4) |
| } |
| |
| func TestChainedFindInvalid(t *testing.T) { |
| sel := Doc().Find("div.hero-unit").Find("") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestChildren(t *testing.T) { |
| sel := Doc().Find(".pvk-content").Children() |
| assertLength(t, sel.Nodes, 5) |
| } |
| |
| func TestChildrenRollback(t *testing.T) { |
| sel := Doc().Find(".pvk-content") |
| sel2 := sel.Children().End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestContents(t *testing.T) { |
| sel := Doc().Find(".pvk-content").Contents() |
| assertLength(t, sel.Nodes, 13) |
| } |
| |
| func TestContentsRollback(t *testing.T) { |
| sel := Doc().Find(".pvk-content") |
| sel2 := sel.Contents().End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestChildrenFiltered(t *testing.T) { |
| sel := Doc().Find(".pvk-content").ChildrenFiltered(".hero-unit") |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestChildrenFilteredInvalid(t *testing.T) { |
| sel := Doc().Find(".pvk-content").ChildrenFiltered("") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestChildrenFilteredRollback(t *testing.T) { |
| sel := Doc().Find(".pvk-content") |
| sel2 := sel.ChildrenFiltered(".hero-unit").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestContentsFiltered(t *testing.T) { |
| sel := Doc().Find(".pvk-content").ContentsFiltered(".hero-unit") |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestContentsFilteredInvalid(t *testing.T) { |
| sel := Doc().Find(".pvk-content").ContentsFiltered("~") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestContentsFilteredRollback(t *testing.T) { |
| sel := Doc().Find(".pvk-content") |
| sel2 := sel.ContentsFiltered(".hero-unit").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestChildrenFilteredNone(t *testing.T) { |
| sel := Doc().Find(".pvk-content").ChildrenFiltered("a.btn") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestParent(t *testing.T) { |
| sel := Doc().Find(".container-fluid").Parent() |
| assertLength(t, sel.Nodes, 3) |
| } |
| |
| func TestParentRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.Parent().End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestParentBody(t *testing.T) { |
| sel := Doc().Find("body").Parent() |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestParentFiltered(t *testing.T) { |
| sel := Doc().Find(".container-fluid").ParentFiltered(".hero-unit") |
| assertLength(t, sel.Nodes, 1) |
| assertClass(t, sel, "hero-unit") |
| } |
| |
| func TestParentFilteredInvalid(t *testing.T) { |
| sel := Doc().Find(".container-fluid").ParentFiltered("") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestParentFilteredRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.ParentFiltered(".hero-unit").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestParents(t *testing.T) { |
| sel := Doc().Find(".container-fluid").Parents() |
| assertLength(t, sel.Nodes, 8) |
| } |
| |
| func TestParentsOrder(t *testing.T) { |
| sel := Doc().Find("#cf2").Parents() |
| assertLength(t, sel.Nodes, 6) |
| assertSelectionIs(t, sel, ".hero-unit", ".pvk-content", "div.row-fluid", "#cf1", "body", "html") |
| } |
| |
| func TestParentsRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.Parents().End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestParentsFiltered(t *testing.T) { |
| sel := Doc().Find(".container-fluid").ParentsFiltered("body") |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestParentsFilteredInvalid(t *testing.T) { |
| sel := Doc().Find(".container-fluid").ParentsFiltered("") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestParentsFilteredRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.ParentsFiltered("body").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestParentsUntil(t *testing.T) { |
| sel := Doc().Find(".container-fluid").ParentsUntil("body") |
| assertLength(t, sel.Nodes, 6) |
| } |
| |
| func TestParentsUntilInvalid(t *testing.T) { |
| sel := Doc().Find(".container-fluid").ParentsUntil("") |
| assertLength(t, sel.Nodes, 8) |
| } |
| |
| func TestParentsUntilRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.ParentsUntil("body").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestParentsUntilSelection(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := Doc().Find(".pvk-content") |
| sel = sel.ParentsUntilSelection(sel2) |
| assertLength(t, sel.Nodes, 3) |
| } |
| |
| func TestParentsUntilSelectionRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := Doc().Find(".pvk-content") |
| sel2 = sel.ParentsUntilSelection(sel2).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestParentsUntilNodes(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := Doc().Find(".pvk-content, .hero-unit") |
| sel = sel.ParentsUntilNodes(sel2.Nodes...) |
| assertLength(t, sel.Nodes, 2) |
| } |
| |
| func TestParentsUntilNodesRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := Doc().Find(".pvk-content, .hero-unit") |
| sel2 = sel.ParentsUntilNodes(sel2.Nodes...).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestParentsFilteredUntil(t *testing.T) { |
| sel := Doc().Find(".container-fluid").ParentsFilteredUntil(".pvk-content", "body") |
| assertLength(t, sel.Nodes, 2) |
| } |
| |
| func TestParentsFilteredUntilInvalid(t *testing.T) { |
| sel := Doc().Find(".container-fluid").ParentsFilteredUntil("", "") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestParentsFilteredUntilRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.ParentsFilteredUntil(".pvk-content", "body").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestParentsFilteredUntilSelection(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := Doc().Find(".row-fluid") |
| sel = sel.ParentsFilteredUntilSelection("div", sel2) |
| assertLength(t, sel.Nodes, 3) |
| } |
| |
| func TestParentsFilteredUntilSelectionRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := Doc().Find(".row-fluid") |
| sel2 = sel.ParentsFilteredUntilSelection("div", sel2).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestParentsFilteredUntilNodes(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := Doc().Find(".row-fluid") |
| sel = sel.ParentsFilteredUntilNodes("body", sel2.Nodes...) |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestParentsFilteredUntilNodesRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := Doc().Find(".row-fluid") |
| sel2 = sel.ParentsFilteredUntilNodes("body", sel2.Nodes...).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestSiblings(t *testing.T) { |
| sel := Doc().Find("h1").Siblings() |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestSiblingsRollback(t *testing.T) { |
| sel := Doc().Find("h1") |
| sel2 := sel.Siblings().End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestSiblings2(t *testing.T) { |
| sel := Doc().Find(".pvk-gutter").Siblings() |
| assertLength(t, sel.Nodes, 9) |
| } |
| |
| func TestSiblings3(t *testing.T) { |
| sel := Doc().Find("body>.container-fluid").Siblings() |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestSiblingsFiltered(t *testing.T) { |
| sel := Doc().Find(".pvk-gutter").SiblingsFiltered(".pvk-content") |
| assertLength(t, sel.Nodes, 3) |
| } |
| |
| func TestSiblingsFilteredInvalid(t *testing.T) { |
| sel := Doc().Find(".pvk-gutter").SiblingsFiltered("") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestSiblingsFilteredRollback(t *testing.T) { |
| sel := Doc().Find(".pvk-gutter") |
| sel2 := sel.SiblingsFiltered(".pvk-content").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNext(t *testing.T) { |
| sel := Doc().Find("h1").Next() |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestNextRollback(t *testing.T) { |
| sel := Doc().Find("h1") |
| sel2 := sel.Next().End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNext2(t *testing.T) { |
| sel := Doc().Find(".close").Next() |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestNextNone(t *testing.T) { |
| sel := Doc().Find("small").Next() |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestNextFiltered(t *testing.T) { |
| sel := Doc().Find(".container-fluid").NextFiltered("div") |
| assertLength(t, sel.Nodes, 2) |
| } |
| |
| func TestNextFilteredInvalid(t *testing.T) { |
| sel := Doc().Find(".container-fluid").NextFiltered("") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestNextFilteredRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.NextFiltered("div").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNextFiltered2(t *testing.T) { |
| sel := Doc().Find(".container-fluid").NextFiltered("[ng-view]") |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestPrev(t *testing.T) { |
| sel := Doc().Find(".red").Prev() |
| assertLength(t, sel.Nodes, 1) |
| assertClass(t, sel, "green") |
| } |
| |
| func TestPrevRollback(t *testing.T) { |
| sel := Doc().Find(".red") |
| sel2 := sel.Prev().End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestPrev2(t *testing.T) { |
| sel := Doc().Find(".row-fluid").Prev() |
| assertLength(t, sel.Nodes, 5) |
| } |
| |
| func TestPrevNone(t *testing.T) { |
| sel := Doc().Find("h2").Prev() |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestPrevFiltered(t *testing.T) { |
| sel := Doc().Find(".row-fluid").PrevFiltered(".row-fluid") |
| assertLength(t, sel.Nodes, 5) |
| } |
| |
| func TestPrevFilteredInvalid(t *testing.T) { |
| sel := Doc().Find(".row-fluid").PrevFiltered("") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestPrevFilteredRollback(t *testing.T) { |
| sel := Doc().Find(".row-fluid") |
| sel2 := sel.PrevFiltered(".row-fluid").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNextAll(t *testing.T) { |
| sel := Doc().Find("#cf2 div:nth-child(1)").NextAll() |
| assertLength(t, sel.Nodes, 3) |
| } |
| |
| func TestNextAllRollback(t *testing.T) { |
| sel := Doc().Find("#cf2 div:nth-child(1)") |
| sel2 := sel.NextAll().End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNextAll2(t *testing.T) { |
| sel := Doc().Find("div[ng-cloak]").NextAll() |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestNextAllNone(t *testing.T) { |
| sel := Doc().Find(".footer").NextAll() |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestNextAllFiltered(t *testing.T) { |
| sel := Doc().Find("#cf2 .row-fluid").NextAllFiltered("[ng-cloak]") |
| assertLength(t, sel.Nodes, 2) |
| } |
| |
| func TestNextAllFilteredInvalid(t *testing.T) { |
| sel := Doc().Find("#cf2 .row-fluid").NextAllFiltered("") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestNextAllFilteredRollback(t *testing.T) { |
| sel := Doc().Find("#cf2 .row-fluid") |
| sel2 := sel.NextAllFiltered("[ng-cloak]").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNextAllFiltered2(t *testing.T) { |
| sel := Doc().Find(".close").NextAllFiltered("h4") |
| assertLength(t, sel.Nodes, 1) |
| } |
| |
| func TestPrevAll(t *testing.T) { |
| sel := Doc().Find("[ng-view]").PrevAll() |
| assertLength(t, sel.Nodes, 2) |
| } |
| |
| func TestPrevAllOrder(t *testing.T) { |
| sel := Doc().Find("[ng-view]").PrevAll() |
| assertLength(t, sel.Nodes, 2) |
| assertSelectionIs(t, sel, "#cf4", "#cf3") |
| } |
| |
| func TestPrevAllRollback(t *testing.T) { |
| sel := Doc().Find("[ng-view]") |
| sel2 := sel.PrevAll().End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestPrevAll2(t *testing.T) { |
| sel := Doc().Find(".pvk-gutter").PrevAll() |
| assertLength(t, sel.Nodes, 6) |
| } |
| |
| func TestPrevAllFiltered(t *testing.T) { |
| sel := Doc().Find(".pvk-gutter").PrevAllFiltered(".pvk-content") |
| assertLength(t, sel.Nodes, 3) |
| } |
| |
| func TestPrevAllFilteredInvalid(t *testing.T) { |
| sel := Doc().Find(".pvk-gutter").PrevAllFiltered("") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestPrevAllFilteredRollback(t *testing.T) { |
| sel := Doc().Find(".pvk-gutter") |
| sel2 := sel.PrevAllFiltered(".pvk-content").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNextUntil(t *testing.T) { |
| sel := Doc().Find(".alert a").NextUntil("p") |
| assertLength(t, sel.Nodes, 1) |
| assertSelectionIs(t, sel, "h4") |
| } |
| |
| func TestNextUntilInvalid(t *testing.T) { |
| sel := Doc().Find(".alert a").NextUntil("") |
| assertLength(t, sel.Nodes, 2) |
| } |
| |
| func TestNextUntil2(t *testing.T) { |
| sel := Doc().Find("#cf2-1").NextUntil("[ng-cloak]") |
| assertLength(t, sel.Nodes, 1) |
| assertSelectionIs(t, sel, "#cf2-2") |
| } |
| |
| func TestNextUntilOrder(t *testing.T) { |
| sel := Doc().Find("#cf2-1").NextUntil("#cf2-4") |
| assertLength(t, sel.Nodes, 2) |
| assertSelectionIs(t, sel, "#cf2-2", "#cf2-3") |
| } |
| |
| func TestNextUntilRollback(t *testing.T) { |
| sel := Doc().Find("#cf2-1") |
| sel2 := sel.PrevUntil("#cf2-4").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNextUntilSelection(t *testing.T) { |
| sel := Doc2().Find("#n2") |
| sel2 := Doc2().Find("#n4") |
| sel2 = sel.NextUntilSelection(sel2) |
| assertLength(t, sel2.Nodes, 1) |
| assertSelectionIs(t, sel2, "#n3") |
| } |
| |
| func TestNextUntilSelectionRollback(t *testing.T) { |
| sel := Doc2().Find("#n2") |
| sel2 := Doc2().Find("#n4") |
| sel2 = sel.NextUntilSelection(sel2).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNextUntilNodes(t *testing.T) { |
| sel := Doc2().Find("#n2") |
| sel2 := Doc2().Find("#n5") |
| sel2 = sel.NextUntilNodes(sel2.Nodes...) |
| assertLength(t, sel2.Nodes, 2) |
| assertSelectionIs(t, sel2, "#n3", "#n4") |
| } |
| |
| func TestNextUntilNodesRollback(t *testing.T) { |
| sel := Doc2().Find("#n2") |
| sel2 := Doc2().Find("#n5") |
| sel2 = sel.NextUntilNodes(sel2.Nodes...).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestPrevUntil(t *testing.T) { |
| sel := Doc().Find(".alert p").PrevUntil("a") |
| assertLength(t, sel.Nodes, 1) |
| assertSelectionIs(t, sel, "h4") |
| } |
| |
| func TestPrevUntilInvalid(t *testing.T) { |
| sel := Doc().Find(".alert p").PrevUntil("") |
| assertLength(t, sel.Nodes, 2) |
| } |
| |
| func TestPrevUntil2(t *testing.T) { |
| sel := Doc().Find("[ng-cloak]").PrevUntil(":not([ng-cloak])") |
| assertLength(t, sel.Nodes, 1) |
| assertSelectionIs(t, sel, "[ng-cloak]") |
| } |
| |
| func TestPrevUntilOrder(t *testing.T) { |
| sel := Doc().Find("#cf2-4").PrevUntil("#cf2-1") |
| assertLength(t, sel.Nodes, 2) |
| assertSelectionIs(t, sel, "#cf2-3", "#cf2-2") |
| } |
| |
| func TestPrevUntilRollback(t *testing.T) { |
| sel := Doc().Find("#cf2-4") |
| sel2 := sel.PrevUntil("#cf2-1").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestPrevUntilSelection(t *testing.T) { |
| sel := Doc2().Find("#n4") |
| sel2 := Doc2().Find("#n2") |
| sel2 = sel.PrevUntilSelection(sel2) |
| assertLength(t, sel2.Nodes, 1) |
| assertSelectionIs(t, sel2, "#n3") |
| } |
| |
| func TestPrevUntilSelectionRollback(t *testing.T) { |
| sel := Doc2().Find("#n4") |
| sel2 := Doc2().Find("#n2") |
| sel2 = sel.PrevUntilSelection(sel2).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestPrevUntilNodes(t *testing.T) { |
| sel := Doc2().Find("#n5") |
| sel2 := Doc2().Find("#n2") |
| sel2 = sel.PrevUntilNodes(sel2.Nodes...) |
| assertLength(t, sel2.Nodes, 2) |
| assertSelectionIs(t, sel2, "#n4", "#n3") |
| } |
| |
| func TestPrevUntilNodesRollback(t *testing.T) { |
| sel := Doc2().Find("#n5") |
| sel2 := Doc2().Find("#n2") |
| sel2 = sel.PrevUntilNodes(sel2.Nodes...).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNextFilteredUntil(t *testing.T) { |
| sel := Doc2().Find(".two").NextFilteredUntil(".even", ".six") |
| assertLength(t, sel.Nodes, 4) |
| assertSelectionIs(t, sel, "#n3", "#n5", "#nf3", "#nf5") |
| } |
| |
| func TestNextFilteredUntilInvalid(t *testing.T) { |
| sel := Doc2().Find(".two").NextFilteredUntil("", "") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestNextFilteredUntilRollback(t *testing.T) { |
| sel := Doc2().Find(".two") |
| sel2 := sel.NextFilteredUntil(".even", ".six").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestNextFilteredUntilSelection(t *testing.T) { |
| sel := Doc2().Find(".even") |
| sel2 := Doc2().Find(".five") |
| sel = sel.NextFilteredUntilSelection(".even", sel2) |
| assertLength(t, sel.Nodes, 2) |
| assertSelectionIs(t, sel, "#n3", "#nf3") |
| } |
| |
| func TestNextFilteredUntilSelectionRollback(t *testing.T) { |
| sel := Doc2().Find(".even") |
| sel2 := Doc2().Find(".five") |
| sel3 := sel.NextFilteredUntilSelection(".even", sel2).End() |
| assertEqual(t, sel, sel3) |
| } |
| |
| func TestNextFilteredUntilNodes(t *testing.T) { |
| sel := Doc2().Find(".even") |
| sel2 := Doc2().Find(".four") |
| sel = sel.NextFilteredUntilNodes(".odd", sel2.Nodes...) |
| assertLength(t, sel.Nodes, 4) |
| assertSelectionIs(t, sel, "#n2", "#n6", "#nf2", "#nf6") |
| } |
| |
| func TestNextFilteredUntilNodesRollback(t *testing.T) { |
| sel := Doc2().Find(".even") |
| sel2 := Doc2().Find(".four") |
| sel3 := sel.NextFilteredUntilNodes(".odd", sel2.Nodes...).End() |
| assertEqual(t, sel, sel3) |
| } |
| |
| func TestPrevFilteredUntil(t *testing.T) { |
| sel := Doc2().Find(".five").PrevFilteredUntil(".odd", ".one") |
| assertLength(t, sel.Nodes, 4) |
| assertSelectionIs(t, sel, "#n4", "#n2", "#nf4", "#nf2") |
| } |
| |
| func TestPrevFilteredUntilInvalid(t *testing.T) { |
| sel := Doc2().Find(".five").PrevFilteredUntil("", "") |
| assertLength(t, sel.Nodes, 0) |
| } |
| |
| func TestPrevFilteredUntilRollback(t *testing.T) { |
| sel := Doc2().Find(".four") |
| sel2 := sel.PrevFilteredUntil(".odd", ".one").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestPrevFilteredUntilSelection(t *testing.T) { |
| sel := Doc2().Find(".odd") |
| sel2 := Doc2().Find(".two") |
| sel = sel.PrevFilteredUntilSelection(".odd", sel2) |
| assertLength(t, sel.Nodes, 2) |
| assertSelectionIs(t, sel, "#n4", "#nf4") |
| } |
| |
| func TestPrevFilteredUntilSelectionRollback(t *testing.T) { |
| sel := Doc2().Find(".even") |
| sel2 := Doc2().Find(".five") |
| sel3 := sel.PrevFilteredUntilSelection(".even", sel2).End() |
| assertEqual(t, sel, sel3) |
| } |
| |
| func TestPrevFilteredUntilNodes(t *testing.T) { |
| sel := Doc2().Find(".even") |
| sel2 := Doc2().Find(".four") |
| sel = sel.PrevFilteredUntilNodes(".odd", sel2.Nodes...) |
| assertLength(t, sel.Nodes, 2) |
| assertSelectionIs(t, sel, "#n2", "#nf2") |
| } |
| |
| func TestPrevFilteredUntilNodesRollback(t *testing.T) { |
| sel := Doc2().Find(".even") |
| sel2 := Doc2().Find(".four") |
| sel3 := sel.PrevFilteredUntilNodes(".odd", sel2.Nodes...).End() |
| assertEqual(t, sel, sel3) |
| } |
| |
| func TestClosestItself(t *testing.T) { |
| sel := Doc2().Find(".three") |
| sel2 := sel.Closest(".row") |
| assertLength(t, sel2.Nodes, sel.Length()) |
| assertSelectionIs(t, sel2, "#n3", "#nf3") |
| } |
| |
| func TestClosestNoDupes(t *testing.T) { |
| sel := Doc().Find(".span12") |
| sel2 := sel.Closest(".pvk-content") |
| assertLength(t, sel2.Nodes, 1) |
| assertClass(t, sel2, "pvk-content") |
| } |
| |
| func TestClosestNone(t *testing.T) { |
| sel := Doc().Find("h4") |
| sel2 := sel.Closest("a") |
| assertLength(t, sel2.Nodes, 0) |
| } |
| |
| func TestClosestInvalid(t *testing.T) { |
| sel := Doc().Find("h4") |
| sel2 := sel.Closest("") |
| assertLength(t, sel2.Nodes, 0) |
| } |
| |
| func TestClosestMany(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.Closest(".pvk-content") |
| assertLength(t, sel2.Nodes, 2) |
| assertSelectionIs(t, sel2, "#pc1", "#pc2") |
| } |
| |
| func TestClosestRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.Closest(".pvk-content").End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestClosestSelectionItself(t *testing.T) { |
| sel := Doc2().Find(".three") |
| sel2 := sel.ClosestSelection(Doc2().Find(".row")) |
| assertLength(t, sel2.Nodes, sel.Length()) |
| } |
| |
| func TestClosestSelectionNoDupes(t *testing.T) { |
| sel := Doc().Find(".span12") |
| sel2 := sel.ClosestSelection(Doc().Find(".pvk-content")) |
| assertLength(t, sel2.Nodes, 1) |
| assertClass(t, sel2, "pvk-content") |
| } |
| |
| func TestClosestSelectionNone(t *testing.T) { |
| sel := Doc().Find("h4") |
| sel2 := sel.ClosestSelection(Doc().Find("a")) |
| assertLength(t, sel2.Nodes, 0) |
| } |
| |
| func TestClosestSelectionMany(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.ClosestSelection(Doc().Find(".pvk-content")) |
| assertLength(t, sel2.Nodes, 2) |
| assertSelectionIs(t, sel2, "#pc1", "#pc2") |
| } |
| |
| func TestClosestSelectionRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.ClosestSelection(Doc().Find(".pvk-content")).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestClosestNodesItself(t *testing.T) { |
| sel := Doc2().Find(".three") |
| sel2 := sel.ClosestNodes(Doc2().Find(".row").Nodes...) |
| assertLength(t, sel2.Nodes, sel.Length()) |
| } |
| |
| func TestClosestNodesNoDupes(t *testing.T) { |
| sel := Doc().Find(".span12") |
| sel2 := sel.ClosestNodes(Doc().Find(".pvk-content").Nodes...) |
| assertLength(t, sel2.Nodes, 1) |
| assertClass(t, sel2, "pvk-content") |
| } |
| |
| func TestClosestNodesNone(t *testing.T) { |
| sel := Doc().Find("h4") |
| sel2 := sel.ClosestNodes(Doc().Find("a").Nodes...) |
| assertLength(t, sel2.Nodes, 0) |
| } |
| |
| func TestClosestNodesMany(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.ClosestNodes(Doc().Find(".pvk-content").Nodes...) |
| assertLength(t, sel2.Nodes, 2) |
| assertSelectionIs(t, sel2, "#pc1", "#pc2") |
| } |
| |
| func TestClosestNodesRollback(t *testing.T) { |
| sel := Doc().Find(".container-fluid") |
| sel2 := sel.ClosestNodes(Doc().Find(".pvk-content").Nodes...).End() |
| assertEqual(t, sel, sel2) |
| } |
| |
| func TestIssue26(t *testing.T) { |
| img1 := `<img src="assets/images/gallery/thumb-1.jpg" alt="150x150" />` |
| img2 := `<img alt="150x150" src="assets/images/gallery/thumb-1.jpg" />` |
| cases := []struct { |
| s string |
| l int |
| }{ |
| {s: img1 + img2, l: 2}, |
| {s: img1, l: 1}, |
| {s: img2, l: 1}, |
| } |
| for _, c := range cases { |
| doc, err := NewDocumentFromReader(strings.NewReader(c.s)) |
| if err != nil { |
| t.Fatal(err) |
| } |
| sel := doc.Find("img[src]") |
| assertLength(t, sel.Nodes, c.l) |
| } |
| } |