@@ -42,7 +42,67 @@ public class ElementTest {
42
42
List <Element > empty = doc .getElementsByTag ("wtf" );
43
43
assertEquals (0 , empty .size ());
44
44
}
45
-
45
+
46
+ @ Test public void up () {
47
+ Document doc = Jsoup .parse (reference );
48
+ Element div2 = doc .getElementById ("div2" );
49
+ assertNotNull (div2 );
50
+
51
+ Element div1 = div2 .up ("div#div1" );
52
+ assertNotNull (div1 );
53
+ assertEquals ("div1" , div1 .id ());
54
+
55
+ Element invalid = div2 .up ("img.invalid" );
56
+ assertNull (invalid );
57
+ }
58
+
59
+ @ Test public void down () {
60
+ Document doc = Jsoup .parse (reference );
61
+ Element div1 = doc .getElementById ("div1" );
62
+ assertNotNull (div1 );
63
+
64
+ Element el = div1 .down ("div#div2 > img[src^=foo]" );
65
+ assertNotNull (el );
66
+ assertEquals ("img" , el .tagName ().toLowerCase ());
67
+ assertEquals ("foo.png" , el .attr ("src" ));
68
+ }
69
+
70
+ @ Test public void next () {
71
+ Document doc = Jsoup .parse (reference );
72
+ Elements ps = doc .getElementsByTag ("p" );
73
+ assertEquals (2 , ps .size ());
74
+
75
+ Element el = ps .first ().next ("div#div2" );
76
+ assertNotNull (el );
77
+ assertEquals ("div2" , el .id ());
78
+ }
79
+
80
+ @ Test public void previous () {
81
+ Document doc = Jsoup .parse (reference );
82
+ Element div2 = doc .getElementById ("div2" );
83
+ assertNotNull (div2 );
84
+
85
+ Element el = div2 .previous ("p + p" );
86
+ assertNotNull (el );
87
+ assertEquals ("Another element" , el .text ());
88
+ }
89
+
90
+ @ Test public void chained () {
91
+ Document doc = Jsoup .parse (reference );
92
+ Element div1 = doc .getElementById ("div1" );
93
+ assertNotNull (div1 );
94
+
95
+ Element el = div1
96
+ .down ("img" )
97
+ .up ("div" )
98
+ .previous ("p" )
99
+ .previous ("p" )
100
+ .next ("p" )
101
+ .down ("b" );
102
+ assertNotNull (el );
103
+ assertEquals ("element" , el .text ());
104
+ }
105
+
46
106
@ Test public void getNamespacedElementsByTag () {
47
107
Document doc = Jsoup .parse ("<div><abc:def id=1>Hello</abc:def></div>" );
48
108
Elements els = doc .getElementsByTag ("abc:def" );
@@ -63,7 +123,7 @@ public class ElementTest {
63
123
Element span = div2 .child (0 ).getElementById ("2" ); // called from <p> context should be span
64
124
assertEquals ("span" , span .tagName ());
65
125
}
66
-
126
+
67
127
@ Test public void testGetText () {
68
128
Document doc = Jsoup .parse (reference );
69
129
assertEquals ("Hello Another element" , doc .text ());
@@ -127,7 +187,7 @@ public class ElementTest {
127
187
assertEquals ("body" , parents .get (2 ).tagName ());
128
188
assertEquals ("html" , parents .get (3 ).tagName ());
129
189
}
130
-
190
+
131
191
@ Test public void testElementSiblingIndex () {
132
192
Document doc = Jsoup .parse ("<div><p>One</p>...<p>Two</p>...<p>Three</p>" );
133
193
Elements ps = doc .select ("p" );
@@ -180,7 +240,7 @@ public class ElementTest {
180
240
List <Element > none = doc .getElementsByAttributeValue ("style" , "none" );
181
241
assertEquals (0 , none .size ());
182
242
}
183
-
243
+
184
244
@ Test public void testClassDomMethods () {
185
245
Document doc = Jsoup .parse ("<div><span class='mellow yellow'>Hello <b>Yellow</b></span></div>" );
186
246
List <Element > els = doc .getElementsByAttribute ("class" );
@@ -225,7 +285,7 @@ public class ElementTest {
225
285
Document doc = Jsoup .parse ("<title>Format test</title><div><p>Hello <span>jsoup <span>users</span></span></p><p>Good.</p></div>" );
226
286
assertEquals ("<html>\n <head>\n <title>Format test</title>\n </head>\n <body>\n <div>\n <p>Hello <span>jsoup <span>users</span></span></p>\n <p>Good.</p>\n </div>\n </body>\n </html>" , doc .html ());
227
287
}
228
-
288
+
229
289
@ Test public void testFormatOutline () {
230
290
Document doc = Jsoup .parse ("<title>Format test</title><div><p>Hello <span>jsoup <span>users</span></span></p><p>Good.</p></div>" );
231
291
doc .outputSettings ().outline (true );
@@ -246,7 +306,7 @@ public class ElementTest {
246
306
Element div = doc .select ("div" ).first ();
247
307
assertEquals (" \n <p>Hello\n there\n </p>" , div .html ());
248
308
}
249
-
309
+
250
310
@ Test public void testEmptyElementFormatHtml () {
251
311
// don't put newlines into empty blocks
252
312
Document doc = Jsoup .parse ("<section><div></div></section>" );
@@ -276,7 +336,7 @@ public class ElementTest {
276
336
assertEquals ("Gone" , div .text ());
277
337
assertEquals (0 , doc .select ("p" ).size ());
278
338
}
279
-
339
+
280
340
@ Test public void testAddNewElement () {
281
341
Document doc = Jsoup .parse ("<div id=1><p>Hello</p></div>" );
282
342
Element div = doc .getElementById ("1" );
@@ -313,30 +373,30 @@ public class ElementTest {
313
373
assertEquals (i , ps .get (i ).siblingIndex );
314
374
}
315
375
}
316
-
376
+
317
377
@ Test public void testPrependElement () {
318
378
Document doc = Jsoup .parse ("<div id=1><p>Hello</p></div>" );
319
379
Element div = doc .getElementById ("1" );
320
380
div .prependElement ("p" ).text ("Before" );
321
381
assertEquals ("Before" , div .child (0 ).text ());
322
382
assertEquals ("Hello" , div .child (1 ).text ());
323
383
}
324
-
384
+
325
385
@ Test public void testAddNewText () {
326
386
Document doc = Jsoup .parse ("<div id=1><p>Hello</p></div>" );
327
387
Element div = doc .getElementById ("1" );
328
388
div .appendText (" there & now >" );
329
389
assertEquals ("<p>Hello</p> there & now >" , TextUtil .stripNewlines (div .html ()));
330
390
}
331
-
391
+
332
392
@ Test public void testPrependText () {
333
393
Document doc = Jsoup .parse ("<div id=1><p>Hello</p></div>" );
334
394
Element div = doc .getElementById ("1" );
335
395
div .prependText ("there & now > " );
336
396
assertEquals ("there & now > Hello" , div .text ());
337
397
assertEquals ("there & now > <p>Hello</p>" , TextUtil .stripNewlines (div .html ()));
338
398
}
339
-
399
+
340
400
@ Test public void testAddNewHtml () {
341
401
Document doc = Jsoup .parse ("<div id=1><p>Hello</p></div>" );
342
402
Element div = doc .getElementById ("1" );
@@ -349,7 +409,7 @@ public class ElementTest {
349
409
assertEquals (i , ps .get (i ).siblingIndex );
350
410
}
351
411
}
352
-
412
+
353
413
@ Test public void testPrependNewHtml () {
354
414
Document doc = Jsoup .parse ("<div id=1><p>Hello</p></div>" );
355
415
Element div = doc .getElementById ("1" );
@@ -362,7 +422,7 @@ public class ElementTest {
362
422
assertEquals (i , ps .get (i ).siblingIndex );
363
423
}
364
424
}
365
-
425
+
366
426
@ Test public void testSetHtml () {
367
427
Document doc = Jsoup .parse ("<div id=1><p>Hello</p></div>" );
368
428
Element div = doc .getElementById ("1" );
@@ -377,28 +437,28 @@ public class ElementTest {
377
437
assertEquals ("<div><div class=\" head\" ><p>Hello</p></div><p>There</p></div>" , TextUtil .stripNewlines (doc .body ().html ()));
378
438
379
439
Element ret = p .wrap ("<div><div class=foo></div><p>What?</p></div>" );
380
- assertEquals ("<div><div class=\" head\" ><div><div class=\" foo\" ><p>Hello</p></div><p>What?</p></div></div><p>There</p></div>" ,
440
+ assertEquals ("<div><div class=\" head\" ><div><div class=\" foo\" ><p>Hello</p></div><p>What?</p></div></div><p>There</p></div>" ,
381
441
TextUtil .stripNewlines (doc .body ().html ()));
382
442
383
443
assertEquals (ret , p );
384
444
}
385
-
445
+
386
446
@ Test public void before () {
387
447
Document doc = Jsoup .parse ("<div><p>Hello</p><p>There</p></div>" );
388
448
Element p1 = doc .select ("p" ).first ();
389
449
p1 .before ("<div>one</div><div>two</div>" );
390
450
assertEquals ("<div><div>one</div><div>two</div><p>Hello</p><p>There</p></div>" , TextUtil .stripNewlines (doc .body ().html ()));
391
-
451
+
392
452
doc .select ("p" ).last ().before ("<p>Three</p><!-- four -->" );
393
453
assertEquals ("<div><div>one</div><div>two</div><p>Hello</p><p>Three</p><!-- four --><p>There</p></div>" , TextUtil .stripNewlines (doc .body ().html ()));
394
454
}
395
-
455
+
396
456
@ Test public void after () {
397
457
Document doc = Jsoup .parse ("<div><p>Hello</p><p>There</p></div>" );
398
458
Element p1 = doc .select ("p" ).first ();
399
459
p1 .after ("<div>one</div><div>two</div>" );
400
460
assertEquals ("<div><p>Hello</p><div>one</div><div>two</div><p>There</p></div>" , TextUtil .stripNewlines (doc .body ().html ()));
401
-
461
+
402
462
doc .select ("p" ).last ().after ("<p>Three</p><!-- four -->" );
403
463
assertEquals ("<div><p>Hello</p><div>one</div><div>two</div><p>There</p><p>Three</p><!-- four --></div>" , TextUtil .stripNewlines (doc .body ().html ()));
404
464
}
0 commit comments