package skrueger.i8n; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.After; import org.junit.Before; import org.junit.Test; import schmitzm.junit.TestingClass; public class TranslationTest extends TestingClass { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testCopyToAndEquals() { Translation t = new Translation(); Translation t2 = new Translation(); t.put("de", "berg"); t.put("en", "mountain"); t.copyTo(t2); assertEquals(t2.keySet(), t.keySet()); assertEquals(t2.toOneLine(), t.toOneLine()); assertEquals(t2, t); assertEquals(t.copyTo(null), t); } @Test public void testCopyAndClone() { Translation t = new Translation(); t.put("de", "berg"); t.put("en", "mountain"); Translation t2 = t.copy(); assertEquals(t2, t); Translation t3 = t2.clone(); assertEquals(t3, t); } @Test public void testActiveLangChanges() { Translation t = new Translation(); final AtomicBoolean calledAl = new AtomicBoolean(false); final AtomicBoolean calledL = new AtomicBoolean(false); final AtomicBoolean calledC = new AtomicBoolean(false); PropertyChangeListener alListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { calledAl.set(true); } }; Translation.addActiveLangChangeListener(alListener); PropertyChangeListener localListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { calledL.set(true); } }; Translation.addLocaleChangeListener(localListener); ActionListener anyChangeListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { calledC.set(true); } }; t.addTranslationChangeListener(anyChangeListener); // Change the content t.put("de", "change"); assertFalse(calledAl.get()); assertFalse(calledL.get()); assertTrue(calledC.get()); // Change active language by default calledAl.set(false); calledL.set(false); calledC.set(false); Translation.setActiveLang("de"); Translation.setActiveLang("en"); assertTrue(calledAl.get()); assertTrue(calledL.get()); assertFalse(calledC.get()); calledAl.set(false); calledL.set(false); Translation.setActiveLang("ar", false); assertTrue(calledAl.get()); assertFalse(calledL.get()); assertFalse(calledC.get()); calledAl.set(false); Translation.setActiveLang("ar", false); assertFalse( "if the same language is set again, it should not trigger events", calledAl.get()); assertFalse(calledC.get()); } @Test public void testToString() { Translation t = new Translation(); t.put("de", "de"); t.put("en", "en"); t.put("fr", "fr"); t.put("ru", "ru"); Translation.setActiveLang("de"); assertEquals("de", t.toString()); Translation.setActiveLang("ru"); assertEquals("ru", t.toString()); } @Test public void testFromOneLine() { Translation t = new Translation(); t.fromOneLine("en{- 3 MBps/billion capita}"); assertEquals("- 3 MBps/billion capita", t.toString("en")); } }