blob: 5627555327b897c95368fc14c37dbf84cbdf9ae8 [file] [log] [blame]
package org.chromium.distiller.webdocument.filters;
import org.chromium.distiller.DomDistillerJsTestCase;
import org.chromium.distiller.webdocument.TestWebDocumentBuilder;
import org.chromium.distiller.webdocument.WebDocument;
import org.chromium.distiller.webdocument.WebTag;
public class NestedElementRetainerTest extends DomDistillerJsTestCase {
public void testOrderedListStructure() {
TestWebDocumentBuilder builder = new TestWebDocumentBuilder();
WebTag olStart = builder.addTagStart();
WebTag liStart = builder.addTagStart();
builder.addText("text 1").setIsContent(false);
WebTag liEnd = builder.addTagEnd();
WebTag liStart2 = builder.addTagStart();
builder.addText("text 2").setIsContent(false);
WebTag liEnd2 = builder.addTagEnd();
WebTag liStart3 = builder.addTagStart();
builder.addText("text 3").setIsContent(true);
WebTag liEnd3 = builder.addTagEnd();
WebTag olEnd = builder.addTagEnd();
WebDocument document = builder.build();
NestedElementRetainer.process(document);
assertTrue(olStart.getIsContent());
assertFalse(liStart.getIsContent());
assertFalse(liEnd.getIsContent());
assertFalse(liStart2.getIsContent());
assertFalse(liEnd2.getIsContent());
assertTrue(liStart3.getIsContent());
assertTrue(liEnd3.getIsContent());
assertTrue(olEnd.getIsContent());
}
public void testUnorderedListStructure() {
TestWebDocumentBuilder builder = new TestWebDocumentBuilder();
WebTag ulStart = builder.addTagStart();
WebTag liStart = builder.addTagStart();
builder.addText("text 1").setIsContent(true);
WebTag ulStart2 = builder.addTagStart();
WebTag liStart2 = builder.addTagStart();
builder.addText("text 2").setIsContent(false);
WebTag liEnd2 = builder.addTagEnd();
WebTag ulEnd2 = builder.addTagEnd();
WebTag liEnd = builder.addTagEnd();
WebTag ulEnd = builder.addTagEnd();
WebDocument document = builder.build();
NestedElementRetainer.process(document);
assertTrue(ulStart.getIsContent());
assertTrue(liStart.getIsContent());
assertFalse(ulStart2.getIsContent());
assertFalse(liStart2.getIsContent());
assertFalse(liEnd2.getIsContent());
assertFalse(ulEnd2.getIsContent());
assertTrue(liEnd.getIsContent());
assertTrue(ulEnd.getIsContent());
}
public void testContentFromListStrcture() {
TestWebDocumentBuilder builder = new TestWebDocumentBuilder();
WebTag olStartLevel1 = builder.addTagStart();
WebTag olStartLevel2 = builder.addTagStart();
WebTag liStart1 = builder.addTagStart();
builder.addText("text 1").setIsContent(false);
WebTag liEnd1 = builder.addTagEnd();
WebTag olStartLevel3 = builder.addTagStart();
WebTag liStart2 = builder.addTagStart();
builder.addText("text 2").setIsContent(true);
WebTag liEnd2 = builder.addTagEnd();
WebTag olStartLevel4 = builder.addTagStart();
WebTag liStart3 = builder.addTagStart();
builder.addText("text 3").setIsContent(false);
WebTag liEnd3 = builder.addTagEnd();
WebTag liStart4 = builder.addTagStart();
builder.addText("text 4").setIsContent(false);
WebTag liEnd4 = builder.addTagEnd();
WebTag liStart5 = builder.addTagStart();
builder.addText("text 5").setIsContent(false);
WebTag liEnd5 = builder.addTagEnd();
WebTag liStart6 = builder.addTagStart();
builder.addText("text 6").setIsContent(false);
WebTag liEnd6 = builder.addTagEnd();
WebTag olEndLevel4 = builder.addTagEnd();
WebTag olEndLevel3 = builder.addTagEnd();
WebTag liStart7 = builder.addTagStart();
builder.addText("text 7").setIsContent(true);
WebTag liEnd7 = builder.addTagEnd();
WebTag olEndLevel2 = builder.addTagEnd();
WebTag olEndLevel1 = builder.addTagEnd();
WebDocument document = builder.build();
NestedElementRetainer.process(document);
assertTrue(olStartLevel1.getIsContent());
assertTrue(olStartLevel2.getIsContent());
assertFalse(liStart1.getIsContent());
assertFalse(liEnd1.getIsContent());
assertTrue(olStartLevel3.getIsContent());
assertTrue(liStart2.getIsContent());
assertTrue(liEnd2.getIsContent());
assertFalse(olStartLevel4.getIsContent());
assertFalse(liStart3.getIsContent());
assertFalse(liEnd3.getIsContent());
assertFalse(liStart4.getIsContent());
assertFalse(liEnd4.getIsContent());
assertFalse(liStart5.getIsContent());
assertFalse(liEnd5.getIsContent());
assertFalse(liStart6.getIsContent());
assertFalse(liEnd6.getIsContent());
assertFalse(olEndLevel4.getIsContent());
assertTrue(olEndLevel3.getIsContent());
assertTrue(liStart7.getIsContent());
assertTrue(liEnd7.getIsContent());
assertTrue(olEndLevel2.getIsContent());
assertTrue(olEndLevel1.getIsContent());
}
public void testNoContentFromListStructure() {
TestWebDocumentBuilder builder = new TestWebDocumentBuilder();
WebTag olStartLevel1 = builder.addTagStart();
WebTag olStartLevel2 = builder.addTagStart();
WebTag liStart1 = builder.addTagStart();
builder.addText("text 1").setIsContent(false);
WebTag liEnd1 = builder.addTagEnd();
WebTag olStartLevel4 = builder.addTagStart();
WebTag liStart3 = builder.addTagStart();
builder.addText("text 3").setIsContent(false);
WebTag liEnd3 = builder.addTagEnd();
WebTag liStart4 = builder.addTagStart();
builder.addText("text 4").setIsContent(false);
WebTag liEnd4 = builder.addTagEnd();
WebTag liStart5 = builder.addTagStart();
builder.addText("text 5").setIsContent(false);
WebTag liEnd5 = builder.addTagEnd();
WebTag liStart6 = builder.addTagStart();
builder.addText("text 6").setIsContent(false);
WebTag liEnd6 = builder.addTagEnd();
WebTag olEndLevel4 = builder.addTagEnd();
WebTag olEndLevel2 = builder.addTagEnd();
WebTag olEndLevel1 = builder.addTagEnd();
WebDocument document = builder.build();
NestedElementRetainer.process(document);
assertFalse(olStartLevel1.getIsContent());
assertFalse(olStartLevel2.getIsContent());
assertFalse(liStart1.getIsContent());
assertFalse(liEnd1.getIsContent());
assertFalse(olStartLevel4.getIsContent());
assertFalse(liStart3.getIsContent());
assertFalse(liEnd3.getIsContent());
assertFalse(liStart4.getIsContent());
assertFalse(liEnd4.getIsContent());
assertFalse(liStart5.getIsContent());
assertFalse(liEnd5.getIsContent());
assertFalse(liStart6.getIsContent());
assertFalse(liEnd6.getIsContent());
assertFalse(olEndLevel4.getIsContent());
assertFalse(olEndLevel2.getIsContent());
assertFalse(olEndLevel1.getIsContent());
}
public void testNestedListStructure() {
TestWebDocumentBuilder builder = new TestWebDocumentBuilder();
WebTag ulStart = builder.addTagStart();
WebTag liStart = builder.addTagStart();
builder.addText("text 1").setIsContent(true);
WebTag liEnd = builder.addTagEnd();
WebTag olStart = builder.addTagStart();
WebTag liOLStart = builder.addTagStart();
builder.addText("text 2").setIsContent(true);
WebTag liOLEnd = builder.addTagEnd();
WebTag olEnd = builder.addTagEnd();
WebTag ulEnd = builder.addTagEnd();
WebDocument document = builder.build();
NestedElementRetainer.process(document);
assertTrue(ulStart.getIsContent());
assertTrue(liStart.getIsContent());
assertTrue(olStart.getIsContent());
assertTrue(liOLStart.getIsContent());
assertTrue(liOLEnd.getIsContent());
assertTrue(olEnd.getIsContent());
assertTrue(liEnd.getIsContent());
assertTrue(ulEnd.getIsContent());
}
}