package org.marketcetera.util.l10n;
import java.util.Locale;
import org.junit.Test;
import org.marketcetera.util.except.I18NException;
import org.marketcetera.util.log.I18NBoundMessage1P;
import org.marketcetera.util.log.I18NMessageProvider;
import org.marketcetera.util.test.TestCaseBase;
import static org.junit.Assert.*;
import static org.marketcetera.util.test.CollectionAssert.*;
import static org.marketcetera.util.test.UnicodeData.*;
/**
* @author tlerios@marketcetera.com
* @since 0.6.0
* @version $Id: PropertiesFileInfoTest.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class PropertiesFileInfoTest
extends TestCaseBase
{
@Test
public void english()
throws Exception
{
PropertiesFileInfo info=new PropertiesFileInfo(TestMessages.PROVIDER);
assertEquals(TestMessages.PROVIDER,info.getProvider());
assertEquals(Locale.ROOT,info.getLocale());
assertArrayPermutation
(new PropertyMessageInfo[] {
new PropertyMessageInfo
("m0.msg",0,"Text"),
new PropertyMessageInfo
("m1.msg",1,"Text {0}"),
new PropertyMessageInfo
("m2.msg",2,"Text {0} {1}"),
new PropertyMessageInfo
("m3.msg",3,"Text {0} {1} {2}"),
new PropertyMessageInfo
("m4.msg",4,"Text {0} {1} {2} {3}"),
new PropertyMessageInfo
("m5.msg",5,"Text {0} {1} {2} {3} {4}"),
new PropertyMessageInfo
("m6.msg",6,"Text {0} {1} {2} {3} {4} {5}"),
new PropertyMessageInfo
("m7.msg",7,"Text {0} {1} {2} {3} {4} {5} {6}"),
new PropertyMessageInfo
("m8.msg",8,"Text {0} {1} {2} {3} {4} {5} {6} {7}"),
new PropertyMessageInfo
("b1.ttl",0,"B Text"),
new PropertyMessageInfo
("b2.ttl",1,"B Text {0,date,full}")
},info.getMessageInfo().toArray(PropertyMessageInfo.EMPTY_ARRAY));
}
@Test
public void greek()
throws Exception
{
Locale locale=new Locale("gr");
PropertiesFileInfo info=
new PropertiesFileInfo(TestMessages.PROVIDER,locale);
assertEquals(TestMessages.PROVIDER,info.getProvider());
assertEquals(locale,info.getLocale());
assertArrayPermutation
(new PropertyMessageInfo[] {
new PropertyMessageInfo
("m2.msg",2,HELLO_GR+" {1} {1} {1}"),
new PropertyMessageInfo
("m3.msg",5,"{0}: {1,choice,0#|1#{2}}{3,choice,0#|1#({4})}")
},info.getMessageInfo().toArray(PropertyMessageInfo.EMPTY_ARRAY));
}
@Test
public void badText()
{
try {
new PropertiesFileInfo(TestMessages.PROVIDER,Locale.GERMAN);
fail();
} catch (I18NException ex) {
assertEquals
(ex.getDetail(),
new I18NBoundMessage1P(Messages.BAD_TEXT,"{0"),
ex.getI18NBoundMessage());
}
}
@Test
public void missingFile()
{
try {
new PropertiesFileInfo(TestMessages.PROVIDER,Locale.FRENCH);
fail();
} catch (I18NException ex) {
assertEquals
(ex.getDetail(),
new I18NBoundMessage1P
(Messages.NONEXISTENT_RESOURCE,
"util_l10n_test"+I18NMessageProvider.MESSAGE_FILE_EXTENSION+
"_fr.properties"),
ex.getI18NBoundMessage());
}
}
}