/*
* eID Applet Project.
* Copyright (C) 2008-2009 FedICT.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version
* 3.0 as published by the Free Software Foundation.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, see
* http://www.gnu.org/licenses/.
*/
package test.unit.be.fedict.eid.applet;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.InputStream;
import java.util.Locale;
import java.util.Properties;
import java.util.ResourceBundle;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import be.fedict.eid.applet.Messages;
import be.fedict.eid.applet.Messages.MESSAGE_ID;
public class MessagesTest {
private static final Log LOG = LogFactory.getLog(MessagesTest.class);
@Test
public void getMessage() throws Exception {
Locale locale = Locale.getDefault();
Messages messages = new Messages(locale);
assertNotNull(messages.getMessage(MESSAGE_ID.INSERT_CARD_QUESTION));
LOG.debug("done msg: " + messages.getMessage(MESSAGE_ID.DONE));
}
@Test
public void testFrenchMessages() throws Exception {
Locale locale = Locale.FRENCH;
Messages messages = new Messages(locale);
String message = messages.getMessage(Messages.MESSAGE_ID.GENERIC_ERROR);
LOG.debug("message: " + message);
assertEquals("Erreur générale.", message);
}
@Test
public void testGermanMessages() throws Exception {
Locale locale = Locale.GERMAN;
Messages messages = new Messages(locale);
String message = messages.getMessage(Messages.MESSAGE_ID.INSERT_CARD_QUESTION);
LOG.debug("message: " + message);
LOG.debug("connectReader: " + messages.getMessage(Messages.MESSAGE_ID.CONNECT_READER));
}
@Test
public void testUnsupportedLanguage() throws Exception {
Locale.setDefault(new Locale("nl"));
Locale locale = Locale.JAPANESE;
Messages messages = new Messages(locale);
String message = messages.getMessage(Messages.MESSAGE_ID.GENERIC_ERROR);
LOG.debug("message: " + message);
assertEquals("Algemene fout.", message);
}
@Test
public void testUnsupportedLanguageUnsupportedDefaultLanguage() throws Exception {
Locale.setDefault(Locale.CHINESE);
Locale locale = Locale.JAPANESE;
Messages messages = new Messages(locale);
String message = messages.getMessage(Messages.MESSAGE_ID.GENERIC_ERROR);
LOG.debug("message: " + message);
assertEquals("Generic Error.", message);
}
@Test
public void testDefaultLocale() throws Exception {
Locale defaultLocale = Locale.FRENCH;
Locale.setDefault(defaultLocale);
Locale locale = Locale.ENGLISH;
Messages messages = new Messages(locale);
String message = messages.getMessage(Messages.MESSAGE_ID.GENERIC_ERROR);
LOG.debug("message: " + message);
assertEquals("Generic Error.", message);
}
@Test
public void allStringsAvailable() throws Exception {
allStringsAvailable("en");
allStringsAvailable("nl");
allStringsAvailable("fr");
allStringsAvailable("de");
}
private void allStringsAvailable(String language) throws Exception {
if (false == language.isEmpty()) {
language = "_" + language;
}
InputStream messagesInputStream = MessagesTest.class
.getResourceAsStream("/be/fedict/eid/applet/Messages" + language + ".properties");
Properties properties = new Properties();
properties.load(messagesInputStream);
for (MESSAGE_ID messageId : MESSAGE_ID.values()) {
assertTrue("missing message \"" + messageId.getId() + "\" for language \"" + language + "\"",
properties.containsKey(messageId.getId()));
}
}
@Test
public void testEncoding() throws Exception {
ResourceBundle resourceBundle = ResourceBundle.getBundle("test");
String testMessage = resourceBundle.getString("test");
LOG.debug("test message: " + testMessage);
assertEquals("é", testMessage);
}
}