def test_compose_cs_CZ(self): # /usr/share/X11/locale/cs_CZ.UTF-8/Compose overrides some of # the compose sequences from # /usr/share/X11/locale/en_US.UTF-8/Compose: locale.setlocale(locale.LC_CTYPE, 'cs_CZ.UTF-8') self._compose_sequences = itb_util.ComposeSequences() self.assertEqual( self._compose_sequences.compose( [IBus.KEY_dead_caron, IBus.KEY_u]), 'ů') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_dead_caron, IBus.KEY_U]), 'Ů') # This sequence comes from # /usr/share/X11/locale/en_US.UTF-8/Compose and is not # overridden in /usr/share/X11/locale/cs_CZ.UTF-8/: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), 'ä')
def test_compose_am_ET(self): # These sequences come from # /usr/share/X11/locale/en_US.UTF-8/Compose: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), 'ä') # /usr/share/X11/locale/am_ET.UTF-8/Compose overrides some of # the compose sequences from # /usr/share/X11/locale/en_US.UTF-8/Compose (I think almost # all of the compose sequences in the am_ET.UTF-8 compose file # are weird, I think they make it impossible to type a normal # ASCII “u” and a normal ASCII “\” in am_ET.UTF-8 locale when # compose support works. ibus-typing-booster currently ignores # compose sequences which do not start with either Multi_key # or a dead key. I.e. ibus-typing-booster currently ignores # all compose sequences from the am_ET.UTF-8 compose file): locale.setlocale(locale.LC_CTYPE, 'am_ET.UTF-8') self._compose_sequences = itb_util.ComposeSequences() self.assertEqual(self._compose_sequences.compose([IBus.KEY_u, 0x1200]), 'ሁ') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_backslash, IBus.KEY_quotedbl]), '፥') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_backslash, IBus.KEY_apostrophe]), '፦') # This sequence comes from # /usr/share/X11/locale/en_US.UTF-8/Compose and because # /usr/share/X11/locale/am_ET.UTF-8/Compose does not include # /usr/share/X11/locale/en_US.UTF-8/Compose this sequence # is invalid in am_ET.UTF-8 locale and therefore returns # an empty string: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), '')
def test_compose_pt_PT(self): # These sequences come from # /usr/share/X11/locale/en_US.UTF-8/Compose and is not # overridden in /usr/share/X11/locale/pt_PT.UTF-8/: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), 'ä') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_U, IBus.KEY_comma]), 'Ų') # These will be overridden: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_dead_acute, IBus.KEY_C]), 'Ć') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_dead_acute, IBus.KEY_c]), 'ć') # /usr/share/X11/locale/pt_PT.UTF-8/Compose overrides some of # the compose sequences from # /usr/share/X11/locale/en_US.UTF-8/Compose: locale.setlocale(locale.LC_CTYPE, 'pt_PT.UTF-8') self._compose_sequences = itb_util.ComposeSequences() self.assertEqual( self._compose_sequences.compose( [IBus.KEY_dead_acute, IBus.KEY_C]), 'Ç') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_dead_acute, IBus.KEY_c]), 'ç') # This sequence comes from # /usr/share/X11/locale/en_US.UTF-8/Compose and is not # overridden in /usr/share/X11/locale/pt_BR.UTF-8/: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), 'ä') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_U, IBus.KEY_comma]), 'Ų')
def test_compose_pt_BR(self) -> None: # This sequence comes from # /usr/share/X11/locale/en_US.UTF-8/Compose and is not # overridden in /usr/share/X11/locale/pt_BR.UTF-8/: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), 'ä') # These will be overridden: self.assertEqual( self._compose_sequences.compose([IBus.KEY_dead_acute, IBus.KEY_C]), 'Ć') self.assertEqual( self._compose_sequences.compose([IBus.KEY_dead_acute, IBus.KEY_c]), 'ć') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_U, IBus.KEY_comma]), 'Ų') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_U, IBus.KEY_comma, IBus.KEY_E]), 'Ų') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_U, IBus.KEY_comma, IBus.KEY_e]), 'Ų') # /usr/share/X11/locale/pt_BR.UTF-8/Compose overrides some of # the compose sequences from # /usr/share/X11/locale/en_US.UTF-8/Compose: locale.setlocale(locale.LC_CTYPE, 'pt_BR.UTF-8') self._compose_sequences = itb_util.ComposeSequences() self.assertEqual( self._compose_sequences.compose([IBus.KEY_dead_acute, IBus.KEY_C]), 'Ç') self.assertEqual( self._compose_sequences.compose([IBus.KEY_dead_acute, IBus.KEY_c]), 'ç') # Incomplete sequence now because overridden by the longer # sequences: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_U, IBus.KEY_comma]), None) # The new longer sequences: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_U, IBus.KEY_comma, IBus.KEY_E]), 'Ḝ') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_U, IBus.KEY_comma, IBus.KEY_e]), 'ḝ') # This sequence comes from # /usr/share/X11/locale/en_US.UTF-8/Compose and is not # overridden in /usr/share/X11/locale/pt_BR.UTF-8/: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), 'ä')
def test_compose_am_ET(self) -> None: # These sequences come from # /usr/share/X11/locale/en_US.UTF-8/Compose: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), 'ä') # /usr/share/X11/locale/am_ET.UTF-8/Compose overrides some of # the compose sequences from # /usr/share/X11/locale/en_US.UTF-8/Compose (I think almost # all of the compose sequences in the am_ET.UTF-8 compose file # are weird, I think they make it impossible to type a normal # ASCII “u” and a normal ASCII “\” in am_ET.UTF-8 locale when # compose support works. ibus-typing-booster currently ignores # compose sequences which do not start with either Multi_key # or a dead key. I.e. ibus-typing-booster currently ignores # all compose sequences from the am_ET.UTF-8 compose file): locale.setlocale(locale.LC_CTYPE, 'am_ET.UTF-8') self._compose_sequences = itb_util.ComposeSequences() if (self._compose_sequences._locale_compose_file() != '/usr/share/X11/locale/am_ET.UTF-8/Compose'): self.skipTest( '/usr/share/X11/locale/am_ET.UTF-8/Compose not available') if self._compose_sequences.compose([0xFE75, 0x1200]) != '': self.skipTest( 'New Compose file updated by ' 'Benno Schulenberg <*****@*****.**> ' 'is installed, see: ' 'https://gitlab.freedesktop.org/xorg/lib/libx11/-/commit/488b156fe2cc8aca6946a49236ec7b7698fceda4' ) self.assertEqual(self._compose_sequences.compose([IBus.KEY_u, 0x1200]), 'ሁ') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_backslash, IBus.KEY_quotedbl]), '፥') self.assertEqual( self._compose_sequences.compose( [IBus.KEY_backslash, IBus.KEY_apostrophe]), '፦') # This sequence comes from # /usr/share/X11/locale/en_US.UTF-8/Compose and because # /usr/share/X11/locale/am_ET.UTF-8/Compose does not include # /usr/share/X11/locale/en_US.UTF-8/Compose this sequence # is invalid in am_ET.UTF-8 locale and therefore returns # an empty string: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), '')
def test_compose_km_KH(self) -> None: locale.setlocale(locale.LC_CTYPE, 'km_KH.UTF-8') self._compose_sequences = itb_util.ComposeSequences() # This sequence comes from # /usr/share/X11/locale/en_US.UTF-8/Compose and is not # overridden in /usr/share/X11/locale/km_KH.UTF-8/: self.assertEqual( self._compose_sequences.compose( [IBus.KEY_Multi_key, IBus.KEY_a, IBus.KEY_quotedbl]), 'ä') # /usr/share/X11/locale/km_KH.UTF-8/Compose overrides some of # the compose sequences from # /usr/share/X11/locale/en_US.UTF-8/Compose (Well, actually it # doesn’t, all sequences from the km_KH.UTF-8 Compose file are # already in the en_US.UTF-8 Compose file. Therefore, the # km_KH.UTF-8 Compose file does not really add anything at all # (See # https://gitlab.freedesktop.org/xorg/lib/libx11/issues/106): self.assertEqual(self._compose_sequences.compose([0x17FF]), 'ាំ')
def setUp(self): locale.setlocale(locale.LC_CTYPE, 'en_US.UTF-8') self._compose_sequences = itb_util.ComposeSequences()