示例#1
0
    def test_get_page(self):
        self.maxDiff = None

        t = Terminal({'': []}, 'host', 'user', self.get_exec(), handler=self.handler, encoding='utf-8', lang='C',
                     width=80)
        self.assertEqual(t.get_page(['title'], [], 0, 1), '\n'.join([
            'Host: host                                                            User: user',
            '================================================================================',
            '  title',
            '--------------------------------------------------------------------------------',
            '------+-------------------------------------------------------------------------',
            '  [0] | Quit',
            '================================================================================',
            'Press menu number (0-0): '
        ]))

        self.assertEqual(t.get_page(['Main Menu', 'title'], [
            Command('menu a', [CommandLine('command a', Meta())]),
            Command('menu b', [CommandLine('command b', Meta())]),
            Command('menu c', [CommandLine('command c', Meta())]),
        ], 0, 1), '\n'.join([
            'Host: host                                                            User: user',
            '================================================================================',
            '  Main Menu > title',
            '--------------------------------------------------------------------------------',
            '  [1] | menu a',
            '  [2] | menu b',
            '  [3] | menu c',
            '------+-------------------------------------------------------------------------',
            '  [0] | Return to Main Menu',
            '================================================================================',
            'Press menu number (0-3): '
        ]))

        self.assertEqual(t.get_page(['title'], [
            Command('menu a', [CommandLine('command a', Meta())]),
            Command('menu b', [CommandLine('command b', Meta())]),
            Command('menu c', [CommandLine('command c', Meta())]),
            Command('menu d', [CommandLine('command d', Meta())]),
            Command('menu e', [CommandLine('command e', Meta())]),
            Command('menu f', [CommandLine('command f', Meta())]),
            Command('menu g', [CommandLine('command g', Meta())]),
            Command('menu h', [CommandLine('command h', Meta())]),
            Command('menu i', [CommandLine('command i', Meta())]),
        ], 0, 100), '\n'.join([
            'Host: host                                                            User: user',
            '================================================================================',
            '  title',
            '--------------------------------------------------------------------------------',
            '                                  Page 1 / 100                            [N] =>',
            '--------------------------------------------------------------------------------',
            '  [1] | menu a',
            '  [2] | menu b',
            '  [3] | menu c',
            '  [4] | menu d',
            '  [5] | menu e',
            '  [6] | menu f',
            '  [7] | menu g',
            '  [8] | menu h',
            '  [9] | menu i',
            '------+-------------------------------------------------------------------------',
            '  [0] | Quit',
            '================================================================================',
            'Press menu number (0-9): '
        ]))

        self.assertEqual(t.get_page(['title'], [
            Command('menu a', [CommandLine('command a', Meta())]),
            Command('menu b', [CommandLine('command b', Meta())]),
            Command('menu c', [CommandLine('command c', Meta())]),
            Command('menu d', [CommandLine('command d', Meta())]),
            Command('menu e', [CommandLine('command e', Meta())]),
            Command('menu f', [CommandLine('command f', Meta())]),
            Command('menu g', [CommandLine('command g', Meta())]),
            Command('menu h', [CommandLine('command h', Meta())]),
            Command('menu i', [CommandLine('command i', Meta())]),
        ], 8, 100), '\n'.join([
            'Host: host                                                            User: user',
            '================================================================================',
            '  title',
            '--------------------------------------------------------------------------------',
            '<= [P]                            Page 9 / 100                            [N] =>',
            '--------------------------------------------------------------------------------',
            '  [1] | menu a',
            '  [2] | menu b',
            '  [3] | menu c',
            '  [4] | menu d',
            '  [5] | menu e',
            '  [6] | menu f',
            '  [7] | menu g',
            '  [8] | menu h',
            '  [9] | menu i',
            '------+-------------------------------------------------------------------------',
            '  [0] | Quit',
            '================================================================================',
            'Press menu number (0-9): '
        ]))

        self.assertEqual(t.get_page(['title'], [
            Command('menu a', [CommandLine('command a', Meta())]),
        ], 99, 100), '\n'.join([
            'Host: host                                                            User: user',
            '================================================================================',
            '  title',
            '--------------------------------------------------------------------------------',
            '<= [P]                           Page 100 / 100                                 ',
            '--------------------------------------------------------------------------------',
            '  [1] | menu a',
            '------+-------------------------------------------------------------------------',
            '  [0] | Quit',
            '================================================================================',
            'Press menu number (0-1): '
        ]))

        # sub menu
        self.assertEqual(t.get_page(['Main Menu', 'title'], [
            Menu('menu a', [Command('menu b', [CommandLine('command b', Meta())])], Meta()),
            Menu('menu c', [
                Command('menu c', [CommandLine('command c', Meta())]),
                Command('menu d', [CommandLine('command d', Meta())]),
            ], Meta()),
        ], 0, 1), '\n'.join([
            'Host: host                                                            User: user',
            '================================================================================',
            '  Main Menu > title',
            '--------------------------------------------------------------------------------',
            '  [1] | Go to menu a',
            '  [2] | Go to menu c',
            '------+-------------------------------------------------------------------------',
            '  [0] | Return to Main Menu',
            '================================================================================',
            'Press menu number (0-2): '
        ]))

        # multiple command lines
        self.assertEqual(t.get_page(['Main Menu', 'title'], [
            Command('menu a', [CommandLine('command a', Meta())]),
            Command('menu b', [
                CommandLine('command b', Meta()),
                CommandLine('command b', Meta()),
            ]),
            Menu('menu c', [Command('menu d', [
                CommandLine('command d', Meta()),
                CommandLine('command d', Meta()),
            ])], Meta()),
        ], 0, 1), '\n'.join([
            'Host: host                                                            User: user',
            '================================================================================',
            '  Main Menu > title',
            '--------------------------------------------------------------------------------',
            '  [1] | menu a',
            '  [2] | menu b',
            '  [3] | Go to menu c',
            '------+-------------------------------------------------------------------------',
            '  [0] | Return to Main Menu',
            '================================================================================',
            'Press menu number (0-3): '
        ]))
