/* * Copyright Red Hat Inc. and/or its affiliates and other contributors * as indicated by the authors tag. All rights reserved. * * This copyrighted material is made available to anyone wishing to use, * modify, copy, or redistribute it subject to the terms and conditions * of the GNU General Public License version 2. * * This particular file is subject to the "Classpath" exception as provided in the * LICENSE file that accompanied this code. * * This program is distributed in the hope that it will be useful, but WITHOUT A * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License, * along with this distribution; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ package com.redhat.ceylon.tools.help; import java.io.StringWriter; import java.util.List; import junit.framework.Assert; import org.junit.Test; import org.tautua.markdownpapers.HtmlEmitter; import org.tautua.markdownpapers.ast.Document; import org.tautua.markdownpapers.ast.Node; import com.redhat.ceylon.common.tools.help.Markdown; import com.redhat.ceylon.common.tools.help.Markdown.Section; public class MarkdownTests { private String html(Node sectionBody) { StringWriter sw = new StringWriter(); HtmlEmitter emitter = new HtmlEmitter(sw); sectionBody.accept(emitter); return sw.toString(); } @Test public void testSplit() { Document doc = Markdown.markdown("Some stuff\n" + "\n" + "# First `H1`\n" + "\n" + "A sentence\n" + "\n" + "## `H2` under first `H1`" + "\n" + "A sentence\n" + "\n" + "# Second `H1`\n" + "\n" + "A sentence\n" + "\n" + "## `H2` under second `H1`" + "\n" + "A sentence\n" + "\n"); List<Section> sections = Markdown.extractSections(doc); Assert.assertEquals(3, sections.size()); Section section = sections.get(0); Assert.assertNull(section.getHeading()); Document sectionBody = section.getDoc(); Assert.assertEquals("<p>Some stuff</p>", html(sectionBody).trim()); section = sections.get(1); Assert.assertEquals("<h1> First <code>H1</code></h1>", html(section.getHeading()).trim()); sectionBody = section.getDoc(); Assert.assertEquals(""+ "<p>A sentence</p>\n"+ "\n"+ "<h2> <code>H2</code> under first <code>H1</code></h2>\n"+ "\n"+ "<p>A sentence</p>", html(sectionBody).trim()); section = sections.get(2); Assert.assertEquals("<h1> Second <code>H1</code></h1>", html(section.getHeading()).trim()); sectionBody = section.getDoc(); Assert.assertEquals(""+ "<p>A sentence</p>\n"+ "\n"+ "<h2> <code>H2</code> under second <code>H1</code></h2>\n"+ "\n"+ "<p>A sentence</p>", html(sectionBody).trim()); } @Test public void testAdjustHeadings() { Document doc = Markdown.markdown("Some stuff\n" + "\n" + "# First `H1`\n" + "\n" + "A sentence\n" + "\n" + "## `H2` under first `H1`" + "\n" + "A sentence"); Markdown.adjustHeadings(doc, 1); Assert.assertEquals("<p>Some stuff</p>\n"+ "\n"+ "<h2> First <code>H1</code></h2>\n"+ "\n"+ "<p>A sentence</p>\n"+ "\n"+ "<h3> <code>H2</code> under first <code>H1</code></h3>\n"+ "\n"+ "<p>A sentence</p>\n", html(doc)); } }