1 | // License: GPL. For details, see LICENSE file.
|
---|
2 | package org.openstreetmap.josm.tools;
|
---|
3 |
|
---|
4 | import java.util.Arrays;
|
---|
5 | import java.util.List;
|
---|
6 | import java.util.Locale;
|
---|
7 | import java.util.stream.Collectors;
|
---|
8 | import java.util.stream.Stream;
|
---|
9 |
|
---|
10 | import org.junit.Assert;
|
---|
11 | import org.junit.jupiter.api.extension.RegisterExtension;
|
---|
12 | import org.junit.jupiter.api.Test;
|
---|
13 | import org.openstreetmap.josm.testutils.JOSMTestRules;
|
---|
14 |
|
---|
15 | import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
---|
16 |
|
---|
17 | /**
|
---|
18 | * Unit tests of {@link LanguageInfo}.
|
---|
19 | */
|
---|
20 | class LanguageInfoTest {
|
---|
21 |
|
---|
22 | /**
|
---|
23 | * Setup test.
|
---|
24 | */
|
---|
25 | @RegisterExtension
|
---|
26 | @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
|
---|
27 | public JOSMTestRules test = new JOSMTestRules().i18n("ca@valencia");
|
---|
28 |
|
---|
29 | private static final Locale EN_NZ = new Locale("en", "NZ");
|
---|
30 | private static final Locale DE_DE = Locale.GERMANY;
|
---|
31 | private static final Locale PT_BR = new Locale("pt", "BR");
|
---|
32 | private static final Locale CA_ES_VALENCIA = new Locale("ca", "ES", "valencia");
|
---|
33 | private static final Locale ZN_CN = Locale.SIMPLIFIED_CHINESE;
|
---|
34 | private static final Locale ZN_TW = Locale.TRADITIONAL_CHINESE;
|
---|
35 | private static final Locale EN_GB = Locale.UK;
|
---|
36 | private static final Locale RU = new Locale("ru");
|
---|
37 | private static final Locale NB = new Locale("nb");
|
---|
38 | private static final Locale AST = new Locale("ast");
|
---|
39 |
|
---|
40 | /**
|
---|
41 | * Unit test of {@link LanguageInfo#getWikiLanguagePrefix}.
|
---|
42 | */
|
---|
43 | @Test
|
---|
44 | void testWikiLanguagePrefix() {
|
---|
45 | testGetWikiLanguagePrefixes(LanguageInfo.LocaleType.DEFAULT,
|
---|
46 | "En:", "De:", "Pt_BR:", "Ca-Valencia:", "Zh_CN:", "Zh_TW:", "Ast:", "En_GB:", "Ru:", "Nb:");
|
---|
47 | testGetWikiLanguagePrefixes(LanguageInfo.LocaleType.DEFAULTNOTENGLISH,
|
---|
48 | null, "De:", "Pt_BR:", "Ca-Valencia:", "Zh_CN:", "Zh_TW:", "Ast:", "En_GB:", "Ru:", "Nb:");
|
---|
49 | testGetWikiLanguagePrefixes(LanguageInfo.LocaleType.BASELANGUAGE,
|
---|
50 | null, null, "Pt:", null, "Zh:", "Zh:", null, null, null, null);
|
---|
51 | testGetWikiLanguagePrefixes(LanguageInfo.LocaleType.ENGLISH,
|
---|
52 | "", "", "", "", "", "", "", "", "", "");
|
---|
53 | testGetWikiLanguagePrefixes(LanguageInfo.LocaleType.OSM_WIKI,
|
---|
54 | "", "DE:", "Pt:", "Ca:", "Zh-hans:", "Zh-hant:", "Ast:", "", "RU:", "No:");
|
---|
55 | }
|
---|
56 |
|
---|
57 | private static void testGetWikiLanguagePrefixes(LanguageInfo.LocaleType type, String...expected) {
|
---|
58 | final List<String> actual = Stream.of(EN_NZ, DE_DE, PT_BR, CA_ES_VALENCIA, ZN_CN, ZN_TW, AST, EN_GB, RU, NB)
|
---|
59 | .map(locale -> LanguageInfo.getWikiLanguagePrefix(locale, type))
|
---|
60 | .collect(Collectors.toList());
|
---|
61 | Assert.assertEquals(Arrays.asList(expected), actual);
|
---|
62 | }
|
---|
63 |
|
---|
64 | /**
|
---|
65 | * Unit test of {@link LanguageInfo#getLocale}.
|
---|
66 | */
|
---|
67 | @Test
|
---|
68 | void testGetLocale() {
|
---|
69 | Assert.assertEquals(RU, LanguageInfo.getLocale("ru"));
|
---|
70 | Assert.assertEquals(EN_GB, LanguageInfo.getLocale("en_GB"));
|
---|
71 | Assert.assertEquals(CA_ES_VALENCIA, LanguageInfo.getLocale("ca_ES@valencia"));
|
---|
72 | Assert.assertEquals(DE_DE, LanguageInfo.getLocale("de_DE"));
|
---|
73 | Assert.assertEquals(DE_DE, LanguageInfo.getLocale("de_DE.UTF-8")); // LANG, LC_MEASUREMENT
|
---|
74 | Assert.assertEquals(PT_BR, LanguageInfo.getLocale("pt_BR.UTF-8")); // LANG, LC_MEASUREMENT
|
---|
75 | }
|
---|
76 |
|
---|
77 | /**
|
---|
78 | * Unit test of {@link LanguageInfo#getJOSMLocaleCode}.
|
---|
79 | */
|
---|
80 | @Test
|
---|
81 | void testGetJOSMLocaleCode() {
|
---|
82 | Assert.assertEquals("de", LanguageInfo.getJOSMLocaleCode(DE_DE));
|
---|
83 | Assert.assertEquals("pt_BR", LanguageInfo.getJOSMLocaleCode(PT_BR));
|
---|
84 | Assert.assertEquals("ca@valencia", LanguageInfo.getJOSMLocaleCode(CA_ES_VALENCIA));
|
---|
85 | }
|
---|
86 |
|
---|
87 | /**
|
---|
88 | * Unit test of {@link LanguageInfo#getJavaLocaleCode}.
|
---|
89 | */
|
---|
90 | @Test
|
---|
91 | void testGetJavaLocaleCode() {
|
---|
92 | Assert.assertEquals("ca__valencia", LanguageInfo.getJavaLocaleCode("ca@valencia"));
|
---|
93 | }
|
---|
94 |
|
---|
95 | /**
|
---|
96 | * Unit test of {@link LanguageInfo#getLanguageCodeXML}.
|
---|
97 | */
|
---|
98 | @Test
|
---|
99 | void testGetLanguageCodeXML() {
|
---|
100 | Assert.assertEquals("ca-valencia.", LanguageInfo.getLanguageCodeXML());
|
---|
101 | }
|
---|
102 |
|
---|
103 | /**
|
---|
104 | * Unit test of {@link LanguageInfo#getLanguageCodeManifest}.
|
---|
105 | */
|
---|
106 | @Test
|
---|
107 | void testGetLanguageCodeManifest() {
|
---|
108 | Assert.assertEquals("ca-valencia_", LanguageInfo.getLanguageCodeManifest());
|
---|
109 | }
|
---|
110 |
|
---|
111 | /**
|
---|
112 | * Unit test of {@link LanguageInfo#getLanguageCodes}.
|
---|
113 | */
|
---|
114 | @Test
|
---|
115 | void testGetLanguageCodes() {
|
---|
116 | Assert.assertEquals(Arrays.asList("ca_ES@valencia", "ca@valencia", "ca_ES", "ca"), LanguageInfo.getLanguageCodes(CA_ES_VALENCIA));
|
---|
117 | }
|
---|
118 | }
|
---|