示例#2
0
    def test_get_page_ja(self):
        self.maxDiff = None

        t = Terminal({'': []},
                     'ホスト',
                     'ユーザ',
                     self.get_exec(),
                     handler=self.handler,
                     encoding='utf-8',
                     lang='ja_JP',
                     width=80)
        self.assertEqual(
            t.get_page(['タイトル'], [], 0, 1), '\n'.join([
                'ホスト名: ホスト                                              実行ユーザ: ユーザ',
                '================================================================================',
                '  タイトル',
                '--------------------------------------------------------------------------------',
                '------+-------------------------------------------------------------------------',
                '  [0] | 終了',
                '================================================================================',
                '番号を入力してください (0-0): '
            ]))

        self.assertEqual(
            t.get_page(['メインメニュー', 'タイトル'], [
                Command('メニュー a', [CommandLine('コマンド a', Meta())]),
                Command('メニュー b', [CommandLine('コマンド b', Meta())]),
                Command('メニュー c', [CommandLine('コマンド c', Meta())]),
            ], 0, 1), '\n'.join([
                'ホスト名: ホスト                                              実行ユーザ: ユーザ',
                '================================================================================',
                '  メインメニュー > タイトル',
                '--------------------------------------------------------------------------------',
                '  [1] | メニュー a', '  [2] | メニュー b', '  [3] | メニュー c',
                '------+-------------------------------------------------------------------------',
                '  [0] | メインメニュー に戻る',
                '================================================================================',
                '番号を入力してください (0-3): '
            ]))

        self.assertEqual(
            t.get_page([
                'メインメニュー',
                'タイトル1',
                'タイトル2',
                'タイトル3',
                'タイトル4',
                'タイトル5',
                'タイトル6',
                'タイトル7',
                'タイトル8',
            ], [
                Command('メニュー a', [CommandLine('コマンド a', Meta())]),
                Command('メニュー b', [CommandLine('コマンド b', Meta())]),
                Command('メニュー c', [CommandLine('コマンド c', Meta())]),
            ], 0, 1), '\n'.join([
                'ホスト名: ホスト                                              実行ユーザ: ユーザ',
                '================================================================================',
                '  ~ル2 > タイトル3 > タイトル4 > タイトル5 > タイトル6 > タイトル7 > タイトル8',
                '--------------------------------------------------------------------------------',
                '  [1] | メニュー a', '  [2] | メニュー b', '  [3] | メニュー c',
                '------+-------------------------------------------------------------------------',
                '  [0] | タイトル7 に戻る',
                '================================================================================',
                '番号を入力してください (0-3): '
            ]))

        self.assertEqual(
            t.get_page(['タイトル'], [
                Command('メニュー a', [CommandLine('コマンド a', Meta())]),
                Command('メニュー b', [CommandLine('コマンド b', Meta())]),
                Command('メニュー c', [CommandLine('コマンド c', Meta())]),
                Command('メニュー d', [CommandLine('コマンド d', Meta())]),
                Command('メニュー e', [CommandLine('コマンド e', Meta())]),
                Command('メニュー f', [CommandLine('コマンド f', Meta())]),
                Command('メニュー g', [CommandLine('コマンド g', Meta())]),
                Command('メニュー h', [CommandLine('コマンド h', Meta())]),
                Command('メニュー i', [CommandLine('コマンド i', Meta())]),
            ], 0, 100), '\n'.join([
                'ホスト名: ホスト                                              実行ユーザ: ユーザ',
                '================================================================================',
                '  タイトル',
                '--------------------------------------------------------------------------------',
                '                                  Page 1 / 100                            [N] =>',
                '--------------------------------------------------------------------------------',
                '  [1] | メニュー a', '  [2] | メニュー b', '  [3] | メニュー c',
                '  [4] | メニュー d', '  [5] | メニュー e', '  [6] | メニュー f',
                '  [7] | メニュー g', '  [8] | メニュー h', '  [9] | メニュー i',
                '------+-------------------------------------------------------------------------',
                '  [0] | 終了',
                '================================================================================',
                '番号を入力してください (0-9): '
            ]))

        self.assertEqual(
            t.get_page(['タイトル'], [
                Command('メニュー a', [CommandLine('コマンド a', Meta())]),
                Command('メニュー b', [CommandLine('コマンド b', Meta())]),
                Command('メニュー c', [CommandLine('コマンド c', Meta())]),
                Command('メニュー d', [CommandLine('コマンド d', Meta())]),
                Command('メニュー e', [CommandLine('コマンド e', Meta())]),
                Command('メニュー f', [CommandLine('コマンド f', Meta())]),
                Command('メニュー g', [CommandLine('コマンド g', Meta())]),
                Command('メニュー h', [CommandLine('コマンド h', Meta())]),
                Command('メニュー i', [CommandLine('コマンド i', Meta())]),
            ], 8, 100), '\n'.join([
                'ホスト名: ホスト                                              実行ユーザ: ユーザ',
                '================================================================================',
                '  タイトル',
                '--------------------------------------------------------------------------------',
                '<= [P]                            Page 9 / 100                            [N] =>',
                '--------------------------------------------------------------------------------',
                '  [1] | メニュー a', '  [2] | メニュー b', '  [3] | メニュー c',
                '  [4] | メニュー d', '  [5] | メニュー e', '  [6] | メニュー f',
                '  [7] | メニュー g', '  [8] | メニュー h', '  [9] | メニュー i',
                '------+-------------------------------------------------------------------------',
                '  [0] | 終了',
                '================================================================================',
                '番号を入力してください (0-9): '
            ]))

        self.assertEqual(
            t.get_page(['タイトル'], [
                Command('メニュー a', [CommandLine('コマンド a', Meta())]),
            ], 99, 100), '\n'.join([
                'ホスト名: ホスト                                              実行ユーザ: ユーザ',
                '================================================================================',
                '  タイトル',
                '--------------------------------------------------------------------------------',
                '<= [P]                           Page 100 / 100                                 ',
                '--------------------------------------------------------------------------------',
                '  [1] | メニュー a',
                '------+-------------------------------------------------------------------------',
                '  [0] | 終了',
                '================================================================================',
                '番号を入力してください (0-1): '
            ]))

        # sub menu
        self.assertEqual(
            t.get_page(['メインメニュー', 'タイトル'], [
                Menu('メニュー a',
                     [Command('メニュー b', [CommandLine('コマンド b', Meta())])],
                     Meta()),
                Menu('メニュー c', [
                    Command('メニュー c', [CommandLine('コマンド c', Meta())]),
                    Command('メニュー d', [CommandLine('コマンド d', Meta())]),
                ], Meta()),
            ], 0, 1), '\n'.join([
                'ホスト名: ホスト                                              実行ユーザ: ユーザ',
                '================================================================================',
                '  メインメニュー > タイトル',
                '--------------------------------------------------------------------------------',
                '  [1] | メニュー a へ', '  [2] | メニュー c へ',
                '------+-------------------------------------------------------------------------',
                '  [0] | メインメニュー に戻る',
                '================================================================================',
                '番号を入力してください (0-2): '
            ]))

        # multiple command lines
        self.assertEqual(
            t.get_page(['メインメニュー', 'タイトル'], [
                Command('メニュー a', [CommandLine('コマンド a', Meta())]),
                Command('メニュー b', [
                    CommandLine('コマンド b', Meta()),
                    CommandLine('コマンド b', Meta()),
                ]),
                Menu('メニュー c', [
                    Command('メニュー d', [
                        CommandLine('コマンド d', Meta()),
                        CommandLine('コマンド d', Meta()),
                    ])
                ], Meta()),
            ], 0, 1), '\n'.join([
                'ホスト名: ホスト                                              実行ユーザ: ユーザ',
                '================================================================================',
                '  メインメニュー > タイトル',
                '--------------------------------------------------------------------------------',
                '  [1] | メニュー a', '  [2] | メニュー b', '  [3] | メニュー c へ',
                '------+-------------------------------------------------------------------------',
                '  [0] | メインメニュー に戻る',
                '================================================================================',
                '番号を入力してください (0-3): '
            ]))
