package org.jabref.logic.l10n;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class LocalizationParserTest {
@Test
public void testKeyParsingCode() {
assertLocalizationKeyParsing("Localization.lang(\"one per line\")", "one_per_line");
assertLocalizationKeyParsing("Localization.lang(\n \"Copy \\\\cite{BibTeX key}\")", "Copy_\\cite{BibTeX_key}");
assertLocalizationKeyParsing("Localization.lang(\"two per line\") Localization.lang(\"two per line\")", Arrays.asList("two_per_line", "two_per_line"));
assertLocalizationKeyParsing("Localization.lang(\"multi \" + \n\"line\")", "multi_line");
assertLocalizationKeyParsing("Localization.lang(\"one per line with var\", var)", "one_per_line_with_var");
assertLocalizationKeyParsing("Localization.lang(\"Search %0\", \"Springer\")", "Search_%0");
assertLocalizationKeyParsing("Localization.lang(\"Reset preferences (key1,key2,... or 'all')\")", "Reset_preferences_(key1,key2,..._or_'all')");
assertLocalizationKeyParsing("Localization.lang(\"Multiple entries selected. Do you want to change the type of all these to '%0'?\")",
"Multiple_entries_selected._Do_you_want_to_change_the_type_of_all_these_to_'%0'?");
assertLocalizationKeyParsing("Localization.lang(\"Run fetcher, e.g. \\\"--fetch=Medline:cancer\\\"\");",
"Run_fetcher,_e.g._\"--fetch\\=Medline\\:cancer\"");
}
@Test
public void testParameterParsingCode() {
assertLocalizationParameterParsing("Localization.lang(\"one per line\")", "\"one per line\"");
assertLocalizationParameterParsing("Localization.lang(\"one per line\" + var)", "\"one per line\" + var");
assertLocalizationParameterParsing("Localization.lang(var + \"one per line\")", "var + \"one per line\"");
assertLocalizationParameterParsing("Localization.lang(\"Search %0\", \"Springer\")", "\"Search %0\", \"Springer\"");
}
private void assertLocalizationKeyParsing(String code, String expectedLanguageKeys) {
assertLocalizationKeyParsing(code, Collections.singletonList(expectedLanguageKeys));
}
private void assertLocalizationKeyParsing(String code, List<String> expectedLanguageKeys) {
List<String> languageKeysInString = LocalizationParser.JavaLocalizationEntryParser.getLanguageKeysInString(code, LocalizationBundleForTest.LANG);
assertEquals(expectedLanguageKeys, languageKeysInString);
}
private void assertLocalizationParameterParsing(String code, List<String> expectedParameter) {
List<String> languageKeysInString = LocalizationParser.JavaLocalizationEntryParser.getLocalizationParameter(code, LocalizationBundleForTest.LANG);
assertEquals(expectedParameter, languageKeysInString);
}
private void assertLocalizationParameterParsing(String code, String expectedParameter) {
assertLocalizationParameterParsing(code, Collections.singletonList(expectedParameter));
}
}