/******************************************************************************* * Copyright (c) 2006, 2016 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ua.tests.cheatsheet.composite; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.io.IOException; import java.io.StringReader; import javax.xml.parsers.DocumentBuilder; import org.eclipse.ui.internal.cheatsheets.CheatSheetPlugin; import org.eclipse.ui.internal.cheatsheets.composite.parser.MarkupParser; import org.junit.Test; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; public class TestMarkupParser { private Document readString(String input) { StringReader reader = new StringReader(input); InputSource source = new InputSource(reader); DocumentBuilder documentBuilder = CheatSheetPlugin.getPlugin() .getDocumentBuilder(); try { return documentBuilder.parse(source); } catch (SAXException e) { fail("SAX exception"); } catch (IOException e) { fail("IOException"); } return null; } private String parse(String input) { return MarkupParser.parseAndTrimTextMarkup(readString(input).getFirstChild()); } @Test public void testParseEmptyString() { assertEquals("", parse("<root></root>")); } @Test public void testParseTags() { assertEquals("a<b>c</b>d<b>e</b>", parse("<root>a<b>c</b>d<b>e</b></root>")); } @Test public void testParseNestedTags() { assertEquals("<p>a<b>c</b>d</p>", parse("<root><p>a<b>c</b>d</p></root>")); } @Test public void testEscape() { assertEquals("a<b>c", parse("<root>a<b>c</root>")); } @Test public void testEscapeAmpersand() { assertEquals("a&c", parse("<root>a&c</root>")); } @Test public void testNoEscapeQuotes() { assertEquals("a'b'\"c\"", parse("<root>a'b'\"c\"</root>")); } @Test public void testAttributes() { assertEquals("a<b attr1 = \"true\" attr2 = \"false\">c</b>d<b>e</b>", parse("<root>a<b attr1 = \"true\" attr2=\"false\">c</b>d<b>e</b></root>")); } @Test public void testCreateParagraphEmptyString() { assertEquals("<p></p>", MarkupParser.createParagraph("", null)); } @Test public void testCreateParagraphNoTags() { assertEquals("<p>abc</p>", MarkupParser.createParagraph("abc", null)); } @Test public void testCreateParagraphTag_p() { assertEquals("<p>abc</p>", MarkupParser.createParagraph("<p>abc</p>", null)); } @Test public void testCreateParagraphTag_br() { assertEquals("<p><br>abc</p>", MarkupParser.createParagraph("<br>abc", null)); } @Test public void testCreateParagraphTag_li() { assertEquals("<li>abc</li>", MarkupParser.createParagraph("<li>abc</li>", null)); } @Test public void testCreateParagraphWithImage_li() { assertEquals("<p><img href=\"def\"/> abc</p>", MarkupParser.createParagraph("abc", "def")); } }