示例#3
0
    def test_get_page_ja(self):
        self.maxDiff = None

        t = Terminal({'': []}, 'ホスト', 'ユーザ', self.get_exec(), handler=self.handler, encoding='utf-8', lang='ja_JP',
                     width=80)
        self.assertEqual(t.get_page(['タイトル'], [], 0, 1), '\n'.join([
            'ホスト名: ホスト                                              実行ユーザ: ユーザ',
            '================================================================================',
            '  タイトル',
            '--------------------------------------------------------------------------------',
            '------+-------------------------------------------------------------------------',
            '  [0] | 終了',
            '================================================================================',
            '番号を入力してください (0-0): '
        ]))

        self.assertEqual(t.get_page(['メインメニュー', 'タイトル'], [
            Command('メニュー a', [CommandLine('コマンド a', Meta())]),
            Command('メニュー b', [CommandLine('コマンド b', Meta())]),
            Command('メニュー c', [CommandLine('コマンド c', Meta())]),
        ], 0, 1), '\n'.join([
            'ホスト名: ホスト                                              実行ユーザ: ユーザ',
            '================================================================================',
            '  メインメニュー > タイトル',
            '--------------------------------------------------------------------------------',
            '  [1] | メニュー a',
            '  [2] | メニュー b',
            '  [3] | メニュー c',
            '------+-------------------------------------------------------------------------',
            '  [0] | メインメニュー に戻る',
            '================================================================================',
            '番号を入力してください (0-3): '
        ]))

        self.assertEqual(t.get_page([
            'メインメニュー', 'タイトル1', 'タイトル2', 'タイトル3', 'タイトル4',
            'タイトル5', 'タイトル6', 'タイトル7', 'タイトル8',
        ], [
            Command('メニュー a', [CommandLine('コマンド a', Meta())]),
            Command('メニュー b', [CommandLine('コマンド b', Meta())]),
            Command('メニュー c', [CommandLine('コマンド c', Meta())]),
        ], 0, 1), '\n'.join([
            'ホスト名: ホスト                                              実行ユーザ: ユーザ',
            '================================================================================',
            '  ~ル2 > タイトル3 > タイトル4 > タイトル5 > タイトル6 > タイトル7 > タイトル8',
            '--------------------------------------------------------------------------------',
            '  [1] | メニュー a',
            '  [2] | メニュー b',
            '  [3] | メニュー c',
            '------+-------------------------------------------------------------------------',
            '  [0] | タイトル7 に戻る',
            '================================================================================',
            '番号を入力してください (0-3): '
        ]))

        self.assertEqual(t.get_page(['タイトル'], [
            Command('メニュー a', [CommandLine('コマンド a', Meta())]),
            Command('メニュー b', [CommandLine('コマンド b', Meta())]),
            Command('メニュー c', [CommandLine('コマンド c', Meta())]),
            Command('メニュー d', [CommandLine('コマンド d', Meta())]),
            Command('メニュー e', [CommandLine('コマンド e', Meta())]),
            Command('メニュー f', [CommandLine('コマンド f', Meta())]),
            Command('メニュー g', [CommandLine('コマンド g', Meta())]),
            Command('メニュー h', [CommandLine('コマンド h', Meta())]),
            Command('メニュー i', [CommandLine('コマンド i', Meta())]),
        ], 0, 100), '\n'.join([
            'ホスト名: ホスト                                              実行ユーザ: ユーザ',
            '================================================================================',
            '  タイトル',
            '--------------------------------------------------------------------------------',
            '                                  Page 1 / 100                            [N] =>',
            '--------------------------------------------------------------------------------',
            '  [1] | メニュー a',
            '  [2] | メニュー b',
            '  [3] | メニュー c',
            '  [4] | メニュー d',
            '  [5] | メニュー e',
            '  [6] | メニュー f',
            '  [7] | メニュー g',
            '  [8] | メニュー h',
            '  [9] | メニュー i',
            '------+-------------------------------------------------------------------------',
            '  [0] | 終了',
            '================================================================================',
            '番号を入力してください (0-9): '
        ]))

        self.assertEqual(t.get_page(['タイトル'], [
            Command('メニュー a', [CommandLine('コマンド a', Meta())]),
            Command('メニュー b', [CommandLine('コマンド b', Meta())]),
            Command('メニュー c', [CommandLine('コマンド c', Meta())]),
            Command('メニュー d', [CommandLine('コマンド d', Meta())]),
            Command('メニュー e', [CommandLine('コマンド e', Meta())]),
            Command('メニュー f', [CommandLine('コマンド f', Meta())]),
            Command('メニュー g', [CommandLine('コマンド g', Meta())]),
            Command('メニュー h', [CommandLine('コマンド h', Meta())]),
            Command('メニュー i', [CommandLine('コマンド i', Meta())]),
        ], 8, 100), '\n'.join([
            'ホスト名: ホスト                                              実行ユーザ: ユーザ',
            '================================================================================',
            '  タイトル',
            '--------------------------------------------------------------------------------',
            '<= [P]                            Page 9 / 100                            [N] =>',
            '--------------------------------------------------------------------------------',
            '  [1] | メニュー a',
            '  [2] | メニュー b',
            '  [3] | メニュー c',
            '  [4] | メニュー d',
            '  [5] | メニュー e',
            '  [6] | メニュー f',
            '  [7] | メニュー g',
            '  [8] | メニュー h',
            '  [9] | メニュー i',
            '------+-------------------------------------------------------------------------',
            '  [0] | 終了',
            '================================================================================',
            '番号を入力してください (0-9): '
        ]))

        self.assertEqual(t.get_page(['タイトル'], [
            Command('メニュー a', [CommandLine('コマンド a', Meta())]),
        ], 99, 100), '\n'.join([
            'ホスト名: ホスト                                              実行ユーザ: ユーザ',
            '================================================================================',
            '  タイトル',
            '--------------------------------------------------------------------------------',
            '<= [P]                           Page 100 / 100                                 ',
            '--------------------------------------------------------------------------------',
            '  [1] | メニュー a',
            '------+-------------------------------------------------------------------------',
            '  [0] | 終了',
            '================================================================================',
            '番号を入力してください (0-1): '
        ]))

        # sub menu
        self.assertEqual(t.get_page(['メインメニュー', 'タイトル'], [
            Menu('メニュー a', [Command('メニュー b', [CommandLine('コマンド b', Meta())])], Meta()),
            Menu('メニュー c', [
                Command('メニュー c', [CommandLine('コマンド c', Meta())]),
                Command('メニュー d', [CommandLine('コマンド d', Meta())]),
            ], Meta()),
        ], 0, 1), '\n'.join([
            'ホスト名: ホスト                                              実行ユーザ: ユーザ',
            '================================================================================',
            '  メインメニュー > タイトル',
            '--------------------------------------------------------------------------------',
            '  [1] | メニュー a へ',
            '  [2] | メニュー c へ',
            '------+-------------------------------------------------------------------------',
            '  [0] | メインメニュー に戻る',
            '================================================================================',
            '番号を入力してください (0-2): '
        ]))

        # multiple command lines
        self.assertEqual(t.get_page(['メインメニュー', 'タイトル'], [
            Command('メニュー a', [CommandLine('コマンド a', Meta())]),
            Command('メニュー b', [
                CommandLine('コマンド b', Meta()),
                CommandLine('コマンド b', Meta()),
            ]),
            Menu('メニュー c', [Command('メニュー d', [
                CommandLine('コマンド d', Meta()),
                CommandLine('コマンド d', Meta()),
            ])], Meta()),
        ], 0, 1), '\n'.join([
            'ホスト名: ホスト                                              実行ユーザ: ユーザ',
            '================================================================================',
            '  メインメニュー > タイトル',
            '--------------------------------------------------------------------------------',
            '  [1] | メニュー a',
            '  [2] | メニュー b',
            '  [3] | メニュー c へ',
            '------+-------------------------------------------------------------------------',
            '  [0] | メインメニュー に戻る',
            '================================================================================',
            '番号を入力してください (0-3): '
        ]))
