1package goquery
2
3import (
4	"testing"
5)
6
7func TestAdd(t *testing.T) {
8	sel := Doc().Find("div.row-fluid").Add("a")
9	assertLength(t, sel.Nodes, 19)
10}
11
12func TestAddInvalid(t *testing.T) {
13	sel1 := Doc().Find("div.row-fluid")
14	sel2 := sel1.Add("")
15	assertLength(t, sel1.Nodes, 9)
16	assertLength(t, sel2.Nodes, 9)
17	if sel1 == sel2 {
18		t.Errorf("selections should not be the same")
19	}
20}
21
22func TestAddRollback(t *testing.T) {
23	sel := Doc().Find(".pvk-content")
24	sel2 := sel.Add("a").End()
25	assertEqual(t, sel, sel2)
26}
27
28func TestAddSelection(t *testing.T) {
29	sel := Doc().Find("div.row-fluid")
30	sel2 := Doc().Find("a")
31	sel = sel.AddSelection(sel2)
32	assertLength(t, sel.Nodes, 19)
33}
34
35func TestAddSelectionNil(t *testing.T) {
36	sel := Doc().Find("div.row-fluid")
37	assertLength(t, sel.Nodes, 9)
38
39	sel = sel.AddSelection(nil)
40	assertLength(t, sel.Nodes, 9)
41}
42
43func TestAddSelectionRollback(t *testing.T) {
44	sel := Doc().Find(".pvk-content")
45	sel2 := sel.Find("a")
46	sel2 = sel.AddSelection(sel2).End()
47	assertEqual(t, sel, sel2)
48}
49
50func TestAddNodes(t *testing.T) {
51	sel := Doc().Find("div.pvk-gutter")
52	sel2 := Doc().Find(".pvk-content")
53	sel = sel.AddNodes(sel2.Nodes...)
54	assertLength(t, sel.Nodes, 9)
55}
56
57func TestAddNodesNone(t *testing.T) {
58	sel := Doc().Find("div.pvk-gutter").AddNodes()
59	assertLength(t, sel.Nodes, 6)
60}
61
62func TestAddNodesRollback(t *testing.T) {
63	sel := Doc().Find(".pvk-content")
64	sel2 := sel.Find("a")
65	sel2 = sel.AddNodes(sel2.Nodes...).End()
66	assertEqual(t, sel, sel2)
67}
68
69func TestAddNodesBig(t *testing.T) {
70	doc := DocW()
71	sel := doc.Find("li")
72	assertLength(t, sel.Nodes, 373)
73	sel2 := doc.Find("xyz")
74	assertLength(t, sel2.Nodes, 0)
75
76	nodes := sel.Nodes
77	sel2 = sel2.AddNodes(nodes...)
78	assertLength(t, sel2.Nodes, 373)
79	nodes2 := append(nodes, nodes...)
80	sel2 = sel2.End().AddNodes(nodes2...)
81	assertLength(t, sel2.Nodes, 373)
82	nodes3 := append(nodes2, nodes...)
83	sel2 = sel2.End().AddNodes(nodes3...)
84	assertLength(t, sel2.Nodes, 373)
85}
86
87func TestAndSelf(t *testing.T) {
88	sel := Doc().Find(".span12").Last().AndSelf()
89	assertLength(t, sel.Nodes, 2)
90}
91
92func TestAndSelfRollback(t *testing.T) {
93	sel := Doc().Find(".pvk-content")
94	sel2 := sel.Find("a").AndSelf().End().End()
95	assertEqual(t, sel, sel2)
96}
97
98func TestAddBack(t *testing.T) {
99	sel := Doc().Find(".span12").Last().AddBack()
100	assertLength(t, sel.Nodes, 2)
101}
102
103func TestAddBackRollback(t *testing.T) {
104	sel := Doc().Find(".pvk-content")
105	sel2 := sel.Find("a").AddBack().End().End()
106	assertEqual(t, sel, sel2)
107}
108
109func TestAddBackFiltered(t *testing.T) {
110	sel := Doc().Find(".span12, .footer").Find("h1").AddBackFiltered(".footer")
111	assertLength(t, sel.Nodes, 2)
112}
113
114func TestAddBackFilteredRollback(t *testing.T) {
115	sel := Doc().Find(".span12, .footer")
116	sel2 := sel.Find("h1").AddBackFiltered(".footer").End().End()
117	assertEqual(t, sel, sel2)
118}
119