package fr.mch.mdo.i18n;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.Properties;
import junit.framework.Test;
import junit.framework.TestSuite;
import fr.mch.mdo.i18n.IMessageQuery;
import fr.mch.mdo.i18n.MessageQueryResourceBundleImpl;
import fr.mch.mdo.test.MdoTestCase;
/**
* This class is used to test log messages from a properties file
*
* @author Mathieu
*
*/
public class MessageQueryResourceBundleImplTest extends MdoTestCase
{
/**
* Create the test case
*
* @param testName
* name of the test case
*/
public MessageQueryResourceBundleImplTest(String testName) {
super(testName);
}
/**
* @return the suite of tests being tested
*/
public static Test suite() {
return new TestSuite(MessageQueryResourceBundleImplTest.class);
}
public void testMessageQueryResourceBundleImpl() {
IMessageQuery messageQuery = new MessageQueryResourceBundleImpl(MessageQueryResourceBundleImplTest.class.getName());
String query = "my.key.en.fr";
String value = "Impossible de sauver un objet {0} : {1}";
Object[] params = new Object[] { "1", "2" };
assertEquals("Message must equal to value", value, messageQuery.getMessage(query));
assertEquals("Message must equal to value with parameters", MessageFormat.format(value, params), messageQuery.getMessage(query, params));
messageQuery = new MessageQueryResourceBundleImpl(MessageQueryResourceBundleImplTest.class.getName(), null);
query = "my.key.en.fr";
value = "Impossible de sauver un objet {0} : {1}";
params = new Object[] { "1", "2" };
assertEquals("Message must equal to value", value, messageQuery.getMessage(query));
assertEquals("Message must equal to value with parameters", MessageFormat.format(value, params), messageQuery.getMessage(query, params));
messageQuery = new MessageQueryResourceBundleImpl(MessageQueryResourceBundleImplTest.class.getName(), Locale.ENGLISH);
query = "my.key.en.fr";
value = "Could not save an object {0} : {1}";
params = new Object[] { "1", "2" };
assertEquals("Message must equal to value", value, messageQuery.getMessage(query));
assertEquals("Message must equal to value with parameters", MessageFormat.format(value, params), messageQuery.getMessage(query, params));
}
/**
* Test all getMessage methods
*/
public void testGetMessage() {
// The resource file does not exist
IMessageQuery messageQuery = new MessageQueryResourceBundleImpl("");
String query = "query";
assertEquals("Message must equal to query", query, messageQuery.getMessage(query));
assertEquals("Message must equal to query", query, messageQuery.getMessage(query, new String[] { "1", "2" }));
// The resource file does exist
messageQuery = new MessageQueryResourceBundleImpl(MessageQueryResourceBundleImplTest.class.getName());
// Query does not exist
query = "query";
assertEquals("Message must equal to query", query, messageQuery.getMessage(query));
assertEquals("Message must equal to query", query, messageQuery.getMessage(query, new String[] { "1", "2" }));
// Query does exist
// Key does exist in the resource file
query = "my.key";
String value = "Impossible de sauver l''objet {0} : {1}";
Properties properties = new Properties();
properties.setProperty(query, value);
// Add new properties
updatePropertiesFile(MessageQueryResourceBundleImplTest.class, properties, false);
try {
// The resource file does exist
messageQuery = new MessageQueryResourceBundleImpl(MessageQueryResourceBundleImplTest.class.getName());
assertEquals("Message must equal to value", value.replaceFirst("'", ""), messageQuery.getMessage(query));
assertEquals("Message must equal to value with parameters", "Impossible de sauver l'objet 1 : 2", messageQuery.getMessage(query, new String[] { "1", "2" }));
} finally {
// Remove new properties
updatePropertiesFile(MessageQueryResourceBundleImplTest.class, properties, true);
}
}
}