package org.jsoup.nodes;
import org.jsoup.Jsoup;
import org.jsoup.TextUtil;
import org.junit.Test;
import static org.junit.Assert.*;
/**
Test TextNodes
@author Jonathan Hedley, jonathan@hedley.net */
public class TextNodeTest {
@Test public void testBlank() {
TextNode one = new TextNode("", "");
TextNode two = new TextNode(" ", "");
TextNode three = new TextNode(" \n\n ", "");
TextNode four = new TextNode("Hello", "");
TextNode five = new TextNode(" \nHello ", "");
assertTrue(one.isBlank());
assertTrue(two.isBlank());
assertTrue(three.isBlank());
assertFalse(four.isBlank());
assertFalse(five.isBlank());
}
@Test public void testTextBean() {
Document doc = Jsoup.parse("<p>One <span>two &</span> three &</p>");
Element p = doc.select("p").first();
Element span = doc.select("span").first();
assertEquals("two &", span.text());
TextNode spanText = (TextNode) span.childNode(0);
assertEquals("two &", spanText.text());
TextNode tn = (TextNode) p.childNode(2);
assertEquals(" three &", tn.text());
tn.text(" POW!");
assertEquals("One <span>two &</span> POW!", TextUtil.stripNewlines(p.html()));
tn.attr("text", "kablam &");
assertEquals("kablam &", tn.text());
assertEquals("One <span>two &</span>kablam &", TextUtil.stripNewlines(p.html()));
}
@Test public void testSplitText() {
Document doc = Jsoup.parse("<div>Hello there</div>");
Element div = doc.select("div").first();
TextNode tn = (TextNode) div.childNode(0);
TextNode tail = tn.splitText(6);
assertEquals("Hello ", tn.getWholeText());
assertEquals("there", tail.getWholeText());
tail.text("there!");
assertEquals("Hello there!", div.text());
assertTrue(tn.parent() == tail.parent());
}
@Test public void testSplitAnEmbolden() {
Document doc = Jsoup.parse("<div>Hello there</div>");
Element div = doc.select("div").first();
TextNode tn = (TextNode) div.childNode(0);
TextNode tail = tn.splitText(6);
tail.wrap("<b></b>");
assertEquals("Hello <b>there</b>", TextUtil.stripNewlines(div.html())); // not great that we get \n<b>there there... must correct
}
@Test public void testWithSupplementaryCharacter(){
Document doc = Jsoup.parse(new String(Character.toChars(135361)));
TextNode t = doc.body().textNodes().get(0);
assertEquals(new String(Character.toChars(135361)), t.outerHtml().trim());
}
}