/* * Copyright 2014 Attila Szegedi, Daniel Dekany, Jonathan Revusky * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package freemarker.core; import static freemarker.core.RTFOutputFormat.*; import static org.junit.Assert.*; import java.io.IOException; import java.io.StringWriter; import org.junit.Test; import freemarker.template.TemplateModelException; public class RTFOutputFormatTest { @Test public void testOutputMO() throws TemplateModelException, IOException { StringWriter out = new StringWriter(); INSTANCE.output(INSTANCE.fromMarkup("\\par Test "), out); INSTANCE.output(INSTANCE.fromPlainTextByEscaping("foo { bar } \\ "), out); INSTANCE.output(INSTANCE.fromPlainTextByEscaping("baaz "), out); INSTANCE.output(INSTANCE.fromPlainTextByEscaping("\\par qweqwe"), out); INSTANCE.output(INSTANCE.fromMarkup("\\par{0} End"), out); assertEquals( "\\par Test " + "foo \\{ bar \\} \\\\ " + "baaz " + "\\\\par qweqwe" + "\\par{0} End", out.toString()); } @Test public void testOutputString() throws TemplateModelException, IOException { StringWriter out = new StringWriter(); INSTANCE.output("a", out); INSTANCE.output("{", out); INSTANCE.output("b}c", out); assertEquals("a\\{b\\}c", out.toString()); } @Test public void testFromPlainTextByEscaping() throws TemplateModelException { String plainText = "a\\b"; TemplateRTFOutputModel mo = INSTANCE.fromPlainTextByEscaping(plainText); assertSame(plainText, mo.getPlainTextContent()); assertNull(mo.getMarkupContent()); // Not the MO's duty to calculate it! } @Test public void testFromMarkup() throws TemplateModelException { String markup = "a \\par b"; TemplateRTFOutputModel mo = INSTANCE.fromMarkup(markup); assertSame(markup, mo.getMarkupContent()); assertNull(mo.getPlainTextContent()); // Not the MO's duty to calculate it! } @Test public void testGetMarkup() throws TemplateModelException { { String markup = "a \\par b"; TemplateRTFOutputModel mo = INSTANCE.fromMarkup(markup); assertSame(markup, INSTANCE.getMarkupString(mo)); } { String safe = "abc"; TemplateRTFOutputModel mo = INSTANCE.fromPlainTextByEscaping(safe); assertSame(safe, INSTANCE.getMarkupString(mo)); } } @Test public void testConcat() throws Exception { assertMO( "ab", null, INSTANCE.concat(new TemplateRTFOutputModel("a", null), new TemplateRTFOutputModel("b", null))); assertMO( null, "ab", INSTANCE.concat(new TemplateRTFOutputModel(null, "a"), new TemplateRTFOutputModel(null, "b"))); assertMO( null, "{a}\\{b\\}", INSTANCE.concat(new TemplateRTFOutputModel(null, "{a}"), new TemplateRTFOutputModel("{b}", null))); assertMO( null, "\\{a\\}{b}", INSTANCE.concat(new TemplateRTFOutputModel("{a}", null), new TemplateRTFOutputModel(null, "{b}"))); } @Test public void testEscaplePlainText() { assertEquals("", INSTANCE.escapePlainText("")); assertEquals("a", INSTANCE.escapePlainText("a")); assertEquals("\\{a\\\\b\\}", INSTANCE.escapePlainText("{a\\b}")); assertEquals("a\\\\b", INSTANCE.escapePlainText("a\\b")); assertEquals("\\{\\}", INSTANCE.escapePlainText("{}")); } private void assertMO(String pc, String mc, TemplateRTFOutputModel mo) { assertEquals(pc, mo.getPlainTextContent()); assertEquals(mc, mo.getMarkupContent()); } @Test public void testGetMimeType() { assertEquals("text/rtf", INSTANCE.getMimeType()); } }