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

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

see #16453 - support dead keys. Drop ancient Polish keyboards not used anymore

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