source: josm/trunk/test/unit/org/openstreetmap/josm/tools/KeyboardUtilsTest.java @ 14012

Last change on this file since 14012 was 14012, checked in by Don-vip, 5 months ago

see #16453 - proper support of different keyboard layouts

  • Property svn:eol-style set to native
File size: 4.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.tools;
3
4import static org.junit.Assert.assertEquals;
5
6import java.util.Arrays;
7import java.util.LinkedHashMap;
8import java.util.Locale;
9import java.util.Map;
10import java.util.Map.Entry;
11
12import org.junit.Rule;
13import org.junit.Test;
14import org.openstreetmap.josm.testutils.JOSMTestRules;
15
16import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
17
18/**
19 * Unit tests of {@link KeyboardUtils} class.
20 */
21public class KeyboardUtilsTest {
22    /**
23     * Initializes test.
24     */
25    @Rule
26    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
27    public JOSMTestRules rules = new JOSMTestRules().platform();
28
29    /**
30     * Checks that definition of extended characters is correct
31     */
32    @Test
33    public void testExtendedCharacters() {
34        Map<Integer, Character> map = new LinkedHashMap<>();
35        KeyboardUtils.addLatinCharacters(map);
36        KeyboardUtils.addSymbolCharacters(map);
37        KeyboardUtils.addArabicCharacters(map);
38        KeyboardUtils.addArmenianCharacters(map);
39        KeyboardUtils.addCyrillicCharacters(map);
40        KeyboardUtils.addGeorgianCharacters(map);
41        KeyboardUtils.addGreekCharacters(map);
42        KeyboardUtils.addHebrewCharacters(map);
43        KeyboardUtils.addJapaneseCharacters(map);
44        KeyboardUtils.addThaiCharacters(map);
45        for (Entry<Integer, Character> e : map.entrySet()) {
46            assertEquals(e.getKey().intValue(), KeyboardUtils.EXTENDED_KEYCODE_FLAG | (int) e.getValue());
47        }
48    }
49
50    /**
51     * Unit test of {@link KeyboardUtils#getCharactersForKey} - E00 character
52     */
53    @Test
54    public void testgetCharactersForKeyE00() {
55        testgetCharactersForKeyE00("ar", 'ذ', '>', '`', '~');
56        testgetCharactersForKeyE00("fr_FR", '²', '$', '`', '~');
57        testgetCharactersForKeyE00("fr_CA", '#', '$', '/', '`', '~');
58        testgetCharactersForKeyE00("sq", '\\', '`', '~');
59        testgetCharactersForKeyE00("it", '\\', '`', '~');
60        testgetCharactersForKeyE00("pt", '\\', '`', '~');
61        testgetCharactersForKeyE00("pt_BR", '\'', '`', '~');
62        testgetCharactersForKeyE00("de", '^', '`', '~');
63        testgetCharactersForKeyE00("cs", ';', '`', '~');
64        testgetCharactersForKeyE00("he", '`', '~');
65        testgetCharactersForKeyE00("hu", '0', '`', '~');
66        testgetCharactersForKeyE00("pl", 'µ', '^', '˛', '`', '~');
67        testgetCharactersForKeyE00("bs", '¸', '`', '~');
68        testgetCharactersForKeyE00("hr", '¸', '`', '~');
69        testgetCharactersForKeyE00("sl", '¸', '`', '~');
70        testgetCharactersForKeyE00("sr", '¸', '`', '~');
71        testgetCharactersForKeyE00("ro", ']', '`', '~');
72        testgetCharactersForKeyE00("da", '½', '`', '~');
73        testgetCharactersForKeyE00("fo", '½', '`', '~');
74        testgetCharactersForKeyE00("nl", '@', '`', '~');
75        testgetCharactersForKeyE00("et", 'ˇ', '`', '~');
76        testgetCharactersForKeyE00("is", '°', '`', '~');
77        testgetCharactersForKeyE00("es", '|', '`', '~');
78        testgetCharactersForKeyE00("es_ES", 'º', '`', '~');
79        testgetCharactersForKeyE00("tr", '"', '*', '`', '~');
80        testgetCharactersForKeyE00("de_LU", '^', '²', '§', '`', '~');
81        testgetCharactersForKeyE00("fr_LU", '$', '²', '§', '`', '~');
82        testgetCharactersForKeyE00("de_CH", '^', '§', '`', '~');
83        testgetCharactersForKeyE00("fr_CH", '²', '$', '§', '`', '~');
84        testgetCharactersForKeyE00("de_LI", '^', '§', '`', '~');
85        testgetCharactersForKeyE00("fi_FI", '§', '`', '~');
86        testgetCharactersForKeyE00("sv_SE", '§', '`', '~');
87        testgetCharactersForKeyE00("no_NO", '|', '`', '~');
88        testgetCharactersForKeyE00("sv_NO", '|', '`', '~');
89    }
90
91    private static void testgetCharactersForKeyE00(String locale, Character... expected) {
92        if (locale.contains("_")) {
93            String[] l = locale.split("_");
94            testgetCharactersForKeyE00(new Locale(l[0], l[1]), expected);
95        } else {
96            testgetCharactersForKeyE00(new Locale(locale), expected);
97        }
98    }
99
100    private static void testgetCharactersForKeyE00(Locale locale, Character... expected) {
101        assertEquals(Arrays.asList(expected), KeyboardUtils.getCharactersForKey('E', 0, locale));
102    }
103}
Note: See TracBrowser for help on using the repository browser.