コード例 #1
0
ファイル: test_menus.py プロジェクト: sindrig/spoppy
 def test_check_unique_keys(self):
     with self.assertRaises(TypeError):
         menus.Options({
             'a': menus.MenuValue('p', Mock()),
             ' a': menus.MenuValue('k', Mock())
         })
     with self.assertRaises(TypeError):
         self.op['   1'] = menus.MenuValue('1', Mock())
コード例 #2
0
ファイル: test_menus.py プロジェクト: sindrig/spoppy
 def test_possiblities_with_spaces(self):
     op = menus.Options({
         '    a': menus.MenuValue('p', Mock()),
         'b    ': menus.MenuValue('p', Mock()),
         '    c    ': menus.MenuValue('p', Mock()),
     })
     for key in 'a', 'b', 'c':
         tc = op.get_possibilities(key)
         self.assertEqual(len(tc), 1)
         self.assertNotEqual(tc, [key])
         self.assertIn(key, tc[0])
コード例 #3
0
ファイル: test_menus.py プロジェクト: sindrig/spoppy
 def test_matches_by_correct_key(self):
     op = menus.Options({
         'k': menus.MenuValue('1', Mock()),
         'kk': menus.MenuValue('2', Mock()),
         'kkk': menus.MenuValue('3', Mock()),
     })
     best = op.match_best_or_none('k')
     self.assertEqual(best.name, '1')
     best = op.match_best_or_none('kk')
     self.assertEqual(best.name, '2')
     best = op.match_best_or_none('kkk')
     self.assertEqual(best.name, '3')
コード例 #4
0
ファイル: test_menus.py プロジェクト: sindrig/spoppy
 def test_matches_by_correct_padded_key(self):
     op = menus.Options({
         '    a': menus.MenuValue('1', Mock()),
         'b    ': menus.MenuValue('2', Mock()),
         '    c    ': menus.MenuValue('3', Mock()),
         ' s i ': menus.MenuValue('4', Mock()),
     })
     best = op.match_best_or_none('a')
     self.assertEqual(best.name, '1')
     best = op.match_best_or_none('b')
     self.assertEqual(best.name, '2')
     best = op.match_best_or_none('c')
     self.assertEqual(best.name, '3')
     best = op.match_best_or_none('si')
     self.assertEqual(best.name, '4')
コード例 #5
0
ファイル: test_menus.py プロジェクト: sindrig/spoppy
    def test_pagination_ui(self):
        option_indicator = 'THIS IS AN OPTION'

        random_options = {
            str(uuid.uuid4()): menus.MenuValue(option_indicator, Mock())
            for i in range(1000)
        }
        get_options = Mock()
        get_options.return_value = random_options
        self.submenu.get_options = get_options
        self.submenu.initialize()

        seen_options = 0

        last_page = -1
        while last_page != self.submenu.PAGE:
            ui = self.submenu.get_ui()
            if self.submenu.PAGE == last_page:
                break
            seen_options += len(
                [line for line in ui if option_indicator in line])

            last_page = self.submenu.PAGE
            self.submenu.PAGE += 1

        self.assertEqual(seen_options, len(random_options))
コード例 #6
0
ファイル: test_menus.py プロジェクト: sindrig/spoppy
    def test_return(self, patched_chargetter, patched_is_valid):
        destination = 'DESTINATION'
        patched_is_valid.return_value = menus.MenuValue('TEST', destination)
        self.submenu.initialize()

        patched_chargetter.return_value = b'\n'
        self.assertEqual(self.submenu.get_response(), destination)
        patched_is_valid.assert_called_once_with()
コード例 #7
0
ファイル: test_menus.py プロジェクト: sindrig/spoppy
    def test_shows_indicator_if_one_match(self):
        self.submenu.filter = 'a'
        self.submenu.get_options = Mock()
        self.submenu.get_options.return_value = menus.Options({
            'the_key':
            menus.MenuValue('sindri', Mock()),
            'foo':
            menus.MenuValue('foo', Mock()),
            'bar':
            menus.MenuValue('bar', Mock()),
        })
        self.submenu.initialize()

        ui = self.submenu.get_ui()
        self.assertEqual(len([line for line in ui if 'sindri' in line]), 1)
        self.submenu.filter = 'the_key'
        ui = self.submenu.get_ui()
        self.assertEqual(len([line for line in ui if 'sindri' in line]), 2)
コード例 #8
0
ファイル: test_menus.py プロジェクト: sindrig/spoppy
 def test_fuzzy_filter(self):
     dct = {'1': menus.MenuValue('This is a playlist', Mock())}
     op = menus.Options(dct)
     should_match = (
         'ThisIsAPlaylist',
         'ThisPlaylist',
         'tiaplay',
     )
     for _filter in should_match:
         self.assertEqual(len(op.filter(_filter)), 1)
コード例 #9
0
ファイル: test_menus.py プロジェクト: sindrig/spoppy
 def setUp(self):
     self.dct = {
         '1': menus.MenuValue('A', Mock()),
         '2': menus.MenuValue('B', Mock()),
         '3': menus.MenuValue('C', Mock()),
         's': menus.MenuValue('Search', Mock()),
         'kk': menus.MenuValue('pp', Mock()),
         'ko': menus.MenuValue('p', Mock()),
         'q': menus.MenuValue('o', Mock()),
         'o': menus.MenuValue('q', Mock()),
     }
     self.op = menus.Options(self.dct)