/*
* Copyright (2012) Schibsted ASA
* This file is part of Possom.
*
* Possom is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Possom is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Possom. If not, see <http://www.gnu.org/licenses/>.
*
*/
package no.sesat.search.result;
import org.testng.annotations.Test;
import static org.testng.AssertJUnit.*;
public class StringChopperTest {
@Test
public void SimpleEmpty() {
assertEquals(null, StringChopper.chop(null, -1, false));
assertEquals("", StringChopper.chop("", -1, false));
assertEquals("", StringChopper.chop("", 0, false));
assertEquals("", StringChopper.chop("", 1, false));
assertEquals("", StringChopper.chop("", 2, false));
assertEquals(null, StringChopper.chop(null, -1, true));
assertEquals("", StringChopper.chop("", -1, true));
assertEquals("", StringChopper.chop("", 0, true));
assertEquals("", StringChopper.chop("", 1, true));
assertEquals("", StringChopper.chop("", 2, true));
}
@Test
public void Simple() {
assertEquals("<b>and</b><br/>fisk", StringChopper.chop("<b>and</b><br/>fisk", -1, true));
assertEquals("<b>and</b><br/>fisk", StringChopper.chop("<b>and</b><br/>fisk", 0, true));
}
@Test
public void SimpleChop() {
assertEquals("<b>a</b>", StringChopper.chop("<b>and</b><br/>fisk", 1, true));
assertEquals("<b>an</b>", StringChopper.chop("<b>and</b><br/>fisk", 2, true));
assertEquals("<b>and</b>", StringChopper.chop("<b>and</b><br/>fisk", 3, true));
assertEquals("<b>and</b><br/>f", StringChopper.chop("<b>and</b><br/>fisk", 4, true));
assertEquals("<b>and</b><br/>fi", StringChopper.chop("<b>and</b><br/>fisk", 5, true));
assertEquals("<b>and</b><br/>fis", StringChopper.chop("<b>and</b><br/>fisk", 6, true));
assertEquals("<b>and</b><br/>fisk", StringChopper.chop("<b>and</b><br/>fisk", 7, true));
assertEquals("<b>and</b><br/>fisk", StringChopper.chop("<b>and</b><br/>fisk", 8, true));
assertEquals("<b>and</b><br/>fisk", StringChopper.chop("<b>and</b><br/>fisk", 1000, true));
}
@Test
public void SimpleChopWholeWord() {
assertEquals("<b>a...</b>", StringChopper.chop("<b>and</b><br/>fisk", 1, false));
assertEquals("<b>an...</b>", StringChopper.chop("<b>and</b><br/>fisk", 2, false));
assertEquals("<b>and...</b>", StringChopper.chop("<b>and</b><br/>fisk", 3, false));
assertEquals("<b>and</b><br/>...", StringChopper.chop("<b>and</b><br/>fisk", 4, false));
assertEquals("<b>and</b><br/>...", StringChopper.chop("<b>and</b><br/>fisk", 5, false));
assertEquals("<b>and</b><br/>...", StringChopper.chop("<b>and</b><br/>fisk", 6, false));
assertEquals("<b>and</b><br/>fisk", StringChopper.chop("<b>and</b><br/>fisk", 7, false));
assertEquals("<b>and</b><br/>fisk", StringChopper.chop("<b>and</b><br/>fisk", 8, false));
assertEquals("<b>and</b><br/>fisk", StringChopper.chop("<b>and</b><br/>fisk", 9, false));
}
@Test
public void Unbalanced() {
assertEquals("<b>and</b>", StringChopper.chop("<b>and", -1, true));
assertEquals("fisk<b>and</b>", StringChopper.chop("fisk<b>and", -1, true));
}
@Test
public void CDATA() {
assertEquals("<b>and<![CDATA[ <xml>&& fisk]]> <br/>wonk</b>", StringChopper.chop("<b>and<![CDATA[ <xml>&& fisk]]> <br/>wonk", -1, true));
}
@Test
public void CDATAChop() {
assertEquals("<b>and<![CDATA[ <xm]]></b>", StringChopper.chop("<b>and<![CDATA[ <xml>&& fisk]]> <br/>wonk", 7, true));
}
@Test
public void CDATAChopWholeWord() {
assertEquals("<b>and<![CDATA[ <xml>&& ...]]></b>", StringChopper.chop("<b>and<![CDATA[ <xml>&& fisk]]> <br/>wonk", 14, false));
}
@Test
public void Comments() {
assertEquals("<!-- ups--><b>and<![CDATA[ <xml>&& ...]]></b>", StringChopper.chop("<!-- ups--><b>and<![CDATA[ <xml>&& fisk]]> <br/>wonk", 14, false));
assertEquals("<b>and<!-- ups--><![CDATA[ <xm]]></b>", StringChopper.chop("<b>and<!-- ups--><![CDATA[ <xml>&& fisk]]><!-- ups--> <br/>wonk<!-- ups-->", 7, true));
assertEquals("<b>and<!-- ups--><![CDATA[ <xml>&& fisk]]> <br/>wonk</b>", StringChopper.chop("<b>and<!-- ups--><![CDATA[ <xml>&& fisk]]> <br/>wonk", -1, true));
assertEquals("<b>a<!-- ups-->nd</b>", StringChopper.chop("<b>a<!-- ups-->nd", -1, true));
assertEquals("fi<!-- ups-->s<!-- ups-->k<b>an<!-- ups-->d<!-- ups--></b>", StringChopper.chop("fi<!-- ups-->s<!-- ups-->k<b>an<!-- ups-->d<!-- ups-->", -1, true));
}
@Test
public void Directive() {
assertEquals("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><attrib name=\"allowed_types\"> fisk</attrib>",
StringChopper.chop("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><attrib name=\"allowed_types\"> fisk", -1, false));
}
/** currently not supported
@Test
public void Doctype() {
assertEquals("<!DOCTYPE html\nPUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\";>",
StringChopper.chop("<!DOCTYPE html\nPUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\";>", -1));
}
*/
@Test
public void Morten() {
assertEquals("<attrib name=\"allowed_types\" type=\"list-string\"><member> text/html </member><member> text/plain </member></attrib>",
StringChopper.chop("<attrib name=\"allowed_types\" type=\"list-string\"><member> text/html </member><member> text/plain </member>", -1, false));
assertEquals("<attrib name=\"allowed_types\" value=\"morten er kool\"/>",
StringChopper.chop("<attrib name=\"allowed_types\" value=\"morten er kool\"/>", -1, false));
assertEquals("<attrib name=\"allowed_types\"> fisk</attrib>",
StringChopper.chop("<attrib name=\"allowed_types\"> fisk", -1, false));
}
@Test
public void Haavard() {
assertEquals("<div>wonk</div>...",
StringChopper.chop("<div>wonk</div>tonk</div>", 5, false));
}
}