Ejemplo n.º 1
0
def test_nearest_505_str():
    """wcwidth._wcmatch_version('5.0.5') returns nearest '5.0.0'. (str)"""
    # given
    given, expected = '5.0.5', '5.0.0'

    # exercise
    result = wcwidth._wcmatch_version(given)

    # verify.
    assert result == expected
Ejemplo n.º 2
0
def test_nearest_505_unicode():
    """wcwidth._wcmatch_version(u'5.0.5') returns nearest u'5.0.0'. (unicode)"""
    # given
    given, expected = u'5.0.5', u'5.0.0'

    # exercise
    result = wcwidth._wcmatch_version(given)

    # verify.
    assert result == expected
Ejemplo n.º 3
0
def test_exact_410_unicode():
    """wcwidth._wcmatch_version(u'4.1.0') returns equal value (unicode)."""
    # given,
    given = expected = u'4.1.0'

    # exercise,
    result = wcwidth._wcmatch_version(given)

    # verify.
    assert result == expected
Ejemplo n.º 4
0
def test_nearest_999_unicode():
    """wcwidth._wcmatch_version(u'999.0') returns nearest (latest)."""
    # given
    given, expected = u'999.0', wcwidth.list_versions()[-1]

    # exercise
    result = wcwidth._wcmatch_version(given)

    # verify.
    assert result == expected
Ejemplo n.º 5
0
def test_latest():
    """wcwidth._wcmatch_version('latest') returns tail item."""
    # given,
    expected = wcwidth.list_versions()[-1]

    # exercise,
    result = wcwidth._wcmatch_version('latest')

    # verify.
    assert result == expected
Ejemplo n.º 6
0
def test_nearest_800_str():
    """wcwidth._wcmatch_version('8') returns nearest '8.0.0'."""
    # given
    given, expected = '8', '8.0.0'

    # exercise
    result = wcwidth._wcmatch_version(given)

    # verify.
    assert result == expected
Ejemplo n.º 7
0
def test_nearest_lowint40_unicode():
    """wcwidth._wcmatch_version(u'4.0') returns nearest u'4.1.0'."""
    # given
    given, expected = u'4.0', u'4.1.0'
    warnings.resetwarnings()
    wcwidth._wcmatch_version.cache_clear()

    # exercise
    with pytest.warns(UserWarning):
        # warns that given version is lower than any available
        result = wcwidth._wcmatch_version(given)

    # verify.
    assert result == expected
Ejemplo n.º 8
0
def test_nonint_str():
    """wcwidth._wcmatch_version(u'x.y.z') returns latest (str)."""
    # given
    given, expected = 'x.y.z', wcwidth.list_versions()[-1]
    warnings.resetwarnings()
    wcwidth._wcmatch_version.cache_clear()

    # exercise
    with pytest.warns(UserWarning):
        # warns that given version is not valid
        result = wcwidth._wcmatch_version(given)

    # verify.
    assert result == expected
Ejemplo n.º 9
0
 def _process_keystroke_commands(self, inp):
     """Process keystrokes that issue commands (side effects)."""
     if inp in ('1', '2') and self.screen.wide != int(inp):
         # change between 1 or 2-character wide mode.
         self.screen.wide = int(inp)
         self.initialize_page_data()
         self.on_resize(None, None)
     elif inp == 'c':
         # switch on/off combining characters
         self.character_factory = (
             WcWideCharacterGenerator
             if self.character_factory != WcWideCharacterGenerator else
             WcCombinedCharacterGenerator)
         self.initialize_page_data()
         self.on_resize(None, None)
     elif inp in ('_', '-'):
         # adjust name length -2
         nlen = max(1, self.screen.style.name_len - 2)
         if nlen != self.screen.style.name_len:
             self.screen.style.name_len = nlen
             self.on_resize(None, None)
     elif inp in ('+', '='):
         # adjust name length +2
         nlen = min(self.term.width - 8, self.screen.style.name_len + 2)
         if nlen != self.screen.style.name_len:
             self.screen.style.name_len = nlen
             self.on_resize(None, None)
     elif inp == 'v':
         with self.term.location(x=0, y=self.term.height - 2):
             print(self.term.clear_eos())
             input_selection_msg = (
                 "--> Enter unicode version [{versions}] ("
                 "current: {self.unicode_version}):".format(
                     versions=', '.join(list_versions()), self=self))
             echo('\n'.join(
                 self.term.wrap(input_selection_msg,
                                subsequent_indent='    ')))
             echo(' ')
             flushout()
             inp = readline(self.term, width=max(map(len, list_versions())))
             if inp.strip() and inp != self.unicode_version:
                 # set new unicode version -- page data must be
                 # re-initialized. Any version is legal, underlying
                 # library performs best-match (with warnings)
                 self.unicode_version = _wcmatch_version(inp)
                 self.initialize_page_data()
                 self.on_resize(None, None)