package fitnesse.wikitext.parser;
import org.junit.Test;
import fitnesse.html.HtmlElement;
public class ListTest {
@Test
public void scansLists() {
ParserTestHelper.assertScansTokenType(" * item", "UnorderedList", true);
ParserTestHelper.assertScansTokenType(" *item", "UnorderedList", true);
ParserTestHelper.assertScansTokenType(" * item", "UnorderedList", true);
ParserTestHelper.assertScansTokenType("* item", "UnorderedList", false);
ParserTestHelper.assertScansTokenType(" 1 item", "OrderedList", true);
ParserTestHelper.assertScansTokenType(" 9 item", "OrderedList", true);
ParserTestHelper.assertScansTokenType("1 item", "OrderedList", false);
}
@Test
public void translatesUnorderedLists() {
ParserTestHelper.assertTranslatesTo(" * item1\n * item2\n",
list("ul", 0) + listItem("item1", 1) + listItem("item2", 1) + list("/ul", 0));
}
@Test
public void overridesNestedPairRule() {
ParserTestHelper.assertTranslatesTo(" * item--1\n--",
list("ul", 0) + listItem("item--1", 1) + list("/ul", 0) + "--");
}
private String list(String tag, int level) {
return indent(level) + "<" + tag + ">" + HtmlElement.endl;
}
private String listItem(String item, int level) {
return indent(level) + "<li>" + item + "</li>" + HtmlElement.endl;
}
private String indent(int level) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < level; i++) result.append("\t");
return result.toString();
}
@Test
public void translatesNestedLists() {
ParserTestHelper.assertTranslatesTo(" * item1\n * item2\n * item3\n",
list("ul", 0) +
listItem("item1" + list("ul", 0) + listItem("item2", 1) + listItem("item3", 1) + list("/ul", 0), 1) +
list("/ul", 0));
}
@Test
public void translatesMultipleNestedLists() {
ParserTestHelper.assertTranslatesTo(" * item1\n * item11\n * item2\n * item21\n",
list("ul", 0) +
listItem("item1" + list("ul", 0) + listItem("item11", 1) + list("/ul", 0), 1) +
listItem("item2" + list("ul", 0) + listItem("item21", 1) + list("/ul", 0), 1) +
list("/ul", 0));
}
@Test
public void translatesOrderedLists() {
ParserTestHelper.assertTranslatesTo(" 1 item1\n 2 item2\n",
list("ol", 0) + listItem("item1", 1) + listItem("item2", 1) + list("/ol", 0));
}
@Test
public void translatesNestedMixedLists() {
ParserTestHelper.assertTranslatesTo(" * item1\n 1 item2\n",
list("ul", 0) +
listItem("item1" + list("ol", 0) + listItem("item2", 1) + list("/ol", 0), 1) +
list("/ul", 0));
}
}