package org.ovirt.engine.core.utils;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import org.junit.Test;
import org.ovirt.engine.core.common.interfaces.ErrorTranslator;
public class ErrorTranslatorTest {
private static final String TEST_KEY_NO_REPLACEMENT = "TEST_KEY_NO_REPLACEMENT";
private static final String TEST_KEY_WITH_REPLACEMENT = "TEST_KEY_WITH_REPLACEMENT";
private static final String FILENAME = "TestAppErrors";
private static final String FILENAME_WITH_SUFFIX = FILENAME + ".properties";
@Test
public void testNoStringSubstitutionWithoutSuffix() {
doTestNoStringSubstitution(FILENAME);
}
@Test
public void testNoStringSubstitutionWithSuffix() {
doTestNoStringSubstitution(FILENAME_WITH_SUFFIX);
}
private static void doTestNoStringSubstitution(String name) {
Locale locale = Locale.ENGLISH;
try {
Locale.setDefault(Locale.ENGLISH);
ErrorTranslator et = new ErrorTranslatorImpl(name);
String error = et.translateErrorTextSingle(TEST_KEY_NO_REPLACEMENT);
assertEquals("String should equal", "VM not found", error);
} finally {
Locale.setDefault(locale);
}
}
@Test
public void testNoStringSubstitutionWithList() {
ErrorTranslator et = new ErrorTranslatorImpl(FILENAME);
List<String> error = et.translateErrorText(Collections.singletonList(TEST_KEY_NO_REPLACEMENT));
assertEquals("Size", 1, error.size());
assertEquals("String should equal", "VM not found", error.get(0));
}
@Test
public void testStringSubstitutionWithList() {
ErrorTranslator et = new ErrorTranslatorImpl(FILENAME);
List<String> error = et.translateErrorText(Arrays.asList(TEST_KEY_WITH_REPLACEMENT,
"$action SOMEACTION", "$type SOME Type"));
String result = "Cannot SOMEACTION SOME Type. VM's Image doesn't exist.";
assertEquals("Size", 1, error.size());
assertEquals("String should equal", result, error.get(0));
}
@Test
public void testLocaleSpecificWithoutSuffix() {
doTestLocaleSpecific(FILENAME);
}
@Test
public void testLocaleSpecificWithSuffix() {
doTestLocaleSpecific(FILENAME_WITH_SUFFIX);
}
private static void doTestLocaleSpecific(String name) {
Locale locale = Locale.getDefault();
try {
Locale.setDefault(Locale.GERMAN);
ErrorTranslator et = new ErrorTranslatorImpl(name);
List<String> errors = et.translateErrorText(Collections.singletonList(TEST_KEY_NO_REPLACEMENT));
assertEquals("Unexpected Size", 1, errors.size());
assertEquals("String should equal", "Desktop nicht gefunden", errors.get(0));
String error = et.translateErrorTextSingle(TEST_KEY_NO_REPLACEMENT, Locale.GERMAN);
assertEquals("String should equal", "Desktop nicht gefunden", error);
} finally {
Locale.setDefault(locale);
}
}
@Test
public void testLocaleOverrideWithoutSuffix() {
doTestLocaleOverride(FILENAME);
}
@Test
public void testLocaleOverrideWithSuffix() {
doTestLocaleOverride(FILENAME_WITH_SUFFIX);
}
private static void doTestLocaleOverride(String name) {
ErrorTranslator et = new ErrorTranslatorImpl(name);
List<String> errors = et.translateErrorText(Collections.singletonList(TEST_KEY_NO_REPLACEMENT), Locale.ITALIAN);
assertEquals("Unexpected Size", 1, errors.size());
assertEquals("String should equal", "Impossibile trovare il desktop", errors.get(0));
String error = et.translateErrorTextSingle(TEST_KEY_NO_REPLACEMENT, Locale.ITALIAN);
assertEquals("String should equal", "Impossibile trovare il desktop", error);
}
}