package net.jhorstmann.i18n.xgettext.web; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import net.jhorstmann.i18n.tools.MessageBundle; import net.jhorstmann.i18n.tools.xgettext.MessageExtractorException; import org.fedorahosted.tennera.jgettext.Message; import org.junit.Assert; import org.junit.Test; import org.xml.sax.InputSource; import org.xml.sax.SAXException; public class ExtractFunctionsTest { private MessageBundle parseFunctions() throws IOException, MessageExtractorException { MessageBundle bundle = new MessageBundle(); InputSource input = new InputSource(getClass().getResourceAsStream("test_functions.xhtml")); input.setSystemId("test_functions.xhtml"); new WebMessageExtractor(bundle).extractMessages(input); Assert.assertFalse(bundle.isEmpty()); Assert.assertEquals(5, bundle.size()); return bundle; } @Test public void functionMessage() throws IOException, MessageExtractorException { MessageBundle bundle = parseFunctions(); Message msg = bundle.getMessage("Hello World"); Assert.assertNotNull(msg); Assert.assertEquals(1, msg.getSourceReferences().size()); Assert.assertEquals("Hello World", msg.getMsgid()); Assert.assertNull(msg.getMsgctxt()); } @Test public void functionMessageWithParameters() throws IOException, MessageExtractorException { MessageBundle bundle = parseFunctions(); Message msg = bundle.getMessage("This is a test with parameters {0}, {1} and {2}"); Assert.assertNotNull(msg); Assert.assertEquals(1, msg.getSourceReferences().size()); Assert.assertEquals("This is a test with parameters {0}, {1} and {2}", msg.getMsgid()); Assert.assertNull(msg.getMsgctxt()); } @Test public void functionMessageWithContext() throws IOException, MessageExtractorException { MessageBundle bundle = parseFunctions(); Message msgWithContext = bundle.getMessage("Hello World (title)", "Hello World"); Assert.assertNotNull(msgWithContext); Assert.assertEquals(1, msgWithContext.getSourceReferences().size()); Assert.assertTrue(msgWithContext.getSourceReferences().get(0).endsWith("test_functions.xhtml:5")); Assert.assertEquals("Hello World", msgWithContext.getMsgid()); Assert.assertEquals("Hello World (title)", msgWithContext.getMsgctxt()); } @Test public void functionMessageWithPlural() throws IOException, MessageExtractorException { MessageBundle bundle = parseFunctions(); Message msgWithPlural = bundle.getMessage("This is a test"); Assert.assertNotNull(msgWithPlural); Assert.assertEquals(1, msgWithPlural.getSourceReferences().size()); Assert.assertEquals("This is a test", msgWithPlural.getMsgid()); Assert.assertEquals("These are {0} tests", msgWithPlural.getMsgidPlural()); } @Test public void functionMessageWithContextAndPlural() throws ParserConfigurationException, SAXException, IOException, MessageExtractorException { MessageBundle bundle = parseFunctions(); Message msgWithContextAndPlural = bundle.getMessage("This is a test (with context)", "This is a test"); Assert.assertNotNull(msgWithContextAndPlural); Assert.assertEquals(1, msgWithContextAndPlural.getSourceReferences().size()); Assert.assertEquals("This is a test", msgWithContextAndPlural.getMsgid()); Assert.assertEquals("This is a test (with context)", msgWithContextAndPlural.getMsgctxt()); Assert.assertEquals("These are {0} tests", msgWithContextAndPlural.getMsgidPlural()); } }