package net.sf.openrocket.l10n;
import static org.junit.Assert.*;
import java.util.MissingResourceException;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.startup.ExceptionHandler;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.auto.Mock;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(JMock.class)
public class TestExceptionSuppressingTranslator {
Mockery context = new JUnit4Mockery();
@Mock
Translator translator;
@Mock
ExceptionHandler exceptionHandler;
@Test
public void testSuccessful() {
Application.setExceptionHandler(exceptionHandler);
ExceptionSuppressingTranslator est = new ExceptionSuppressingTranslator(translator);
// @formatter:off
context.checking(new Expectations() {{
oneOf(translator).get("fake.key4"); will(returnValue("foobar"));
}});
// @formatter:on
assertEquals("foobar", est.get("fake.key4"));
}
@Test
public void testFailure() {
Application.setExceptionHandler(exceptionHandler);
ExceptionSuppressingTranslator est = new ExceptionSuppressingTranslator(translator);
assertFalse("Prerequisite failed", ExceptionSuppressingTranslator.errorReported);
// @formatter:off
context.checking(new Expectations() {{
oneOf(exceptionHandler).handleErrorCondition(with(any(String.class)), with(any(MissingResourceException.class)));
oneOf(translator).get("fake.key5"); will(throwException(new MissingResourceException("a", "b", "c")));
oneOf(translator).get("fake.key5"); will(throwException(new MissingResourceException("a", "b", "c")));
oneOf(translator).get("fake.key6"); will(throwException(new MissingResourceException("a", "b", "c")));
}});
// @formatter:on
// Test first failure
assertEquals("fake.key5", est.get("fake.key5"));
assertTrue(ExceptionSuppressingTranslator.errorReported);
// Test second failure
assertEquals("fake.key5", est.get("fake.key5"));
assertTrue(ExceptionSuppressingTranslator.errorReported);
// Test failure with other key
assertEquals("fake.key6", est.get("fake.key6"));
assertTrue(ExceptionSuppressingTranslator.errorReported);
}
}