/** * Copyright (C) 2025 Adrien Hopkins * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package sevenUnitsGUI; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import java.util.stream.Stream; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; /** * Tests for the internationalization system. * * @since v1.0.0 */ class I18nTest { private static final Stream testLocalization() { return Stream.of( Arguments.of("tv.title", "en", "7Units [v]"), Arguments.of("tv.title", "fr", "7Unités [v]"), Arguments.of("tv.convert_units.title", "en", "Convert Units"), Arguments.of("tv.convert_units.title", "fr", "Convertir Unités")); } private static final Stream testLocaleSupported() { return Stream.of("en", "fr"); } /** * Tests that the default locale is supported. * * @since v1.0.0 * @see Presenter#DEFAULT_LOCALE */ @Test void testDefaultLocaleSupported() { Presenter p = new Presenter(new ViewBot()); assertNotNull(p.locales.get(Presenter.DEFAULT_LOCALE), "Default locale is not supported."); } /** * Ensures that the system supports the provided locale. * * @param localeName locale to test for support * * @since 2025-06-04 * @since v1.0.0 */ @ParameterizedTest @MethodSource void testLocaleSupported(String localeName) { Presenter p = new Presenter(new ViewBot()); assertNotNull(p.locales.get(localeName), "Locale \"" + localeName + "\" is not supported."); } /** * Tests that the system can correctly localize text, * using the default locales. * * @param key key of text to localize * @param locale locale to use * @param expected expected value of output text * * @since 2025-06-04 * @since v1.0.0 */ @ParameterizedTest @MethodSource void testLocalization(String key, String locale, String expected) { Presenter p = new Presenter(new ViewBot()); p.setUserLocale(locale); String actual = p.getLocalizedText(key); assertEquals(expected, actual); } }