/* * Copyright (C) 2003-2009 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY 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 program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.forum.rendering; import junit.framework.TestCase; import org.exoplatform.commons.testing.AssertUtils; import org.exoplatform.commons.testing.Closure; import org.exoplatform.forum.rendering.api.Renderer; import org.exoplatform.forum.rendering.api.UnsupportedSyntaxException; import org.exoplatform.forum.rendering.spi.MarkupRenderDelegate; /** * @author <a href="mailto:patrice.lamarque@exoplatform.com">Patrice Lamarque</a> * @version $Revision$ */ public class TestMarkupRenderingService extends TestCase { public void testRegisterRenderer() throws UnsupportedSyntaxException { final MarkupRenderingService service = new MarkupRenderingService(); Renderer renderer = new SampleRenderer(); service.registerRenderer(renderer); Renderer actual = service.getRenderer(renderer.getSyntax()); assertEquals(renderer, actual); AssertUtils.assertException(UnsupportedSyntaxException.class, new Closure() { public void dothis() { service.getRenderer(""); } }); AssertUtils.assertException(UnsupportedSyntaxException.class, new Closure() { public void dothis() { service.getRenderer(""); } }); } public void testDelegateRendering() { final MarkupRenderingService service = new MarkupRenderingService(); Renderer renderer = new SampleRenderer(); service.registerRenderer(renderer); SampleRenderingDelegate delegate = new SampleRenderingDelegate(); String actual = service.delegateRendering(delegate, "foo"); assertEquals("foo//processed", actual); } class SampleRenderingDelegate implements MarkupRenderDelegate<String> { public String getMarkup(String target) { return target; } public String getSyntax(String target) { return "sample"; // made to use SampleRenderer } } class SampleRenderer implements Renderer { public String getSyntax() { return "sample"; } public String render(String markup) { return markup + "//processed"; } } }