示例#4
0
    def test_get_page(self):
        self.maxDiff = None

        t = Terminal({'': []},
                     'host',
                     'user',
                     self.get_exec(),
                     handler=self.handler,
                     encoding='utf-8',
                     lang='C',
                     width=80)
        self.assertEqual(
            t.get_page(['title'], [], 0, 1), '\n'.join([
                'Host: host                                                            User: user',
                '================================================================================',
                '  title',
                '--------------------------------------------------------------------------------',
                '------+-------------------------------------------------------------------------',
                '  [0] | Quit',
                '================================================================================',
                'Press menu number (0-0): '
            ]))

        self.assertEqual(
            t.get_page(['Main Menu', 'title'], [
                Command('menu a', [CommandLine('command a', Meta())]),
                Command('menu b', [CommandLine('command b', Meta())]),
                Command('menu c', [CommandLine('command c', Meta())]),
            ], 0, 1), '\n'.join([
                'Host: host                                                            User: user',
                '================================================================================',
                '  Main Menu > title',
                '--------------------------------------------------------------------------------',
                '  [1] | menu a', '  [2] | menu b', '  [3] | menu c',
                '------+-------------------------------------------------------------------------',
                '  [0] | Return to Main Menu',
                '================================================================================',
                'Press menu number (0-3): '
            ]))

        self.assertEqual(
            t.get_page(['title'], [
                Command('menu a', [CommandLine('command a', Meta())]),
                Command('menu b', [CommandLine('command b', Meta())]),
                Command('menu c', [CommandLine('command c', Meta())]),
                Command('menu d', [CommandLine('command d', Meta())]),
                Command('menu e', [CommandLine('command e', Meta())]),
                Command('menu f', [CommandLine('command f', Meta())]),
                Command('menu g', [CommandLine('command g', Meta())]),
                Command('menu h', [CommandLine('command h', Meta())]),
                Command('menu i', [CommandLine('command i', Meta())]),
            ], 0, 100), '\n'.join([
                'Host: host                                                            User: user',
                '================================================================================',
                '  title',
                '--------------------------------------------------------------------------------',
                '                                  Page 1 / 100                            [N] =>',
                '--------------------------------------------------------------------------------',
                '  [1] | menu a', '  [2] | menu b', '  [3] | menu c',
                '  [4] | menu d', '  [5] | menu e', '  [6] | menu f',
                '  [7] | menu g', '  [8] | menu h', '  [9] | menu i',
                '------+-------------------------------------------------------------------------',
                '  [0] | Quit',
                '================================================================================',
                'Press menu number (0-9): '
            ]))

        self.assertEqual(
            t.get_page(['title'], [
                Command('menu a', [CommandLine('command a', Meta())]),
                Command('menu b', [CommandLine('command b', Meta())]),
                Command('menu c', [CommandLine('command c', Meta())]),
                Command('menu d', [CommandLine('command d', Meta())]),
                Command('menu e', [CommandLine('command e', Meta())]),
                Command('menu f', [CommandLine('command f', Meta())]),
                Command('menu g', [CommandLine('command g', Meta())]),
                Command('menu h', [CommandLine('command h', Meta())]),
                Command('menu i', [CommandLine('command i', Meta())]),
            ], 8, 100), '\n'.join([
                'Host: host                                                            User: user',
                '================================================================================',
                '  title',
                '--------------------------------------------------------------------------------',
                '<= [P]                            Page 9 / 100                            [N] =>',
                '--------------------------------------------------------------------------------',
                '  [1] | menu a', '  [2] | menu b', '  [3] | menu c',
                '  [4] | menu d', '  [5] | menu e', '  [6] | menu f',
                '  [7] | menu g', '  [8] | menu h', '  [9] | menu i',
                '------+-------------------------------------------------------------------------',
                '  [0] | Quit',
                '================================================================================',
                'Press menu number (0-9): '
            ]))

        self.assertEqual(
            t.get_page(['title'], [
                Command('menu a', [CommandLine('command a', Meta())]),
            ], 99, 100), '\n'.join([
                'Host: host                                                            User: user',
                '================================================================================',
                '  title',
                '--------------------------------------------------------------------------------',
                '<= [P]                           Page 100 / 100                                 ',
                '--------------------------------------------------------------------------------',
                '  [1] | menu a',
                '------+-------------------------------------------------------------------------',
                '  [0] | Quit',
                '================================================================================',
                'Press menu number (0-1): '
            ]))

        # sub menu
        self.assertEqual(
            t.get_page(['Main Menu', 'title'], [
                Menu('menu a',
                     [Command('menu b', [CommandLine('command b', Meta())])],
                     Meta()),
                Menu('menu c', [
                    Command('menu c', [CommandLine('command c', Meta())]),
                    Command('menu d', [CommandLine('command d', Meta())]),
                ], Meta()),
            ], 0, 1), '\n'.join([
                'Host: host                                                            User: user',
                '================================================================================',
                '  Main Menu > title',
                '--------------------------------------------------------------------------------',
                '  [1] | Go to menu a', '  [2] | Go to menu c',
                '------+-------------------------------------------------------------------------',
                '  [0] | Return to Main Menu',
                '================================================================================',
                'Press menu number (0-2): '
            ]))

        # multiple command lines
        self.assertEqual(
            t.get_page(['Main Menu', 'title'], [
                Command('menu a', [CommandLine('command a', Meta())]),
                Command('menu b', [
                    CommandLine('command b', Meta()),
                    CommandLine('command b', Meta()),
                ]),
                Menu('menu c', [
                    Command('menu d', [
                        CommandLine('command d', Meta()),
                        CommandLine('command d', Meta()),
                    ])
                ], Meta()),
            ], 0, 1), '\n'.join([
                'Host: host                                                            User: user',
                '================================================================================',
                '  Main Menu > title',
                '--------------------------------------------------------------------------------',
                '  [1] | menu a', '  [2] | menu b', '  [3] | Go to menu c',
                '------+-------------------------------------------------------------------------',
                '  [0] | Return to Main Menu',
                '================================================================================',
                'Press menu number (0-3): '
            ]))