From aed8ce9da277f5ecffe968b324f242c41c3b752a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 10:50:31 +0200 Subject: Adding upstream version 2:9.0.1378. Signed-off-by: Daniel Baumann --- src/testdir/Make_all.mak | 555 ++ src/testdir/Make_amiga.mak | 35 + src/testdir/Make_dos.mak | 4 + src/testdir/Make_ming.mak | 168 + src/testdir/Make_mvc.mak | 162 + src/testdir/Make_vms.mms | 108 + src/testdir/Makefile | 176 + src/testdir/README.txt | 121 + src/testdir/amiga.vim | 6 + src/testdir/check.vim | 286 + src/testdir/color_ramp.vim | 85 + src/testdir/dos.vim | 9 + src/testdir/dotest.in | 3 + src/testdir/dumps/Test_Xcursorline_1.dump | 20 + src/testdir/dumps/Test_Xcursorline_10.dump | 20 + src/testdir/dumps/Test_Xcursorline_11.dump | 20 + src/testdir/dumps/Test_Xcursorline_12.dump | 20 + src/testdir/dumps/Test_Xcursorline_13.dump | 20 + src/testdir/dumps/Test_Xcursorline_14.dump | 20 + src/testdir/dumps/Test_Xcursorline_15.dump | 20 + src/testdir/dumps/Test_Xcursorline_16.dump | 20 + src/testdir/dumps/Test_Xcursorline_17.dump | 20 + src/testdir/dumps/Test_Xcursorline_18.dump | 20 + src/testdir/dumps/Test_Xcursorline_19.dump | 20 + src/testdir/dumps/Test_Xcursorline_2.dump | 20 + src/testdir/dumps/Test_Xcursorline_20.dump | 20 + src/testdir/dumps/Test_Xcursorline_21.dump | 20 + src/testdir/dumps/Test_Xcursorline_22.dump | 20 + src/testdir/dumps/Test_Xcursorline_23.dump | 20 + src/testdir/dumps/Test_Xcursorline_24.dump | 20 + src/testdir/dumps/Test_Xcursorline_3.dump | 20 + src/testdir/dumps/Test_Xcursorline_4.dump | 20 + src/testdir/dumps/Test_Xcursorline_5.dump | 20 + src/testdir/dumps/Test_Xcursorline_6.dump | 20 + src/testdir/dumps/Test_Xcursorline_7.dump | 20 + src/testdir/dumps/Test_Xcursorline_8.dump | 20 + src/testdir/dumps/Test_Xcursorline_9.dump | 20 + src/testdir/dumps/Test_appendbufline_1.dump | 10 + src/testdir/dumps/Test_autocmd_nested_switch.dump | 10 + src/testdir/dumps/Test_balloon_eval_term_01.dump | 10 + src/testdir/dumps/Test_balloon_eval_term_01a.dump | 10 + src/testdir/dumps/Test_balloon_eval_term_02.dump | 10 + src/testdir/dumps/Test_changing_cmdheight_1.dump | 8 + src/testdir/dumps/Test_changing_cmdheight_2.dump | 8 + src/testdir/dumps/Test_changing_cmdheight_3.dump | 8 + src/testdir/dumps/Test_changing_cmdheight_4.dump | 8 + src/testdir/dumps/Test_changing_cmdheight_5.dump | 8 + src/testdir/dumps/Test_changing_cmdheight_6.dump | 8 + src/testdir/dumps/Test_cmdheight_tabline_1.dump | 6 + src/testdir/dumps/Test_cmdlineclear_tabenter.dump | 10 + src/testdir/dumps/Test_cmdwin_interrupted.dump | 18 + src/testdir/dumps/Test_cmdwin_no_terminal.dump | 12 + src/testdir/dumps/Test_cmdwin_restore_1.dump | 12 + src/testdir/dumps/Test_cmdwin_restore_2.dump | 12 + src/testdir/dumps/Test_cmdwin_restore_3.dump | 18 + src/testdir/dumps/Test_cmdwin_wrong_command_1.dump | 12 + src/testdir/dumps/Test_cmdwin_wrong_command_2.dump | 12 + src/testdir/dumps/Test_colorcolumn_1.dump | 10 + src/testdir/dumps/Test_colorcolumn_2.dump | 10 + src/testdir/dumps/Test_colorcolumn_3.dump | 10 + src/testdir/dumps/Test_conceal_cuc_01.dump | 10 + src/testdir/dumps/Test_conceal_cuc_02.dump | 10 + src/testdir/dumps/Test_conceal_cul_01.dump | 20 + src/testdir/dumps/Test_conceal_cul_02.dump | 20 + src/testdir/dumps/Test_conceal_cul_03.dump | 20 + src/testdir/dumps/Test_conceal_linebreak_1.dump | 8 + src/testdir/dumps/Test_conceal_resize_01.dump | 6 + src/testdir/dumps/Test_conceal_resize_02.dump | 7 + src/testdir/dumps/Test_conceal_two_windows_01.dump | 20 + src/testdir/dumps/Test_conceal_two_windows_02.dump | 20 + src/testdir/dumps/Test_conceal_two_windows_03.dump | 20 + src/testdir/dumps/Test_conceal_two_windows_04.dump | 20 + src/testdir/dumps/Test_conceal_two_windows_05.dump | 20 + .../dumps/Test_conceal_two_windows_06c.dump | 20 + .../dumps/Test_conceal_two_windows_06i.dump | 20 + .../dumps/Test_conceal_two_windows_06n.dump | 20 + .../dumps/Test_conceal_two_windows_06v.dump | 20 + .../dumps/Test_conceal_two_windows_07c.dump | 20 + .../dumps/Test_conceal_two_windows_07i.dump | 20 + .../dumps/Test_conceal_two_windows_07in.dump | 20 + .../dumps/Test_conceal_two_windows_07n.dump | 20 + .../dumps/Test_conceal_two_windows_07v.dump | 20 + .../dumps/Test_conceal_two_windows_08c.dump | 20 + .../dumps/Test_conceal_two_windows_08i.dump | 20 + .../dumps/Test_conceal_two_windows_08n.dump | 20 + .../dumps/Test_conceal_two_windows_08v.dump | 20 + .../dumps/Test_conceal_two_windows_09c.dump | 20 + .../dumps/Test_conceal_two_windows_09i.dump | 20 + .../dumps/Test_conceal_two_windows_09n.dump | 20 + .../dumps/Test_conceal_two_windows_09v.dump | 20 + src/testdir/dumps/Test_conceal_two_windows_10.dump | 20 + src/testdir/dumps/Test_conceal_two_windows_11.dump | 20 + src/testdir/dumps/Test_conceal_two_windows_12.dump | 20 + src/testdir/dumps/Test_conceal_two_windows_13.dump | 20 + .../dumps/Test_cursor_position_with_showbreak.dump | 6 + .../dumps/Test_cursorcolumn_callback_1.dump | 8 + .../dumps/Test_cursorcolumn_insert_on_tab_1.dump | 8 + .../dumps/Test_cursorcolumn_insert_on_tab_2.dump | 8 + .../dumps/Test_cursorcolumn_insert_on_tab_3.dump | 8 + src/testdir/dumps/Test_cursorline_callback_1.dump | 8 + src/testdir/dumps/Test_cursorline_redraw_1.dump | 20 + src/testdir/dumps/Test_cursorline_redraw_2.dump | 20 + .../dumps/Test_cursorline_screenline_1.dump | 8 + .../dumps/Test_cursorline_screenline_2.dump | 8 + .../dumps/Test_cursorline_with_visualmode_01.dump | 12 + src/testdir/dumps/Test_cursorline_yank_01.dump | 8 + src/testdir/dumps/Test_diff_01.dump | 20 + src/testdir/dumps/Test_diff_02.dump | 20 + src/testdir/dumps/Test_diff_03.dump | 20 + src/testdir/dumps/Test_diff_04.dump | 20 + src/testdir/dumps/Test_diff_05.dump | 20 + src/testdir/dumps/Test_diff_06.0.dump | 20 + src/testdir/dumps/Test_diff_06.1.dump | 20 + src/testdir/dumps/Test_diff_06.2.dump | 20 + src/testdir/dumps/Test_diff_06.dump | 20 + src/testdir/dumps/Test_diff_07.dump | 20 + src/testdir/dumps/Test_diff_08.dump | 20 + src/testdir/dumps/Test_diff_09.dump | 20 + src/testdir/dumps/Test_diff_10.dump | 20 + src/testdir/dumps/Test_diff_11.dump | 20 + src/testdir/dumps/Test_diff_12.dump | 20 + src/testdir/dumps/Test_diff_13.dump | 20 + src/testdir/dumps/Test_diff_14.dump | 20 + src/testdir/dumps/Test_diff_15.dump | 20 + src/testdir/dumps/Test_diff_16.dump | 20 + src/testdir/dumps/Test_diff_17.dump | 20 + src/testdir/dumps/Test_diff_18.dump | 20 + src/testdir/dumps/Test_diff_19.dump | 20 + src/testdir/dumps/Test_diff_20.dump | 20 + src/testdir/dumps/Test_diff_bin_01.dump | 20 + src/testdir/dumps/Test_diff_bin_02.dump | 20 + src/testdir/dumps/Test_diff_bin_03.dump | 20 + src/testdir/dumps/Test_diff_bin_04.dump | 20 + src/testdir/dumps/Test_diff_cuc_01.dump | 20 + src/testdir/dumps/Test_diff_cuc_02.dump | 20 + src/testdir/dumps/Test_diff_cuc_03.dump | 20 + src/testdir/dumps/Test_diff_cuc_04.dump | 20 + src/testdir/dumps/Test_diff_of_diff_01.dump | 20 + src/testdir/dumps/Test_diff_of_diff_02.dump | 20 + src/testdir/dumps/Test_diff_rnu_01.dump | 20 + src/testdir/dumps/Test_diff_rnu_02.dump | 20 + src/testdir/dumps/Test_diff_rnu_03.dump | 20 + src/testdir/dumps/Test_diff_scroll_1.dump | 12 + src/testdir/dumps/Test_diff_scroll_2.dump | 12 + src/testdir/dumps/Test_diff_scroll_change_01.dump | 20 + src/testdir/dumps/Test_diff_scroll_change_02.dump | 20 + src/testdir/dumps/Test_diff_scroll_change_03.dump | 20 + src/testdir/dumps/Test_diff_syntax_1.dump | 20 + src/testdir/dumps/Test_diff_with_cul_bri_01.dump | 20 + src/testdir/dumps/Test_diff_with_cul_bri_02.dump | 20 + src/testdir/dumps/Test_diff_with_cul_bri_03.dump | 20 + src/testdir/dumps/Test_diff_with_cul_bri_04.dump | 20 + .../dumps/Test_diff_with_cursorline_01.dump | 20 + .../dumps/Test_diff_with_cursorline_02.dump | 20 + .../dumps/Test_diff_with_cursorline_03.dump | 20 + .../dumps/Test_diff_with_cursorline_number_01.dump | 20 + .../dumps/Test_diff_with_cursorline_number_02.dump | 20 + src/testdir/dumps/Test_display_fillchars_1.dump | 12 + src/testdir/dumps/Test_display_fillchars_2.dump | 12 + src/testdir/dumps/Test_display_lastline_1.dump | 10 + src/testdir/dumps/Test_display_lastline_2.dump | 10 + src/testdir/dumps/Test_display_lastline_3.dump | 10 + src/testdir/dumps/Test_display_lastline_4.dump | 10 + src/testdir/dumps/Test_display_lastline_5.dump | 10 + src/testdir/dumps/Test_display_lastline_6.dump | 10 + .../dumps/Test_display_lastline_euro_1.dump | 10 + .../dumps/Test_display_lastline_euro_2.dump | 10 + .../dumps/Test_display_lastline_euro_3.dump | 10 + .../dumps/Test_display_lastline_euro_4.dump | 10 + .../dumps/Test_display_lastline_euro_5.dump | 10 + .../dumps/Test_display_lastline_euro_6.dump | 10 + .../dumps/Test_display_scroll_at_topline.dump | 4 + .../dumps/Test_display_scroll_update_visual.dump | 8 + src/testdir/dumps/Test_display_unprintable_01.dump | 9 + src/testdir/dumps/Test_display_unprintable_02.dump | 9 + .../dumps/Test_display_visual_block_scroll.dump | 7 + src/testdir/dumps/Test_echowin_eval.dump | 8 + src/testdir/dumps/Test_echowin_showmode.dump | 8 + src/testdir/dumps/Test_echowindow_1.dump | 8 + src/testdir/dumps/Test_echowindow_2.dump | 8 + src/testdir/dumps/Test_echowindow_3.dump | 8 + src/testdir/dumps/Test_echowindow_4.dump | 8 + src/testdir/dumps/Test_echowindow_5.dump | 8 + src/testdir/dumps/Test_echowindow_6.dump | 8 + src/testdir/dumps/Test_echowindow_7.dump | 8 + src/testdir/dumps/Test_echowindow_8.dump | 8 + src/testdir/dumps/Test_echowindow_9.dump | 8 + src/testdir/dumps/Test_fileinfo_after_echo.dump | 6 + src/testdir/dumps/Test_folds_with_rnu_01.dump | 20 + src/testdir/dumps/Test_folds_with_rnu_02.dump | 20 + src/testdir/dumps/Test_functions_echoraw.dump | 5 + src/testdir/dumps/Test_hlsearch_1.dump | 6 + src/testdir/dumps/Test_hlsearch_2.dump | 6 + .../dumps/Test_hlsearch_block_visual_match.dump | 9 + src/testdir/dumps/Test_hlsearch_ctrlr_1.dump | 6 + .../dumps/Test_hlsearch_cursearch_changed_1.dump | 9 + .../Test_hlsearch_cursearch_multiple_line_1.dump | 9 + .../Test_hlsearch_cursearch_multiple_line_2.dump | 9 + .../Test_hlsearch_cursearch_multiple_line_3.dump | 9 + .../Test_hlsearch_cursearch_multiple_line_4.dump | 9 + .../Test_hlsearch_cursearch_multiple_line_5.dump | 9 + .../Test_hlsearch_cursearch_single_line_1.dump | 9 + .../Test_hlsearch_cursearch_single_line_2.dump | 9 + .../Test_hlsearch_cursearch_single_line_2a.dump | 9 + .../Test_hlsearch_cursearch_single_line_2b.dump | 9 + .../Test_hlsearch_cursearch_single_line_3.dump | 9 + src/testdir/dumps/Test_hlsearch_visual_1.dump | 6 + src/testdir/dumps/Test_hor_scroll_1.dump | 8 + src/testdir/dumps/Test_hor_scroll_2.dump | 8 + src/testdir/dumps/Test_hor_scroll_3.dump | 8 + src/testdir/dumps/Test_hor_scroll_4.dump | 8 + src/testdir/dumps/Test_hor_scroll_5.dump | 8 + src/testdir/dumps/Test_incsearch_change_01.dump | 9 + src/testdir/dumps/Test_incsearch_newline1.dump | 5 + src/testdir/dumps/Test_incsearch_newline2.dump | 5 + src/testdir/dumps/Test_incsearch_newline3.dump | 5 + src/testdir/dumps/Test_incsearch_newline4.dump | 5 + src/testdir/dumps/Test_incsearch_newline5.dump | 5 + src/testdir/dumps/Test_incsearch_scrolling_01.dump | 9 + src/testdir/dumps/Test_incsearch_search_01.dump | 9 + src/testdir/dumps/Test_incsearch_search_02.dump | 9 + src/testdir/dumps/Test_incsearch_sort_01.dump | 9 + src/testdir/dumps/Test_incsearch_sort_02.dump | 9 + src/testdir/dumps/Test_incsearch_sub_01.dump | 9 + src/testdir/dumps/Test_incsearch_sub_02.dump | 9 + .../dumps/Test_incsearch_substitute_01.dump | 9 + .../dumps/Test_incsearch_substitute_02.dump | 9 + .../dumps/Test_incsearch_substitute_03.dump | 9 + .../dumps/Test_incsearch_substitute_04.dump | 9 + .../dumps/Test_incsearch_substitute_05.dump | 9 + .../dumps/Test_incsearch_substitute_06.dump | 9 + .../dumps/Test_incsearch_substitute_07.dump | 9 + .../dumps/Test_incsearch_substitute_08.dump | 9 + .../dumps/Test_incsearch_substitute_09.dump | 9 + .../dumps/Test_incsearch_substitute_10.dump | 9 + .../dumps/Test_incsearch_substitute_11.dump | 9 + .../dumps/Test_incsearch_substitute_12.dump | 9 + .../dumps/Test_incsearch_substitute_13.dump | 9 + .../dumps/Test_incsearch_substitute_14.dump | 9 + .../dumps/Test_incsearch_substitute_15.dump | 4 + src/testdir/dumps/Test_incsearch_vimgrep_01.dump | 9 + src/testdir/dumps/Test_incsearch_vimgrep_02.dump | 9 + src/testdir/dumps/Test_incsearch_vimgrep_03.dump | 9 + src/testdir/dumps/Test_incsearch_vimgrep_04.dump | 9 + src/testdir/dumps/Test_incsearch_vimgrep_05.dump | 9 + src/testdir/dumps/Test_job_buffer_scroll_1.dump | 10 + .../dumps/Test_keytyped_in_nested_func.dump | 6 + .../dumps/Test_linebreak_reset_restore_1.dump | 8 + src/testdir/dumps/Test_listchars_01.dump | 10 + src/testdir/dumps/Test_listchars_02.dump | 10 + src/testdir/dumps/Test_listchars_03.dump | 10 + src/testdir/dumps/Test_listchars_04.dump | 10 + src/testdir/dumps/Test_listchars_05.dump | 10 + src/testdir/dumps/Test_listchars_06.dump | 10 + src/testdir/dumps/Test_listchars_07.dump | 10 + src/testdir/dumps/Test_long_file_name_1.dump | 8 + .../dumps/Test_long_text_with_padding_1.dump | 8 + .../dumps/Test_long_text_with_padding_2.dump | 8 + src/testdir/dumps/Test_map_expr_1.dump | 10 + src/testdir/dumps/Test_map_expr_2.dump | 10 + src/testdir/dumps/Test_map_expr_3.dump | 10 + src/testdir/dumps/Test_map_expr_4.dump | 10 + src/testdir/dumps/Test_map_list_1.dump | 6 + src/testdir/dumps/Test_match_linebreak.dump | 10 + src/testdir/dumps/Test_match_tab_linebreak.dump | 10 + src/testdir/dumps/Test_match_with_incsearch_1.dump | 6 + src/testdir/dumps/Test_match_with_incsearch_2.dump | 6 + src/testdir/dumps/Test_matchadd_1.dump | 12 + src/testdir/dumps/Test_matchaddpos_1.dump | 14 + src/testdir/dumps/Test_matchclear_1.dump | 12 + src/testdir/dumps/Test_matchdelete_1.dump | 12 + .../dumps/Test_matchparen_clear_highlight_1.dump | 5 + .../dumps/Test_matchparen_clear_highlight_2.dump | 5 + src/testdir/dumps/Test_misplaced_type.dump | 6 + src/testdir/dumps/Test_mode_updated_1.dump | 5 + src/testdir/dumps/Test_more_scrollback_1.dump | 10 + src/testdir/dumps/Test_more_scrollback_2.dump | 10 + src/testdir/dumps/Test_move_undo_1.dump | 10 + src/testdir/dumps/Test_move_undo_2.dump | 10 + .../dumps/Test_popup_and_previewwindow_01.dump | 20 + src/testdir/dumps/Test_popup_command_01.dump | 20 + src/testdir/dumps/Test_popup_command_02.dump | 20 + src/testdir/dumps/Test_popup_command_03.dump | 20 + src/testdir/dumps/Test_popup_command_04.dump | 20 + src/testdir/dumps/Test_popup_command_05.dump | 20 + src/testdir/dumps/Test_popup_position_01.dump | 8 + src/testdir/dumps/Test_popup_position_02.dump | 8 + src/testdir/dumps/Test_popup_position_03.dump | 8 + src/testdir/dumps/Test_popup_position_04.dump | 10 + .../dumps/Test_popup_prop_not_visible_01.dump | 10 + .../dumps/Test_popup_prop_not_visible_01a.dump | 10 + .../dumps/Test_popup_prop_not_visible_01b.dump | 10 + .../dumps/Test_popup_prop_not_visible_02.dump | 10 + .../dumps/Test_popup_prop_not_visible_03.dump | 10 + src/testdir/dumps/Test_popup_settext_01.dump | 10 + src/testdir/dumps/Test_popup_settext_02.dump | 10 + src/testdir/dumps/Test_popup_settext_03.dump | 10 + src/testdir/dumps/Test_popup_settext_04.dump | 10 + src/testdir/dumps/Test_popup_settext_05.dump | 10 + src/testdir/dumps/Test_popup_settext_06.dump | 10 + src/testdir/dumps/Test_popup_settext_07.dump | 10 + src/testdir/dumps/Test_popup_textprop_01.dump | 10 + src/testdir/dumps/Test_popup_textprop_02.dump | 10 + src/testdir/dumps/Test_popup_textprop_03.dump | 10 + src/testdir/dumps/Test_popup_textprop_04.dump | 10 + src/testdir/dumps/Test_popup_textprop_05.dump | 10 + src/testdir/dumps/Test_popup_textprop_06.dump | 10 + src/testdir/dumps/Test_popup_textprop_07.dump | 10 + src/testdir/dumps/Test_popup_textprop_corn_1.dump | 12 + src/testdir/dumps/Test_popup_textprop_corn_2.dump | 12 + src/testdir/dumps/Test_popup_textprop_corn_3.dump | 12 + src/testdir/dumps/Test_popup_textprop_corn_4.dump | 12 + src/testdir/dumps/Test_popup_textprop_corn_5.dump | 12 + src/testdir/dumps/Test_popup_textprop_corn_6.dump | 12 + src/testdir/dumps/Test_popup_textprop_off_1.dump | 12 + src/testdir/dumps/Test_popup_textprop_off_2.dump | 12 + src/testdir/dumps/Test_popupwin_01.dump | 10 + src/testdir/dumps/Test_popupwin_02.dump | 10 + src/testdir/dumps/Test_popupwin_03.dump | 10 + src/testdir/dumps/Test_popupwin_04.dump | 10 + src/testdir/dumps/Test_popupwin_04a.dump | 10 + src/testdir/dumps/Test_popupwin_05.dump | 10 + src/testdir/dumps/Test_popupwin_06.dump | 10 + src/testdir/dumps/Test_popupwin_07.dump | 10 + src/testdir/dumps/Test_popupwin_08.dump | 10 + src/testdir/dumps/Test_popupwin_10.dump | 10 + src/testdir/dumps/Test_popupwin_11.dump | 10 + src/testdir/dumps/Test_popupwin_20.dump | 15 + src/testdir/dumps/Test_popupwin_21.dump | 15 + src/testdir/dumps/Test_popupwin_22.dump | 12 + src/testdir/dumps/Test_popupwin_23.dump | 12 + src/testdir/dumps/Test_popupwin_24.dump | 12 + src/testdir/dumps/Test_popupwin_atcursor_pos.dump | 12 + src/testdir/dumps/Test_popupwin_behind.dump | 10 + src/testdir/dumps/Test_popupwin_beval_1.dump | 10 + src/testdir/dumps/Test_popupwin_beval_2.dump | 10 + src/testdir/dumps/Test_popupwin_beval_3.dump | 10 + src/testdir/dumps/Test_popupwin_close_01.dump | 10 + src/testdir/dumps/Test_popupwin_close_02.dump | 10 + src/testdir/dumps/Test_popupwin_close_03.dump | 10 + src/testdir/dumps/Test_popupwin_close_04.dump | 10 + src/testdir/dumps/Test_popupwin_close_05.dump | 10 + src/testdir/dumps/Test_popupwin_corners.dump | 12 + src/testdir/dumps/Test_popupwin_ctrl_c.dump | 10 + src/testdir/dumps/Test_popupwin_cursorline_1.dump | 10 + src/testdir/dumps/Test_popupwin_cursorline_2.dump | 10 + src/testdir/dumps/Test_popupwin_cursorline_3.dump | 10 + src/testdir/dumps/Test_popupwin_cursorline_4.dump | 10 + src/testdir/dumps/Test_popupwin_cursorline_5.dump | 10 + src/testdir/dumps/Test_popupwin_cursorline_6.dump | 10 + src/testdir/dumps/Test_popupwin_cursorline_7.dump | 10 + src/testdir/dumps/Test_popupwin_cursorline_8.dump | 10 + src/testdir/dumps/Test_popupwin_doublewidth_1.dump | 10 + src/testdir/dumps/Test_popupwin_drag_01.dump | 10 + src/testdir/dumps/Test_popupwin_drag_02.dump | 10 + src/testdir/dumps/Test_popupwin_drag_03.dump | 10 + src/testdir/dumps/Test_popupwin_drag_04.dump | 10 + src/testdir/dumps/Test_popupwin_drag_05.dump | 10 + src/testdir/dumps/Test_popupwin_drag_06.dump | 10 + .../dumps/Test_popupwin_drag_minwidth_1.dump | 10 + .../dumps/Test_popupwin_drag_minwidth_2.dump | 10 + .../dumps/Test_popupwin_drag_minwidth_3.dump | 10 + src/testdir/dumps/Test_popupwin_firstline_1.dump | 10 + src/testdir/dumps/Test_popupwin_firstline_2.dump | 10 + src/testdir/dumps/Test_popupwin_infopopup_1.dump | 14 + src/testdir/dumps/Test_popupwin_infopopup_2.dump | 14 + src/testdir/dumps/Test_popupwin_infopopup_3.dump | 14 + src/testdir/dumps/Test_popupwin_infopopup_4.dump | 14 + src/testdir/dumps/Test_popupwin_infopopup_5.dump | 14 + src/testdir/dumps/Test_popupwin_infopopup_6.dump | 14 + src/testdir/dumps/Test_popupwin_infopopup_7.dump | 14 + src/testdir/dumps/Test_popupwin_infopopup_8.dump | 14 + src/testdir/dumps/Test_popupwin_infopopup_9.dump | 14 + .../dumps/Test_popupwin_infopopup_align_1.dump | 14 + .../dumps/Test_popupwin_infopopup_align_2.dump | 14 + .../dumps/Test_popupwin_infopopup_align_3.dump | 14 + .../dumps/Test_popupwin_infopopup_hidden_1.dump | 14 + .../dumps/Test_popupwin_infopopup_hidden_2.dump | 14 + .../dumps/Test_popupwin_infopopup_hidden_3.dump | 14 + .../dumps/Test_popupwin_infopopup_nb_1.dump | 14 + .../dumps/Test_popupwin_infopopup_wide_1.dump | 8 + src/testdir/dumps/Test_popupwin_longtitle_1.dump | 10 + src/testdir/dumps/Test_popupwin_longtitle_2.dump | 10 + src/testdir/dumps/Test_popupwin_longtitle_3.dump | 10 + src/testdir/dumps/Test_popupwin_longtitle_4.dump | 10 + src/testdir/dumps/Test_popupwin_mask_1.dump | 13 + src/testdir/dumps/Test_popupwin_mask_2.dump | 13 + src/testdir/dumps/Test_popupwin_mask_3.dump | 13 + src/testdir/dumps/Test_popupwin_mask_4.dump | 13 + src/testdir/dumps/Test_popupwin_mask_5.dump | 13 + src/testdir/dumps/Test_popupwin_matches.dump | 10 + src/testdir/dumps/Test_popupwin_menu_01.dump | 10 + src/testdir/dumps/Test_popupwin_menu_02.dump | 10 + src/testdir/dumps/Test_popupwin_menu_03.dump | 10 + src/testdir/dumps/Test_popupwin_menu_04.dump | 10 + src/testdir/dumps/Test_popupwin_menu_filter_1.dump | 10 + src/testdir/dumps/Test_popupwin_menu_filter_2.dump | 10 + src/testdir/dumps/Test_popupwin_menu_filter_3.dump | 10 + src/testdir/dumps/Test_popupwin_menu_filter_4.dump | 10 + src/testdir/dumps/Test_popupwin_menu_filter_5.dump | 10 + .../dumps/Test_popupwin_menu_maxwidth_1.dump | 13 + src/testdir/dumps/Test_popupwin_menu_scroll_1.dump | 10 + src/testdir/dumps/Test_popupwin_menu_scroll_2.dump | 10 + src/testdir/dumps/Test_popupwin_menu_scroll_3.dump | 10 + src/testdir/dumps/Test_popupwin_menu_scroll_4.dump | 10 + src/testdir/dumps/Test_popupwin_menu_scroll_5.dump | 10 + src/testdir/dumps/Test_popupwin_menu_scroll_6.dump | 10 + .../dumps/Test_popupwin_multibytetitle.dump | 10 + src/testdir/dumps/Test_popupwin_normal_cmd.dump | 10 + src/testdir/dumps/Test_popupwin_nospace.dump | 12 + src/testdir/dumps/Test_popupwin_notify_01.dump | 10 + src/testdir/dumps/Test_popupwin_notify_02.dump | 10 + src/testdir/dumps/Test_popupwin_nowrap.dump | 10 + .../dumps/Test_popupwin_poptermscroll_1.dump | 15 + .../dumps/Test_popupwin_poptermscroll_2.dump | 15 + .../dumps/Test_popupwin_poptermscroll_3.dump | 15 + .../dumps/Test_popupwin_poptermscroll_4.dump | 15 + .../dumps/Test_popupwin_popupmenu_masking_1.dump | 14 + .../dumps/Test_popupwin_popupmenu_masking_2.dump | 14 + .../dumps/Test_popupwin_previewpopup_1.dump | 14 + .../dumps/Test_popupwin_previewpopup_10.dump | 14 + .../dumps/Test_popupwin_previewpopup_2.dump | 14 + .../dumps/Test_popupwin_previewpopup_3.dump | 14 + .../dumps/Test_popupwin_previewpopup_4.dump | 14 + .../dumps/Test_popupwin_previewpopup_5.dump | 14 + .../dumps/Test_popupwin_previewpopup_6.dump | 14 + .../dumps/Test_popupwin_previewpopup_7.dump | 14 + .../dumps/Test_popupwin_previewpopup_8.dump | 14 + .../dumps/Test_popupwin_previewpopup_9.dump | 14 + src/testdir/dumps/Test_popupwin_scroll_1.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_10.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_11.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_12.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_13.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_2.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_3.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_4.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_5.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_6.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_7.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_8.dump | 10 + src/testdir/dumps/Test_popupwin_scroll_9.dump | 10 + src/testdir/dumps/Test_popupwin_select_01.dump | 10 + src/testdir/dumps/Test_popupwin_select_02.dump | 10 + .../dumps/Test_popupwin_set_firstline_1.dump | 16 + .../dumps/Test_popupwin_set_firstline_2.dump | 16 + src/testdir/dumps/Test_popupwin_showbreak.dump | 10 + src/testdir/dumps/Test_popupwin_sign_1.dump | 10 + src/testdir/dumps/Test_popupwin_sign_2.dump | 10 + src/testdir/dumps/Test_popupwin_term_01.dump | 16 + src/testdir/dumps/Test_popupwin_term_02.dump | 16 + src/testdir/dumps/Test_popupwin_term_03.dump | 16 + src/testdir/dumps/Test_popupwin_term_04.dump | 16 + .../dumps/Test_popupwin_three_errors_1.dump | 10 + .../dumps/Test_popupwin_three_errors_2.dump | 10 + src/testdir/dumps/Test_popupwin_title.dump | 10 + src/testdir/dumps/Test_popupwin_toohigh_1.dump | 10 + src/testdir/dumps/Test_popupwin_toohigh_2.dump | 10 + src/testdir/dumps/Test_popupwin_toohigh_3.dump | 10 + src/testdir/dumps/Test_popupwin_win_execute.dump | 10 + .../Test_popupwin_win_execute_cursorline.dump | 14 + src/testdir/dumps/Test_popupwin_wrap.dump | 10 + src/testdir/dumps/Test_popupwin_wrap_1.dump | 10 + src/testdir/dumps/Test_popupwin_wrap_2.dump | 10 + src/testdir/dumps/Test_popupwin_wrong_name.dump | 10 + .../dumps/Test_prop_above_below_empty_1.dump | 16 + .../dumps/Test_prop_above_below_empty_2.dump | 16 + .../dumps/Test_prop_above_below_empty_3.dump | 16 + .../dumps/Test_prop_above_below_empty_4.dump | 16 + .../dumps/Test_prop_above_below_empty_5.dump | 16 + .../Test_prop_above_below_smoothscroll_1.dump | 8 + .../Test_prop_above_below_smoothscroll_10.dump | 8 + .../Test_prop_above_below_smoothscroll_11.dump | 8 + .../Test_prop_above_below_smoothscroll_12.dump | 8 + .../Test_prop_above_below_smoothscroll_13.dump | 8 + .../Test_prop_above_below_smoothscroll_14.dump | 8 + .../Test_prop_above_below_smoothscroll_15.dump | 8 + .../Test_prop_above_below_smoothscroll_16.dump | 8 + .../Test_prop_above_below_smoothscroll_2.dump | 8 + .../Test_prop_above_below_smoothscroll_3.dump | 8 + .../Test_prop_above_below_smoothscroll_4.dump | 8 + .../Test_prop_above_below_smoothscroll_5.dump | 8 + .../Test_prop_above_below_smoothscroll_6.dump | 8 + .../Test_prop_above_below_smoothscroll_7.dump | 8 + .../Test_prop_above_below_smoothscroll_8.dump | 8 + .../Test_prop_above_below_smoothscroll_9.dump | 8 + src/testdir/dumps/Test_prop_above_empty_1.dump | 16 + src/testdir/dumps/Test_prop_above_empty_2.dump | 16 + src/testdir/dumps/Test_prop_above_number_1.dump | 8 + src/testdir/dumps/Test_prop_above_number_2.dump | 8 + src/testdir/dumps/Test_prop_after_linebreak.dump | 10 + src/testdir/dumps/Test_prop_after_tab.dump | 10 + src/testdir/dumps/Test_prop_at_same_pos.dump | 5 + src/testdir/dumps/Test_prop_before_tab_01.dump | 8 + src/testdir/dumps/Test_prop_before_tab_02.dump | 8 + src/testdir/dumps/Test_prop_before_tab_03.dump | 8 + src/testdir/dumps/Test_prop_before_tab_04.dump | 8 + src/testdir/dumps/Test_prop_before_tab_05.dump | 8 + src/testdir/dumps/Test_prop_before_tab_06.dump | 8 + src/testdir/dumps/Test_prop_before_tab_07.dump | 8 + src/testdir/dumps/Test_prop_before_tab_08.dump | 8 + src/testdir/dumps/Test_prop_before_tab_09.dump | 8 + src/testdir/dumps/Test_prop_before_tab_10.dump | 8 + .../dumps/Test_prop_below_after_empty_1.dump | 8 + .../dumps/Test_prop_below_after_empty_2.dump | 8 + .../dumps/Test_prop_below_after_empty_3.dump | 8 + .../dumps/Test_prop_below_split_line_1.dump | 8 + .../dumps/Test_prop_below_split_line_2.dump | 8 + .../dumps/Test_prop_below_split_line_3.dump | 8 + src/testdir/dumps/Test_prop_delete_updates_1.dump | 10 + src/testdir/dumps/Test_prop_delete_updates_2.dump | 10 + src/testdir/dumps/Test_prop_delete_updates_3.dump | 10 + src/testdir/dumps/Test_prop_diff_mode_1.dump | 10 + src/testdir/dumps/Test_prop_diff_mode_2.dump | 10 + .../dumps/Test_prop_insert_list_mode_1.dump | 8 + .../dumps/Test_prop_insert_list_mode_2.dump | 8 + .../dumps/Test_prop_insert_list_mode_3.dump | 8 + .../dumps/Test_prop_insert_start_incl_1.dump | 8 + .../dumps/Test_prop_insert_start_incl_2.dump | 8 + .../dumps/Test_prop_insert_start_incl_3.dump | 8 + .../dumps/Test_prop_insert_start_incl_4.dump | 8 + .../dumps/Test_prop_insert_start_incl_5.dump | 8 + .../dumps/Test_prop_insert_start_incl_6.dump | 8 + .../dumps/Test_prop_insert_start_incl_7.dump | 8 + .../dumps/Test_prop_insert_start_incl_8.dump | 8 + src/testdir/dumps/Test_prop_inserts_text_1.dump | 8 + src/testdir/dumps/Test_prop_inserts_text_2.dump | 8 + src/testdir/dumps/Test_prop_inserts_text_3.dump | 8 + src/testdir/dumps/Test_prop_inserts_text_4.dump | 8 + src/testdir/dumps/Test_prop_inserts_text_5.dump | 8 + src/testdir/dumps/Test_prop_inserts_text_6.dump | 8 + src/testdir/dumps/Test_prop_inserts_text_hi_1.dump | 6 + src/testdir/dumps/Test_prop_inserts_text_hi_2.dump | 6 + src/testdir/dumps/Test_prop_inserts_text_hi_3.dump | 6 + src/testdir/dumps/Test_prop_inserts_text_hi_4.dump | 6 + src/testdir/dumps/Test_prop_inserts_text_hi_5.dump | 6 + src/testdir/dumps/Test_prop_inserts_text_hi_6.dump | 6 + src/testdir/dumps/Test_prop_linebreak_1.dump | 10 + src/testdir/dumps/Test_prop_linebreak_2.dump | 10 + src/testdir/dumps/Test_prop_multibyte_below_1.dump | 10 + src/testdir/dumps/Test_prop_negative_error_1.dump | 8 + src/testdir/dumps/Test_prop_negative_error_2.dump | 8 + .../dumps/Test_prop_right_align_twice_1.dump | 8 + .../dumps/Test_prop_right_align_twice_2.dump | 8 + .../dumps/Test_prop_right_align_twice_3.dump | 8 + src/testdir/dumps/Test_prop_text_change_arg_1.dump | 5 + src/testdir/dumps/Test_prop_text_change_arg_2.dump | 5 + .../dumps/Test_prop_text_with_padding_1.dump | 8 + .../dumps/Test_prop_text_with_padding_2.dump | 8 + .../dumps/Test_prop_text_with_padding_3.dump | 8 + .../dumps/Test_prop_text_with_padding_4.dump | 8 + src/testdir/dumps/Test_prop_with_linebreak_1.dump | 6 + src/testdir/dumps/Test_prop_with_linebreak_2.dump | 6 + src/testdir/dumps/Test_prop_with_text_above_1.dump | 9 + .../dumps/Test_prop_with_text_above_1a.dump | 9 + .../dumps/Test_prop_with_text_above_1b.dump | 9 + .../dumps/Test_prop_with_text_above_1c.dump | 9 + src/testdir/dumps/Test_prop_with_text_above_2.dump | 9 + src/testdir/dumps/Test_prop_with_text_above_3.dump | 9 + src/testdir/dumps/Test_prop_with_text_above_4.dump | 9 + src/testdir/dumps/Test_prop_with_text_above_5.dump | 9 + src/testdir/dumps/Test_prop_with_text_above_6.dump | 9 + src/testdir/dumps/Test_prop_with_text_above_7.dump | 9 + src/testdir/dumps/Test_prop_with_text_above_8.dump | 9 + src/testdir/dumps/Test_prop_with_text_above_9.dump | 9 + src/testdir/dumps/Test_prop_with_text_after_1.dump | 8 + .../Test_prop_with_text_after_below_trunc_1.dump | 8 + .../Test_prop_with_text_after_below_trunc_2.dump | 8 + .../Test_prop_with_text_after_below_trunc_3.dump | 8 + .../Test_prop_with_text_after_join_split_1.dump | 8 + .../Test_prop_with_text_after_join_split_2.dump | 8 + .../Test_prop_with_text_after_join_split_3.dump | 8 + .../Test_prop_with_text_after_join_split_4.dump | 8 + .../Test_prop_with_text_after_join_split_5.dump | 8 + .../dumps/Test_prop_with_text_after_joined_1.dump | 6 + .../dumps/Test_prop_with_text_after_nowrap_1.dump | 12 + .../dumps/Test_prop_with_text_after_nowrap_2.dump | 12 + .../dumps/Test_prop_with_text_after_nowrap_3.dump | 12 + .../dumps/Test_prop_with_text_after_trunc_1.dump | 9 + .../dumps/Test_prop_with_text_after_trunc_2.dump | 9 + .../dumps/Test_prop_with_text_after_trunc_3.dump | 9 + .../dumps/Test_prop_with_text_after_trunc_4.dump | 9 + .../dumps/Test_prop_with_text_after_trunc_5.dump | 9 + .../dumps/Test_prop_with_text_after_wraps_1.dump | 9 + .../Test_prop_with_text_below_after_match_1.dump | 8 + .../dumps/Test_prop_with_text_below_cul_1.dump | 6 + .../dumps/Test_prop_with_text_below_nowrap_1.dump | 8 + .../dumps/Test_prop_with_text_below_nowrap_2.dump | 8 + .../dumps/Test_prop_with_text_cursormoved_1.dump | 8 + .../dumps/Test_prop_with_text_cursormoved_2.dump | 8 + .../dumps/Test_prop_with_text_empty_line_1.dump | 8 + .../dumps/Test_prop_with_text_empty_line_2.dump | 8 + .../dumps/Test_prop_with_text_empty_line_3.dump | 8 + .../dumps/Test_prop_with_text_empty_line_4.dump | 8 + .../dumps/Test_prop_with_text_empty_line_5.dump | 8 + .../dumps/Test_prop_with_text_override_1.dump | 6 + .../dumps/Test_prop_with_text_override_2.dump | 6 + src/testdir/dumps/Test_prop_with_wrap_1.dump | 6 + src/testdir/dumps/Test_props_after_1.dump | 8 + src/testdir/dumps/Test_props_after_2.dump | 8 + src/testdir/dumps/Test_pum_preview_1.dump | 12 + src/testdir/dumps/Test_pum_preview_2.dump | 12 + src/testdir/dumps/Test_pum_preview_3.dump | 12 + src/testdir/dumps/Test_pum_preview_4.dump | 12 + src/testdir/dumps/Test_pum_rightleft_01.dump | 8 + src/testdir/dumps/Test_pum_rightleft_02.dump | 7 + src/testdir/dumps/Test_pum_scrollbar_01.dump | 7 + src/testdir/dumps/Test_pum_scrollbar_02.dump | 7 + src/testdir/dumps/Test_pum_stopped_by_timer.dump | 12 + .../dumps/Test_pum_with_folds_two_tabs.dump | 10 + src/testdir/dumps/Test_pum_with_preview_win.dump | 12 + src/testdir/dumps/Test_quickfix_cwindow_1.dump | 12 + src/testdir/dumps/Test_quickfix_cwindow_2.dump | 12 + src/testdir/dumps/Test_quickfix_cwindow_3.dump | 12 + src/testdir/dumps/Test_quickfix_cwindow_4.dump | 12 + src/testdir/dumps/Test_quickfix_window_fails.dump | 13 + src/testdir/dumps/Test_quit_long_message.dump | 10 + src/testdir/dumps/Test_redraw_in_autocmd_1.dump | 8 + src/testdir/dumps/Test_redraw_in_autocmd_2.dump | 8 + .../dumps/Test_redrawstatus_in_autocmd_1.dump | 8 + .../dumps/Test_redrawstatus_in_autocmd_2.dump | 8 + .../dumps/Test_redrawstatus_in_autocmd_3.dump | 8 + .../dumps/Test_redrawstatus_in_autocmd_4.dump | 8 + .../dumps/Test_redrawstatus_in_autocmd_5.dump | 8 + .../dumps/Test_relativenumber_callback_1.dump | 8 + src/testdir/dumps/Test_relnr_colors_1.dump | 10 + src/testdir/dumps/Test_relnr_colors_2.dump | 10 + src/testdir/dumps/Test_relnr_colors_3.dump | 10 + src/testdir/dumps/Test_relnr_colors_4.dump | 10 + src/testdir/dumps/Test_scroll_no_region_1.dump | 10 + src/testdir/dumps/Test_scroll_no_region_2.dump | 10 + src/testdir/dumps/Test_scroll_no_region_3.dump | 10 + src/testdir/dumps/Test_scroll_no_region_4.dump | 10 + src/testdir/dumps/Test_scroll_no_region_5.dump | 10 + src/testdir/dumps/Test_scroll_no_region_6.dump | 10 + src/testdir/dumps/Test_scrollbar_on_wide_char.dump | 10 + src/testdir/dumps/Test_searchstat_1.dump | 10 + src/testdir/dumps/Test_searchstat_2.dump | 10 + src/testdir/dumps/Test_searchstat_3.dump | 10 + src/testdir/dumps/Test_searchstat_4.dump | 10 + src/testdir/dumps/Test_searchstat_inc_1.dump | 10 + src/testdir/dumps/Test_searchstat_inc_2.dump | 10 + src/testdir/dumps/Test_searchstat_inc_3.dump | 10 + src/testdir/dumps/Test_searchstatgd_1.dump | 10 + src/testdir/dumps/Test_searchstatgd_2.dump | 10 + src/testdir/dumps/Test_setcellwidths_dump_1.dump | 6 + src/testdir/dumps/Test_setcellwidths_dump_2.dump | 6 + src/testdir/dumps/Test_sign_cursor_1.dump | 6 + src/testdir/dumps/Test_sign_cursor_2.dump | 6 + src/testdir/dumps/Test_sign_cursor_3.dump | 6 + src/testdir/dumps/Test_sign_cursor_4.dump | 6 + src/testdir/dumps/Test_sign_cursor_5.dump | 6 + src/testdir/dumps/Test_sign_cursor_6.dump | 6 + src/testdir/dumps/Test_smooth_diff_1.dump | 8 + src/testdir/dumps/Test_smooth_list_1.dump | 8 + src/testdir/dumps/Test_smooth_list_2.dump | 8 + src/testdir/dumps/Test_smooth_long_1.dump | 6 + src/testdir/dumps/Test_smooth_long_10.dump | 6 + src/testdir/dumps/Test_smooth_long_11.dump | 6 + src/testdir/dumps/Test_smooth_long_12.dump | 6 + src/testdir/dumps/Test_smooth_long_13.dump | 6 + src/testdir/dumps/Test_smooth_long_14.dump | 6 + src/testdir/dumps/Test_smooth_long_15.dump | 6 + src/testdir/dumps/Test_smooth_long_2.dump | 6 + src/testdir/dumps/Test_smooth_long_3.dump | 6 + src/testdir/dumps/Test_smooth_long_4.dump | 6 + src/testdir/dumps/Test_smooth_long_5.dump | 6 + src/testdir/dumps/Test_smooth_long_6.dump | 6 + src/testdir/dumps/Test_smooth_long_7.dump | 6 + src/testdir/dumps/Test_smooth_long_8.dump | 6 + src/testdir/dumps/Test_smooth_long_9.dump | 6 + .../dumps/Test_smooth_long_showbreak_1.dump | 6 + .../dumps/Test_smooth_long_showbreak_2.dump | 6 + src/testdir/dumps/Test_smooth_number_1.dump | 12 + src/testdir/dumps/Test_smooth_number_2.dump | 12 + src/testdir/dumps/Test_smooth_number_3.dump | 12 + src/testdir/dumps/Test_smooth_number_4.dump | 12 + src/testdir/dumps/Test_smooth_number_5.dump | 12 + src/testdir/dumps/Test_smooth_number_6.dump | 12 + src/testdir/dumps/Test_smooth_number_7.dump | 12 + src/testdir/dumps/Test_smooth_one_long_1.dump | 6 + src/testdir/dumps/Test_smooth_one_long_2.dump | 6 + src/testdir/dumps/Test_smooth_wrap_1.dump | 8 + src/testdir/dumps/Test_smooth_wrap_2.dump | 8 + src/testdir/dumps/Test_smooth_wrap_3.dump | 8 + src/testdir/dumps/Test_smooth_wrap_4.dump | 8 + src/testdir/dumps/Test_smooth_wrap_5.dump | 8 + src/testdir/dumps/Test_smooth_wrap_6.dump | 8 + src/testdir/dumps/Test_smoothscroll_1.dump | 12 + src/testdir/dumps/Test_smoothscroll_2.dump | 12 + src/testdir/dumps/Test_smoothscroll_3.dump | 12 + src/testdir/dumps/Test_smoothscroll_4.dump | 12 + src/testdir/dumps/Test_smoothscroll_5.dump | 12 + src/testdir/dumps/Test_smoothscroll_6.dump | 12 + src/testdir/dumps/Test_smoothscroll_7.dump | 12 + src/testdir/dumps/Test_smoothscroll_8.dump | 12 + src/testdir/dumps/Test_smoothscroll_zero_1.dump | 6 + src/testdir/dumps/Test_smoothscroll_zero_2.dump | 6 + src/testdir/dumps/Test_spell_1.dump | 8 + src/testdir/dumps/Test_spell_2.dump | 8 + src/testdir/dumps/Test_spell_3.dump | 8 + src/testdir/dumps/Test_spell_4.dump | 8 + src/testdir/dumps/Test_spell_5.dump | 8 + src/testdir/dumps/Test_spell_compatible_1.dump | 8 + src/testdir/dumps/Test_spell_compatible_2.dump | 8 + src/testdir/dumps/Test_splitkeep_callback_1.dump | 8 + src/testdir/dumps/Test_splitkeep_callback_2.dump | 8 + src/testdir/dumps/Test_splitkeep_callback_3.dump | 8 + src/testdir/dumps/Test_splitkeep_callback_4.dump | 8 + src/testdir/dumps/Test_splitkeep_fold_1.dump | 10 + src/testdir/dumps/Test_splitkeep_fold_2.dump | 10 + src/testdir/dumps/Test_splitkeep_fold_3.dump | 10 + src/testdir/dumps/Test_splitkeep_fold_4.dump | 10 + src/testdir/dumps/Test_splitkeep_status_1.dump | 10 + src/testdir/dumps/Test_start_with_tabs.dump | 20 + src/testdir/dumps/Test_statusline_1.dump | 10 + src/testdir/dumps/Test_statusline_hl.dump | 6 + src/testdir/dumps/Test_statusline_mode_1.dump | 7 + src/testdir/dumps/Test_statusline_mode_2.dump | 7 + src/testdir/dumps/Test_statusline_showcmd_1.dump | 6 + src/testdir/dumps/Test_statusline_showcmd_2.dump | 6 + src/testdir/dumps/Test_statusline_showcmd_3.dump | 6 + src/testdir/dumps/Test_statusline_showcmd_4.dump | 6 + src/testdir/dumps/Test_statusline_showcmd_5.dump | 6 + .../dumps/Test_sub_highlight_zer_match_1.dump | 8 + src/testdir/dumps/Test_syntax_c_01.dump | 20 + src/testdir/dumps/Test_tabline_showcmd_1.dump | 6 + src/testdir/dumps/Test_tabline_showcmd_2.dump | 6 + src/testdir/dumps/Test_tabline_showcmd_3.dump | 6 + src/testdir/dumps/Test_tabline_showcmd_4.dump | 6 + src/testdir/dumps/Test_tabline_showcmd_5.dump | 6 + src/testdir/dumps/Test_tabpage_cmdheight.dump | 20 + src/testdir/dumps/Test_tenc_euc_jp_01.dump | 10 + src/testdir/dumps/Test_term_popup_bufline.dump | 15 + .../dumps/Test_terminal_all_ansi_colors.dump | 10 + .../dumps/Test_terminal_color_MyTermCol.dump | 15 + ...est_terminal_color_MyTermCol_over_Terminal.dump | 15 + .../dumps/Test_terminal_color_MyWinCol.dump | 15 + .../Test_terminal_color_MyWinCol_over_group.dump | 15 + .../dumps/Test_terminal_color_Terminal.dump | 15 + .../dumps/Test_terminal_color_gui_MyTermCol.dump | 15 + .../dumps/Test_terminal_color_gui_MyWinCol.dump | 15 + .../dumps/Test_terminal_color_gui_Terminal.dump | 15 + .../Test_terminal_color_gui_transp_MyTermCol.dump | 15 + .../Test_terminal_color_gui_transp_MyWinCol.dump | 15 + .../Test_terminal_color_gui_transp_Terminal.dump | 15 + .../Test_terminal_color_transp_MyTermCol.dump | 15 + .../dumps/Test_terminal_color_transp_MyWinCol.dump | 15 + .../dumps/Test_terminal_color_transp_Terminal.dump | 15 + src/testdir/dumps/Test_terminal_combining.dump | 9 + src/testdir/dumps/Test_terminal_dumpload.dump | 15 + src/testdir/dumps/Test_terminal_focus_1.dump | 6 + src/testdir/dumps/Test_terminal_focus_2.dump | 6 + src/testdir/dumps/Test_terminal_focus_3.dump | 6 + src/testdir/dumps/Test_terminal_from_cmd.dump | 20 + src/testdir/dumps/Test_terminal_normal_1.dump | 8 + src/testdir/dumps/Test_terminal_normal_2.dump | 8 + src/testdir/dumps/Test_terminal_normal_3.dump | 8 + src/testdir/dumps/Test_terminal_popup_1.dump | 15 + src/testdir/dumps/Test_terminal_popup_2.dump | 15 + src/testdir/dumps/Test_terminal_popup_3.dump | 15 + src/testdir/dumps/Test_terminal_popup_4.dump | 15 + src/testdir/dumps/Test_terminal_popup_5.dump | 15 + src/testdir/dumps/Test_terminal_popup_6.dump | 15 + src/testdir/dumps/Test_terminal_popup_7.dump | 15 + src/testdir/dumps/Test_terminal_popup_8.dump | 15 + .../dumps/Test_terminal_popup_MyPopupHlCol.dump | 15 + .../dumps/Test_terminal_popup_MyTermCol.dump | 15 + ...est_terminal_popup_MyTermCol_over_Terminal.dump | 15 + .../dumps/Test_terminal_popup_MyWinCol.dump | 15 + .../Test_terminal_popup_MyWinCol_over_group.dump | 15 + .../dumps/Test_terminal_popup_Terminal.dump | 15 + .../Test_terminal_popup_gui_MyPopupHlCol.dump | 15 + .../dumps/Test_terminal_popup_gui_MyTermCol.dump | 15 + .../dumps/Test_terminal_popup_gui_MyWinCol.dump | 15 + .../dumps/Test_terminal_popup_gui_Terminal.dump | 15 + ...est_terminal_popup_gui_transp_MyPopupHlCol.dump | 15 + .../Test_terminal_popup_gui_transp_MyTermCol.dump | 15 + .../Test_terminal_popup_gui_transp_MyWinCol.dump | 15 + .../Test_terminal_popup_gui_transp_Terminal.dump | 15 + src/testdir/dumps/Test_terminal_popup_m1.dump | 15 + .../Test_terminal_popup_transp_MyPopupHlCol.dump | 15 + .../Test_terminal_popup_transp_MyTermCol.dump | 15 + .../dumps/Test_terminal_popup_transp_MyWinCol.dump | 15 + .../dumps/Test_terminal_popup_transp_Terminal.dump | 15 + src/testdir/dumps/Test_terminal_scrollback_1.dump | 20 + src/testdir/dumps/Test_terminal_scrollback_2.dump | 20 + src/testdir/dumps/Test_terminal_scrollback_3.dump | 20 + .../Test_terminal_wincolor_split_MyWinCol.dump | 15 + .../Test_terminal_wincolor_split_MyWinCol2.dump | 15 + src/testdir/dumps/Test_text_after_nowrap_1.dump | 8 + src/testdir/dumps/Test_text_after_nowrap_2.dump | 8 + src/testdir/dumps/Test_text_after_nowrap_3.dump | 8 + src/testdir/dumps/Test_text_after_nowrap_4.dump | 8 + src/testdir/dumps/Test_text_after_nowrap_5.dump | 8 + .../dumps/Test_text_after_nowrap_list_1.dump | 6 + src/testdir/dumps/Test_text_below_nowrap_1.dump | 8 + src/testdir/dumps/Test_textprop_01.dump | 8 + src/testdir/dumps/Test_textprop_hl_override_1.dump | 8 + src/testdir/dumps/Test_textprop_hl_override_2.dump | 8 + src/testdir/dumps/Test_textprop_nesting.dump | 8 + src/testdir/dumps/Test_textprop_nowrap_01.dump | 6 + src/testdir/dumps/Test_textprop_nowrap_02.dump | 6 + src/testdir/dumps/Test_textprop_syn_1.dump | 6 + src/testdir/dumps/Test_textprop_tab.dump | 6 + src/testdir/dumps/Test_textprop_vis_01.dump | 12 + src/testdir/dumps/Test_textprop_vis_02.dump | 12 + src/testdir/dumps/Test_tselect_1.dump | 10 + src/testdir/dumps/Test_undo_after_write_1.dump | 6 + src/testdir/dumps/Test_undo_after_write_2.dump | 6 + src/testdir/dumps/Test_undo_after_write_2.vim | 2 + src/testdir/dumps/Test_verbose_option_1.dump | 12 + src/testdir/dumps/Test_verbose_system_1.dump | 10 + src/testdir/dumps/Test_verbose_system_1.vim | 5 + src/testdir/dumps/Test_verbose_system_2.dump | 10 + src/testdir/dumps/Test_verbose_system_2.vim | 5 + src/testdir/dumps/Test_vim9_closure_fails.dump | 6 + src/testdir/dumps/Test_vim9_no_redraw.dump | 6 + .../dumps/Test_vim9_reject_declaration_1.dump | 6 + .../dumps/Test_vim9_reject_declaration_2.dump | 6 + src/testdir/dumps/Test_vim9_silent_echo.dump | 6 + .../Test_virtual_text_in_popup_highlight_1.dump | 8 + .../dumps/Test_visual_block_with_virtualedit.dump | 8 + .../dumps/Test_visual_block_with_virtualedit2.dump | 8 + src/testdir/dumps/Test_wildmenu_1.dump | 8 + src/testdir/dumps/Test_wildmenu_2.dump | 8 + src/testdir/dumps/Test_wildmenu_3.dump | 8 + src/testdir/dumps/Test_wildmenu_4.dump | 8 + src/testdir/dumps/Test_wildmenu_pum_01.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_02.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_03.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_04.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_05.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_06.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_07.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_08.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_09.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_10.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_11.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_12.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_13.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_14.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_15.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_16.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_17.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_18.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_19.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_20.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_21.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_22.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_23.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_24.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_25.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_26.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_27.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_28.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_29.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_30.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_31.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_32.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_33.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_34.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_35.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_36.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_37.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_38.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_39.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_40.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_41.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_42.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_43.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_44.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_45.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_46.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_47.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_48.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_49.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_50.dump | 10 + .../dumps/Test_wildmenu_pum_clear_entries_1.dump | 10 + src/testdir/dumps/Test_wildmenu_pum_term_01.dump | 10 + .../dumps/Test_wildmenu_with_pum_foldexpr_1.dump | 10 + .../dumps/Test_wildmenu_with_pum_foldexpr_2.dump | 10 + src/testdir/dumps/Test_win_gotoid_1.dump | 15 + src/testdir/dumps/Test_win_gotoid_2.dump | 15 + src/testdir/dumps/Test_win_gotoid_3.dump | 15 + src/testdir/dumps/Test_winbar_not_visible.dump | 10 + .../Test_winbar_not_visible_custom_statusline.dump | 10 + src/testdir/dumps/Test_wincolor_01.dump | 8 + src/testdir/dumps/Test_wincolor_lcs.dump | 8 + src/testdir/dumps/Test_winline_rnu.dump | 5 + .../dumps/Test_winscrolled_not_when_defined_1.dump | 10 + .../dumps/Test_winscrolled_not_when_defined_2.dump | 10 + .../dumps/Test_winscrolled_once_only_1.dump | 10 + src/testdir/gen_opt_test.vim | 241 + src/testdir/gui_init.vim | 6 + src/testdir/gui_preinit.vim | 7 + src/testdir/keycode_check.json | 1 + src/testdir/keycode_check.vim | 470 ++ src/testdir/lsan-suppress.txt | 13 + src/testdir/mouse.vim | 372 + src/testdir/popupbounce.vim | 80 + src/testdir/python2/module.py | 2 + src/testdir/python3/module.py | 2 + src/testdir/python_after/after.py | 2 + src/testdir/python_before/before.py | 1 + src/testdir/python_before/before_1.py | 1 + src/testdir/python_before/before_2.py | 1 + src/testdir/pythonx/failing.py | 1 + src/testdir/pythonx/failing_import.py | 1 + src/testdir/pythonx/module.py | 1 + src/testdir/pythonx/modulex.py | 1 + src/testdir/pythonx/topmodule/__init__.py | 1 + .../pythonx/topmodule/submodule/__init__.py | 1 + .../topmodule/submodule/subsubmodule/__init__.py | 1 + .../submodule/subsubmodule/subsubsubmodule.py | 1 + src/testdir/pyxfile/py2_magic.py | 4 + src/testdir/pyxfile/py2_shebang.py | 4 + src/testdir/pyxfile/py3_magic.py | 4 + src/testdir/pyxfile/py3_shebang.py | 4 + src/testdir/pyxfile/pyx.py | 2 + src/testdir/runtest.vim | 618 ++ src/testdir/samples/crypt_sodium_invalid.txt | Bin 0 -> 16504 bytes src/testdir/samples/quickfix.txt | 4 + src/testdir/samples/re.freeze.txt | 6 + src/testdir/samples/test000 | Bin 0 -> 8 bytes src/testdir/sautest/autoload/Test104.vim | 1 + src/testdir/sautest/autoload/auto9.vim | 9 + src/testdir/sautest/autoload/foo.vim | 15 + src/testdir/sautest/autoload/footest.vim | 5 + src/testdir/sautest/autoload/globone.vim | 1 + src/testdir/sautest/autoload/globtwo.vim | 1 + src/testdir/sautest/autoload/sourced.vim | 4 + src/testdir/screendump.vim | 123 + src/testdir/script_util.vim | 69 + src/testdir/setup.vim | 39 + src/testdir/setup_gui.vim | 31 + src/testdir/shared.vim | 411 ++ src/testdir/silent.wav | Bin 0 -> 65580 bytes src/testdir/summarize.vim | 62 + src/testdir/term_util.vim | 196 + src/testdir/test10.in | 21 + src/testdir/test10.ok | 2 + src/testdir/test20.in | 27 + src/testdir/test20.ok | 10 + src/testdir/test21.in | 13 + src/testdir/test21.ok | 4 + src/testdir/test22.in | 15 + src/testdir/test22.ok | 2 + src/testdir/test23.in | Bin 0 -> 1301 bytes src/testdir/test23.ok | 32 + src/testdir/test24.in | Bin 0 -> 364 bytes src/testdir/test24.ok | 2 + src/testdir/test25.in | 108 + src/testdir/test25.ok | 99 + src/testdir/test26.in | 24 + src/testdir/test26.ok | 3 + src/testdir/test27.in | Bin 0 -> 2368 bytes src/testdir/test27.ok | Bin 0 -> 409 bytes src/testdir/test77a.com | 8 + src/testdir/test77a.in | 35 + src/testdir/test77a.ok | 1 + src/testdir/test_alot.vim | 31 + src/testdir/test_alot_latin.vim | 7 + src/testdir/test_alot_utf8.vim | 14 + src/testdir/test_arabic.vim | 595 ++ src/testdir/test_arglist.vim | 747 ++ src/testdir/test_assert.vim | 488 ++ src/testdir/test_autochdir.vim | 121 + src/testdir/test_autocmd.vim | 4270 +++++++++++ src/testdir/test_autoload.vim | 30 + src/testdir/test_backspace_opt.vim | 141 + src/testdir/test_backup.vim | 88 + src/testdir/test_balloon.vim | 67 + src/testdir/test_balloon_gui.vim | 21 + src/testdir/test_behave.vim | 31 + src/testdir/test_bench_regexp.vim | 24 + src/testdir/test_blob.vim | 835 +++ src/testdir/test_blockedit.vim | 134 + src/testdir/test_breakindent.vim | 1055 +++ src/testdir/test_buffer.vim | 517 ++ src/testdir/test_bufline.vim | 341 + src/testdir/test_bufwintabinfo.vim | 197 + src/testdir/test_cd.vim | 247 + src/testdir/test_cdo.vim | 216 + src/testdir/test_changedtick.vim | 97 + src/testdir/test_changelist.vim | 105 + src/testdir/test_channel.py | 288 + src/testdir/test_channel.vim | 2696 +++++++ src/testdir/test_channel_6.py | 15 + src/testdir/test_channel_lsp.py | 333 + src/testdir/test_channel_pipe.py | 76 + src/testdir/test_channel_unix.py | 56 + src/testdir/test_channel_write.py | 18 + src/testdir/test_charsearch.vim | 98 + src/testdir/test_charsearch_utf8.vim | 19 + src/testdir/test_checkpath.vim | 116 + src/testdir/test_cindent.vim | 5442 ++++++++++++++ src/testdir/test_cjk_linebreak.vim | 101 + src/testdir/test_clientserver.vim | 196 + src/testdir/test_close_count.vim | 176 + src/testdir/test_cmd_lists.vim | 70 + src/testdir/test_cmdline.vim | 3447 +++++++++ src/testdir/test_cmdmods.vim | 45 + src/testdir/test_cmdwin.vim | 428 ++ src/testdir/test_codestyle.vim | 145 + src/testdir/test_command_count.vim | 198 + src/testdir/test_comments.vim | 277 + src/testdir/test_comparators.vim | 13 + src/testdir/test_compiler.vim | 89 + src/testdir/test_conceal.vim | 359 + src/testdir/test_const.vim | 335 + src/testdir/test_cpoptions.vim | 915 +++ src/testdir/test_crypt.vim | 288 + src/testdir/test_cscope.vim | 337 + src/testdir/test_cursor_func.vim | 493 ++ src/testdir/test_cursorline.vim | 327 + src/testdir/test_curswant.vim | 25 + src/testdir/test_debugger.vim | 1531 ++++ src/testdir/test_delete.vim | 110 + src/testdir/test_diffmode.vim | 1630 +++++ src/testdir/test_digraph.vim | 607 ++ src/testdir/test_display.vim | 471 ++ src/testdir/test_edit.vim | 2109 ++++++ src/testdir/test_environ.vim | 89 + src/testdir/test_erasebackword.vim | 22 + src/testdir/test_escaped_glob.vim | 35 + src/testdir/test_eval_stuff.vim | 705 ++ src/testdir/test_ex_equal.vim | 34 + src/testdir/test_ex_mode.vim | 290 + src/testdir/test_ex_undo.vim | 21 + src/testdir/test_ex_z.vim | 117 + src/testdir/test_excmd.vim | 728 ++ src/testdir/test_exec_while_if.vim | 43 + src/testdir/test_execute_func.vim | 207 + src/testdir/test_exists.vim | 337 + src/testdir/test_exists_autocmd.vim | 28 + src/testdir/test_exit.vim | 130 + src/testdir/test_expand.vim | 224 + src/testdir/test_expand_dllpath.vim | 36 + src/testdir/test_expand_func.vim | 144 + src/testdir/test_expr.vim | 1023 +++ src/testdir/test_expr_utf8.vim | 44 + src/testdir/test_file_perm.vim | 29 + src/testdir/test_file_size.vim | 61 + src/testdir/test_filechanged.vim | 264 + src/testdir/test_fileformat.vim | 327 + src/testdir/test_filetype.vim | 2023 ++++++ src/testdir/test_filter_cmd.vim | 199 + src/testdir/test_filter_map.vim | 234 + src/testdir/test_find_complete.vim | 164 + src/testdir/test_findfile.vim | 249 + src/testdir/test_fixeol.vim | 118 + src/testdir/test_flatten.vim | 109 + src/testdir/test_float_func.vim | 389 + src/testdir/test_fnameescape.vim | 27 + src/testdir/test_fnamemodify.vim | 106 + src/testdir/test_fold.vim | 1758 +++++ src/testdir/test_function_lists.vim | 107 + src/testdir/test_functions.vim | 3078 ++++++++ src/testdir/test_ga.vim | 44 + src/testdir/test_getcwd.vim | 268 + src/testdir/test_getvar.vim | 163 + src/testdir/test_gf.vim | 295 + src/testdir/test_glob2regpat.vim | 35 + src/testdir/test_global.vim | 150 + src/testdir/test_gn.vim | 221 + src/testdir/test_goto.vim | 441 ++ src/testdir/test_gui.vim | 1684 +++++ src/testdir/test_gui_init.vim | 46 + src/testdir/test_hardcopy.vim | 212 + src/testdir/test_help.vim | 209 + src/testdir/test_help_tagjump.vim | 318 + src/testdir/test_hide.vim | 97 + src/testdir/test_highlight.vim | 1301 ++++ src/testdir/test_history.vim | 252 + src/testdir/test_hlsearch.vim | 94 + src/testdir/test_iminsert.vim | 326 + src/testdir/test_increment.vim | 896 +++ src/testdir/test_increment_dbcs.vim | 28 + src/testdir/test_indent.vim | 278 + src/testdir/test_input.vim | 61 + src/testdir/test_ins_complete.vim | 2224 ++++++ src/testdir/test_ins_complete_no_halt.vim | 51 + src/testdir/test_interrupt.vim | 32 + src/testdir/test_job_fails.vim | 17 + src/testdir/test_join.vim | 448 ++ src/testdir/test_json.vim | 329 + src/testdir/test_jumplist.vim | 101 + src/testdir/test_lambda.vim | 384 + src/testdir/test_langmap.vim | 89 + src/testdir/test_largefile.vim | 31 + src/testdir/test_let.vim | 616 ++ src/testdir/test_lineending.vim | 22 + src/testdir/test_lispindent.vim | 129 + src/testdir/test_listchars.vim | 693 ++ src/testdir/test_listdict.vim | 1529 ++++ src/testdir/test_listener.vim | 453 ++ src/testdir/test_listlbr.vim | 334 + src/testdir/test_listlbr_utf8.vim | 284 + src/testdir/test_lua.vim | 1235 ++++ src/testdir/test_makeencoding.py | 67 + src/testdir/test_makeencoding.vim | 120 + src/testdir/test_man.vim | 149 + src/testdir/test_map_functions.vim | 584 ++ src/testdir/test_mapping.vim | 1817 +++++ src/testdir/test_marks.vim | 321 + src/testdir/test_match.vim | 437 ++ src/testdir/test_matchadd_conceal.vim | 426 ++ src/testdir/test_matchadd_conceal_utf8.vim | 45 + src/testdir/test_matchfuzzy.vim | 256 + src/testdir/test_memory_usage.vim | 165 + src/testdir/test_menu.vim | 597 ++ src/testdir/test_messages.vim | 593 ++ src/testdir/test_method.vim | 175 + src/testdir/test_mksession.vim | 1265 ++++ src/testdir/test_mksession_utf8.vim | 105 + src/testdir/test_modeless.vim | 407 ++ src/testdir/test_modeline.vim | 361 + src/testdir/test_move.vim | 70 + src/testdir/test_mswin_event.vim | 1006 +++ src/testdir/test_mzscheme.vim | 62 + src/testdir/test_nested_function.vim | 70 + src/testdir/test_netbeans.py | 210 + src/testdir/test_netbeans.vim | 973 +++ src/testdir/test_normal.vim | 3924 ++++++++++ src/testdir/test_number.vim | 357 + src/testdir/test_options.vim | 1673 +++++ src/testdir/test_packadd.vim | 446 ++ src/testdir/test_partial.vim | 409 ++ src/testdir/test_paste.vim | 338 + src/testdir/test_perl.vim | 356 + src/testdir/test_plus_arg_edit.vim | 45 + src/testdir/test_popup.vim | 1253 ++++ src/testdir/test_popupwin.vim | 4183 +++++++++++ src/testdir/test_popupwin_textprop.vim | 173 + src/testdir/test_preview.vim | 63 + src/testdir/test_profile.vim | 772 ++ src/testdir/test_prompt_buffer.vim | 255 + src/testdir/test_put.vim | 246 + src/testdir/test_python2.vim | 3788 ++++++++++ src/testdir/test_python3.vim | 4114 +++++++++++ src/testdir/test_pyx2.vim | 103 + src/testdir/test_pyx3.vim | 103 + src/testdir/test_quickfix.vim | 6408 +++++++++++++++++ src/testdir/test_quotestar.vim | 158 + src/testdir/test_random.vim | 56 + src/testdir/test_recover.vim | 451 ++ src/testdir/test_regex_char_classes.vim | 297 + src/testdir/test_regexp_latin.vim | 1163 +++ src/testdir/test_regexp_utf8.vim | 579 ++ src/testdir/test_registers.vim | 890 +++ src/testdir/test_reltime.vim | 31 + src/testdir/test_rename.vim | 113 + src/testdir/test_restricted.vim | 120 + src/testdir/test_retab.vim | 117 + src/testdir/test_ruby.vim | 437 ++ src/testdir/test_scriptnames.vim | 96 + src/testdir/test_scroll_opt.vim | 608 ++ src/testdir/test_scrollbind.vim | 275 + src/testdir/test_search.vim | 2174 ++++++ src/testdir/test_search_stat.vim | 436 ++ src/testdir/test_searchpos.vim | 30 + src/testdir/test_selectmode.vim | 313 + src/testdir/test_set.vim | 78 + src/testdir/test_sha256.vim | 24 + src/testdir/test_shell.vim | 298 + src/testdir/test_shift.vim | 115 + src/testdir/test_short_sleep.py | 11 + src/testdir/test_shortpathname.vim | 99 + src/testdir/test_signals.vim | 205 + src/testdir/test_signs.vim | 2062 ++++++ src/testdir/test_sleep.vim | 27 + src/testdir/test_smartindent.vim | 159 + src/testdir/test_sort.vim | 1561 ++++ src/testdir/test_sound.vim | 100 + src/testdir/test_source.vim | 677 ++ src/testdir/test_source_utf8.vim | 63 + src/testdir/test_spell.vim | 1505 ++++ src/testdir/test_spell_utf8.vim | 831 +++ src/testdir/test_spellfile.vim | 1156 +++ src/testdir/test_startup.vim | 1355 ++++ src/testdir/test_startup_utf8.vim | 81 + src/testdir/test_stat.vim | 224 + src/testdir/test_statusline.vim | 613 ++ src/testdir/test_substitute.vim | 1427 ++++ src/testdir/test_suspend.vim | 121 + src/testdir/test_swap.vim | 576 ++ src/testdir/test_syn_attr.vim | 834 +++ src/testdir/test_syntax.vim | 981 +++ src/testdir/test_system.vim | 146 + src/testdir/test_tab.vim | 92 + src/testdir/test_tabline.vim | 205 + src/testdir/test_tabpage.vim | 890 +++ src/testdir/test_tagcase.vim | 75 + src/testdir/test_tagfunc.vim | 416 ++ src/testdir/test_tagjump.vim | 1548 ++++ src/testdir/test_taglist.vim | 263 + src/testdir/test_tcl.vim | 752 ++ src/testdir/test_termcodes.vim | 2726 +++++++ src/testdir/test_termencoding.vim | 38 + src/testdir/test_terminal.vim | 2353 ++++++ src/testdir/test_terminal2.vim | 570 ++ src/testdir/test_terminal3.vim | 935 +++ src/testdir/test_terminal_fail.vim | 22 + src/testdir/test_textformat.vim | 1306 ++++ src/testdir/test_textobjects.vim | 644 ++ src/testdir/test_textprop.vim | 3884 ++++++++++ src/testdir/test_timers.vim | 544 ++ src/testdir/test_true_false.vim | 154 + src/testdir/test_trycatch.vim | 2351 ++++++ src/testdir/test_undo.vim | 807 +++ src/testdir/test_unlet.vim | 67 + src/testdir/test_user_func.vim | 802 +++ src/testdir/test_usercommands.vim | 938 +++ src/testdir/test_utf8.vim | 331 + src/testdir/test_utf8_comparisons.vim | 96 + src/testdir/test_vartabs.vim | 458 ++ src/testdir/test_version.vim | 26 + src/testdir/test_vim9_assign.vim | 2825 ++++++++ src/testdir/test_vim9_builtin.vim | 4949 +++++++++++++ src/testdir/test_vim9_class.vim | 1752 +++++ src/testdir/test_vim9_cmd.vim | 2040 ++++++ src/testdir/test_vim9_disassemble.vim | 3049 ++++++++ src/testdir/test_vim9_expr.vim | 4160 +++++++++++ src/testdir/test_vim9_fails.vim | 62 + src/testdir/test_vim9_func.vim | 4576 ++++++++++++ src/testdir/test_vim9_import.vim | 2923 ++++++++ src/testdir/test_vim9_script.vim | 4573 ++++++++++++ src/testdir/test_viminfo.vim | 1282 ++++ src/testdir/test_vimscript.vim | 7534 ++++++++++++++++++++ src/testdir/test_virtualedit.vim | 612 ++ src/testdir/test_visual.vim | 1558 ++++ src/testdir/test_winbar.vim | 190 + src/testdir/test_winbuf_close.vim | 228 + src/testdir/test_window_cmd.vim | 1952 +++++ src/testdir/test_window_id.vim | 142 + src/testdir/test_windows_home.vim | 122 + src/testdir/test_wnext.vim | 103 + src/testdir/test_wordcount.vim | 106 + src/testdir/test_writefile.vim | 980 +++ src/testdir/test_xxd.vim | 404 ++ .../testluaplugin/lua/testluaplugin/hello.lua | 7 + .../testluaplugin/lua/testluaplugin/init.lua | 5 + src/testdir/thread_util.py | 90 + src/testdir/unix.vim | 13 + src/testdir/view_util.vim | 117 + src/testdir/vim9.vim | 275 + src/testdir/vms.vim | 6 + 1248 files changed, 211817 insertions(+) create mode 100644 src/testdir/Make_all.mak create mode 100644 src/testdir/Make_amiga.mak create mode 100644 src/testdir/Make_dos.mak create mode 100644 src/testdir/Make_ming.mak create mode 100644 src/testdir/Make_mvc.mak create mode 100644 src/testdir/Make_vms.mms create mode 100644 src/testdir/Makefile create mode 100644 src/testdir/README.txt create mode 100644 src/testdir/amiga.vim create mode 100644 src/testdir/check.vim create mode 100644 src/testdir/color_ramp.vim create mode 100644 src/testdir/dos.vim create mode 100644 src/testdir/dotest.in create mode 100644 src/testdir/dumps/Test_Xcursorline_1.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_10.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_11.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_12.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_13.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_14.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_15.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_16.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_17.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_18.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_19.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_2.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_20.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_21.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_22.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_23.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_24.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_3.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_4.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_5.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_6.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_7.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_8.dump create mode 100644 src/testdir/dumps/Test_Xcursorline_9.dump create mode 100644 src/testdir/dumps/Test_appendbufline_1.dump create mode 100644 src/testdir/dumps/Test_autocmd_nested_switch.dump create mode 100644 src/testdir/dumps/Test_balloon_eval_term_01.dump create mode 100644 src/testdir/dumps/Test_balloon_eval_term_01a.dump create mode 100644 src/testdir/dumps/Test_balloon_eval_term_02.dump create mode 100644 src/testdir/dumps/Test_changing_cmdheight_1.dump create mode 100644 src/testdir/dumps/Test_changing_cmdheight_2.dump create mode 100644 src/testdir/dumps/Test_changing_cmdheight_3.dump create mode 100644 src/testdir/dumps/Test_changing_cmdheight_4.dump create mode 100644 src/testdir/dumps/Test_changing_cmdheight_5.dump create mode 100644 src/testdir/dumps/Test_changing_cmdheight_6.dump create mode 100644 src/testdir/dumps/Test_cmdheight_tabline_1.dump create mode 100644 src/testdir/dumps/Test_cmdlineclear_tabenter.dump create mode 100644 src/testdir/dumps/Test_cmdwin_interrupted.dump create mode 100644 src/testdir/dumps/Test_cmdwin_no_terminal.dump create mode 100644 src/testdir/dumps/Test_cmdwin_restore_1.dump create mode 100644 src/testdir/dumps/Test_cmdwin_restore_2.dump create mode 100644 src/testdir/dumps/Test_cmdwin_restore_3.dump create mode 100644 src/testdir/dumps/Test_cmdwin_wrong_command_1.dump create mode 100644 src/testdir/dumps/Test_cmdwin_wrong_command_2.dump create mode 100644 src/testdir/dumps/Test_colorcolumn_1.dump create mode 100644 src/testdir/dumps/Test_colorcolumn_2.dump create mode 100644 src/testdir/dumps/Test_colorcolumn_3.dump create mode 100644 src/testdir/dumps/Test_conceal_cuc_01.dump create mode 100644 src/testdir/dumps/Test_conceal_cuc_02.dump create mode 100644 src/testdir/dumps/Test_conceal_cul_01.dump create mode 100644 src/testdir/dumps/Test_conceal_cul_02.dump create mode 100644 src/testdir/dumps/Test_conceal_cul_03.dump create mode 100644 src/testdir/dumps/Test_conceal_linebreak_1.dump create mode 100644 src/testdir/dumps/Test_conceal_resize_01.dump create mode 100644 src/testdir/dumps/Test_conceal_resize_02.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_01.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_02.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_03.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_04.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_05.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_06c.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_06i.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_06n.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_06v.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_07c.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_07i.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_07in.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_07n.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_07v.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_08c.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_08i.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_08n.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_08v.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_09c.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_09i.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_09n.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_09v.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_10.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_11.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_12.dump create mode 100644 src/testdir/dumps/Test_conceal_two_windows_13.dump create mode 100644 src/testdir/dumps/Test_cursor_position_with_showbreak.dump create mode 100644 src/testdir/dumps/Test_cursorcolumn_callback_1.dump create mode 100644 src/testdir/dumps/Test_cursorcolumn_insert_on_tab_1.dump create mode 100644 src/testdir/dumps/Test_cursorcolumn_insert_on_tab_2.dump create mode 100644 src/testdir/dumps/Test_cursorcolumn_insert_on_tab_3.dump create mode 100644 src/testdir/dumps/Test_cursorline_callback_1.dump create mode 100644 src/testdir/dumps/Test_cursorline_redraw_1.dump create mode 100644 src/testdir/dumps/Test_cursorline_redraw_2.dump create mode 100644 src/testdir/dumps/Test_cursorline_screenline_1.dump create mode 100644 src/testdir/dumps/Test_cursorline_screenline_2.dump create mode 100644 src/testdir/dumps/Test_cursorline_with_visualmode_01.dump create mode 100644 src/testdir/dumps/Test_cursorline_yank_01.dump create mode 100644 src/testdir/dumps/Test_diff_01.dump create mode 100644 src/testdir/dumps/Test_diff_02.dump create mode 100644 src/testdir/dumps/Test_diff_03.dump create mode 100644 src/testdir/dumps/Test_diff_04.dump create mode 100644 src/testdir/dumps/Test_diff_05.dump create mode 100644 src/testdir/dumps/Test_diff_06.0.dump create mode 100644 src/testdir/dumps/Test_diff_06.1.dump create mode 100644 src/testdir/dumps/Test_diff_06.2.dump create mode 100644 src/testdir/dumps/Test_diff_06.dump create mode 100644 src/testdir/dumps/Test_diff_07.dump create mode 100644 src/testdir/dumps/Test_diff_08.dump create mode 100644 src/testdir/dumps/Test_diff_09.dump create mode 100644 src/testdir/dumps/Test_diff_10.dump create mode 100644 src/testdir/dumps/Test_diff_11.dump create mode 100644 src/testdir/dumps/Test_diff_12.dump create mode 100644 src/testdir/dumps/Test_diff_13.dump create mode 100644 src/testdir/dumps/Test_diff_14.dump create mode 100644 src/testdir/dumps/Test_diff_15.dump create mode 100644 src/testdir/dumps/Test_diff_16.dump create mode 100644 src/testdir/dumps/Test_diff_17.dump create mode 100644 src/testdir/dumps/Test_diff_18.dump create mode 100644 src/testdir/dumps/Test_diff_19.dump create mode 100644 src/testdir/dumps/Test_diff_20.dump create mode 100644 src/testdir/dumps/Test_diff_bin_01.dump create mode 100644 src/testdir/dumps/Test_diff_bin_02.dump create mode 100644 src/testdir/dumps/Test_diff_bin_03.dump create mode 100644 src/testdir/dumps/Test_diff_bin_04.dump create mode 100644 src/testdir/dumps/Test_diff_cuc_01.dump create mode 100644 src/testdir/dumps/Test_diff_cuc_02.dump create mode 100644 src/testdir/dumps/Test_diff_cuc_03.dump create mode 100644 src/testdir/dumps/Test_diff_cuc_04.dump create mode 100644 src/testdir/dumps/Test_diff_of_diff_01.dump create mode 100644 src/testdir/dumps/Test_diff_of_diff_02.dump create mode 100644 src/testdir/dumps/Test_diff_rnu_01.dump create mode 100644 src/testdir/dumps/Test_diff_rnu_02.dump create mode 100644 src/testdir/dumps/Test_diff_rnu_03.dump create mode 100644 src/testdir/dumps/Test_diff_scroll_1.dump create mode 100644 src/testdir/dumps/Test_diff_scroll_2.dump create mode 100644 src/testdir/dumps/Test_diff_scroll_change_01.dump create mode 100644 src/testdir/dumps/Test_diff_scroll_change_02.dump create mode 100644 src/testdir/dumps/Test_diff_scroll_change_03.dump create mode 100644 src/testdir/dumps/Test_diff_syntax_1.dump create mode 100644 src/testdir/dumps/Test_diff_with_cul_bri_01.dump create mode 100644 src/testdir/dumps/Test_diff_with_cul_bri_02.dump create mode 100644 src/testdir/dumps/Test_diff_with_cul_bri_03.dump create mode 100644 src/testdir/dumps/Test_diff_with_cul_bri_04.dump create mode 100644 src/testdir/dumps/Test_diff_with_cursorline_01.dump create mode 100644 src/testdir/dumps/Test_diff_with_cursorline_02.dump create mode 100644 src/testdir/dumps/Test_diff_with_cursorline_03.dump create mode 100644 src/testdir/dumps/Test_diff_with_cursorline_number_01.dump create mode 100644 src/testdir/dumps/Test_diff_with_cursorline_number_02.dump create mode 100644 src/testdir/dumps/Test_display_fillchars_1.dump create mode 100644 src/testdir/dumps/Test_display_fillchars_2.dump create mode 100644 src/testdir/dumps/Test_display_lastline_1.dump create mode 100644 src/testdir/dumps/Test_display_lastline_2.dump create mode 100644 src/testdir/dumps/Test_display_lastline_3.dump create mode 100644 src/testdir/dumps/Test_display_lastline_4.dump create mode 100644 src/testdir/dumps/Test_display_lastline_5.dump create mode 100644 src/testdir/dumps/Test_display_lastline_6.dump create mode 100644 src/testdir/dumps/Test_display_lastline_euro_1.dump create mode 100644 src/testdir/dumps/Test_display_lastline_euro_2.dump create mode 100644 src/testdir/dumps/Test_display_lastline_euro_3.dump create mode 100644 src/testdir/dumps/Test_display_lastline_euro_4.dump create mode 100644 src/testdir/dumps/Test_display_lastline_euro_5.dump create mode 100644 src/testdir/dumps/Test_display_lastline_euro_6.dump create mode 100644 src/testdir/dumps/Test_display_scroll_at_topline.dump create mode 100644 src/testdir/dumps/Test_display_scroll_update_visual.dump create mode 100644 src/testdir/dumps/Test_display_unprintable_01.dump create mode 100644 src/testdir/dumps/Test_display_unprintable_02.dump create mode 100644 src/testdir/dumps/Test_display_visual_block_scroll.dump create mode 100644 src/testdir/dumps/Test_echowin_eval.dump create mode 100644 src/testdir/dumps/Test_echowin_showmode.dump create mode 100644 src/testdir/dumps/Test_echowindow_1.dump create mode 100644 src/testdir/dumps/Test_echowindow_2.dump create mode 100644 src/testdir/dumps/Test_echowindow_3.dump create mode 100644 src/testdir/dumps/Test_echowindow_4.dump create mode 100644 src/testdir/dumps/Test_echowindow_5.dump create mode 100644 src/testdir/dumps/Test_echowindow_6.dump create mode 100644 src/testdir/dumps/Test_echowindow_7.dump create mode 100644 src/testdir/dumps/Test_echowindow_8.dump create mode 100644 src/testdir/dumps/Test_echowindow_9.dump create mode 100644 src/testdir/dumps/Test_fileinfo_after_echo.dump create mode 100644 src/testdir/dumps/Test_folds_with_rnu_01.dump create mode 100644 src/testdir/dumps/Test_folds_with_rnu_02.dump create mode 100644 src/testdir/dumps/Test_functions_echoraw.dump create mode 100644 src/testdir/dumps/Test_hlsearch_1.dump create mode 100644 src/testdir/dumps/Test_hlsearch_2.dump create mode 100644 src/testdir/dumps/Test_hlsearch_block_visual_match.dump create mode 100644 src/testdir/dumps/Test_hlsearch_ctrlr_1.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_changed_1.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_1.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_2.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_3.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_4.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_5.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_single_line_1.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_single_line_2.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_single_line_2a.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_single_line_2b.dump create mode 100644 src/testdir/dumps/Test_hlsearch_cursearch_single_line_3.dump create mode 100644 src/testdir/dumps/Test_hlsearch_visual_1.dump create mode 100644 src/testdir/dumps/Test_hor_scroll_1.dump create mode 100644 src/testdir/dumps/Test_hor_scroll_2.dump create mode 100644 src/testdir/dumps/Test_hor_scroll_3.dump create mode 100644 src/testdir/dumps/Test_hor_scroll_4.dump create mode 100644 src/testdir/dumps/Test_hor_scroll_5.dump create mode 100644 src/testdir/dumps/Test_incsearch_change_01.dump create mode 100644 src/testdir/dumps/Test_incsearch_newline1.dump create mode 100644 src/testdir/dumps/Test_incsearch_newline2.dump create mode 100644 src/testdir/dumps/Test_incsearch_newline3.dump create mode 100644 src/testdir/dumps/Test_incsearch_newline4.dump create mode 100644 src/testdir/dumps/Test_incsearch_newline5.dump create mode 100644 src/testdir/dumps/Test_incsearch_scrolling_01.dump create mode 100644 src/testdir/dumps/Test_incsearch_search_01.dump create mode 100644 src/testdir/dumps/Test_incsearch_search_02.dump create mode 100644 src/testdir/dumps/Test_incsearch_sort_01.dump create mode 100644 src/testdir/dumps/Test_incsearch_sort_02.dump create mode 100644 src/testdir/dumps/Test_incsearch_sub_01.dump create mode 100644 src/testdir/dumps/Test_incsearch_sub_02.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_01.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_02.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_03.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_04.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_05.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_06.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_07.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_08.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_09.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_10.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_11.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_12.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_13.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_14.dump create mode 100644 src/testdir/dumps/Test_incsearch_substitute_15.dump create mode 100644 src/testdir/dumps/Test_incsearch_vimgrep_01.dump create mode 100644 src/testdir/dumps/Test_incsearch_vimgrep_02.dump create mode 100644 src/testdir/dumps/Test_incsearch_vimgrep_03.dump create mode 100644 src/testdir/dumps/Test_incsearch_vimgrep_04.dump create mode 100644 src/testdir/dumps/Test_incsearch_vimgrep_05.dump create mode 100644 src/testdir/dumps/Test_job_buffer_scroll_1.dump create mode 100644 src/testdir/dumps/Test_keytyped_in_nested_func.dump create mode 100644 src/testdir/dumps/Test_linebreak_reset_restore_1.dump create mode 100644 src/testdir/dumps/Test_listchars_01.dump create mode 100644 src/testdir/dumps/Test_listchars_02.dump create mode 100644 src/testdir/dumps/Test_listchars_03.dump create mode 100644 src/testdir/dumps/Test_listchars_04.dump create mode 100644 src/testdir/dumps/Test_listchars_05.dump create mode 100644 src/testdir/dumps/Test_listchars_06.dump create mode 100644 src/testdir/dumps/Test_listchars_07.dump create mode 100644 src/testdir/dumps/Test_long_file_name_1.dump create mode 100644 src/testdir/dumps/Test_long_text_with_padding_1.dump create mode 100644 src/testdir/dumps/Test_long_text_with_padding_2.dump create mode 100644 src/testdir/dumps/Test_map_expr_1.dump create mode 100644 src/testdir/dumps/Test_map_expr_2.dump create mode 100644 src/testdir/dumps/Test_map_expr_3.dump create mode 100644 src/testdir/dumps/Test_map_expr_4.dump create mode 100644 src/testdir/dumps/Test_map_list_1.dump create mode 100644 src/testdir/dumps/Test_match_linebreak.dump create mode 100644 src/testdir/dumps/Test_match_tab_linebreak.dump create mode 100644 src/testdir/dumps/Test_match_with_incsearch_1.dump create mode 100644 src/testdir/dumps/Test_match_with_incsearch_2.dump create mode 100644 src/testdir/dumps/Test_matchadd_1.dump create mode 100644 src/testdir/dumps/Test_matchaddpos_1.dump create mode 100644 src/testdir/dumps/Test_matchclear_1.dump create mode 100644 src/testdir/dumps/Test_matchdelete_1.dump create mode 100644 src/testdir/dumps/Test_matchparen_clear_highlight_1.dump create mode 100644 src/testdir/dumps/Test_matchparen_clear_highlight_2.dump create mode 100644 src/testdir/dumps/Test_misplaced_type.dump create mode 100644 src/testdir/dumps/Test_mode_updated_1.dump create mode 100644 src/testdir/dumps/Test_more_scrollback_1.dump create mode 100644 src/testdir/dumps/Test_more_scrollback_2.dump create mode 100644 src/testdir/dumps/Test_move_undo_1.dump create mode 100644 src/testdir/dumps/Test_move_undo_2.dump create mode 100644 src/testdir/dumps/Test_popup_and_previewwindow_01.dump create mode 100644 src/testdir/dumps/Test_popup_command_01.dump create mode 100644 src/testdir/dumps/Test_popup_command_02.dump create mode 100644 src/testdir/dumps/Test_popup_command_03.dump create mode 100644 src/testdir/dumps/Test_popup_command_04.dump create mode 100644 src/testdir/dumps/Test_popup_command_05.dump create mode 100644 src/testdir/dumps/Test_popup_position_01.dump create mode 100644 src/testdir/dumps/Test_popup_position_02.dump create mode 100644 src/testdir/dumps/Test_popup_position_03.dump create mode 100644 src/testdir/dumps/Test_popup_position_04.dump create mode 100644 src/testdir/dumps/Test_popup_prop_not_visible_01.dump create mode 100644 src/testdir/dumps/Test_popup_prop_not_visible_01a.dump create mode 100644 src/testdir/dumps/Test_popup_prop_not_visible_01b.dump create mode 100644 src/testdir/dumps/Test_popup_prop_not_visible_02.dump create mode 100644 src/testdir/dumps/Test_popup_prop_not_visible_03.dump create mode 100644 src/testdir/dumps/Test_popup_settext_01.dump create mode 100644 src/testdir/dumps/Test_popup_settext_02.dump create mode 100644 src/testdir/dumps/Test_popup_settext_03.dump create mode 100644 src/testdir/dumps/Test_popup_settext_04.dump create mode 100644 src/testdir/dumps/Test_popup_settext_05.dump create mode 100644 src/testdir/dumps/Test_popup_settext_06.dump create mode 100644 src/testdir/dumps/Test_popup_settext_07.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_01.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_02.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_03.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_04.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_05.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_06.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_07.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_corn_1.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_corn_2.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_corn_3.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_corn_4.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_corn_5.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_corn_6.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_off_1.dump create mode 100644 src/testdir/dumps/Test_popup_textprop_off_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_02.dump create mode 100644 src/testdir/dumps/Test_popupwin_03.dump create mode 100644 src/testdir/dumps/Test_popupwin_04.dump create mode 100644 src/testdir/dumps/Test_popupwin_04a.dump create mode 100644 src/testdir/dumps/Test_popupwin_05.dump create mode 100644 src/testdir/dumps/Test_popupwin_06.dump create mode 100644 src/testdir/dumps/Test_popupwin_07.dump create mode 100644 src/testdir/dumps/Test_popupwin_08.dump create mode 100644 src/testdir/dumps/Test_popupwin_10.dump create mode 100644 src/testdir/dumps/Test_popupwin_11.dump create mode 100644 src/testdir/dumps/Test_popupwin_20.dump create mode 100644 src/testdir/dumps/Test_popupwin_21.dump create mode 100644 src/testdir/dumps/Test_popupwin_22.dump create mode 100644 src/testdir/dumps/Test_popupwin_23.dump create mode 100644 src/testdir/dumps/Test_popupwin_24.dump create mode 100644 src/testdir/dumps/Test_popupwin_atcursor_pos.dump create mode 100644 src/testdir/dumps/Test_popupwin_behind.dump create mode 100644 src/testdir/dumps/Test_popupwin_beval_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_beval_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_beval_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_close_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_close_02.dump create mode 100644 src/testdir/dumps/Test_popupwin_close_03.dump create mode 100644 src/testdir/dumps/Test_popupwin_close_04.dump create mode 100644 src/testdir/dumps/Test_popupwin_close_05.dump create mode 100644 src/testdir/dumps/Test_popupwin_corners.dump create mode 100644 src/testdir/dumps/Test_popupwin_ctrl_c.dump create mode 100644 src/testdir/dumps/Test_popupwin_cursorline_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_cursorline_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_cursorline_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_cursorline_4.dump create mode 100644 src/testdir/dumps/Test_popupwin_cursorline_5.dump create mode 100644 src/testdir/dumps/Test_popupwin_cursorline_6.dump create mode 100644 src/testdir/dumps/Test_popupwin_cursorline_7.dump create mode 100644 src/testdir/dumps/Test_popupwin_cursorline_8.dump create mode 100644 src/testdir/dumps/Test_popupwin_doublewidth_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_drag_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_drag_02.dump create mode 100644 src/testdir/dumps/Test_popupwin_drag_03.dump create mode 100644 src/testdir/dumps/Test_popupwin_drag_04.dump create mode 100644 src/testdir/dumps/Test_popupwin_drag_05.dump create mode 100644 src/testdir/dumps/Test_popupwin_drag_06.dump create mode 100644 src/testdir/dumps/Test_popupwin_drag_minwidth_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_drag_minwidth_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_drag_minwidth_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_firstline_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_firstline_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_4.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_5.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_6.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_7.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_8.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_9.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_align_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_align_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_align_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_hidden_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_hidden_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_hidden_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_nb_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_wide_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_longtitle_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_longtitle_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_longtitle_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_longtitle_4.dump create mode 100644 src/testdir/dumps/Test_popupwin_mask_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_mask_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_mask_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_mask_4.dump create mode 100644 src/testdir/dumps/Test_popupwin_mask_5.dump create mode 100644 src/testdir/dumps/Test_popupwin_matches.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_02.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_03.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_04.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_filter_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_filter_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_filter_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_filter_4.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_filter_5.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_maxwidth_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_scroll_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_scroll_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_scroll_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_scroll_4.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_scroll_5.dump create mode 100644 src/testdir/dumps/Test_popupwin_menu_scroll_6.dump create mode 100644 src/testdir/dumps/Test_popupwin_multibytetitle.dump create mode 100644 src/testdir/dumps/Test_popupwin_normal_cmd.dump create mode 100644 src/testdir/dumps/Test_popupwin_nospace.dump create mode 100644 src/testdir/dumps/Test_popupwin_notify_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_notify_02.dump create mode 100644 src/testdir/dumps/Test_popupwin_nowrap.dump create mode 100644 src/testdir/dumps/Test_popupwin_poptermscroll_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_poptermscroll_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_poptermscroll_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_poptermscroll_4.dump create mode 100644 src/testdir/dumps/Test_popupwin_popupmenu_masking_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_popupmenu_masking_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_10.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_4.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_5.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_6.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_7.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_8.dump create mode 100644 src/testdir/dumps/Test_popupwin_previewpopup_9.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_10.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_11.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_12.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_13.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_4.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_5.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_6.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_7.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_8.dump create mode 100644 src/testdir/dumps/Test_popupwin_scroll_9.dump create mode 100644 src/testdir/dumps/Test_popupwin_select_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_select_02.dump create mode 100644 src/testdir/dumps/Test_popupwin_set_firstline_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_set_firstline_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_showbreak.dump create mode 100644 src/testdir/dumps/Test_popupwin_sign_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_sign_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_term_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_term_02.dump create mode 100644 src/testdir/dumps/Test_popupwin_term_03.dump create mode 100644 src/testdir/dumps/Test_popupwin_term_04.dump create mode 100644 src/testdir/dumps/Test_popupwin_three_errors_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_three_errors_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_title.dump create mode 100644 src/testdir/dumps/Test_popupwin_toohigh_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_toohigh_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_toohigh_3.dump create mode 100644 src/testdir/dumps/Test_popupwin_win_execute.dump create mode 100644 src/testdir/dumps/Test_popupwin_win_execute_cursorline.dump create mode 100644 src/testdir/dumps/Test_popupwin_wrap.dump create mode 100644 src/testdir/dumps/Test_popupwin_wrap_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_wrap_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_wrong_name.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_empty_1.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_empty_2.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_empty_3.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_empty_4.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_empty_5.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_1.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_10.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_11.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_12.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_13.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_14.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_15.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_16.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_2.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_3.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_4.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_5.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_6.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_7.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_8.dump create mode 100644 src/testdir/dumps/Test_prop_above_below_smoothscroll_9.dump create mode 100644 src/testdir/dumps/Test_prop_above_empty_1.dump create mode 100644 src/testdir/dumps/Test_prop_above_empty_2.dump create mode 100644 src/testdir/dumps/Test_prop_above_number_1.dump create mode 100644 src/testdir/dumps/Test_prop_above_number_2.dump create mode 100644 src/testdir/dumps/Test_prop_after_linebreak.dump create mode 100644 src/testdir/dumps/Test_prop_after_tab.dump create mode 100644 src/testdir/dumps/Test_prop_at_same_pos.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_01.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_02.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_03.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_04.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_05.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_06.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_07.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_08.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_09.dump create mode 100644 src/testdir/dumps/Test_prop_before_tab_10.dump create mode 100644 src/testdir/dumps/Test_prop_below_after_empty_1.dump create mode 100644 src/testdir/dumps/Test_prop_below_after_empty_2.dump create mode 100644 src/testdir/dumps/Test_prop_below_after_empty_3.dump create mode 100644 src/testdir/dumps/Test_prop_below_split_line_1.dump create mode 100644 src/testdir/dumps/Test_prop_below_split_line_2.dump create mode 100644 src/testdir/dumps/Test_prop_below_split_line_3.dump create mode 100644 src/testdir/dumps/Test_prop_delete_updates_1.dump create mode 100644 src/testdir/dumps/Test_prop_delete_updates_2.dump create mode 100644 src/testdir/dumps/Test_prop_delete_updates_3.dump create mode 100644 src/testdir/dumps/Test_prop_diff_mode_1.dump create mode 100644 src/testdir/dumps/Test_prop_diff_mode_2.dump create mode 100644 src/testdir/dumps/Test_prop_insert_list_mode_1.dump create mode 100644 src/testdir/dumps/Test_prop_insert_list_mode_2.dump create mode 100644 src/testdir/dumps/Test_prop_insert_list_mode_3.dump create mode 100644 src/testdir/dumps/Test_prop_insert_start_incl_1.dump create mode 100644 src/testdir/dumps/Test_prop_insert_start_incl_2.dump create mode 100644 src/testdir/dumps/Test_prop_insert_start_incl_3.dump create mode 100644 src/testdir/dumps/Test_prop_insert_start_incl_4.dump create mode 100644 src/testdir/dumps/Test_prop_insert_start_incl_5.dump create mode 100644 src/testdir/dumps/Test_prop_insert_start_incl_6.dump create mode 100644 src/testdir/dumps/Test_prop_insert_start_incl_7.dump create mode 100644 src/testdir/dumps/Test_prop_insert_start_incl_8.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_1.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_2.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_3.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_4.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_5.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_6.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_hi_1.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_hi_2.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_hi_3.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_hi_4.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_hi_5.dump create mode 100644 src/testdir/dumps/Test_prop_inserts_text_hi_6.dump create mode 100644 src/testdir/dumps/Test_prop_linebreak_1.dump create mode 100644 src/testdir/dumps/Test_prop_linebreak_2.dump create mode 100644 src/testdir/dumps/Test_prop_multibyte_below_1.dump create mode 100644 src/testdir/dumps/Test_prop_negative_error_1.dump create mode 100644 src/testdir/dumps/Test_prop_negative_error_2.dump create mode 100644 src/testdir/dumps/Test_prop_right_align_twice_1.dump create mode 100644 src/testdir/dumps/Test_prop_right_align_twice_2.dump create mode 100644 src/testdir/dumps/Test_prop_right_align_twice_3.dump create mode 100644 src/testdir/dumps/Test_prop_text_change_arg_1.dump create mode 100644 src/testdir/dumps/Test_prop_text_change_arg_2.dump create mode 100644 src/testdir/dumps/Test_prop_text_with_padding_1.dump create mode 100644 src/testdir/dumps/Test_prop_text_with_padding_2.dump create mode 100644 src/testdir/dumps/Test_prop_text_with_padding_3.dump create mode 100644 src/testdir/dumps/Test_prop_text_with_padding_4.dump create mode 100644 src/testdir/dumps/Test_prop_with_linebreak_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_linebreak_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_1a.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_1b.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_1c.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_3.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_4.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_5.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_6.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_7.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_8.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_above_9.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_below_trunc_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_below_trunc_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_below_trunc_3.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_join_split_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_join_split_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_join_split_3.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_join_split_4.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_join_split_5.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_joined_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_nowrap_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_nowrap_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_nowrap_3.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_trunc_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_trunc_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_trunc_3.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_trunc_4.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_trunc_5.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_after_wraps_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_below_after_match_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_below_cul_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_below_nowrap_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_below_nowrap_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_cursormoved_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_cursormoved_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_empty_line_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_empty_line_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_empty_line_3.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_empty_line_4.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_empty_line_5.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_override_1.dump create mode 100644 src/testdir/dumps/Test_prop_with_text_override_2.dump create mode 100644 src/testdir/dumps/Test_prop_with_wrap_1.dump create mode 100644 src/testdir/dumps/Test_props_after_1.dump create mode 100644 src/testdir/dumps/Test_props_after_2.dump create mode 100644 src/testdir/dumps/Test_pum_preview_1.dump create mode 100644 src/testdir/dumps/Test_pum_preview_2.dump create mode 100644 src/testdir/dumps/Test_pum_preview_3.dump create mode 100644 src/testdir/dumps/Test_pum_preview_4.dump create mode 100644 src/testdir/dumps/Test_pum_rightleft_01.dump create mode 100644 src/testdir/dumps/Test_pum_rightleft_02.dump create mode 100644 src/testdir/dumps/Test_pum_scrollbar_01.dump create mode 100644 src/testdir/dumps/Test_pum_scrollbar_02.dump create mode 100644 src/testdir/dumps/Test_pum_stopped_by_timer.dump create mode 100644 src/testdir/dumps/Test_pum_with_folds_two_tabs.dump create mode 100644 src/testdir/dumps/Test_pum_with_preview_win.dump create mode 100644 src/testdir/dumps/Test_quickfix_cwindow_1.dump create mode 100644 src/testdir/dumps/Test_quickfix_cwindow_2.dump create mode 100644 src/testdir/dumps/Test_quickfix_cwindow_3.dump create mode 100644 src/testdir/dumps/Test_quickfix_cwindow_4.dump create mode 100644 src/testdir/dumps/Test_quickfix_window_fails.dump create mode 100644 src/testdir/dumps/Test_quit_long_message.dump create mode 100644 src/testdir/dumps/Test_redraw_in_autocmd_1.dump create mode 100644 src/testdir/dumps/Test_redraw_in_autocmd_2.dump create mode 100644 src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump create mode 100644 src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump create mode 100644 src/testdir/dumps/Test_redrawstatus_in_autocmd_3.dump create mode 100644 src/testdir/dumps/Test_redrawstatus_in_autocmd_4.dump create mode 100644 src/testdir/dumps/Test_redrawstatus_in_autocmd_5.dump create mode 100644 src/testdir/dumps/Test_relativenumber_callback_1.dump create mode 100644 src/testdir/dumps/Test_relnr_colors_1.dump create mode 100644 src/testdir/dumps/Test_relnr_colors_2.dump create mode 100644 src/testdir/dumps/Test_relnr_colors_3.dump create mode 100644 src/testdir/dumps/Test_relnr_colors_4.dump create mode 100644 src/testdir/dumps/Test_scroll_no_region_1.dump create mode 100644 src/testdir/dumps/Test_scroll_no_region_2.dump create mode 100644 src/testdir/dumps/Test_scroll_no_region_3.dump create mode 100644 src/testdir/dumps/Test_scroll_no_region_4.dump create mode 100644 src/testdir/dumps/Test_scroll_no_region_5.dump create mode 100644 src/testdir/dumps/Test_scroll_no_region_6.dump create mode 100644 src/testdir/dumps/Test_scrollbar_on_wide_char.dump create mode 100644 src/testdir/dumps/Test_searchstat_1.dump create mode 100644 src/testdir/dumps/Test_searchstat_2.dump create mode 100644 src/testdir/dumps/Test_searchstat_3.dump create mode 100644 src/testdir/dumps/Test_searchstat_4.dump create mode 100644 src/testdir/dumps/Test_searchstat_inc_1.dump create mode 100644 src/testdir/dumps/Test_searchstat_inc_2.dump create mode 100644 src/testdir/dumps/Test_searchstat_inc_3.dump create mode 100644 src/testdir/dumps/Test_searchstatgd_1.dump create mode 100644 src/testdir/dumps/Test_searchstatgd_2.dump create mode 100644 src/testdir/dumps/Test_setcellwidths_dump_1.dump create mode 100644 src/testdir/dumps/Test_setcellwidths_dump_2.dump create mode 100644 src/testdir/dumps/Test_sign_cursor_1.dump create mode 100644 src/testdir/dumps/Test_sign_cursor_2.dump create mode 100644 src/testdir/dumps/Test_sign_cursor_3.dump create mode 100644 src/testdir/dumps/Test_sign_cursor_4.dump create mode 100644 src/testdir/dumps/Test_sign_cursor_5.dump create mode 100644 src/testdir/dumps/Test_sign_cursor_6.dump create mode 100644 src/testdir/dumps/Test_smooth_diff_1.dump create mode 100644 src/testdir/dumps/Test_smooth_list_1.dump create mode 100644 src/testdir/dumps/Test_smooth_list_2.dump create mode 100644 src/testdir/dumps/Test_smooth_long_1.dump create mode 100644 src/testdir/dumps/Test_smooth_long_10.dump create mode 100644 src/testdir/dumps/Test_smooth_long_11.dump create mode 100644 src/testdir/dumps/Test_smooth_long_12.dump create mode 100644 src/testdir/dumps/Test_smooth_long_13.dump create mode 100644 src/testdir/dumps/Test_smooth_long_14.dump create mode 100644 src/testdir/dumps/Test_smooth_long_15.dump create mode 100644 src/testdir/dumps/Test_smooth_long_2.dump create mode 100644 src/testdir/dumps/Test_smooth_long_3.dump create mode 100644 src/testdir/dumps/Test_smooth_long_4.dump create mode 100644 src/testdir/dumps/Test_smooth_long_5.dump create mode 100644 src/testdir/dumps/Test_smooth_long_6.dump create mode 100644 src/testdir/dumps/Test_smooth_long_7.dump create mode 100644 src/testdir/dumps/Test_smooth_long_8.dump create mode 100644 src/testdir/dumps/Test_smooth_long_9.dump create mode 100644 src/testdir/dumps/Test_smooth_long_showbreak_1.dump create mode 100644 src/testdir/dumps/Test_smooth_long_showbreak_2.dump create mode 100644 src/testdir/dumps/Test_smooth_number_1.dump create mode 100644 src/testdir/dumps/Test_smooth_number_2.dump create mode 100644 src/testdir/dumps/Test_smooth_number_3.dump create mode 100644 src/testdir/dumps/Test_smooth_number_4.dump create mode 100644 src/testdir/dumps/Test_smooth_number_5.dump create mode 100644 src/testdir/dumps/Test_smooth_number_6.dump create mode 100644 src/testdir/dumps/Test_smooth_number_7.dump create mode 100644 src/testdir/dumps/Test_smooth_one_long_1.dump create mode 100644 src/testdir/dumps/Test_smooth_one_long_2.dump create mode 100644 src/testdir/dumps/Test_smooth_wrap_1.dump create mode 100644 src/testdir/dumps/Test_smooth_wrap_2.dump create mode 100644 src/testdir/dumps/Test_smooth_wrap_3.dump create mode 100644 src/testdir/dumps/Test_smooth_wrap_4.dump create mode 100644 src/testdir/dumps/Test_smooth_wrap_5.dump create mode 100644 src/testdir/dumps/Test_smooth_wrap_6.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_1.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_2.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_3.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_4.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_5.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_6.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_7.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_8.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_zero_1.dump create mode 100644 src/testdir/dumps/Test_smoothscroll_zero_2.dump create mode 100644 src/testdir/dumps/Test_spell_1.dump create mode 100644 src/testdir/dumps/Test_spell_2.dump create mode 100644 src/testdir/dumps/Test_spell_3.dump create mode 100644 src/testdir/dumps/Test_spell_4.dump create mode 100644 src/testdir/dumps/Test_spell_5.dump create mode 100644 src/testdir/dumps/Test_spell_compatible_1.dump create mode 100644 src/testdir/dumps/Test_spell_compatible_2.dump create mode 100644 src/testdir/dumps/Test_splitkeep_callback_1.dump create mode 100644 src/testdir/dumps/Test_splitkeep_callback_2.dump create mode 100644 src/testdir/dumps/Test_splitkeep_callback_3.dump create mode 100644 src/testdir/dumps/Test_splitkeep_callback_4.dump create mode 100644 src/testdir/dumps/Test_splitkeep_fold_1.dump create mode 100644 src/testdir/dumps/Test_splitkeep_fold_2.dump create mode 100644 src/testdir/dumps/Test_splitkeep_fold_3.dump create mode 100644 src/testdir/dumps/Test_splitkeep_fold_4.dump create mode 100644 src/testdir/dumps/Test_splitkeep_status_1.dump create mode 100644 src/testdir/dumps/Test_start_with_tabs.dump create mode 100644 src/testdir/dumps/Test_statusline_1.dump create mode 100644 src/testdir/dumps/Test_statusline_hl.dump create mode 100644 src/testdir/dumps/Test_statusline_mode_1.dump create mode 100644 src/testdir/dumps/Test_statusline_mode_2.dump create mode 100644 src/testdir/dumps/Test_statusline_showcmd_1.dump create mode 100644 src/testdir/dumps/Test_statusline_showcmd_2.dump create mode 100644 src/testdir/dumps/Test_statusline_showcmd_3.dump create mode 100644 src/testdir/dumps/Test_statusline_showcmd_4.dump create mode 100644 src/testdir/dumps/Test_statusline_showcmd_5.dump create mode 100644 src/testdir/dumps/Test_sub_highlight_zer_match_1.dump create mode 100644 src/testdir/dumps/Test_syntax_c_01.dump create mode 100644 src/testdir/dumps/Test_tabline_showcmd_1.dump create mode 100644 src/testdir/dumps/Test_tabline_showcmd_2.dump create mode 100644 src/testdir/dumps/Test_tabline_showcmd_3.dump create mode 100644 src/testdir/dumps/Test_tabline_showcmd_4.dump create mode 100644 src/testdir/dumps/Test_tabline_showcmd_5.dump create mode 100644 src/testdir/dumps/Test_tabpage_cmdheight.dump create mode 100644 src/testdir/dumps/Test_tenc_euc_jp_01.dump create mode 100644 src/testdir/dumps/Test_term_popup_bufline.dump create mode 100644 src/testdir/dumps/Test_terminal_all_ansi_colors.dump create mode 100644 src/testdir/dumps/Test_terminal_color_MyTermCol.dump create mode 100644 src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_color_MyWinCol.dump create mode 100644 src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump create mode 100644 src/testdir/dumps/Test_terminal_color_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump create mode 100644 src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump create mode 100644 src/testdir/dumps/Test_terminal_color_gui_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump create mode 100644 src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump create mode 100644 src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump create mode 100644 src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump create mode 100644 src/testdir/dumps/Test_terminal_color_transp_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_combining.dump create mode 100644 src/testdir/dumps/Test_terminal_dumpload.dump create mode 100644 src/testdir/dumps/Test_terminal_focus_1.dump create mode 100644 src/testdir/dumps/Test_terminal_focus_2.dump create mode 100644 src/testdir/dumps/Test_terminal_focus_3.dump create mode 100644 src/testdir/dumps/Test_terminal_from_cmd.dump create mode 100644 src/testdir/dumps/Test_terminal_normal_1.dump create mode 100644 src/testdir/dumps/Test_terminal_normal_2.dump create mode 100644 src/testdir/dumps/Test_terminal_normal_3.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_1.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_2.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_3.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_4.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_5.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_6.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_7.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_8.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_MyTermCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_MyWinCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_m1.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump create mode 100644 src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump create mode 100644 src/testdir/dumps/Test_terminal_scrollback_1.dump create mode 100644 src/testdir/dumps/Test_terminal_scrollback_2.dump create mode 100644 src/testdir/dumps/Test_terminal_scrollback_3.dump create mode 100644 src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump create mode 100644 src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump create mode 100644 src/testdir/dumps/Test_text_after_nowrap_1.dump create mode 100644 src/testdir/dumps/Test_text_after_nowrap_2.dump create mode 100644 src/testdir/dumps/Test_text_after_nowrap_3.dump create mode 100644 src/testdir/dumps/Test_text_after_nowrap_4.dump create mode 100644 src/testdir/dumps/Test_text_after_nowrap_5.dump create mode 100644 src/testdir/dumps/Test_text_after_nowrap_list_1.dump create mode 100644 src/testdir/dumps/Test_text_below_nowrap_1.dump create mode 100644 src/testdir/dumps/Test_textprop_01.dump create mode 100644 src/testdir/dumps/Test_textprop_hl_override_1.dump create mode 100644 src/testdir/dumps/Test_textprop_hl_override_2.dump create mode 100644 src/testdir/dumps/Test_textprop_nesting.dump create mode 100644 src/testdir/dumps/Test_textprop_nowrap_01.dump create mode 100644 src/testdir/dumps/Test_textprop_nowrap_02.dump create mode 100644 src/testdir/dumps/Test_textprop_syn_1.dump create mode 100644 src/testdir/dumps/Test_textprop_tab.dump create mode 100644 src/testdir/dumps/Test_textprop_vis_01.dump create mode 100644 src/testdir/dumps/Test_textprop_vis_02.dump create mode 100644 src/testdir/dumps/Test_tselect_1.dump create mode 100644 src/testdir/dumps/Test_undo_after_write_1.dump create mode 100644 src/testdir/dumps/Test_undo_after_write_2.dump create mode 100644 src/testdir/dumps/Test_undo_after_write_2.vim create mode 100644 src/testdir/dumps/Test_verbose_option_1.dump create mode 100644 src/testdir/dumps/Test_verbose_system_1.dump create mode 100644 src/testdir/dumps/Test_verbose_system_1.vim create mode 100644 src/testdir/dumps/Test_verbose_system_2.dump create mode 100644 src/testdir/dumps/Test_verbose_system_2.vim create mode 100644 src/testdir/dumps/Test_vim9_closure_fails.dump create mode 100644 src/testdir/dumps/Test_vim9_no_redraw.dump create mode 100644 src/testdir/dumps/Test_vim9_reject_declaration_1.dump create mode 100644 src/testdir/dumps/Test_vim9_reject_declaration_2.dump create mode 100644 src/testdir/dumps/Test_vim9_silent_echo.dump create mode 100644 src/testdir/dumps/Test_virtual_text_in_popup_highlight_1.dump create mode 100644 src/testdir/dumps/Test_visual_block_with_virtualedit.dump create mode 100644 src/testdir/dumps/Test_visual_block_with_virtualedit2.dump create mode 100644 src/testdir/dumps/Test_wildmenu_1.dump create mode 100644 src/testdir/dumps/Test_wildmenu_2.dump create mode 100644 src/testdir/dumps/Test_wildmenu_3.dump create mode 100644 src/testdir/dumps/Test_wildmenu_4.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_01.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_02.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_03.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_04.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_05.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_06.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_07.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_08.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_09.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_10.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_11.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_12.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_13.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_14.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_15.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_16.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_17.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_18.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_19.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_20.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_21.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_22.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_23.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_24.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_25.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_26.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_27.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_28.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_29.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_30.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_31.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_32.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_33.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_34.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_35.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_36.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_37.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_38.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_39.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_40.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_41.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_42.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_43.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_44.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_45.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_46.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_47.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_48.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_49.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_50.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_clear_entries_1.dump create mode 100644 src/testdir/dumps/Test_wildmenu_pum_term_01.dump create mode 100644 src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_1.dump create mode 100644 src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_2.dump create mode 100644 src/testdir/dumps/Test_win_gotoid_1.dump create mode 100644 src/testdir/dumps/Test_win_gotoid_2.dump create mode 100644 src/testdir/dumps/Test_win_gotoid_3.dump create mode 100644 src/testdir/dumps/Test_winbar_not_visible.dump create mode 100644 src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump create mode 100644 src/testdir/dumps/Test_wincolor_01.dump create mode 100644 src/testdir/dumps/Test_wincolor_lcs.dump create mode 100644 src/testdir/dumps/Test_winline_rnu.dump create mode 100644 src/testdir/dumps/Test_winscrolled_not_when_defined_1.dump create mode 100644 src/testdir/dumps/Test_winscrolled_not_when_defined_2.dump create mode 100644 src/testdir/dumps/Test_winscrolled_once_only_1.dump create mode 100644 src/testdir/gen_opt_test.vim create mode 100644 src/testdir/gui_init.vim create mode 100644 src/testdir/gui_preinit.vim create mode 100644 src/testdir/keycode_check.json create mode 100644 src/testdir/keycode_check.vim create mode 100644 src/testdir/lsan-suppress.txt create mode 100644 src/testdir/mouse.vim create mode 100644 src/testdir/popupbounce.vim create mode 100644 src/testdir/python2/module.py create mode 100644 src/testdir/python3/module.py create mode 100644 src/testdir/python_after/after.py create mode 100644 src/testdir/python_before/before.py create mode 100644 src/testdir/python_before/before_1.py create mode 100644 src/testdir/python_before/before_2.py create mode 100644 src/testdir/pythonx/failing.py create mode 100644 src/testdir/pythonx/failing_import.py create mode 100644 src/testdir/pythonx/module.py create mode 100644 src/testdir/pythonx/modulex.py create mode 100644 src/testdir/pythonx/topmodule/__init__.py create mode 100644 src/testdir/pythonx/topmodule/submodule/__init__.py create mode 100644 src/testdir/pythonx/topmodule/submodule/subsubmodule/__init__.py create mode 100644 src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py create mode 100644 src/testdir/pyxfile/py2_magic.py create mode 100644 src/testdir/pyxfile/py2_shebang.py create mode 100644 src/testdir/pyxfile/py3_magic.py create mode 100644 src/testdir/pyxfile/py3_shebang.py create mode 100644 src/testdir/pyxfile/pyx.py create mode 100644 src/testdir/runtest.vim create mode 100644 src/testdir/samples/crypt_sodium_invalid.txt create mode 100644 src/testdir/samples/quickfix.txt create mode 100644 src/testdir/samples/re.freeze.txt create mode 100644 src/testdir/samples/test000 create mode 100644 src/testdir/sautest/autoload/Test104.vim create mode 100644 src/testdir/sautest/autoload/auto9.vim create mode 100644 src/testdir/sautest/autoload/foo.vim create mode 100644 src/testdir/sautest/autoload/footest.vim create mode 100644 src/testdir/sautest/autoload/globone.vim create mode 100644 src/testdir/sautest/autoload/globtwo.vim create mode 100644 src/testdir/sautest/autoload/sourced.vim create mode 100644 src/testdir/screendump.vim create mode 100644 src/testdir/script_util.vim create mode 100644 src/testdir/setup.vim create mode 100644 src/testdir/setup_gui.vim create mode 100644 src/testdir/shared.vim create mode 100644 src/testdir/silent.wav create mode 100644 src/testdir/summarize.vim create mode 100644 src/testdir/term_util.vim create mode 100644 src/testdir/test10.in create mode 100644 src/testdir/test10.ok create mode 100644 src/testdir/test20.in create mode 100644 src/testdir/test20.ok create mode 100644 src/testdir/test21.in create mode 100644 src/testdir/test21.ok create mode 100644 src/testdir/test22.in create mode 100644 src/testdir/test22.ok create mode 100644 src/testdir/test23.in create mode 100644 src/testdir/test23.ok create mode 100644 src/testdir/test24.in create mode 100644 src/testdir/test24.ok create mode 100644 src/testdir/test25.in create mode 100644 src/testdir/test25.ok create mode 100644 src/testdir/test26.in create mode 100644 src/testdir/test26.ok create mode 100644 src/testdir/test27.in create mode 100644 src/testdir/test27.ok create mode 100644 src/testdir/test77a.com create mode 100644 src/testdir/test77a.in create mode 100644 src/testdir/test77a.ok create mode 100644 src/testdir/test_alot.vim create mode 100644 src/testdir/test_alot_latin.vim create mode 100644 src/testdir/test_alot_utf8.vim create mode 100644 src/testdir/test_arabic.vim create mode 100644 src/testdir/test_arglist.vim create mode 100644 src/testdir/test_assert.vim create mode 100644 src/testdir/test_autochdir.vim create mode 100644 src/testdir/test_autocmd.vim create mode 100644 src/testdir/test_autoload.vim create mode 100644 src/testdir/test_backspace_opt.vim create mode 100644 src/testdir/test_backup.vim create mode 100644 src/testdir/test_balloon.vim create mode 100644 src/testdir/test_balloon_gui.vim create mode 100644 src/testdir/test_behave.vim create mode 100644 src/testdir/test_bench_regexp.vim create mode 100644 src/testdir/test_blob.vim create mode 100644 src/testdir/test_blockedit.vim create mode 100644 src/testdir/test_breakindent.vim create mode 100644 src/testdir/test_buffer.vim create mode 100644 src/testdir/test_bufline.vim create mode 100644 src/testdir/test_bufwintabinfo.vim create mode 100644 src/testdir/test_cd.vim create mode 100644 src/testdir/test_cdo.vim create mode 100644 src/testdir/test_changedtick.vim create mode 100644 src/testdir/test_changelist.vim create mode 100644 src/testdir/test_channel.py create mode 100644 src/testdir/test_channel.vim create mode 100644 src/testdir/test_channel_6.py create mode 100644 src/testdir/test_channel_lsp.py create mode 100644 src/testdir/test_channel_pipe.py create mode 100644 src/testdir/test_channel_unix.py create mode 100644 src/testdir/test_channel_write.py create mode 100644 src/testdir/test_charsearch.vim create mode 100644 src/testdir/test_charsearch_utf8.vim create mode 100644 src/testdir/test_checkpath.vim create mode 100644 src/testdir/test_cindent.vim create mode 100644 src/testdir/test_cjk_linebreak.vim create mode 100644 src/testdir/test_clientserver.vim create mode 100644 src/testdir/test_close_count.vim create mode 100644 src/testdir/test_cmd_lists.vim create mode 100644 src/testdir/test_cmdline.vim create mode 100644 src/testdir/test_cmdmods.vim create mode 100644 src/testdir/test_cmdwin.vim create mode 100644 src/testdir/test_codestyle.vim create mode 100644 src/testdir/test_command_count.vim create mode 100644 src/testdir/test_comments.vim create mode 100644 src/testdir/test_comparators.vim create mode 100644 src/testdir/test_compiler.vim create mode 100644 src/testdir/test_conceal.vim create mode 100644 src/testdir/test_const.vim create mode 100644 src/testdir/test_cpoptions.vim create mode 100644 src/testdir/test_crypt.vim create mode 100644 src/testdir/test_cscope.vim create mode 100644 src/testdir/test_cursor_func.vim create mode 100644 src/testdir/test_cursorline.vim create mode 100644 src/testdir/test_curswant.vim create mode 100644 src/testdir/test_debugger.vim create mode 100644 src/testdir/test_delete.vim create mode 100644 src/testdir/test_diffmode.vim create mode 100644 src/testdir/test_digraph.vim create mode 100644 src/testdir/test_display.vim create mode 100644 src/testdir/test_edit.vim create mode 100644 src/testdir/test_environ.vim create mode 100644 src/testdir/test_erasebackword.vim create mode 100644 src/testdir/test_escaped_glob.vim create mode 100644 src/testdir/test_eval_stuff.vim create mode 100644 src/testdir/test_ex_equal.vim create mode 100644 src/testdir/test_ex_mode.vim create mode 100644 src/testdir/test_ex_undo.vim create mode 100644 src/testdir/test_ex_z.vim create mode 100644 src/testdir/test_excmd.vim create mode 100644 src/testdir/test_exec_while_if.vim create mode 100644 src/testdir/test_execute_func.vim create mode 100644 src/testdir/test_exists.vim create mode 100644 src/testdir/test_exists_autocmd.vim create mode 100644 src/testdir/test_exit.vim create mode 100644 src/testdir/test_expand.vim create mode 100644 src/testdir/test_expand_dllpath.vim create mode 100644 src/testdir/test_expand_func.vim create mode 100644 src/testdir/test_expr.vim create mode 100644 src/testdir/test_expr_utf8.vim create mode 100644 src/testdir/test_file_perm.vim create mode 100644 src/testdir/test_file_size.vim create mode 100644 src/testdir/test_filechanged.vim create mode 100644 src/testdir/test_fileformat.vim create mode 100644 src/testdir/test_filetype.vim create mode 100644 src/testdir/test_filter_cmd.vim create mode 100644 src/testdir/test_filter_map.vim create mode 100644 src/testdir/test_find_complete.vim create mode 100644 src/testdir/test_findfile.vim create mode 100644 src/testdir/test_fixeol.vim create mode 100644 src/testdir/test_flatten.vim create mode 100644 src/testdir/test_float_func.vim create mode 100644 src/testdir/test_fnameescape.vim create mode 100644 src/testdir/test_fnamemodify.vim create mode 100644 src/testdir/test_fold.vim create mode 100644 src/testdir/test_function_lists.vim create mode 100644 src/testdir/test_functions.vim create mode 100644 src/testdir/test_ga.vim create mode 100644 src/testdir/test_getcwd.vim create mode 100644 src/testdir/test_getvar.vim create mode 100644 src/testdir/test_gf.vim create mode 100644 src/testdir/test_glob2regpat.vim create mode 100644 src/testdir/test_global.vim create mode 100644 src/testdir/test_gn.vim create mode 100644 src/testdir/test_goto.vim create mode 100644 src/testdir/test_gui.vim create mode 100644 src/testdir/test_gui_init.vim create mode 100644 src/testdir/test_hardcopy.vim create mode 100644 src/testdir/test_help.vim create mode 100644 src/testdir/test_help_tagjump.vim create mode 100644 src/testdir/test_hide.vim create mode 100644 src/testdir/test_highlight.vim create mode 100644 src/testdir/test_history.vim create mode 100644 src/testdir/test_hlsearch.vim create mode 100644 src/testdir/test_iminsert.vim create mode 100644 src/testdir/test_increment.vim create mode 100644 src/testdir/test_increment_dbcs.vim create mode 100644 src/testdir/test_indent.vim create mode 100644 src/testdir/test_input.vim create mode 100644 src/testdir/test_ins_complete.vim create mode 100644 src/testdir/test_ins_complete_no_halt.vim create mode 100644 src/testdir/test_interrupt.vim create mode 100644 src/testdir/test_job_fails.vim create mode 100644 src/testdir/test_join.vim create mode 100644 src/testdir/test_json.vim create mode 100644 src/testdir/test_jumplist.vim create mode 100644 src/testdir/test_lambda.vim create mode 100644 src/testdir/test_langmap.vim create mode 100644 src/testdir/test_largefile.vim create mode 100644 src/testdir/test_let.vim create mode 100644 src/testdir/test_lineending.vim create mode 100644 src/testdir/test_lispindent.vim create mode 100644 src/testdir/test_listchars.vim create mode 100644 src/testdir/test_listdict.vim create mode 100644 src/testdir/test_listener.vim create mode 100644 src/testdir/test_listlbr.vim create mode 100644 src/testdir/test_listlbr_utf8.vim create mode 100644 src/testdir/test_lua.vim create mode 100644 src/testdir/test_makeencoding.py create mode 100644 src/testdir/test_makeencoding.vim create mode 100644 src/testdir/test_man.vim create mode 100644 src/testdir/test_map_functions.vim create mode 100644 src/testdir/test_mapping.vim create mode 100644 src/testdir/test_marks.vim create mode 100644 src/testdir/test_match.vim create mode 100644 src/testdir/test_matchadd_conceal.vim create mode 100644 src/testdir/test_matchadd_conceal_utf8.vim create mode 100644 src/testdir/test_matchfuzzy.vim create mode 100644 src/testdir/test_memory_usage.vim create mode 100644 src/testdir/test_menu.vim create mode 100644 src/testdir/test_messages.vim create mode 100644 src/testdir/test_method.vim create mode 100644 src/testdir/test_mksession.vim create mode 100644 src/testdir/test_mksession_utf8.vim create mode 100644 src/testdir/test_modeless.vim create mode 100644 src/testdir/test_modeline.vim create mode 100644 src/testdir/test_move.vim create mode 100644 src/testdir/test_mswin_event.vim create mode 100644 src/testdir/test_mzscheme.vim create mode 100644 src/testdir/test_nested_function.vim create mode 100644 src/testdir/test_netbeans.py create mode 100644 src/testdir/test_netbeans.vim create mode 100644 src/testdir/test_normal.vim create mode 100644 src/testdir/test_number.vim create mode 100644 src/testdir/test_options.vim create mode 100644 src/testdir/test_packadd.vim create mode 100644 src/testdir/test_partial.vim create mode 100644 src/testdir/test_paste.vim create mode 100644 src/testdir/test_perl.vim create mode 100644 src/testdir/test_plus_arg_edit.vim create mode 100644 src/testdir/test_popup.vim create mode 100644 src/testdir/test_popupwin.vim create mode 100644 src/testdir/test_popupwin_textprop.vim create mode 100644 src/testdir/test_preview.vim create mode 100644 src/testdir/test_profile.vim create mode 100644 src/testdir/test_prompt_buffer.vim create mode 100644 src/testdir/test_put.vim create mode 100644 src/testdir/test_python2.vim create mode 100644 src/testdir/test_python3.vim create mode 100644 src/testdir/test_pyx2.vim create mode 100644 src/testdir/test_pyx3.vim create mode 100644 src/testdir/test_quickfix.vim create mode 100644 src/testdir/test_quotestar.vim create mode 100644 src/testdir/test_random.vim create mode 100644 src/testdir/test_recover.vim create mode 100644 src/testdir/test_regex_char_classes.vim create mode 100644 src/testdir/test_regexp_latin.vim create mode 100644 src/testdir/test_regexp_utf8.vim create mode 100644 src/testdir/test_registers.vim create mode 100644 src/testdir/test_reltime.vim create mode 100644 src/testdir/test_rename.vim create mode 100644 src/testdir/test_restricted.vim create mode 100644 src/testdir/test_retab.vim create mode 100644 src/testdir/test_ruby.vim create mode 100644 src/testdir/test_scriptnames.vim create mode 100644 src/testdir/test_scroll_opt.vim create mode 100644 src/testdir/test_scrollbind.vim create mode 100644 src/testdir/test_search.vim create mode 100644 src/testdir/test_search_stat.vim create mode 100644 src/testdir/test_searchpos.vim create mode 100644 src/testdir/test_selectmode.vim create mode 100644 src/testdir/test_set.vim create mode 100644 src/testdir/test_sha256.vim create mode 100644 src/testdir/test_shell.vim create mode 100644 src/testdir/test_shift.vim create mode 100644 src/testdir/test_short_sleep.py create mode 100644 src/testdir/test_shortpathname.vim create mode 100644 src/testdir/test_signals.vim create mode 100644 src/testdir/test_signs.vim create mode 100644 src/testdir/test_sleep.vim create mode 100644 src/testdir/test_smartindent.vim create mode 100644 src/testdir/test_sort.vim create mode 100644 src/testdir/test_sound.vim create mode 100644 src/testdir/test_source.vim create mode 100644 src/testdir/test_source_utf8.vim create mode 100644 src/testdir/test_spell.vim create mode 100644 src/testdir/test_spell_utf8.vim create mode 100644 src/testdir/test_spellfile.vim create mode 100644 src/testdir/test_startup.vim create mode 100644 src/testdir/test_startup_utf8.vim create mode 100644 src/testdir/test_stat.vim create mode 100644 src/testdir/test_statusline.vim create mode 100644 src/testdir/test_substitute.vim create mode 100644 src/testdir/test_suspend.vim create mode 100644 src/testdir/test_swap.vim create mode 100644 src/testdir/test_syn_attr.vim create mode 100644 src/testdir/test_syntax.vim create mode 100644 src/testdir/test_system.vim create mode 100644 src/testdir/test_tab.vim create mode 100644 src/testdir/test_tabline.vim create mode 100644 src/testdir/test_tabpage.vim create mode 100644 src/testdir/test_tagcase.vim create mode 100644 src/testdir/test_tagfunc.vim create mode 100644 src/testdir/test_tagjump.vim create mode 100644 src/testdir/test_taglist.vim create mode 100644 src/testdir/test_tcl.vim create mode 100644 src/testdir/test_termcodes.vim create mode 100644 src/testdir/test_termencoding.vim create mode 100644 src/testdir/test_terminal.vim create mode 100644 src/testdir/test_terminal2.vim create mode 100644 src/testdir/test_terminal3.vim create mode 100644 src/testdir/test_terminal_fail.vim create mode 100644 src/testdir/test_textformat.vim create mode 100644 src/testdir/test_textobjects.vim create mode 100644 src/testdir/test_textprop.vim create mode 100644 src/testdir/test_timers.vim create mode 100644 src/testdir/test_true_false.vim create mode 100644 src/testdir/test_trycatch.vim create mode 100644 src/testdir/test_undo.vim create mode 100644 src/testdir/test_unlet.vim create mode 100644 src/testdir/test_user_func.vim create mode 100644 src/testdir/test_usercommands.vim create mode 100644 src/testdir/test_utf8.vim create mode 100644 src/testdir/test_utf8_comparisons.vim create mode 100644 src/testdir/test_vartabs.vim create mode 100644 src/testdir/test_version.vim create mode 100644 src/testdir/test_vim9_assign.vim create mode 100644 src/testdir/test_vim9_builtin.vim create mode 100644 src/testdir/test_vim9_class.vim create mode 100644 src/testdir/test_vim9_cmd.vim create mode 100644 src/testdir/test_vim9_disassemble.vim create mode 100644 src/testdir/test_vim9_expr.vim create mode 100644 src/testdir/test_vim9_fails.vim create mode 100644 src/testdir/test_vim9_func.vim create mode 100644 src/testdir/test_vim9_import.vim create mode 100644 src/testdir/test_vim9_script.vim create mode 100644 src/testdir/test_viminfo.vim create mode 100644 src/testdir/test_vimscript.vim create mode 100644 src/testdir/test_virtualedit.vim create mode 100644 src/testdir/test_visual.vim create mode 100644 src/testdir/test_winbar.vim create mode 100644 src/testdir/test_winbuf_close.vim create mode 100644 src/testdir/test_window_cmd.vim create mode 100644 src/testdir/test_window_id.vim create mode 100644 src/testdir/test_windows_home.vim create mode 100644 src/testdir/test_wnext.vim create mode 100644 src/testdir/test_wordcount.vim create mode 100644 src/testdir/test_writefile.vim create mode 100644 src/testdir/test_xxd.vim create mode 100644 src/testdir/testluaplugin/lua/testluaplugin/hello.lua create mode 100644 src/testdir/testluaplugin/lua/testluaplugin/init.lua create mode 100644 src/testdir/thread_util.py create mode 100644 src/testdir/unix.vim create mode 100644 src/testdir/view_util.vim create mode 100644 src/testdir/vim9.vim create mode 100644 src/testdir/vms.vim (limited to 'src/testdir') diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak new file mode 100644 index 0000000..f198217 --- /dev/null +++ b/src/testdir/Make_all.mak @@ -0,0 +1,555 @@ +# +# Common Makefile, defines the list of tests to run. +# + +# Options for protecting the tests against undesirable interaction with the +# environment +NO_PLUGINS = --noplugin --not-a-term +NO_INITS = -U NONE $(NO_PLUGINS) + +# File to delete when testing starts +CLEANUP_FILES = test.log messages starttime + +# Tests for tiny build. +SCRIPTS_TINY = \ + test10 \ + test20 \ + test21 \ + test22 \ + test23 \ + test24 \ + test25 \ + test26 \ + test27 + +SCRIPTS_TINY_OUT = \ + test10.out \ + test20.out \ + test21.out \ + test22.out \ + test23.out \ + test24.out \ + test25.out \ + test26.out \ + test27.out + +# Tests for Vim9 script. +TEST_VIM9 = \ + test_vim9_assign \ + test_vim9_builtin \ + test_vim9_class \ + test_vim9_cmd \ + test_vim9_disassemble \ + test_vim9_expr \ + test_vim9_fails \ + test_vim9_func \ + test_vim9_import \ + test_vim9_script + +TEST_VIM9_RES = \ + test_vim9_assign.res \ + test_vim9_builtin.res \ + test_vim9_class.res \ + test_vim9_cmd.res \ + test_vim9_disassemble.res \ + test_vim9_expr.res \ + test_vim9_fails.res \ + test_vim9_func.res \ + test_vim9_import.res \ + test_vim9_script.res + +# Benchmark scripts. +SCRIPTS_BENCH = test_bench_regexp.res + +# Individual tests, including the ones part of test_alot. +# Please keep sorted up to test_alot. +NEW_TESTS = \ + test_arabic \ + test_arglist \ + test_assert \ + test_autochdir \ + test_autocmd \ + test_autoload \ + test_backspace_opt \ + test_backup \ + test_balloon \ + test_balloon_gui \ + test_behave \ + test_blob \ + test_blockedit \ + test_breakindent \ + test_buffer \ + test_bufline \ + test_bufwintabinfo \ + test_cd \ + test_cdo \ + test_changedtick \ + test_changelist \ + test_channel \ + test_charsearch \ + test_charsearch_utf8 \ + test_checkpath \ + test_cindent \ + test_cjk_linebreak \ + test_clientserver \ + test_close_count \ + test_cmd_lists \ + test_cmdline \ + test_cmdmods \ + test_cmdwin \ + test_codestyle \ + test_command_count \ + test_comments \ + test_comparators \ + test_compiler \ + test_conceal \ + test_const \ + test_cpoptions \ + test_crypt \ + test_cscope \ + test_cursor_func \ + test_cursorline \ + test_curswant \ + test_debugger \ + test_delete \ + test_diffmode \ + test_digraph \ + test_display \ + test_edit \ + test_environ \ + test_erasebackword \ + test_escaped_glob \ + test_eval_stuff \ + test_ex_equal \ + test_ex_mode \ + test_ex_undo \ + test_ex_z \ + test_excmd \ + test_exec_while_if \ + test_execute_func \ + test_exists \ + test_exists_autocmd \ + test_exit \ + test_expand \ + test_expand_dllpath \ + test_expand_func \ + test_expr \ + test_expr_utf8 \ + test_file_perm \ + test_file_size \ + test_filechanged \ + test_fileformat \ + test_filetype \ + test_filter_cmd \ + test_filter_map \ + test_find_complete \ + test_findfile \ + test_fixeol \ + test_flatten \ + test_float_func \ + test_fnameescape \ + test_fnamemodify \ + test_fold \ + test_functions \ + test_function_lists \ + test_ga \ + test_getcwd \ + test_getvar \ + test_gf \ + test_glob2regpat \ + test_global \ + test_gn \ + test_goto \ + test_gui \ + test_gui_init \ + test_hardcopy \ + test_help \ + test_help_tagjump \ + test_hide \ + test_highlight \ + test_history \ + test_hlsearch \ + test_iminsert \ + test_increment \ + test_increment_dbcs \ + test_indent \ + test_input \ + test_ins_complete \ + test_ins_complete_no_halt \ + test_interrupt \ + test_job_fails \ + test_join \ + test_json \ + test_jumplist \ + test_lambda \ + test_langmap \ + test_largefile \ + test_let \ + test_lineending \ + test_lispindent \ + test_listchars \ + test_listdict \ + test_listener \ + test_listlbr \ + test_listlbr_utf8 \ + test_lua \ + test_makeencoding \ + test_man \ + test_map_functions \ + test_mapping \ + test_marks \ + test_match \ + test_matchadd_conceal \ + test_matchadd_conceal_utf8 \ + test_matchfuzzy \ + test_memory_usage \ + test_menu \ + test_messages \ + test_method \ + test_mksession \ + test_mksession_utf8 \ + test_modeless \ + test_modeline \ + test_move \ + test_mswin_event \ + test_mzscheme \ + test_nested_function \ + test_netbeans \ + test_normal \ + test_number \ + test_options \ + test_packadd \ + test_partial \ + test_paste \ + test_perl \ + test_plus_arg_edit \ + test_popup \ + test_popupwin \ + test_popupwin_textprop \ + test_preview \ + test_profile \ + test_prompt_buffer \ + test_put \ + test_python2 \ + test_python3 \ + test_pyx2 \ + test_pyx3 \ + test_quickfix \ + test_quotestar \ + test_random \ + test_recover \ + test_regex_char_classes \ + test_regexp_latin \ + test_regexp_utf8 \ + test_registers \ + test_reltime \ + test_rename \ + test_restricted \ + test_retab \ + test_ruby \ + test_scriptnames \ + test_scroll_opt \ + test_scrollbind \ + test_search \ + test_search_stat \ + test_searchpos \ + test_selectmode \ + test_set \ + test_sha256 \ + test_shell \ + test_shift \ + test_shortpathname \ + test_signals \ + test_signs \ + test_sleep \ + test_smartindent \ + test_sort \ + test_sound \ + test_source \ + test_source_utf8 \ + test_spell \ + test_spell_utf8 \ + test_spellfile \ + test_startup \ + test_startup_utf8 \ + test_stat \ + test_statusline \ + test_substitute \ + test_suspend \ + test_swap \ + test_syn_attr \ + test_syntax \ + test_system \ + test_tab \ + test_tabline \ + test_tabpage \ + test_tagcase \ + test_tagfunc \ + test_tagjump \ + test_taglist \ + test_tcl \ + test_termcodes \ + test_termencoding \ + test_terminal \ + test_terminal2 \ + test_terminal3 \ + test_terminal_fail \ + test_textformat \ + test_textobjects \ + test_textprop \ + test_timers \ + test_true_false \ + test_trycatch \ + test_undo \ + test_unlet \ + test_user_func \ + test_usercommands \ + test_utf8 \ + test_utf8_comparisons \ + test_vartabs \ + test_version \ + $(TEST_VIM9) \ + test_viminfo \ + test_vimscript \ + test_virtualedit \ + test_visual \ + test_winbar \ + test_winbuf_close \ + test_window_cmd \ + test_window_id \ + test_windows_home \ + test_wnext \ + test_wordcount \ + test_writefile \ + test_xxd \ + test_alot_latin \ + test_alot_utf8 \ + test_alot + +# Test targets that use runtest.vim. +# Keep test_alot*.res as the last one, sort the others. +# test_largefile.res is omitted, it uses too much resources to run on CI. +NEW_TESTS_RES = \ + test_arabic.res \ + test_arglist.res \ + test_assert.res \ + test_autochdir.res \ + test_autocmd.res \ + test_autoload.res \ + test_backspace_opt.res \ + test_balloon.res \ + test_balloon_gui.res \ + test_blob.res \ + test_blockedit.res \ + test_breakindent.res \ + test_buffer.res \ + test_bufline.res \ + test_bufwintabinfo.res \ + test_cd.res \ + test_cdo.res \ + test_changedtick.res \ + test_changelist.res \ + test_channel.res \ + test_charsearch.res \ + test_checkpath.res \ + test_cindent.res \ + test_cjk_linebreak.res \ + test_clientserver.res \ + test_close_count.res \ + test_cmd_lists.res \ + test_cmdline.res \ + test_cmdmods.res \ + test_cmdwin.res \ + test_codestyle.res \ + test_command_count.res \ + test_comments.res \ + test_comparators.res \ + test_conceal.res \ + test_const.res \ + test_cpoptions.res \ + test_crypt.res \ + test_cscope.res \ + test_cursor_func.res \ + test_cursorline.res \ + test_curswant.res \ + test_debugger.res \ + test_delete.res \ + test_diffmode.res \ + test_digraph.res \ + test_display.res \ + test_edit.res \ + test_environ.res \ + test_erasebackword.res \ + test_escaped_glob.res \ + test_eval_stuff.res \ + test_excmd.res \ + test_exec_while_if.res \ + test_execute_func.res \ + test_exists.res \ + test_exists_autocmd.res \ + test_exit.res \ + test_expr.res \ + test_file_size.res \ + test_filechanged.res \ + test_fileformat.res \ + test_filetype.res \ + test_filter_cmd.res \ + test_filter_map.res \ + test_find_complete.res \ + test_findfile.res \ + test_fixeol.res \ + test_flatten.res \ + test_float_func.res \ + test_fnameescape.res \ + test_fold.res \ + test_functions.res \ + test_function_lists.res \ + test_getcwd.res \ + test_getvar.res \ + test_gf.res \ + test_gn.res \ + test_goto.res \ + test_gui.res \ + test_gui_init.res \ + test_hardcopy.res \ + test_help.res \ + test_help_tagjump.res \ + test_hide.res \ + test_highlight.res \ + test_history.res \ + test_hlsearch.res \ + test_iminsert.res \ + test_increment.res \ + test_increment_dbcs.res \ + test_indent.res \ + test_input.res \ + test_ins_complete.res \ + test_ins_complete_no_halt.res \ + test_interrupt.res \ + test_job_fails.res \ + test_join.res \ + test_json.res \ + test_jumplist.res \ + test_lambda.res \ + test_langmap.res \ + test_let.res \ + test_lineending.res \ + test_lispindent.res \ + test_listchars.res \ + test_listdict.res \ + test_listener.res \ + test_listlbr.res \ + test_listlbr_utf8.res \ + test_lua.res \ + test_makeencoding.res \ + test_man.res \ + test_map_functions.res \ + test_mapping.res \ + test_marks.res \ + test_match.res \ + test_matchadd_conceal.res \ + test_matchadd_conceal_utf8.res \ + test_matchfuzzy.res \ + test_memory_usage.res \ + test_menu.res \ + test_messages.res \ + test_method.res \ + test_mksession.res \ + test_modeless.res \ + test_modeline.res \ + test_mswin_event.res \ + test_mzscheme.res \ + test_nested_function.res \ + test_netbeans.res \ + test_normal.res \ + test_number.res \ + test_options.res \ + test_packadd.res \ + test_partial.res \ + test_paste.res \ + test_perl.res \ + test_plus_arg_edit.res \ + test_popup.res \ + test_popupwin.res \ + test_popupwin_textprop.res \ + test_preview.res \ + test_profile.res \ + test_prompt_buffer.res \ + test_python2.res \ + test_python3.res \ + test_pyx2.res \ + test_pyx3.res \ + test_quickfix.res \ + test_quotestar.res \ + test_random.res \ + test_recover.res \ + test_regex_char_classes.res \ + test_registers.res \ + test_rename.res \ + test_restricted.res \ + test_retab.res \ + test_ruby.res \ + test_scriptnames.res \ + test_scroll_opt.res \ + test_scrollbind.res \ + test_search.res \ + test_search_stat.res \ + test_selectmode.res \ + test_shell.res \ + test_shortpathname.res \ + test_signals.res \ + test_signs.res \ + test_sleep.res \ + test_smartindent.res \ + test_sort.res \ + test_sound.res \ + test_source.res \ + test_spell.res \ + test_spell_utf8.res \ + test_spellfile.res \ + test_startup.res \ + test_stat.res \ + test_statusline.res \ + test_substitute.res \ + test_suspend.res \ + test_swap.res \ + test_syn_attr.res \ + test_syntax.res \ + test_system.res \ + test_tab.res \ + test_tabpage.res \ + test_tagjump.res \ + test_taglist.res \ + test_tcl.res \ + test_termcodes.res \ + test_termencoding.res \ + test_terminal.res \ + test_terminal2.res \ + test_terminal3.res \ + test_terminal_fail.res \ + test_textformat.res \ + test_textobjects.res \ + test_textprop.res \ + test_timers.res \ + test_true_false.res \ + test_trycatch.res \ + test_undo.res \ + test_user_func.res \ + test_usercommands.res \ + test_vartabs.res \ + $(TEST_VIM9_RES) \ + test_viminfo.res \ + test_vimscript.res \ + test_virtualedit.res \ + test_visual.res \ + test_winbar.res \ + test_winbuf_close.res \ + test_window_cmd.res \ + test_window_id.res \ + test_windows_home.res \ + test_wordcount.res \ + test_writefile.res \ + test_xxd.res \ + test_alot_latin.res \ + test_alot_utf8.res \ + test_alot.res diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak new file mode 100644 index 0000000..843ea1e --- /dev/null +++ b/src/testdir/Make_amiga.mak @@ -0,0 +1,35 @@ +# +# Makefile to run all tests for Vim, on Amiga +# +# Requires "rm", "csh" and "diff"! + +VIMPROG = /vim + +default: nongui + +include Make_all.mak + +SCRIPTS = $(SCRIPTS_TINY_OUT) + +.SUFFIXES: .in .out .res .vim + +nongui: /tmp $(SCRIPTS) + csh -c echo ALL DONE + +clean: + csh -c \rm -rf *.out Xdir1 Xfind XfakeHOME Xdotest test.ok viminfo + +.in.out: + copy $*.ok test.ok + $(VIMPROG) -u amiga.vim -U NONE --noplugin --not-a-term -s dotest.in $*.in + diff test.out $*.ok + rename test.out $*.out + -delete X#? ALL QUIET + -delete test.ok + +# Create a directory for temp files +/tmp: + makedir /tmp + +# Manx requires all dependencies, but we stopped updating them. +# Delete the .out file(s) to run test(s). diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak new file mode 100644 index 0000000..7f9d6bf --- /dev/null +++ b/src/testdir/Make_dos.mak @@ -0,0 +1,4 @@ +!message Make_dos.mak is deprecated. Use Make_mvc.mak instead. +!message + +!include Make_mvc.mak diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak new file mode 100644 index 0000000..2676111 --- /dev/null +++ b/src/testdir/Make_ming.mak @@ -0,0 +1,168 @@ +# +# Makefile to run all tests for Vim, on Dos-like machines +# with sh.exe or zsh.exe in the path or not. +# +# Author: Bill McCarthy +# +# Requires a set of Unix tools: echo, diff, etc. + +# Don't use unix-like shell. +SHELL = cmd.exe + +DEL = del +DELDIR = rd /s /q +MV = move /y +CP = copy /y +CAT = type + +VIMPROG = ..\\vim + +default: nongui + +include Make_all.mak + +# Explicit dependencies. +test_options.res test_alot.res: opt_test.vim + +TEST_OUTFILES = $(SCRIPTS_TINY_OUT) +DOSTMP = dostmp +# Keep $(DOSTMP)/*.in +.PRECIOUS: $(patsubst %.out, $(DOSTMP)/%.in, $(TEST_OUTFILES)) + +.SUFFIXES: .in .out .res .vim + +# Add --gui-dialog-file to avoid getting stuck in a dialog. +COMMON_ARGS = $(NO_INITS) --gui-dialog-file guidialog + +nongui: nolog tinytests newtests report + +gui: nolog tinytests newtests report + +tiny: nolog tinytests report + +benchmark: $(SCRIPTS_BENCH) + +report: + @rem without the +eval feature test_result.log is a copy of test.log + @if exist test.log ( copy /y test.log test_result.log > nul ) \ + else ( echo No failures reported > test_result.log ) + $(VIMPROG) -u NONE $(COMMON_ARGS) -S summarize.vim messages + -if exist starttime del starttime + @echo. + @echo Test results: + @cmd /c type test_result.log + @if exist test.log ( echo TEST FAILURE & exit /b 1 ) \ + else ( echo ALL DONE ) + + +# Execute an individual new style test, e.g.: +# mingw32-make -f Make_ming.mak test_largefile +$(NEW_TESTS): + -if exist $@.res del $@.res + -if exist test.log del test.log + -if exist messages del messages + -if exist starttime del starttime + @$(MAKE) -f Make_ming.mak $@.res VIMPROG=$(VIMPROG) --no-print-directory + @type messages + @if exist test.log exit 1 + + +# Delete files that may interfere with running tests. This includes some files +# that may result from working on the tests, not only from running them. +clean: + -@if exist *.out $(DEL) *.out + -@if exist *.failed $(DEL) *.failed + -@if exist *.res $(DEL) *.res + -@if exist $(DOSTMP) rd /s /q $(DOSTMP) + -@if exist test.in $(DEL) test.in + -@if exist test.ok $(DEL) test.ok + -@if exist Xdir1 $(DELDIR) Xdir1 + -@if exist Xfind $(DELDIR) Xfind + -@if exist XfakeHOME $(DELDIR) XfakeHOME + -@if exist X* $(DEL) X* + -@for /d %%i in (X*) do @rd /s/q %%i + -@if exist viminfo $(DEL) viminfo + -@if exist test.log $(DEL) test.log + -@if exist test_result.log del test_result.log + -@if exist messages $(DEL) messages + -@if exist starttime $(DEL) starttime + -@if exist benchmark.out del benchmark.out + -@if exist opt_test.vim $(DEL) opt_test.vim + -@if exist guidialog $(DEL) guidialog + -@if exist guidialogfile $(DEL) guidialogfile + +nolog: + -@if exist test.log $(DEL) test.log + -@if exist test_result.log del test_result.log + -@if exist messages $(DEL) messages + -@if exist starttime $(DEL) starttime + + +# Tiny tests. Works even without the +eval feature. +tinytests: $(SCRIPTS_TINY_OUT) + +# Copy the input files to dostmp, changing the fileformat to dos. +$(DOSTMP)/%.in : %.in + if not exist $(DOSTMP)\nul mkdir $(DOSTMP) + if exist $(DOSTMP)\$< $(DEL) $(DOSTMP)\$< + $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=dos|f $@|wq" $< + +# For each input file dostmp/test99.in run the tests. +# This moves test99.in to test99.in.bak temporarily. +%.out : $(DOSTMP)/%.in + -@if exist test.out $(DEL) test.out + -@if exist $(DOSTMP)\$@ $(DEL) $(DOSTMP)\$@ + $(MV) $(notdir $<) $(notdir $<).bak > NUL + $(CP) $(DOSTMP)\$(notdir $<) $(notdir $<) > NUL + $(CP) $(basename $@).ok test.ok > NUL + $(VIMPROG) -u dos.vim $(COMMON_ARGS) -s dotest.in $(notdir $<) + -@if exist test.out $(MV) test.out $(DOSTMP)\$@ > NUL + -@if exist $(notdir $<).bak $(MV) $(notdir $<).bak $(notdir $<) > NUL + -@if exist test.ok $(DEL) test.ok + -@if exist Xdir1 $(DELDIR) /s /q Xdir1 + -@if exist Xfind $(DELDIR) Xfind + -@if exist XfakeHOME $(DELDIR) XfakeHOME + -@del X* + -@if exist viminfo del viminfo + $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=unix|f test.out|wq" \ + $(DOSTMP)\$@ + @diff test.out $(basename $@).ok & if errorlevel 1 \ + ( $(MV) test.out $(basename $@).failed > NUL \ + & del $(DOSTMP)\$@ \ + & echo $(basename $@) FAILED >> test.log ) \ + else ( $(MV) test.out $(basename $@).out > NUL ) + + +# New style of tests uses Vim script with assert calls. These are easier +# to write and a lot easier to read and debug. +# Limitation: Only works with the +eval feature. + +newtests: newtestssilent + @if exist messages type messages + +newtestssilent: $(NEW_TESTS_RES) + +.vim.res: + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim + @$(DEL) vimcmd + +test_gui.res: test_gui.vim + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $< + @$(DEL) vimcmd + +test_gui_init.res: test_gui_init.vim + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $< + @$(DEL) vimcmd + +opt_test.vim: ../optiondefs.h gen_opt_test.vim + $(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h + +test_bench_regexp.res: test_bench_regexp.vim + -$(DEL) benchmark.out + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim + @$(DEL) vimcmd + $(CAT) benchmark.out diff --git a/src/testdir/Make_mvc.mak b/src/testdir/Make_mvc.mak new file mode 100644 index 0000000..318cd4a --- /dev/null +++ b/src/testdir/Make_mvc.mak @@ -0,0 +1,162 @@ +# +# Makefile to run all tests for Vim, on Dos-like machines. +# +# Requires a set of Unix tools: echo, diff, etc. + +# Testing may be done with a debug build +!IF EXIST(..\\vimd.exe) && !EXIST(..\\vim.exe) +VIMPROG = ..\\vimd +!ELSE +VIMPROG = ..\\vim +!ENDIF + + +default: nongui + +!include Make_all.mak + +# Explicit dependencies. +test_options.res test_alot.res: opt_test.vim + +TEST_OUTFILES = $(SCRIPTS_TINY_OUT) +DOSTMP = dostmp +DOSTMP_OUTFILES = $(TEST_OUTFILES:test=dostmp\test) +DOSTMP_INFILES = $(DOSTMP_OUTFILES:.out=.in) + +.SUFFIXES: .in .out .res .vim + +# Add --gui-dialog-file to avoid getting stuck in a dialog. +COMMON_ARGS = $(NO_INITS) --gui-dialog-file guidialog + +nongui: nolog tinytests newtests report + +gui: nolog tinytests newtests report + +tiny: nolog tinytests report + +benchmark: $(SCRIPTS_BENCH) + +report: + @rem without the +eval feature test_result.log is a copy of test.log + @if exist test.log ( copy /y test.log test_result.log > nul ) \ + else ( echo No failures reported > test_result.log ) + $(VIMPROG) -u NONE $(COMMON_ARGS) -S summarize.vim messages + -if exist starttime del starttime + @echo. + @echo Test results: + @cmd /c type test_result.log + @if exist test.log ( echo TEST FAILURE & exit /b 1 ) \ + else ( echo ALL DONE ) + + +# Execute an individual new style test, e.g.: +# nmake -f Make_mvc.mak test_largefile +$(NEW_TESTS): + -if exist $@.res del $@.res + -if exist test.log del test.log + -if exist messages del messages + -if exist starttime del starttime + @$(MAKE) -nologo -f Make_mvc.mak $@.res VIMPROG=$(VIMPROG) + @type messages + @if exist test.log exit 1 + + +# Delete files that may interfere with running tests. This includes some files +# that may result from working on the tests, not only from running them. +clean: + -if exist *.out del *.out + -if exist *.failed del *.failed + -if exist *.res del *.res + -if exist $(DOSTMP) rd /s /q $(DOSTMP) + -if exist test.in del test.in + -if exist test.ok del test.ok + -if exist Xdir1 rd /s /q Xdir1 + -if exist Xfind rd /s /q Xfind + -if exist XfakeHOME rd /s /q XfakeHOME + -if exist X* del X* + -for /d %i in (X*) do @rd /s/q %i + -if exist viminfo del viminfo + -if exist test.log del test.log + -if exist test_result.log del test_result.log + -if exist messages del messages + -if exist starttime del starttime + -if exist benchmark.out del benchmark.out + -if exist opt_test.vim del opt_test.vim + -if exist guidialog del guidialog + -if exist guidialogfile del guidialogfile + +nolog: + -if exist test.log del test.log + -if exist test_result.log del test_result.log + -if exist messages del messages + -if exist starttime del starttime + + +# Tiny tests. Works even without the +eval feature. +tinytests: $(SCRIPTS_TINY_OUT) + +# Copy the input files to dostmp, changing the fileformat to dos. +$(DOSTMP_INFILES): $(*B).in + if not exist $(DOSTMP)\NUL md $(DOSTMP) + if exist $@ del $@ + $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=dos|f $@|wq" $(*B).in + +# For each input file dostmp/test99.in run the tests. +# This moves test99.in to test99.in.bak temporarily. +$(TEST_OUTFILES): $(DOSTMP)\$(*B).in + -@if exist test.out DEL test.out + -@if exist $(DOSTMP)\$(*B).out DEL $(DOSTMP)\$(*B).out + move $(*B).in $(*B).in.bak > nul + copy $(DOSTMP)\$(*B).in $(*B).in > nul + copy $(*B).ok test.ok > nul + $(VIMPROG) -u dos.vim $(COMMON_ARGS) -s dotest.in $(*B).in + -@if exist test.out MOVE /y test.out $(DOSTMP)\$(*B).out > nul + -@if exist $(*B).in.bak move /y $(*B).in.bak $(*B).in > nul + -@if exist test.ok del test.ok + -@if exist Xdir1 rd /s /q Xdir1 + -@if exist Xfind rd /s /q Xfind + -@if exist XfakeHOME rd /s /q XfakeHOME + -@del X* + -@if exist viminfo del viminfo + $(VIMPROG) -u dos.vim $(COMMON_ARGS) "+set ff=unix|f test.out|wq" \ + $(DOSTMP)\$(*B).out + @diff test.out $*.ok & if errorlevel 1 \ + ( move /y test.out $*.failed > nul \ + & del $(DOSTMP)\$(*B).out \ + & echo $* FAILED >> test.log ) \ + else ( move /y test.out $*.out > nul ) + + +# New style of tests uses Vim script with assert calls. These are easier +# to write and a lot easier to read and debug. +# Limitation: Only works with the +eval feature. + +newtests: newtestssilent + @if exist messages type messages + +newtestssilent: $(NEW_TESTS_RES) + +.vim.res: + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim + @del vimcmd + +test_gui.res: test_gui.vim + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim + @del vimcmd + +test_gui_init.res: test_gui_init.vim + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $*.vim + @del vimcmd + +opt_test.vim: ../optiondefs.h gen_opt_test.vim + $(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h + +test_bench_regexp.res: test_bench_regexp.vim + -if exist benchmark.out del benchmark.out + @echo $(VIMPROG) > vimcmd + $(VIMPROG) -u NONE $(COMMON_ARGS) -S runtest.vim $*.vim + @del vimcmd + @IF EXIST benchmark.out ( type benchmark.out ) diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms new file mode 100644 index 0000000..b6c6fab --- /dev/null +++ b/src/testdir/Make_vms.mms @@ -0,0 +1,108 @@ +# +# Makefile to run all tests for Vim on VMS +# +# Authors: Zoltan Arpadffy, +# Sandor Kopanyi, +# +# Last change: 2020 Aug 14 +# +# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. +# Edit the lines in the Configuration section below to select. +# +# Execute with: +# mms/descrip=Make_vms.mms +# Cleanup with: +# mms/descrip=Make_vms.mms clean +# +# Make files are MMK compatible. +# +# NOTE: You can run this script just in X/Window environment. It will +# create a new terminals, therefore you have to set up your DISPLAY +# logical. More info in VMS documentation or with: help set disp. +# +####################################################################### +# Configuration section. +####################################################################### + +# Uncomment if you want tests in GUI mode. Terminal mode is default. +# WANT_GUI = YES + +####################################################################### +# End of configuration section. +# +# Please, do not change anything below without programming experience. +####################################################################### + +VIMPROG = <->vim.exe + +.SUFFIXES : .out .in + +SCRIPT = test20.out test21.out test22.out test23.out test24.out \ + test25.out test26.out test27.out \ + test77a.out + +.IFDEF WANT_GUI +GUI_OPTION = -g +.ENDIF + +.in.out : + -@ !clean up before doing the test + -@ if "''F$SEARCH("test.out.*")'" .NES. "" then delete/noconfirm/nolog test.out.* + -@ if "''F$SEARCH("$*.out.*")'" .NES. "" then delete/noconfirm/nolog $*.out.* + -@ ! define TMP if not set - some tests use it + -@ if "''F$TRNLNM("TMP")'" .EQS. "" then define/nolog TMP [] + -@ write sys$output " " + -@ write sys$output "-----------------------------------------------" + -@ write sys$output " "$*" " + -@ write sys$output "-----------------------------------------------" + -@ !run the test + -@ create/term/wait/nodetach mcr $(VIMPROG) $(GUI_OPTION) -u vms.vim --noplugin -s dotest.in $*.in + -@ !analyse the result + -@ directory /size/date test.out + -@ if "''F$SEARCH("test.out.*")'" .NES. "" then rename/nolog test.out $*.out + -@ if "''F$SEARCH("$*.out.*")'" .NES. "" then differences /par $*.out $*.ok; + -@ !clean up after the test + -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.* + -@ if "''F$SEARCH("Xtest.*")'" .NES. "" then delete/noconfirm/nolog Xtest.*.* + +all : clean nolog $(START_WITH) $(SCRIPT) nolog + -@ write sys$output " " + -@ write sys$output "-----------------------------------------------" + -@ write sys$output " All done" + -@ write sys$output "-----------------------------------------------" + -@ deassign sys$output + -@ delete/noconfirm/nolog x*.*.* + -@ type test.log + +nolog : + -@ define sys$output test.log + -@ write sys$output "-----------------------------------------------" + -@ write sys$output " Standard VIM test cases" + -@ write sys$output "-----------------------------------------------" + -@ write sys$output " OpenVMS version: ''F$GETSYI("VERSION")'" + -@ write sys$output " Vim version:" + -@ mcr $(VIMPROG) --version + -@ write sys$output " Test date:" + -@ show time + -@ write sys$output "-----------------------------------------------" + -@ write sys$output " Test results:" + -@ write sys$output "-----------------------------------------------" + -@ write sys$output "MAKE_VMS.MMS options:" + -@ write sys$output " WANT_GUI = ""$(WANT_GUI)"" " + -@ write sys$output "Default vimrc file is VMS.VIM:" + -@ write sys$output "-----------------------------------------------" + -@ type VMS.VIM + +clean : + -@ if "''F$SEARCH("*.out")'" .NES. "" then delete/noconfirm/nolog *.out.* + -@ if "''F$SEARCH("test.log")'" .NES. "" then delete/noconfirm/nolog test.log.* + -@ if "''F$SEARCH("test.ok")'" .NES. "" then delete/noconfirm/nolog test.ok.* + -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.* + -@ if "''F$SEARCH("Xtest*.*")'" .NES. "" then delete/noconfirm/nolog Xtest*.*.* + -@ if "''F$SEARCH("XX*.*")'" .NES. "" then delete/noconfirm/nolog XX*.*.* + -@ if "''F$SEARCH("_un_*.*")'" .NES. "" then delete/noconfirm/nolog _un_*.*.* + -@ if "''F$SEARCH("*.*_sw*")'" .NES. "" then delete/noconfirm/nolog *.*_sw*.* + -@ if "''F$SEARCH("*.failed")'" .NES. "" then delete/noconfirm/nolog *.failed.* + -@ if "''F$SEARCH("*.rej")'" .NES. "" then delete/noconfirm/nolog *.rej.* + -@ if "''F$SEARCH("viminfo.*")'" .NES. "" then delete/noconfirm/nolog viminfo.*.* + diff --git a/src/testdir/Makefile b/src/testdir/Makefile new file mode 100644 index 0000000..b69d935 --- /dev/null +++ b/src/testdir/Makefile @@ -0,0 +1,176 @@ +# +# Makefile to run all tests for Vim +# + +# Use console or GUI. +VIMPROG = ../vim +XXDPROG = ../xxd/xxd +# VIMPROG = ../gvim + +SCRIPTSOURCE = ../../runtime + +# Comment out this line to see the verbose output of tests. +# +# Catches SwapExists to avoid hanging at the ATTENTION prompt. +REDIR_TEST_TO_NULL = --cmd 'au SwapExists * let v:swapchoice = "e"' | LC_ALL=C LANG=C LANGUAGE=C awk '/Executing Test_/{match($$0, "([0-9][0-9]:[0-9][0-9] *)?Executing Test_[^\\)]*\\)"); print substr($$0, RSTART, RLENGTH) "\r"; fflush()}' + +# Uncomment this line to use valgrind for memory leaks and extra warnings. +# The output goes into a file "valgrind.testN" +# Vim should be compiled with EXITFREE to avoid false warnings. +# This will make testing about 10 times as slow. +# VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=35 --log-file=valgrind.$* + +# To execute one test, e.g. in gdb, use something like this: +# run -f -u unix.vim --gui-dialog-file guidialog -U NONE --noplugin --not-a-term -S runtest.vim test_name.vim + +default: nongui + +# The list of tests is common to all systems. +# This defines SCRIPTS_TINY_OUT, NEW_TESTS and NEW_TESTS_RES. +include Make_all.mak + +# Explicit dependencies. +test_options.res test_alot.res: opt_test.vim + +.SUFFIXES: .in .out .res .vim + +nongui: nolog tinytests newtests report + +gui: nolog tinytests newtests report + +tiny: nolog tinytests report + +benchmark: $(SCRIPTS_BENCH) + +report: + @# without the +eval feature test_result.log is a copy of test.log + @/bin/sh -c "if test -f test.log; \ + then cp test.log test_result.log; \ + else echo No failures reported > test_result.log; \ + fi" + $(VIMPROG) -u NONE $(NO_INITS) -S summarize.vim messages $(REDIR_TEST_TO_NULL) + @rm -f starttime + @echo + @echo 'Test results:' + @cat test_result.log + @/bin/sh -c "if test -f test.log; \ + then echo TEST FAILURE; exit 1; \ + else echo ALL DONE; \ + fi" + +$(SCRIPTS_TINY_OUT) $(NEW_TESTS_RES): $(VIMPROG) + + +# Execute an individual new style test, e.g.: +# make test_largefile +$(NEW_TESTS): + rm -f $@.res $(CLEANUP_FILES) + @MAKEFLAGS=--no-print-directory $(MAKE) -f Makefile $@.res VIMPROG=$(VIMPROG) XXDPROG=$(XXDPROG) SCRIPTSOURCE=$(SCRIPTSOURCE) + @cat messages + @if test -f test.log; then \ + exit 1; \ + fi + +# Run only tests specific for Vim9 script +test_vim9: + rm -f test_vim9_*.res $(CLEANUP_FILES) + @MAKEFLAGS=--no-print-directory $(MAKE) -f Makefile $(TEST_VIM9_RES) VIMPROG=$(VIMPROG) XXDPROG=$(XXDPROG) SCRIPTSOURCE=$(SCRIPTSOURCE) + @cat messages + @rm -f starttime + @MAKEFLAGS=--no-print-directory $(MAKE) -f Makefile report VIMPROG=$(VIMPROG) XXDPROG=$(XXDPROG) SCRIPTSOURCE=$(SCRIPTSOURCE) + @if test -f test.log; then \ + exit 1; \ + fi + +RM_ON_RUN = test.out X* viminfo +RM_ON_START = test.ok benchmark.out +RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE) $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) -u unix.vim $(NO_INITS) -s dotest.in + +# Delete files that may interfere with running tests. This includes some files +# that may result from working on the tests, not only from running them. +clean: + -rm -rf *.out *.failed *.res *.rej *.orig XfakeHOME Xdir1 Xfind + -rm -f opt_test.vim test_result.log $(CLEANUP_FILES) + -rm -rf $(RM_ON_RUN) $(RM_ON_START) + -rm -f valgrind.* + -rm -f asan.* + -rm -f guidialog guidialogfile + +# Delete the files produced by benchmarking, so they can run again. +benchmarkclean: + rm -f $(SCRIPTS_BENCH) + +nolog: + -rm -f test_result.log $(CLEANUP_FILES) + + +# Tiny tests. Works even without the +eval feature. +tinytests: $(SCRIPTS_TINY_OUT) + +.in.out: + -rm -rf $*.failed test.ok $(RM_ON_RUN) + cp $*.ok test.ok + @# Sleep a moment to avoid that the xterm title is messed up. + @# 200 msec is sufficient, but only modern sleep supports a fraction of + @# a second, fall back to a second if it fails. + @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" + $(RUN_VIM) $*.in $(REDIR_TEST_TO_NULL) + + @# Check if the test.out file matches test.ok. + @/bin/sh -c "if test -f test.out; then \ + if diff test.out $*.ok; \ + then mv -f test.out $*.out; \ + else echo $* FAILED >>test.log; mv -f test.out $*.failed; \ + fi \ + else echo $* NO OUTPUT >>test.log; \ + fi" + @/bin/sh -c "if test -f valgrind; then\ + mv -f valgrind valgrind.$*; \ + fi" + -rm -rf X* test.ok viminfo + + +# New style of tests uses Vim script with assert calls. These are easier +# to write and a lot easier to read and debug. +# Limitation: Only works with the +eval feature. +# Add --gui-dialog-file to avoid getting stuck in a dialog. +RUN_VIMTEST = VIMRUNTIME=$(SCRIPTSOURCE) $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) -u unix.vim --gui-dialog-file guidialog + +newtests: newtestssilent + @/bin/sh -c "if test -f messages; then cat messages; fi" + +newtestssilent: $(NEW_TESTS_RES) + + +.vim.res: + @echo "$(VIMPROG)" > vimcmd + @echo "$(RUN_VIMTEST)" >> vimcmd + $(RUN_VIMTEST) $(NO_INITS) -S runtest.vim $*.vim $(REDIR_TEST_TO_NULL) + @rm vimcmd + +test_gui.res: test_gui.vim + @echo "$(VIMPROG)" > vimcmd + @echo "$(RUN_GVIMTEST)" >> vimcmd + $(RUN_VIMTEST) -u NONE $(NO_INITS) -S runtest.vim $< + @rm vimcmd + +test_gui_init.res: test_gui_init.vim + @echo "$(VIMPROG)" > vimcmd + @echo "$(RUN_GVIMTEST_WITH_GVIMRC)" >> vimcmd + $(RUN_VIMTEST) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $< + @rm vimcmd + +opt_test.vim: ../optiondefs.h gen_opt_test.vim + $(VIMPROG) -u NONE -S gen_opt_test.vim --noplugin --not-a-term ../optiondefs.h + +test_xxd.res: + XXD=$(XXDPROG); export XXD; $(RUN_VIMTEST) $(NO_INITS) -S runtest.vim test_xxd.vim + +test_bench_regexp.res: test_bench_regexp.vim + -rm -rf benchmark.out $(RM_ON_RUN) + @# Sleep a moment to avoid that the xterm title is messed up. + @# 200 msec is sufficient, but only modern sleep supports a fraction of + @# a second, fall back to a second if it fails. + @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" + $(RUN_VIMTEST) $(NO_INITS) -S runtest.vim $*.vim $(REDIR_TEST_TO_NULL) + @/bin/sh -c "if test -f benchmark.out; then cat benchmark.out; fi" diff --git a/src/testdir/README.txt b/src/testdir/README.txt new file mode 100644 index 0000000..f72bdbf --- /dev/null +++ b/src/testdir/README.txt @@ -0,0 +1,121 @@ +This directory contains tests for various Vim features. +For testing an indent script see runtime/indent/testdir/README.txt. + +If it makes sense, add a new test method to an already existing file. You may +want to separate it from other tests with comment lines. + +TO ADD A NEW STYLE TEST: + +1) Create a test_.vim file. +2) Add test_.res to NEW_TESTS_RES in Make_all.mak in alphabetical + order. +3) Also add an entry "test_" to NEW_TESTS in Make_all.mak. +4) Use make test_ to run a single test. + +At 2), instead of running the test separately, it can be included in +"test_alot". Do this for quick tests without side effects. The test runs a +bit faster, because Vim doesn't have to be started, one Vim instance runs many +tests. + +At 4), to run a test in GUI, add "GUI_FLAG=-g" to the make command. + + +What you can use (see test_assert.vim for an example): + +- Call assert_equal(), assert_true(), assert_false(), etc. + +- Use assert_fails() to check for expected errors. + +- Use try/catch to avoid an exception aborts the test. + +- Use test_alloc_fail() to have memory allocation fail. This makes it possible + to check memory allocation failures are handled gracefully. You need to + change the source code to add an ID to the allocation. Add a new one to + alloc_id_T, before aid_last. + +- Use test_override() to make Vim behave differently, e.g. if char_avail() + must return FALSE for a while. E.g. to trigger the CursorMovedI autocommand + event. See test_cursor_func.vim for an example. + +- If the bug that is being tested isn't fixed yet, you can throw an exception + with "Skipped" so that it's clear this still needs work. E.g.: throw + "Skipped: Bug with and popupmenu not fixed yet" + +- The following environment variables are recognized and can be set to + influence the behavior of the test suite (see runtest.vim for details) + + - $TEST_MAY_FAIL=Test_channel_one - ignore those failing tests + - $TEST_FILTER=Test_channel - only run test that match this pattern + - $TEST_SKIP_PAT=Test_channel - skip tests that match this pattern + - $TEST_NO_RETRY=yes - do not try to re-run failing tests + You can also set them in Vim: + :let $TEST_MAY_FAIL = 'Test_channel_one' + :let $TEST_FILTER = '_set_mode' + :let $TEST_SKIP_PAT = 'Test_loop_forever' + :let $TEST_NO_RETRY = 'yes' + Use an empty string to revert, e.g.: + :let $TEST_FILTER = '' + +- See the start of runtest.vim for more help. + + +TO ADD A SCREEN DUMP TEST: + +Mostly the same as writing a new style test. Additionally, see help on +"terminal-dumptest". Put the reference dump in "dumps/Test_func_name.dump". + + +OLD STYLE TESTS: + +There are a few tests that are used when Vim was built without the +eval +feature. These cannot use the "assert" functions, therefore they consist of a +.in file that contains Normal mode commands between STARTTEST and ENDTEST. +They modify the file and the result gets written in the test.out file. This +is then compared with the .ok file. If they are equal the test passed. If +they differ the test failed. + + +RUNNING THE TESTS: + +To run a single test from the src directory: + + $ make test_ + +The below commands should be run from the src/testdir directory. + +To run a single test: + + $ make test_.res + +The file 'messages' contains the messages generated by the test script. If a +test fails, then the test.log file contains the error messages. If all the +tests are successful, then this file will be an empty file. + +- To run a single test function from a test script: + + $ ../vim -u NONE -S runtest.vim .vim + +- To execute only specific test functions, add a second argument: + + $ ../vim -u NONE -S runtest.vim test_channel.vim open_delay + + +- To run all the tests: + + $ make + +- To run the test on MS-Windows using the MSVC nmake: + + > nmake -f Make_mvc.mak + +- To run the tests with GUI Vim: + + $ make GUI_FLAG=-g + + or + + $ make VIMPROG=../gvim + +- To cleanup the temporary files after running the tests: + + $ make clean diff --git a/src/testdir/amiga.vim b/src/testdir/amiga.vim new file mode 100644 index 0000000..79956d7 --- /dev/null +++ b/src/testdir/amiga.vim @@ -0,0 +1,6 @@ +" Settings for test script execution +set shell=csh +map! /tmp t: +cmap !rm !Delete all + +source setup.vim diff --git a/src/testdir/check.vim b/src/testdir/check.vim new file mode 100644 index 0000000..82abb64 --- /dev/null +++ b/src/testdir/check.vim @@ -0,0 +1,286 @@ +source shared.vim +source term_util.vim + +command -nargs=1 MissingFeature throw 'Skipped: ' .. .. ' feature missing' + +" Command to check for the presence of a feature. +command -nargs=1 CheckFeature call CheckFeature() +func CheckFeature(name) + if !has(a:name, 1) + throw 'Checking for non-existent feature ' .. a:name + endif + if !has(a:name) + MissingFeature a:name + endif +endfunc + +" Command to check for the absence of a feature. +command -nargs=1 CheckNotFeature call CheckNotFeature() +func CheckNotFeature(name) + if !has(a:name, 1) + throw 'Checking for non-existent feature ' .. a:name + endif + if has(a:name) + throw 'Skipped: ' .. a:name .. ' feature present' + endif +endfunc + +" Command to check for the presence of a working option. +command -nargs=1 CheckOption call CheckOption() +func CheckOption(name) + if !exists('&' .. a:name) + throw 'Checking for non-existent option ' .. a:name + endif + if !exists('+' .. a:name) + throw 'Skipped: ' .. a:name .. ' option not supported' + endif +endfunc + +" Command to check for the presence of a built-in function. +command -nargs=1 CheckFunction call CheckFunction() +func CheckFunction(name) + if !exists('?' .. a:name) + throw 'Checking for non-existent function ' .. a:name + endif + if !exists('*' .. a:name) + throw 'Skipped: ' .. a:name .. ' function missing' + endif +endfunc + +" Command to check for the presence of an Ex command +command -nargs=1 CheckCommand call CheckCommand() +func CheckCommand(name) + if !exists(':' .. a:name) + throw 'Skipped: ' .. a:name .. ' command not supported' + endif +endfunc + +" Command to check for the presence of a shell command +command -nargs=1 CheckExecutable call CheckExecutable() +func CheckExecutable(name) + if !executable(a:name) + throw 'Skipped: ' .. a:name .. ' program not executable' + endif +endfunc + +" Command to check for the presence of python. Argument should have been +" obtained with PythonProg() +func CheckPython(name) + if a:name == '' + throw 'Skipped: python command not available' + endif +endfunc + +" Command to check for running on MS-Windows +command CheckMSWindows call CheckMSWindows() +func CheckMSWindows() + if !has('win32') + throw 'Skipped: only works on MS-Windows' + endif +endfunc + +" Command to check for NOT running on MS-Windows +command CheckNotMSWindows call CheckNotMSWindows() +func CheckNotMSWindows() + if has('win32') + throw 'Skipped: does not work on MS-Windows' + endif +endfunc + +" Command to check for running on Unix +command CheckUnix call CheckUnix() +func CheckUnix() + if !has('unix') + throw 'Skipped: only works on Unix' + endif +endfunc + +" Command to check for running on Linux +command CheckLinux call CheckLinux() +func CheckLinux() + if !has('linux') + throw 'Skipped: only works on Linux' + endif +endfunc + +" Command to check for not running on a BSD system. +command CheckNotBSD call CheckNotBSD() +func CheckNotBSD() + if has('bsd') + throw 'Skipped: does not work on BSD' + endif +endfunc + +" Command to check for not running on a MacOS +command CheckNotMac call CheckNotMac() +func CheckNotMac() + if has('mac') + throw 'Skipped: does not work on MacOS' + endif +endfunc + +" Command to check for not running on a MacOS M1 system. +command CheckNotMacM1 call CheckNotMacM1() +func CheckNotMacM1() + if has('mac') && system('uname -a') =~ '\' + throw 'Skipped: does not work on MacOS M1' + endif +endfunc + +" Command to check that making screendumps is supported. +" Caller must source screendump.vim +command CheckScreendump call CheckScreendump() +func CheckScreendump() + if !CanRunVimInTerminal() + throw 'Skipped: cannot make screendumps' + endif +endfunc + +" Command to check that we can Run Vim in a terminal window +command CheckRunVimInTerminal call CheckRunVimInTerminal() +func CheckRunVimInTerminal() + if !CanRunVimInTerminal() + throw 'Skipped: cannot run Vim in a terminal window' + endif +endfunc + +" Command to check that we can run the GUI +command CheckCanRunGui call CheckCanRunGui() +func CheckCanRunGui() + if !has('gui') || ($DISPLAY == "" && !has('gui_running')) + throw 'Skipped: cannot start the GUI' + endif +endfunc + +" Command to Check for an environment variable +command -nargs=1 CheckEnv call CheckEnv() +func CheckEnv(name) + if empty(eval('$' .. a:name)) + throw 'Skipped: Environment variable ' .. a:name .. ' is not set' + endif +endfunc + +" Command to check that we are using the GUI +command CheckGui call CheckGui() +func CheckGui() + if !has('gui_running') + throw 'Skipped: only works in the GUI' + endif +endfunc + +" Command to check that not currently using the GUI +command CheckNotGui call CheckNotGui() +func CheckNotGui() + if has('gui_running') + throw 'Skipped: only works in the terminal' + endif +endfunc + +" Command to check that test is not running as root +command CheckNotRoot call CheckNotRoot() +func CheckNotRoot() + if IsRoot() + throw 'Skipped: cannot run test as root' + endif +endfunc + +" Command to check that the current language is English +command CheckEnglish call CheckEnglish() +func CheckEnglish() + if v:lang != "C" && v:lang !~ '^[Ee]n' + throw 'Skipped: only works in English language environment' + endif +endfunc + +" Command to check that loopback device has IPv6 address +command CheckIPv6 call CheckIPv6() +func CheckIPv6() + if !has('ipv6') + throw 'Skipped: cannot use IPv6 networking' + endif + if !exists('s:ipv6_loopback') + let s:ipv6_loopback = s:CheckIPv6Loopback() + endif + if !s:ipv6_loopback + throw 'Skipped: no IPv6 address for loopback device' + endif +endfunc + +func s:CheckIPv6Loopback() + if has('win32') + return system('netsh interface ipv6 show interface') =~? '\' + elseif filereadable('/proc/net/if_inet6') + return (match(readfile('/proc/net/if_inet6'), '\slo$') >= 0) + elseif executable('ifconfig') + for dev in ['lo0', 'lo', 'loop'] + " NOTE: On SunOS, need specify address family 'inet6' to get IPv6 info. + if system('ifconfig ' .. dev .. ' inet6 2>/dev/null') =~? '\' + \ || system('ifconfig ' .. dev .. ' 2>/dev/null') =~? '\' + return v:true + endif + endfor + else + " TODO: How to check it in other platforms? + endif + return v:false +endfunc + +" Command to check for not running under ASAN +command CheckNotAsan call CheckNotAsan() +func CheckNotAsan() + if execute('version') =~# '-fsanitize=[a-z,]*\' + throw 'Skipped: does not work with ASAN' + endif +endfunc + +" Command to check for not running under valgrind +command CheckNotValgrind call CheckNotValgrind() +func CheckNotValgrind() + if RunningWithValgrind() + throw 'Skipped: does not work well with valgrind' + endif +endfunc + +" Command to check for X11 based GUI +command CheckX11BasedGui call CheckX11BasedGui() +func CheckX11BasedGui() + if !g:x11_based_gui + throw 'Skipped: requires X11 based GUI' + endif +endfunc + +" Command to check that there are two clipboards +command CheckTwoClipboards call CheckTwoClipboards() +func CheckTwoClipboards() + " avoid changing the clipboard here, only X11 supports both + if !has('X11') + throw 'Skipped: requires two clipboards' + endif +endfunc + +" Command to check for satisfying any of the conditions. +" e.g. CheckAnyOf Feature:bsd Feature:sun Linux +command -nargs=+ CheckAnyOf call CheckAnyOf() +func CheckAnyOf(...) + let excp = [] + for arg in a:000 + try + exe 'Check' .. substitute(arg, ':', ' ', '') + return + catch /^Skipped:/ + let excp += [substitute(v:exception, '^Skipped:\s*', '', '')] + endtry + endfor + throw 'Skipped: ' .. join(excp, '; ') +endfunc + +" Command to check for satisfying all of the conditions. +" e.g. CheckAllOf Unix Gui Option:ballooneval +command -nargs=+ CheckAllOf call CheckAllOf() +func CheckAllOf(...) + for arg in a:000 + exe 'Check' .. substitute(arg, ':', ' ', '') + endfor +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/color_ramp.vim b/src/testdir/color_ramp.vim new file mode 100644 index 0000000..8eed8f9 --- /dev/null +++ b/src/testdir/color_ramp.vim @@ -0,0 +1,85 @@ +" Script to generate a file that shows al 256 xterm colors + +new +let lnum = 1 + +" | in original color pair to see white background. +let trail_bar = "\033[m|" + +" ANSI colors +call setline(lnum, 'ANSI background') +let lnum += 1 + +let s = '' +for nr in range(0, 7) + let s .= "\033[4" . nr . "m " +endfor +for nr in range(8, 15) + let s .= "\033[10" . (nr - 8) . "m " +endfor +let s .= trail_bar + +call setline(lnum, s) +let lnum += 1 + +" ANSI text colors +call setline(lnum, 'ANSI text') +let lnum += 1 + +let s = '' +for nr in range(0, 7) + let s .= "\033[0;3" . nr . "mxxxx" +endfor +for nr in range(8, 15) + let s .= "\033[0;9" . (nr - 8) . "mxxxx" +endfor +let s .= trail_bar + +call setline(lnum, s) +let lnum += 1 + +" ANSI with bold text +call setline(lnum, 'ANSI bold text') +let lnum += 1 + +let s = '' +for nr in range(0, 7) + let s .= "\033[1;3" . nr . "mxxxx" +endfor +for nr in range(8, 15) + let s .= "\033[1;9" . (nr - 8) . "mxxxx" +endfor +let s .= trail_bar + +call setline(lnum, s) +let lnum += 1 + +" 6 x 6 x 6 color cube +call setline(lnum, 'color cube') +let lnum += 1 + +for high in range(0, 5) + let s = '' + for low in range(0, 35) + let nr = low + high * 36 + let s .= "\033[48;5;" . (nr + 16) . "m " + endfor + let s .= trail_bar + call setline(lnum + high, s) +endfor +let lnum += 6 + +" 24 shades of grey +call setline(lnum, 'grey ramp') +let lnum += 1 + +let s = '' +for nr in range(0, 23) + let s .= "\033[48;5;" . (nr + 232) . "m " +endfor +let s .= trail_bar +call setline(lnum, s) + +set binary +write! :h/color_ramp.txt +quit diff --git a/src/testdir/dos.vim b/src/testdir/dos.vim new file mode 100644 index 0000000..3ea6ab2 --- /dev/null +++ b/src/testdir/dos.vim @@ -0,0 +1,9 @@ +" Settings for test script execution +" Always use "COMMAND.COM", don't use the value of "$SHELL". +set shell=c:\COMMAND.COM shellquote= shellxquote= shellcmdflag=/c shellredir=> +" This is used only when the +eval feature is available. +if executable("cmd.exe") + set shell=cmd.exe +endif + +source setup.vim diff --git a/src/testdir/dotest.in b/src/testdir/dotest.in new file mode 100644 index 0000000..b2a0e1a --- /dev/null +++ b/src/testdir/dotest.in @@ -0,0 +1,3 @@ +:set cp +:map dotest /^STARTTEST j:set ff=unix cpo-=A :.,/ENDTEST/-1w! Xdotest :set ff& cpo+=A nj0:so! Xdotest dotest +dotest diff --git a/src/testdir/dumps/Test_Xcursorline_1.dump b/src/testdir/dumps/Test_Xcursorline_1.dump new file mode 100644 index 0000000..e4176e1 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_1.dump @@ -0,0 +1,20 @@ +| +0#af5f00255#ffffff0@1|1| >1+8#0000000&| |f|o@7| |a|r| |e|i|n|s|<+8#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f| |s|e|c|h|s| |s|i|e|b|e|n| |a|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&| |u|n| |z|e|h|n| |e|l|f| |z|w|ö|f|l| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n| @2|v| |i|e|r|z|e|h|n||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&| +0#0000000&@6|f|ü|n|f|z|e|h|n| @4||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_10.dump b/src/testdir/dumps/Test_Xcursorline_10.dump new file mode 100644 index 0000000..152246a --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_10.dump @@ -0,0 +1,20 @@ +| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+8#0000000&|-+8#0000e05&|u+8#0000000&|n|-+8#0000e05&|z+8#0000000&|e|h|n|-+8#0000e05&|e+8#0000000&>l|f|-+8#0000e05&|z+8#0000000&|w|ö|f|l|-+8#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z|e|h|n|^+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|I+0#0000e05&|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|7|1|-|7|6| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |l|i|s|t| |c|u|r|s|o|r|l|i|n|e|o|p|t|+|=|n|u|m|b|e|r| |l|i|s|t|c|h|a|r|s|=|s|p|a|c|e|:|-| @25 diff --git a/src/testdir/dumps/Test_Xcursorline_11.dump b/src/testdir/dumps/Test_Xcursorline_11.dump new file mode 100644 index 0000000..5c0fb24 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_11.dump @@ -0,0 +1,20 @@ +| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+8#0000000&|r|e|i|z|e|h|n|^+8#0000e05&|I|v+8#0000000&>-+8#0000e05&|i+8#0000000&|e|r|z|e|h|n|^+8#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|I+0#0000e05&|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|9|1|-|9|8| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |l|i|s|t| |c|u|r|s|o|r|l|i|n|e|o|p|t|+|=|n|u|m|b|e|r| |l|i|s|t|c|h|a|r|s|=|s|p|a|c|e|:|-| @25 diff --git a/src/testdir/dumps/Test_Xcursorline_12.dump b/src/testdir/dumps/Test_Xcursorline_12.dump new file mode 100644 index 0000000..10fb120 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_12.dump @@ -0,0 +1,20 @@ +| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z|e|h|n|^+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|I+8#0000e05&|f+8#0000000&|ü|n|f|z|e|h>n| @10||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1|0|8|-|1|2|1| @3|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |l|i|s|t| |c|u|r|s|o|r|l|i|n|e|o|p|t|+|=|n|u|m|b|e|r| |l|i|s|t|c|h|a|r|s|=|s|p|a|c|e|:|-| @25 diff --git a/src/testdir/dumps/Test_Xcursorline_13.dump b/src/testdir/dumps/Test_Xcursorline_13.dump new file mode 100644 index 0000000..710cdc9 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_13.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@3| +8#4040ff13#ffffff0@1|1| >1+8#0000000&|-+8#0000e05&|f+8#0000000&|o@7|-+8#0000e05&|a+8#0000000&|r|-+8#0000e05&|e+8#0000000&|i||+1&&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|n+0#0000000&|s|<+0#0000e05&|2|0@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @2||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_14.dump b/src/testdir/dumps/Test_Xcursorline_14.dump new file mode 100644 index 0000000..fb8d56c --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_14.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@3| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i||+1&&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|n+8#0000000&|s|<+8#0000e05&|2|0@1|d|>|z+8#0000000&|w|e>i|-+8#0000e05&|d+8#0000000&|r|e||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @2||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|2|6|-|3|0| @1|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_15.dump b/src/testdir/dumps/Test_Xcursorline_15.dump new file mode 100644 index 0000000..1470bf7 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_15.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@3| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i||+1&&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|n+0#0000000&|s|<+0#0000e05&|2|0@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+8#0000000&|-+8#0000e05&|v+8#0000000&|i|e|r|-+8#0000e05&|f+8#0000000&|ü|n|f>-+8#0000e05&|s+8#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @2||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|4|3|-|4|7| @1|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_16.dump b/src/testdir/dumps/Test_Xcursorline_16.dump new file mode 100644 index 0000000..e2b41fe --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_16.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@3| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i||+1&&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|n+0#0000000&|s|<+0#0000e05&|2|0@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|s+8#0000000&|-+8#0000e05&|s+8#0000000&|i|e|b|e|n|-+8#0000e05&|a+8#0000000&|c>h|t|-+8#0000e05&|u+8#0000000&|n||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @2||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|5|9|-|6|4| @1|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_17.dump b/src/testdir/dumps/Test_Xcursorline_17.dump new file mode 100644 index 0000000..47344c7 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_17.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@3| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i||+1&&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|n+0#0000000&|s|<+0#0000e05&|2|0@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|-+8#0000e05&|z+8#0000000&|e|h|n|-+8#0000e05&|e+8#0000000&|l|f|-+8#0000e05&|z+8#0000000&>w|ö|f|l|-+8#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @2||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|7|5|-|8|1| @1|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_18.dump b/src/testdir/dumps/Test_Xcursorline_18.dump new file mode 100644 index 0000000..cea6538 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_18.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@3| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i||+1&&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|n+0#0000000&|s|<+0#0000e05&|2|0@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|d+8#0000000&|r|e|i|z|e|h|n|^+8#0000e05&|I|v+8#0000000&>-+8#0000e05&|i+8#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @2||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|b|e|n| @11||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +| +0#0000e05#a8a8a8255@3| +0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|9|1|-|9|8| @1|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_19.dump b/src/testdir/dumps/Test_Xcursorline_19.dump new file mode 100644 index 0000000..5c5bb0d --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_19.dump @@ -0,0 +1,20 @@ +>1+8&#ffffff0|-+8#0000e05&|f+8#0000000&|o@7|-+8#0000e05&|a+8#0000000&|r|-+8#0000e05&|e+8#0000000&|i|n|s|<+8#0000e05&|2|0@1|d|>||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +|>|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l||+1&&|~+0#4040ff13&| @47 +|>|f+0#0000000&|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +|2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +| +0#0000000&@24||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |n|o|n|u|m|b|e|r| @61 diff --git a/src/testdir/dumps/Test_Xcursorline_2.dump b/src/testdir/dumps/Test_Xcursorline_2.dump new file mode 100644 index 0000000..ef2a07d --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_2.dump @@ -0,0 +1,20 @@ +| +0#af5f00255#ffffff0@1|1| |1+0#0000000&| |f|o@7| |a|r| |e|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+8#0000e05&@1|d|>|z+8#0000000&|w|e|i| |d|r>e|i| |v|i|e|r| |f||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f| |s|e|c|h|s| |s|i|e|b|e|n| |a|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&| |u|n| |z|e|h|n| |e|l|f| |z|w|ö|f|l| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n| @2|v| |i|e|r|z|e|h|n||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&| +0#0000000&@6|f|ü|n|f|z|e|h|n| @4||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|3|0|-|3|4| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_20.dump b/src/testdir/dumps/Test_Xcursorline_20.dump new file mode 100644 index 0000000..7ffdf8f --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_20.dump @@ -0,0 +1,20 @@ +|1+0&#ffffff0|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2|0@1|d|>||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +|>+0#4040ff13&|z+8#0000000&|w|e|i|-+8#0000e05&|d+8#0000000&|r|e|i|-+8#0000e05&|v+8#0000000&>i|e|r|-+8#0000e05&|f+8#0000000&|ü|n|f|-+8#0000e05&|s+8#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +|>|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l||+1&&|~+0#4040ff13&| @47 +|>|f+0#0000000&|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +|2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +| +0#0000000&@24||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|3|4|-|3|8| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |n|o|n|u|m|b|e|r| @61 diff --git a/src/testdir/dumps/Test_Xcursorline_21.dump b/src/testdir/dumps/Test_Xcursorline_21.dump new file mode 100644 index 0000000..cb3b0b8 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_21.dump @@ -0,0 +1,20 @@ +|1+0&#ffffff0|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2|0@1|d|>||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +|>|s+8#0000000&|-+8#0000e05&|s+8#0000000&|i|e|b|e|n|-+8#0000e05&|a+8#0000000&|c>h|t|-+8#0000e05&|u+8#0000000&|n|-+8#0000e05&|z+8#0000000&|e|h|n|-+8#0000e05&|e+8#0000000&|l||+1&&|~+0#4040ff13&| @47 +|>|f+0#0000000&|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +|2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +| +0#0000000&@24||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|5|9|-|6|3| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |n|o|n|u|m|b|e|r| @61 diff --git a/src/testdir/dumps/Test_Xcursorline_22.dump b/src/testdir/dumps/Test_Xcursorline_22.dump new file mode 100644 index 0000000..0370465 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_22.dump @@ -0,0 +1,20 @@ +|1+0&#ffffff0|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2|0@1|d|>||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +|>|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l||+1&&|~+0#4040ff13&| @47 +|>|f+8#0000000&|-+8#0000e05&|z+8#0000000&|w|ö|f|l|-+8#0000e05&|d+8#0000000&|r|e>i|z|e|h|n|^+8#0000e05&|I|v+8#0000000&|-+8#0000e05&|i+8#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +|2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +| +0#0000000&@24||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|8|4|-|8@1| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |n|o|n|u|m|b|e|r| @61 diff --git a/src/testdir/dumps/Test_Xcursorline_23.dump b/src/testdir/dumps/Test_Xcursorline_23.dump new file mode 100644 index 0000000..ed021eb --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_23.dump @@ -0,0 +1,20 @@ +|1+0&#ffffff0|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2|0@1|d|>||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +|>|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l||+1&&|~+0#4040ff13&| @47 +|>|f+0#0000000&|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +|>|e+8#0000000&|h|n|^+8#0000e05&|I|f+8#0000000&|ü|n|f|z|e>h|n| @10||+1&&|~+0#4040ff13&| @47 +|2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +| +0#0000000&@24||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1|0|7|-|1@1|9| @3|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |n|o|n|u|m|b|e|r| @61 diff --git a/src/testdir/dumps/Test_Xcursorline_24.dump b/src/testdir/dumps/Test_Xcursorline_24.dump new file mode 100644 index 0000000..f10121d --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_24.dump @@ -0,0 +1,20 @@ +|1+0&#ffffff0|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2|0@1|d|>||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h||+1&&|~+0#4040ff13&| @47 +|>|s+0#0000000&|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h|t|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l||+1&&|~+0#4040ff13&| @47 +|>|f+0#0000000&|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|h|n|^+0#0000e05&|I|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +|2+8#0000000&|-+8#0000e05&|f+8#0000000&|o@7|-+8#0000e05&>b+8#0000000&|a|r|-+8#0000e05&|e+8#0000000&|i|n|s|-+8#0000e05&|z+8#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +|4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&|z+0#0000000&|w|e|i||+1&&|~+0#4040ff13&| @47 +|>|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i||+1&&|~+0#4040ff13&| @47 +|>|e+0#0000000&|b|e|n| @19||+1&&|~+0#4040ff13&| @47 +| +0#0000000&@24||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |2|,|1|3| @4|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |n|o|n|u|m|b|e|r| @61 diff --git a/src/testdir/dumps/Test_Xcursorline_3.dump b/src/testdir/dumps/Test_Xcursorline_3.dump new file mode 100644 index 0000000..69a85bd --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_3.dump @@ -0,0 +1,20 @@ +| +0#af5f00255#ffffff0@1|1| |1+0#0000000&| |f|o@7| |a|r| |e|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+8#0000000&|n|f| |s|e|c|h|s| |s>i|e|b|e|n| |a|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&| |u|n| |z|e|h|n| |e|l|f| |z|w|ö|f|l| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n| @2|v| |i|e|r|z|e|h|n||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&| +0#0000000&@6|f|ü|n|f|z|e|h|n| @4||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|5|1|-|5@1| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_4.dump b/src/testdir/dumps/Test_Xcursorline_4.dump new file mode 100644 index 0000000..253312b --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_4.dump @@ -0,0 +1,20 @@ +| +0#af5f00255#ffffff0@1|1| |1+0#0000000&| |f|o@7| |a|r| |e|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f| |s|e|c|h|s| |s|i|e|b|e|n| |a|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+8#0000000&| |u|n| |z|e|h|n| |e>l|f| |z|w|ö|f|l| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n| @2|v| |i|e|r|z|e|h|n||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&| +0#0000000&@6|f|ü|n|f|z|e|h|n| @4||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|7|1|-|7|6| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_5.dump b/src/testdir/dumps/Test_Xcursorline_5.dump new file mode 100644 index 0000000..f86e708 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_5.dump @@ -0,0 +1,20 @@ +| +0#af5f00255#ffffff0@1|1| |1+0#0000000&| |f|o@7| |a|r| |e|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f| |s|e|c|h|s| |s|i|e|b|e|n| |a|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&| |u|n| |z|e|h|n| |e|l|f| |z|w|ö|f|l| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+8#0000000&|r|e|i|z|e|h|n| @2>v| |i|e|r|z|e|h|n||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&| +0#0000000&@6|f|ü|n|f|z|e|h|n| @4||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|9|0|-|9|7| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_6.dump b/src/testdir/dumps/Test_Xcursorline_6.dump new file mode 100644 index 0000000..1266b09 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_6.dump @@ -0,0 +1,20 @@ +| +0#af5f00255#ffffff0@1|1| |1+0#0000000&| |f|o@7| |a|r| |e|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f| |s|e|c|h|s| |s|i|e|b|e|n| |a|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&| |u|n| |z|e|h|n| |e|l|f| |z|w|ö|f|l| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n| @2|v| |i|e|r|z|e|h|n||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&| +8#0000000&@6|f|ü|n|f>z|e|h|n| @4||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&| |f|o@7| |b|a|r| |e|i|n|s| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i| |d|r|e|i| |v|i|e|r| |f|ü|n|f| ||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s| |s|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1|0|5|-|1@1|8| @3|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_Xcursorline_7.dump b/src/testdir/dumps/Test_Xcursorline_7.dump new file mode 100644 index 0000000..5e4369b --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_7.dump @@ -0,0 +1,20 @@ +| +8#4040ff13#ffffff0@1|1| >1+8#0000000&|-+8#0000e05&|f+8#0000000&|o@7|-+8#0000e05&|a+8#0000000&|r|-+8#0000e05&|e+8#0000000&|i|n|s|<+8#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z|e|h|n|^+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|I+0#0000e05&|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |l|i|s|t| |c|u|r|s|o|r|l|i|n|e|o|p|t|+|=|n|u|m|b|e|r| |l|i|s|t|c|h|a|r|s|=|s|p|a|c|e|:|-| @25 diff --git a/src/testdir/dumps/Test_Xcursorline_8.dump b/src/testdir/dumps/Test_Xcursorline_8.dump new file mode 100644 index 0000000..8fd8dba --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_8.dump @@ -0,0 +1,20 @@ +| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+8#0000e05&@1|d|>|z+8#0000000&|w|e|i|-+8#0000e05&|d+8#0000000&|r>e|i|-+8#0000e05&|v+8#0000000&|i|e|r|-+8#0000e05&|f+8#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+0#0000000&|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n|-+0#0000e05&|a+0#0000000&|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z|e|h|n|^+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|I+0#0000e05&|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|3|0|-|3|4| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |l|i|s|t| |c|u|r|s|o|r|l|i|n|e|o|p|t|+|=|n|u|m|b|e|r| |l|i|s|t|c|h|a|r|s|=|s|p|a|c|e|:|-| @25 diff --git a/src/testdir/dumps/Test_Xcursorline_9.dump b/src/testdir/dumps/Test_Xcursorline_9.dump new file mode 100644 index 0000000..9fe2d55 --- /dev/null +++ b/src/testdir/dumps/Test_Xcursorline_9.dump @@ -0,0 +1,20 @@ +| +8#4040ff13#ffffff0@1|1| |1+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|a+0#0000000&|r|-+0#0000e05&|e+0#0000000&|i|n|s|<+0#0000e05&|2||+1#0000000&| +0#af5f00255&@1|5| | +8#0000000&@44 +| +0#af5f00255&@3|>+0#4040ff13&|0+0#0000e05&@1|d|>|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|ü+8#0000000&|n|f|-+8#0000e05&|s+8#0000000&|e|c|h|s|-+8#0000e05&|s+8#0000000&>i|e|b|e|n|-+8#0000e05&|a+8#0000000&|c|h||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|t+0#0000000&|-+0#0000e05&|u+0#0000000&|n|-+0#0000e05&|z+0#0000000&|e|h|n|-+0#0000e05&|e+0#0000000&|l|f|-+0#0000e05&|z+0#0000000&|w|ö|f|l|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|d+0#0000000&|r|e|i|z|e|h|n|^+0#0000e05&|I|v+0#0000000&|-+0#0000e05&|i+0#0000000&|e|r|z|e|h|n|^+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|I+0#0000e05&|f+0#0000000&|ü|n|f|z|e|h|n| @10||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|2| |2+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|3| |3+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|4| |4+0#0000000&|-+0#0000e05&|f+0#0000000&|o@7|-+0#0000e05&|b+0#0000000&|a|r|-+0#0000e05&|e+0#0000000&|i|n|s|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i|e|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&||+1#0000000&|~+0#4040ff13&| @47 +| +0#af5f00255&@3|>+0#4040ff13&|s+0#0000000&|e|c|h|s|-+0#0000e05&|s+0#0000000&|i|e|b|e|n| @7||+1&&|~+0#4040ff13&| @47 +| +0#af5f00255&@1|5| | +0#0000000&@20||+1&&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|~| @23||+1#0000000&|~+0#4040ff13&| @47 +|<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|5|1|-|5@1| @1|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t +|:+0&&|s|e|t| |l|i|s|t| |c|u|r|s|o|r|l|i|n|e|o|p|t|+|=|n|u|m|b|e|r| |l|i|s|t|c|h|a|r|s|=|s|p|a|c|e|:|-| @25 diff --git a/src/testdir/dumps/Test_appendbufline_1.dump b/src/testdir/dumps/Test_appendbufline_1.dump new file mode 100644 index 0000000..470256d --- /dev/null +++ b/src/testdir/dumps/Test_appendbufline_1.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|H|e|l@1|o| |V|i|m| |w|o|r|l|d|.@2| @56 +|~+0#4040ff13&| @73 +|~| @73 +|f+1#0000000&|o@1| |[|+|]| @49|1|,|0|-|1| @9|A|l@1 +> +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|-+0&&@1|N|o| |l|i|n|e|s| |i|n| |b|u|f@1|e|r|-@1| @52 diff --git a/src/testdir/dumps/Test_autocmd_nested_switch.dump b/src/testdir/dumps/Test_autocmd_nested_switch.dump new file mode 100644 index 0000000..499653e --- /dev/null +++ b/src/testdir/dumps/Test_autocmd_nested_switch.dump @@ -0,0 +1,10 @@ +>(+0&#ffffff0|)| @72 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|X+3#0000000&|a|u|t|o|f|i|l|e| @47|1|,|1| @11|A|l@1 +|(+0&&|)| @72 +|~+0#4040ff13&| @73 +|~| @73 +|X+1#0000000&|a|u|t|o|f|i|l|e| @47|1|,|1| @11|A|l@1 +|"+0&&|X|a|u|t|o|f|i|l|e|"| |1|L|,| |3|B| @56 diff --git a/src/testdir/dumps/Test_balloon_eval_term_01.dump b/src/testdir/dumps/Test_balloon_eval_term_01.dump new file mode 100644 index 0000000..be98212 --- /dev/null +++ b/src/testdir/dumps/Test_balloon_eval_term_01.dump @@ -0,0 +1,10 @@ +|o+0&#ffffff0|n>e| |o|n|e| |o|n|e| @38 +|t|w|o| |t|X|o| |t|w|o| @38 +|t|h|r|e| +0#0000001#ffd7ff255@17| +0#0000000#ffffff0@27 +|~+0#4040ff13&| @2| +0#0000001#ffd7ff255|l|i|n|e| |2| |c|o|l|u|m|n| |6|:| | +0#4040ff13#ffffff0@27 +|~| @2| +0#0000001#ffd7ff255|t|X|o|<| @12| +0#4040ff13#ffffff0@27 +|~| @2| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@27 +|~| @48 +|~| @48 +|~| @48 +|h+0#0000000&|o|l|d| |f|i|r|e|d| @39 diff --git a/src/testdir/dumps/Test_balloon_eval_term_01a.dump b/src/testdir/dumps/Test_balloon_eval_term_01a.dump new file mode 100644 index 0000000..be98212 --- /dev/null +++ b/src/testdir/dumps/Test_balloon_eval_term_01a.dump @@ -0,0 +1,10 @@ +|o+0&#ffffff0|n>e| |o|n|e| |o|n|e| @38 +|t|w|o| |t|X|o| |t|w|o| @38 +|t|h|r|e| +0#0000001#ffd7ff255@17| +0#0000000#ffffff0@27 +|~+0#4040ff13&| @2| +0#0000001#ffd7ff255|l|i|n|e| |2| |c|o|l|u|m|n| |6|:| | +0#4040ff13#ffffff0@27 +|~| @2| +0#0000001#ffd7ff255|t|X|o|<| @12| +0#4040ff13#ffffff0@27 +|~| @2| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@27 +|~| @48 +|~| @48 +|~| @48 +|h+0#0000000&|o|l|d| |f|i|r|e|d| @39 diff --git a/src/testdir/dumps/Test_balloon_eval_term_02.dump b/src/testdir/dumps/Test_balloon_eval_term_02.dump new file mode 100644 index 0000000..51c5e32 --- /dev/null +++ b/src/testdir/dumps/Test_balloon_eval_term_02.dump @@ -0,0 +1,10 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| @38 +|t|w|o| |t|X|o| |t|w|o| @38 +|t|h|r|e|e+0&#e0e0e08| |t|h>r+0&#ffffff0|e@1| |t|h|r|e@1| @32 +|~+0#4040ff13&| @2| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@27 +|~| @2| +0#0000001#ffd7ff255|l|i|n|e| |3| |c|o|l|u|m|n| |5|:| | +0#4040ff13#ffffff0@27 +|~| @2| +0#0000001#ffd7ff255|e| |t|h|r|<| @10| +0#4040ff13#ffffff0@27 +|~| @2| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@27 +|~| @48 +|~| @48 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@9|5| @8|3|,|9| @10|A|l@1| diff --git a/src/testdir/dumps/Test_changing_cmdheight_1.dump b/src/testdir/dumps/Test_changing_cmdheight_1.dump new file mode 100644 index 0000000..db6d411 --- /dev/null +++ b/src/testdir/dumps/Test_changing_cmdheight_1.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 +@75 +@75 +|:|r|e|s|i|z|e| |-|3| @64 diff --git a/src/testdir/dumps/Test_changing_cmdheight_2.dump b/src/testdir/dumps/Test_changing_cmdheight_2.dump new file mode 100644 index 0000000..76d9440 --- /dev/null +++ b/src/testdir/dumps/Test_changing_cmdheight_2.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|:+0&&|s|e|t| |c|m|d|h|e|i|g|h|t|+|=|3| @57 +@75 +@75 +@75 diff --git a/src/testdir/dumps/Test_changing_cmdheight_3.dump b/src/testdir/dumps/Test_changing_cmdheight_3.dump new file mode 100644 index 0000000..d652cc6 --- /dev/null +++ b/src/testdir/dumps/Test_changing_cmdheight_3.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 +@75 +@75 +@75 +@75 diff --git a/src/testdir/dumps/Test_changing_cmdheight_4.dump b/src/testdir/dumps/Test_changing_cmdheight_4.dump new file mode 100644 index 0000000..c4d6fc9 --- /dev/null +++ b/src/testdir/dumps/Test_changing_cmdheight_4.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 +@75 +@75 diff --git a/src/testdir/dumps/Test_changing_cmdheight_5.dump b/src/testdir/dumps/Test_changing_cmdheight_5.dump new file mode 100644 index 0000000..fb2a521 --- /dev/null +++ b/src/testdir/dumps/Test_changing_cmdheight_5.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_changing_cmdheight_6.dump b/src/testdir/dumps/Test_changing_cmdheight_6.dump new file mode 100644 index 0000000..fb2a521 --- /dev/null +++ b/src/testdir/dumps/Test_changing_cmdheight_6.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_cmdheight_tabline_1.dump b/src/testdir/dumps/Test_cmdheight_tabline_1.dump new file mode 100644 index 0000000..7260309 --- /dev/null +++ b/src/testdir/dumps/Test_cmdheight_tabline_1.dump @@ -0,0 +1,6 @@ +| +2&#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@63 +> +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_cmdlineclear_tabenter.dump b/src/testdir/dumps/Test_cmdlineclear_tabenter.dump new file mode 100644 index 0000000..27dcca5 --- /dev/null +++ b/src/testdir/dumps/Test_cmdlineclear_tabenter.dump @@ -0,0 +1,10 @@ +| +8#0000001#e0e0e08|+| |[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@49|X+8#0000001#e0e0e08 +> +0#0000000#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@74 +@75 +@57|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_cmdwin_interrupted.dump b/src/testdir/dumps/Test_cmdwin_interrupted.dump new file mode 100644 index 0000000..325bc54 --- /dev/null +++ b/src/testdir/dumps/Test_cmdwin_interrupted.dump @@ -0,0 +1,18 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|d+0#0000000&|o|n|e| @52|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_cmdwin_no_terminal.dump b/src/testdir/dumps/Test_cmdwin_no_terminal.dump new file mode 100644 index 0000000..97d8147 --- /dev/null +++ b/src/testdir/dumps/Test_cmdwin_no_terminal.dump @@ -0,0 +1,12 @@ +| +0&#ffffff0@74 +|[+1&&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|:+0#4040ff13&|s+0#af5f00255&|e|t| +0#0000000&|c+0#e000e06&|m|d|h|e|i|g|h|t|=+0#0000000&|2| @58 +|:+0#4040ff13&> +0#0000000&@73 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|C|o|m@1|a|n|d| |L|i|n|e|]| @42|2|,|0|-|1| @9|A|l@1 +|E+0#ffffff16#e000002|1@1|8@1|:| |C|a|n@1|o|t| |o|p|e|n| |a| |t|e|r|m|i|n|a|l| |f|r|o|m| |t|h|e| |c|o|m@1|a|n|d| |l|i|n|e| |w|i|n|d|o|w| +0#0000000#ffffff0@16 +@75 diff --git a/src/testdir/dumps/Test_cmdwin_restore_1.dump b/src/testdir/dumps/Test_cmdwin_restore_1.dump new file mode 100644 index 0000000..8ac0295 --- /dev/null +++ b/src/testdir/dumps/Test_cmdwin_restore_1.dump @@ -0,0 +1,12 @@ +|0+0&#ffffff0| @73 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +|0+0&&| @73 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +|:+0#4040ff13&> +0#0000000&@73 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|C|o|m@1|a|n|d| |L|i|n|e|]| @42|1|,|0|-|1| @9|A|l@1 +|:+0&&| @73 diff --git a/src/testdir/dumps/Test_cmdwin_restore_2.dump b/src/testdir/dumps/Test_cmdwin_restore_2.dump new file mode 100644 index 0000000..ce0b2b5 --- /dev/null +++ b/src/testdir/dumps/Test_cmdwin_restore_2.dump @@ -0,0 +1,12 @@ +>0+0&#ffffff0| @73 +|1| @73 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +|0+0&&| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +| +0&&@74 diff --git a/src/testdir/dumps/Test_cmdwin_restore_3.dump b/src/testdir/dumps/Test_cmdwin_restore_3.dump new file mode 100644 index 0000000..1cc0f3f --- /dev/null +++ b/src/testdir/dumps/Test_cmdwin_restore_3.dump @@ -0,0 +1,18 @@ +>0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|1|0| @72 +|1@1| @72 +|1|2| @72 +|1|3| @72 +|1|4| @72 +|1|5| @72 +|1|6| @72 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_cmdwin_wrong_command_1.dump b/src/testdir/dumps/Test_cmdwin_wrong_command_1.dump new file mode 100644 index 0000000..95a686b --- /dev/null +++ b/src/testdir/dumps/Test_cmdwin_wrong_command_1.dump @@ -0,0 +1,12 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|:+0#4040ff13&|l+0#af5f00255&>s| +0#0000000&@71 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|C|o|m@1|a|n|d| |L|i|n|e|]| @42|1|,|2| @11|A|l@1 +|E+0#ffffff16#e000002|1@1|:| |I|n|v|a|l|i|d| |i|n| |c|o|m@1|a|n|d|-|l|i|n|e| |w|i|n|d|o|w|;| |:|q|<|C|R|>| |c|l|o|s|e|s| |t|h|e| |w|i|n|d|o|w| +0#0000000#ffffff0@13 diff --git a/src/testdir/dumps/Test_cmdwin_wrong_command_2.dump b/src/testdir/dumps/Test_cmdwin_wrong_command_2.dump new file mode 100644 index 0000000..3ef02cd --- /dev/null +++ b/src/testdir/dumps/Test_cmdwin_wrong_command_2.dump @@ -0,0 +1,12 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|l|s> @71 diff --git a/src/testdir/dumps/Test_colorcolumn_1.dump b/src/testdir/dumps/Test_colorcolumn_1.dump new file mode 100644 index 0000000..cbaf27d --- /dev/null +++ b/src/testdir/dumps/Test_colorcolumn_1.dump @@ -0,0 +1,10 @@ +| +8#af5f00255#ffffff0@1|1| |1+0#0000000&@1|1+0&#ffd7d7255|1+0&#ffffff0@4|1+0&#ffd7d7255|1+0&#ffffff0| @60 +| +0#af5f00255&@1|2| |2+0#0000000&@1|2+0&#ffd7d7255|2+0&#ffffff0@4|2+0&#ffd7d7255|2+0&#ffffff0@1| @59 +| +0#af5f00255&@1|3| |3+0#0000000&@1|3+0&#ffd7d7255|3+0&#ffffff0@4|3+0&#ffd7d7255|3+0&#ffffff0| @60 +|~+0#4040ff13&| @73 +|X+1#0000000&| @55|1|,|1| @11|A|l@1 +| +8#af5f00255&@1|1| >1+0#0000000&@1|1+0&#ffd7d7255|1+0&#ffffff0@4|1+0&#ffd7d7255|1+0&#ffffff0| @60 +| +0#af5f00255&@1|2| |2+0#0000000&@1|2+0&#ffd7d7255|2+0&#ffffff0@4|2+0&#ffd7d7255|2+0&#ffffff0@1| @59 +| +0#af5f00255&@1|3| |3+0#0000000&@1|3+0&#ffd7d7255|3+0&#ffffff0@4|3+0&#ffd7d7255|3+0&#ffffff0| @60 +|X+3&&| @55|1|,|1| @11|A|l@1 +|:+0&&| @73 diff --git a/src/testdir/dumps/Test_colorcolumn_2.dump b/src/testdir/dumps/Test_colorcolumn_2.dump new file mode 100644 index 0000000..44e0e7a --- /dev/null +++ b/src/testdir/dumps/Test_colorcolumn_2.dump @@ -0,0 +1,10 @@ +>T+0&#ffffff0|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|e|d| |o|v|e|r| |t|h|e| @3| +0&#ffd7d7255 +@1| +0&#ffffff0|l+0&#ffd7d7255|a+0&#ffffff0|z|y| |d|o|g|s| @28 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_colorcolumn_3.dump b/src/testdir/dumps/Test_colorcolumn_3.dump new file mode 100644 index 0000000..6cb0c24 --- /dev/null +++ b/src/testdir/dumps/Test_colorcolumn_3.dump @@ -0,0 +1,10 @@ +>T+0&#ffffff0|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|e|d| |o|v|e|r| |t|h|e| |l|a|z|y+0&#ffd7d7255 +|++0#4040ff13&|++0&#ffffff0|++0&#ffd7d7255|>+0&#ffffff0| | +0#0000000&|d|o|g|s| @29 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_conceal_cuc_01.dump b/src/testdir/dumps/Test_conceal_cuc_01.dump new file mode 100644 index 0000000..bf42819 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_cuc_01.dump @@ -0,0 +1,10 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| @1|o|n|e| |o|n|e| |o|n|e| |o+0&#e0e0e08|n+0&#ffffff0|e| @11 +| +0#4040ff13&|>@2| |o+0#0000000&|n|e| |o+0&#ffd7d7255|n+0&#ffffff0|e| |o|n|e| |o|n|e| @19 +|t|w|o| |t|w|o| |t|w|o| |t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| |t|w|o| |t|w|o| @2 +|t|h|r|e@1| @1|t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| |t+0&#e0e0e08|h+0&#ffffff0|r|e@1| @9 +| +0#4040ff13&|>@2| |t+0#0000000&|h|r|e|e+0&#ffd7d7255| +0&#ffffff0|t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @11 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +|/+0#0000000&|h|e|r|e| @16|2|,|2|6| @9|A|l@1| diff --git a/src/testdir/dumps/Test_conceal_cuc_02.dump b/src/testdir/dumps/Test_conceal_cuc_02.dump new file mode 100644 index 0000000..1b6662e --- /dev/null +++ b/src/testdir/dumps/Test_conceal_cuc_02.dump @@ -0,0 +1,10 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| @1|o|n|e| |o|n|e| |o|n|e| |o|n|e| @11 +| +0#4040ff13&|>@2| |o+0#0000000&|n|e| |o+0&#ffd7d7255|n+0&#ffffff0|e| |o|n|e| |o|n|e| @19 +|t|w|o| |t|w|o| |t|w|o| |t|w|o| |||h|i|d@1|e|n||| |h|e|r|e| |t|w|o| |t|w>o| @2 +|t|h|r|e@1| @1|t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @9 +| +0#4040ff13&|>@2| |t+0#0000000&|h|r|e|e+0&#ffd7d7255| +0&#ffffff0|t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @11 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +|/+0#0000000&|h|e|r|e| @16|2|,|3|7| @9|A|l@1| diff --git a/src/testdir/dumps/Test_conceal_cul_01.dump b/src/testdir/dumps/Test_conceal_cul_01.dump new file mode 100644 index 0000000..6d698d1 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_cul_01.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| @71 +|t|w|o| @71 +>t+8&&|h|r|e@1| @69 +|f+0&&|o|u|r| @70 +|f|i|v|e| @70 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1| @11|A|l@1 +| +0&&@74 +|t+8&&|h|i|s| |i|s| |a| |t|e|s|t| @60 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_conceal_cul_02.dump b/src/testdir/dumps/Test_conceal_cul_02.dump new file mode 100644 index 0000000..46b296c --- /dev/null +++ b/src/testdir/dumps/Test_conceal_cul_02.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| @71 +|t|w|o| @71 +|t+8&&|h|r|e@1| @69 +|f+0&&|o|u|r| @70 +|f|i|v|e| @70 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1| @11|A|l@1 +| +0&&@74 +|t+8&&|h|i|s| |i|s| |a| |t|e|s>t| @60 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|:+0&&|w|i|n|c|m|d| |w| @65 diff --git a/src/testdir/dumps/Test_conceal_cul_03.dump b/src/testdir/dumps/Test_conceal_cul_03.dump new file mode 100644 index 0000000..275f35c --- /dev/null +++ b/src/testdir/dumps/Test_conceal_cul_03.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| @71 +|t|w|o| @71 +|t+8&&|h|r|e@1| @69 +|f+0&&|o|u|r| @70 +|f|i|v|e| @70 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1| @11|A|l@1 +> +8&&@74 +|t+0&&|h|i|s| |i|s| |a| |t|e|s|t| @60 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|0|-|1| @9|A|l@1 +|:+0&&|w|i|n|c|m|d| |w| @65 diff --git a/src/testdir/dumps/Test_conceal_linebreak_1.dump b/src/testdir/dumps/Test_conceal_linebreak_1.dump new file mode 100644 index 0000000..8c93df0 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_linebreak_1.dump @@ -0,0 +1,8 @@ +>x+0&#ffffff0@74 +| @74 +|a@63| @10 +|++0#4040ff13&| |b+0#0000000&@66| @5 +|++0#4040ff13&| |c+0#0000000&@5| @66 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_conceal_resize_01.dump b/src/testdir/dumps/Test_conceal_resize_01.dump new file mode 100644 index 0000000..8bb9c38 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_resize_01.dump @@ -0,0 +1,6 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e|,| |t|h|e| >b|a|c|k|t|i|c|k|s| |s|h|o|u|l|d| |b|e| |c|o|n|c|e|a|l|e|d| @16 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|4|0| @9|A|l@1| diff --git a/src/testdir/dumps/Test_conceal_resize_02.dump b/src/testdir/dumps/Test_conceal_resize_02.dump new file mode 100644 index 0000000..876a8ec --- /dev/null +++ b/src/testdir/dumps/Test_conceal_resize_02.dump @@ -0,0 +1,7 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e|,| |t|h|e| >b|a|c|k|t|i|c|k|s| |s|h|o|u|l|d| |b|e| |c|o|n|c|e|a|l|e|d| @16 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|4|0| @9|A|l@1| diff --git a/src/testdir/dumps/Test_conceal_two_windows_01.dump b/src/testdir/dumps/Test_conceal_two_windows_01.dump new file mode 100644 index 0000000..0a70677 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_01.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1>h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|/+0&&|h|e|r|e| @69 diff --git a/src/testdir/dumps/Test_conceal_two_windows_02.dump b/src/testdir/dumps/Test_conceal_two_windows_02.dump new file mode 100644 index 0000000..367149f --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_02.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o>n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|/+0&&|h|e|r|e| @69 diff --git a/src/testdir/dumps/Test_conceal_two_windows_03.dump b/src/testdir/dumps/Test_conceal_two_windows_03.dump new file mode 100644 index 0000000..27242eb --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_03.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|:+0&&|s|e|t| |c|o|n|c|e|a|l|c|u|r|s|o|r|=| @55 diff --git a/src/testdir/dumps/Test_conceal_two_windows_04.dump b/src/testdir/dumps/Test_conceal_two_windows_04.dump new file mode 100644 index 0000000..ff52320 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_04.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| |||h|i|d@1|e|n>|| |t|h|r|e@1| @54 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|:+0&&|s|e|t| |c|o|n|c|e|a|l|c|u|r|s|o|r|=| @55 diff --git a/src/testdir/dumps/Test_conceal_two_windows_05.dump b/src/testdir/dumps/Test_conceal_two_windows_05.dump new file mode 100644 index 0000000..68904d0 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_05.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|:+0&&|s|e|t| |c|o|n|c|e|a|l|c|u|r|s|o|r|=| @55 diff --git a/src/testdir/dumps/Test_conceal_two_windows_06c.dump b/src/testdir/dumps/Test_conceal_two_windows_06c.dump new file mode 100644 index 0000000..b3869f9 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_06c.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| |h|e+1&&|r+0&&|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|5| @10|A|l@1 +|/+0&&|e> @72 diff --git a/src/testdir/dumps/Test_conceal_two_windows_06i.dump b/src/testdir/dumps/Test_conceal_two_windows_06i.dump new file mode 100644 index 0000000..c2325b9 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_06i.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| |h>e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|5| @10|A|l@1 +|-+2&&@1| |I|N|S|E|R|T| |-@1| +0&&@62 diff --git a/src/testdir/dumps/Test_conceal_two_windows_06n.dump b/src/testdir/dumps/Test_conceal_two_windows_06n.dump new file mode 100644 index 0000000..a147249 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_06n.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1>h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|:+0&&|s|e|t| |c|o|n|c|e|a|l|c|u|r|s|o|r|=|n| @54 diff --git a/src/testdir/dumps/Test_conceal_two_windows_06v.dump b/src/testdir/dumps/Test_conceal_two_windows_06v.dump new file mode 100644 index 0000000..7456625 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_06v.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|-+2&&@1| |V|I|S|U|A|L| |-@1| +0&&@51|1| @9 diff --git a/src/testdir/dumps/Test_conceal_two_windows_07c.dump b/src/testdir/dumps/Test_conceal_two_windows_07c.dump new file mode 100644 index 0000000..b3869f9 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_07c.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| |h|e+1&&|r+0&&|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|5| @10|A|l@1 +|/+0&&|e> @72 diff --git a/src/testdir/dumps/Test_conceal_two_windows_07i.dump b/src/testdir/dumps/Test_conceal_two_windows_07i.dump new file mode 100644 index 0000000..f1cd232 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_07i.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h>e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|5| @10|A|l@1 +|-+2&&@1| |I|N|S|E|R|T| |-@1| +0&&@62 diff --git a/src/testdir/dumps/Test_conceal_two_windows_07in.dump b/src/testdir/dumps/Test_conceal_two_windows_07in.dump new file mode 100644 index 0000000..67c8cdb --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_07in.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_conceal_two_windows_07n.dump b/src/testdir/dumps/Test_conceal_two_windows_07n.dump new file mode 100644 index 0000000..9ed71a6 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_07n.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|:+0&&|s|e|t| |c|o|n|c|e|a|l|c|u|r|s|o|r|=|i| @54 diff --git a/src/testdir/dumps/Test_conceal_two_windows_07v.dump b/src/testdir/dumps/Test_conceal_two_windows_07v.dump new file mode 100644 index 0000000..7456625 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_07v.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|-+2&&@1| |V|I|S|U|A|L| |-@1| +0&&@51|1| @9 diff --git a/src/testdir/dumps/Test_conceal_two_windows_08c.dump b/src/testdir/dumps/Test_conceal_two_windows_08c.dump new file mode 100644 index 0000000..2d12a9c --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_08c.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e+1&&|r+0&&|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|5| @10|A|l@1 +|/+0&&|e> @72 diff --git a/src/testdir/dumps/Test_conceal_two_windows_08i.dump b/src/testdir/dumps/Test_conceal_two_windows_08i.dump new file mode 100644 index 0000000..c2325b9 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_08i.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| |h>e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|5| @10|A|l@1 +|-+2&&@1| |I|N|S|E|R|T| |-@1| +0&&@62 diff --git a/src/testdir/dumps/Test_conceal_two_windows_08n.dump b/src/testdir/dumps/Test_conceal_two_windows_08n.dump new file mode 100644 index 0000000..13e8141 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_08n.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|:+0&&|s|e|t| |c|o|n|c|e|a|l|c|u|r|s|o|r|=|c| @54 diff --git a/src/testdir/dumps/Test_conceal_two_windows_08v.dump b/src/testdir/dumps/Test_conceal_two_windows_08v.dump new file mode 100644 index 0000000..7456625 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_08v.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|-+2&&@1| |V|I|S|U|A|L| |-@1| +0&&@51|1| @9 diff --git a/src/testdir/dumps/Test_conceal_two_windows_09c.dump b/src/testdir/dumps/Test_conceal_two_windows_09c.dump new file mode 100644 index 0000000..b3869f9 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_09c.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| |h|e+1&&|r+0&&|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|5| @10|A|l@1 +|/+0&&|e> @72 diff --git a/src/testdir/dumps/Test_conceal_two_windows_09i.dump b/src/testdir/dumps/Test_conceal_two_windows_09i.dump new file mode 100644 index 0000000..c2325b9 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_09i.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| |h>e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|5| @10|A|l@1 +|-+2&&@1| |I|N|S|E|R|T| |-@1| +0&&@62 diff --git a/src/testdir/dumps/Test_conceal_two_windows_09n.dump b/src/testdir/dumps/Test_conceal_two_windows_09n.dump new file mode 100644 index 0000000..e00c814 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_09n.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| >h|e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|:+0&&|s|e|t| |c|o|n|c|e|a|l|c|u|r|s|o|r|=|v| @54 diff --git a/src/testdir/dumps/Test_conceal_two_windows_09v.dump b/src/testdir/dumps/Test_conceal_two_windows_09v.dump new file mode 100644 index 0000000..8d6cb4b --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_09v.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1>h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|4| @10|A|l@1 +|-+2&&@1| |V|I|S|U|A|L| |-@1| +0&&@51|1| @9 diff --git a/src/testdir/dumps/Test_conceal_two_windows_10.dump b/src/testdir/dumps/Test_conceal_two_windows_10.dump new file mode 100644 index 0000000..c2325b9 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_10.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| |||h|i|d@1|e|n||| |h>e|r|e| @57 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1|5| @10|A|l@1 +|-+2&&@1| |I|N|S|E|R|T| |-@1| +0&&@62 diff --git a/src/testdir/dumps/Test_conceal_two_windows_11.dump b/src/testdir/dumps/Test_conceal_two_windows_11.dump new file mode 100644 index 0000000..42a3fd5 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_11.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| |||h|i|d@1|e|n||> |t|h|r|e@1| @54 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|5| @10|A|l@1 +|-+2&&@1| |I|N|S|E|R|T| |-@1| +0&&@62 diff --git a/src/testdir/dumps/Test_conceal_two_windows_12.dump b/src/testdir/dumps/Test_conceal_two_windows_12.dump new file mode 100644 index 0000000..63861a1 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_12.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| |||h|i|d@1|e|n>|| |t|h|r|e@1| @54 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_conceal_two_windows_13.dump b/src/testdir/dumps/Test_conceal_two_windows_13.dump new file mode 100644 index 0000000..2f93e31 --- /dev/null +++ b/src/testdir/dumps/Test_conceal_two_windows_13.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +|S|e|c|o|n|d| |w|i|n|d|o|w| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1|4| @10|A|l@1 +|o+0&&|n|e| |o|n|e| |o|n|e| |o|n|e| |o|n|e| @55 +|t|w|o| @1|h|e|r|e| @65 +|t|h|r|e@1| @1|t|h|r|e@1| @62 +> @74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|4|,|1| @11|A|l@1 +|-+2&&@1| |I|N|S|E|R|T| |-@1| +0&&@62 diff --git a/src/testdir/dumps/Test_cursor_position_with_showbreak.dump b/src/testdir/dumps/Test_cursor_position_with_showbreak.dump new file mode 100644 index 0000000..92b79cc --- /dev/null +++ b/src/testdir/dumps/Test_cursor_position_with_showbreak.dump @@ -0,0 +1,6 @@ +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@71|X +> +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|c|o|n|d| |l|i|n|e| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|7|4| @9|A|l@1| diff --git a/src/testdir/dumps/Test_cursorcolumn_callback_1.dump b/src/testdir/dumps/Test_cursorcolumn_callback_1.dump new file mode 100644 index 0000000..7b1b85b --- /dev/null +++ b/src/testdir/dumps/Test_cursorcolumn_callback_1.dump @@ -0,0 +1,8 @@ +>a+0&#ffffff0@4| @69 +|b+0&#e0e0e08|b+0&#ffffff0@3| @69 +|c+0&#e0e0e08|c+0&#ffffff0@3| @69 +|d+0&#e0e0e08|d+0&#ffffff0@3| @69 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|4|,|5| @10|A|l@1| diff --git a/src/testdir/dumps/Test_cursorcolumn_insert_on_tab_1.dump b/src/testdir/dumps/Test_cursorcolumn_insert_on_tab_1.dump new file mode 100644 index 0000000..7a691e8 --- /dev/null +++ b/src/testdir/dumps/Test_cursorcolumn_insert_on_tab_1.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0|2|3|4|5|6|7|8+0&#e0e0e08|9+0&#ffffff0| @65 +|a| @5> |b| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|,|2|-|8| @8|A|l@1| diff --git a/src/testdir/dumps/Test_cursorcolumn_insert_on_tab_2.dump b/src/testdir/dumps/Test_cursorcolumn_insert_on_tab_2.dump new file mode 100644 index 0000000..29d6b19 --- /dev/null +++ b/src/testdir/dumps/Test_cursorcolumn_insert_on_tab_2.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0|2+0&#e0e0e08|3+0&#ffffff0|4|5|6|7|8|9| @65 +|a> @6|b| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|2|,|2| @10|A|l@1| diff --git a/src/testdir/dumps/Test_cursorcolumn_insert_on_tab_3.dump b/src/testdir/dumps/Test_cursorcolumn_insert_on_tab_3.dump new file mode 100644 index 0000000..9d0cbed --- /dev/null +++ b/src/testdir/dumps/Test_cursorcolumn_insert_on_tab_3.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0|2|3|4|5|6|7|8+0&#e0e0e08|9+0&#ffffff0| @65 +|a| @5> |b| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |(|i|n|s|e|r|t|)| |-@1| +0&&@42|2|,|2|-|8| @8|A|l@1| diff --git a/src/testdir/dumps/Test_cursorline_callback_1.dump b/src/testdir/dumps/Test_cursorline_callback_1.dump new file mode 100644 index 0000000..c4f32ea --- /dev/null +++ b/src/testdir/dumps/Test_cursorline_callback_1.dump @@ -0,0 +1,8 @@ +|a+0&#ffffff0@4| @69 +>b+8&&@4| @69 +|c+0&&@4| @69 +|d@4| @69 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|4|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_cursorline_redraw_1.dump b/src/testdir/dumps/Test_cursorline_redraw_1.dump new file mode 100644 index 0000000..71fdc89 --- /dev/null +++ b/src/testdir/dumps/Test_cursorline_redraw_1.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@23|o|n|e| |b|y| |o|n|e| |t|o| |a|v +|o|i|d| |p|r|o|b|l|e|m|s|.| @26 +@24|A|l|s|o| |s|e@1| |||:|s|e|t|-|a +|r|g|s||| |a|b|o|v|e|.| @28 +@40 +|T|h|e| |{|o|p|t|i|o|n|}| |a|r|g|u|m|e|n|t|s| |t|o| |"|:|s|e|t|"| |m|a|y| |b|e| +|r|e|p|e|a|t|e|d|.| @1|F|o|r| |e|x|a|m|p|l|e|:| |>| @14 +@8|:|s|e|t| |a|i| |n|o|s|i| |s|w|=|3| |t|s|=|3| @9 +|I|f| |y|o|u| |m|a|k|e| |a|n| |e|r@1|o|r| |i|n| |o|n|e| |o|f| |t|h|e| |a|r|g|u|m +|e|n|t|s|,| |a|n| |e|r@1|o|r| |m|e|s@1|a|g|e| |w|i|l@1| |b|e| |g|i|v|e|n| @3 +|a|n|d| |t|h|e| |f|o|l@1|o|w|i|n|g| |a|r|g|u|m|e|n|t|s| |w|i|l@1| |b|e| |i|g|n|o +|r|e|d|.| @35 +@40 +@40 +@16|*|:|s|e|t|-|v|e|r|b|o|s|e|*| @9 +>W+8&&|h|e|n| |'|v|e|r|b|o|s|e|'| |i|s| |n|o|n|-|z|e|r|o|,| |d|i|s|p|l|a|y|i|n|g| |a +|n| |o|p|t|i|o|n| |v|a|l|u|e| |w|i|l@1| |a|l|s|o| |t|e|l@1| |w|h|e|r|e| |i|t| @1 +|w+0&&|a|s| |l|a|s|t| |s|e|t|.| @1|E|x|a|m|p|l|e|:| |>| @14 +@8|:|v|e|r|b|o|s|e| |s|e|t| |s|h|i|f|t|w|i|d|t|h| |c|i|n|d|e|n|t|? +|<| |2@1|L|,| |9|4|2|B| @10|1|2|,|1| @9|2|0|%| diff --git a/src/testdir/dumps/Test_cursorline_redraw_2.dump b/src/testdir/dumps/Test_cursorline_redraw_2.dump new file mode 100644 index 0000000..323bef8 --- /dev/null +++ b/src/testdir/dumps/Test_cursorline_redraw_2.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@39 +|T|h|e| |{|o|p|t|i|o|n|}| |a|r|g|u|m|e|n|t|s| |t|o| |"|:|s|e|t|"| |m|a|y| |b|e| +|r|e|p|e|a|t|e|d|.| @1|F|o|r| |e|x|a|m|p|l|e|:| |>| @14 +| +8&&@7>:|s|e|t| |a|i| |n|o|s|i| |s|w|=|3| |t|s|=|3| @9 +|I+0&&|f| |y|o|u| |m|a|k|e| |a|n| |e|r@1|o|r| |i|n| |o|n|e| |o|f| |t|h|e| |a|r|g|u|m +|e|n|t|s|,| |a|n| |e|r@1|o|r| |m|e|s@1|a|g|e| |w|i|l@1| |b|e| |g|i|v|e|n| @3 +|a|n|d| |t|h|e| |f|o|l@1|o|w|i|n|g| |a|r|g|u|m|e|n|t|s| |w|i|l@1| |b|e| |i|g|n|o +|r|e|d|.| @35 +@40 +@40 +@16|*|:|s|e|t|-|v|e|r|b|o|s|e|*| @9 +|W|h|e|n| |'|v|e|r|b|o|s|e|'| |i|s| |n|o|n|-|z|e|r|o|,| |d|i|s|p|l|a|y|i|n|g| |a +|n| |o|p|t|i|o|n| |v|a|l|u|e| |w|i|l@1| |a|l|s|o| |t|e|l@1| |w|h|e|r|e| |i|t| @1 +|w|a|s| |l|a|s|t| |s|e|t|.| @1|E|x|a|m|p|l|e|:| |>| @14 +@8|:|v|e|r|b|o|s|e| |s|e|t| |s|h|i|f|t|w|i|d|t|h| |c|i|n|d|e|n|t|? +|<| @1|s|h|i|f|t|w|i|d|t|h|=|4| |~| @22 +@10|L|a|s|t| |s|e|t| |f|r|o|m| |m|o|d|e|l|i|n|e| |l|i|n|e| |1| +|~| @38 +@2|c|i|n|d|e|n|t| |~| @28 +@22|7|,|2|-|9| @8|4@1|%| diff --git a/src/testdir/dumps/Test_cursorline_screenline_1.dump b/src/testdir/dumps/Test_cursorline_screenline_1.dump new file mode 100644 index 0000000..d28794b --- /dev/null +++ b/src/testdir/dumps/Test_cursorline_screenline_1.dump @@ -0,0 +1,8 @@ +|x+0&#ffffff0|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z +| +8&&|x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| > @29 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|1|2|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_cursorline_screenline_2.dump b/src/testdir/dumps/Test_cursorline_screenline_2.dump new file mode 100644 index 0000000..3c44da1 --- /dev/null +++ b/src/testdir/dumps/Test_cursorline_screenline_2.dump @@ -0,0 +1,8 @@ +>x+8&#ffffff0|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z +| +0&&|x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| @30 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_cursorline_with_visualmode_01.dump b/src/testdir/dumps/Test_cursorline_with_visualmode_01.dump new file mode 100644 index 0000000..b6e20b7 --- /dev/null +++ b/src/testdir/dumps/Test_cursorline_with_visualmode_01.dump @@ -0,0 +1,12 @@ +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +|a+0&#e0e0e08|b|c| | +0&#ffffff0@70 +>a|b+0&#e0e0e08|c| | +0&#ffffff0@70 +|a|b|c| @71 +|a|b|c| @71 +|a|b|c| @71 +|a|b|c| @71 +|a|b|c| @71 +|-+2&&@1| |V|I|S|U|A|L| |L|I|N|E| |-@1| +0&&@29|1|2| @7|1|2|,|1| @9|1|5|%| diff --git a/src/testdir/dumps/Test_cursorline_yank_01.dump b/src/testdir/dumps/Test_cursorline_yank_01.dump new file mode 100644 index 0000000..7b749b1 --- /dev/null +++ b/src/testdir/dumps/Test_cursorline_yank_01.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|3| | +0#0000000&@70 +| +0#af5f00255&@1|2| |1+0#0000000&| @69 +| +0#af5f00255&@1|1| |2+0#0000000&| @69 +| +8#af5f00255&@1|0| >3+8#0000000&| @69 +| +0#af5f00255&@1|1| | +0#0000000&@70 +|~+0#4040ff13&| @73 +|~| @73 +|4+0#0000000&| |l|i|n|e|s| |y|a|n|k|e|d| @42|4|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_diff_01.dump b/src/testdir/dumps/Test_diff_01.dump new file mode 100644 index 0000000..125c391 --- /dev/null +++ b/src/testdir/dumps/Test_diff_01.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|0+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33 +|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |7|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |7|-@19 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_02.dump b/src/testdir/dumps/Test_diff_02.dump new file mode 100644 index 0000000..a2a1852 --- /dev/null +++ b/src/testdir/dumps/Test_diff_02.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|0+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33 +|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |7|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |7|-@19 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_03.dump b/src/testdir/dumps/Test_diff_03.dump new file mode 100644 index 0000000..5832eec --- /dev/null +++ b/src/testdir/dumps/Test_diff_03.dump @@ -0,0 +1,20 @@ +|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |1|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |1|-@19 +| @1|5+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|1+0#0000000#5fd7ff255@1| @32 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_04.dump b/src/testdir/dumps/Test_diff_04.dump new file mode 100644 index 0000000..84fa6f7 --- /dev/null +++ b/src/testdir/dumps/Test_diff_04.dump @@ -0,0 +1,20 @@ +|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |1|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |1|-@19 +| @1|5+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#5fd7ff255@1| @32||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +|~+0&#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_05.dump b/src/testdir/dumps/Test_diff_05.dump new file mode 100644 index 0000000..7bffa1a --- /dev/null +++ b/src/testdir/dumps/Test_diff_05.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|4+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#5fd7ff255@1| @32||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +|~+0&#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_06.0.dump b/src/testdir/dumps/Test_diff_06.0.dump new file mode 100644 index 0000000..458295b --- /dev/null +++ b/src/testdir/dumps/Test_diff_06.0.dump @@ -0,0 +1,20 @@ +|++0#0000e05#a8a8a8255| >+|-@1| @1|3| |l|i|n|e|s|:| |1|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| |1|-@19 +| @1|4+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|4+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33 +|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |6|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |6|-@19 +| @1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|1+0#0000000#5fd7ff255@1| @32 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&|s|e|t| |d|i|f@1|o|p|t|+|=|c|o|n|t|e|x|t|:|0| @51 diff --git a/src/testdir/dumps/Test_diff_06.1.dump b/src/testdir/dumps/Test_diff_06.1.dump new file mode 100644 index 0000000..8f2d4fb --- /dev/null +++ b/src/testdir/dumps/Test_diff_06.1.dump @@ -0,0 +1,20 @@ +|++0#0000e05#a8a8a8255| >+|-@1| @1|3| |l|i|n|e|s|:| |1|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| |1|-@19 +| @1|4+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|4+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33 +|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |6|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|4| |l|i|n|e|s|:| |6|-@19 +| @1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|1+0#0000000#5fd7ff255@1| @32 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&|s|e|t| |d|i|f@1|o|p|t|+|=|c|o|n|t|e|x|t|:|1| @51 diff --git a/src/testdir/dumps/Test_diff_06.2.dump b/src/testdir/dumps/Test_diff_06.2.dump new file mode 100644 index 0000000..c772270 --- /dev/null +++ b/src/testdir/dumps/Test_diff_06.2.dump @@ -0,0 +1,20 @@ +|++0#0000e05#a8a8a8255| >+|-@1| @1|2| |l|i|n|e|s|:| |1|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |1|-@19 +| @1|3+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|4+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33 +|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |7|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |7|-@19 +| @1|9+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|1+0#0000000#5fd7ff255@1| @32 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&@1|s|e|t| |d|i|f@1|o|p|t|+|=|c|o|n|t|e|x|t|:|2| @50 diff --git a/src/testdir/dumps/Test_diff_06.dump b/src/testdir/dumps/Test_diff_06.dump new file mode 100644 index 0000000..a5e6348 --- /dev/null +++ b/src/testdir/dumps/Test_diff_06.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|4+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|1+0#0000000#5fd7ff255@1| @32 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_07.dump b/src/testdir/dumps/Test_diff_07.dump new file mode 100644 index 0000000..c8f2aa6 --- /dev/null +++ b/src/testdir/dumps/Test_diff_07.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>#+0#0000000#ffffff0|i|n|c|l|u|d|e| |<|s|t|d|i|o|.|h|>| @16||+1&&| +0#0000e05#a8a8a8255@1|#+0#0000000#ffffff0|i|n|c|l|u|d|e| |<|s|t|d|i|o|.|h|>| @16 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1|/+2#0000000#ff404010@1| |F|r|o|b|s| |f|o@1| |h|e|a|r|t|i|l|y| +0&#ffd7ff255@13||+1&#ffffff0| +0#0000e05#a8a8a8255@1|i+2#0000000#ff404010|n|t| |f|i|b|(|i|n|t| |n|)| +0&#ffd7ff255@20 +| +0#0000e05#a8a8a8255@1|i+0#0000000#5fd7ff255|n|t| |f|r|o|b|n|i|t|z|(|i|n|t| |f|o@1|)| @13||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@3|i|n+2&#ff404010|t| |i|;| +0&#ffd7ff255@24||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@3|i|f+2&#ff404010|(|n| |>| |2|)| +0&#ffd7ff255@21 +| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|f|o|r|(|i| |=| |0|;| |i| |<| |1|0|;| |i|+@1|)| @7||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| @29||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| @29 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@7|p+2&#ff404010|r|i|n|t|f|(|"|Y|o|u|r| |a|n|s|w|e|r| |i|s|:| |"|)+0&#ffd7ff255|;||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@7|r+2&#ff404010|e|t|u|r|n| |f|i|b|(|n|-|1|)| |+| |f|i|b|(|n|-|2|)+0&#ffd7ff255|; +| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@7|p|r|i|n|t|f|(|"|%|d|\|n|"|,| |f|o@1|)|;| @6||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|}| @29||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|}| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|r|e|t|u|r|n| |1|;| @21 +| +0#0000e05#a8a8a8255@1|}+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|}+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1|i+2#0000000#ff404010|n|t| |f|a|c|t|(|i|n|t| |n|)| +0&#ffd7ff255@19||+1&#ffffff0| +0#0000e05#a8a8a8255@1|/+2#0000000#ff404010@1| |F|r|o|b|s| |f|o@1| |h|e|a|r|t|i|l|y| +0&#ffd7ff255@13 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|i+0#0000000#5fd7ff255|n|t| |f|r|o|b|n|i|t|z|(|i|n|t| |f|o@1|)| @13 +| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@3|i|f+2&#ff404010|(|n| |>| |1|)| +0&#ffd7ff255@21||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@3|i|n+2&#ff404010|t| |i|;| +0&#ffd7ff255@24 +|X+3&#ffffff0|d|i|f|i|l|e|1| @10|1|,|1| @11|T|o|p| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|T|o|p +|:+0&&|s|e|t| |d|i|f@1|o|p|t|+|=|i|n|t|e|r|n|a|l| @52 diff --git a/src/testdir/dumps/Test_diff_08.dump b/src/testdir/dumps/Test_diff_08.dump new file mode 100644 index 0000000..a8392df --- /dev/null +++ b/src/testdir/dumps/Test_diff_08.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>#+0#0000000#ffffff0|i|n|c|l|u|d|e| |<|s|t|d|i|o|.|h|>| @16||+1&&| +0#0000e05#a8a8a8255@1|#+0#0000000#ffffff0|i|n|c|l|u|d|e| |<|s|t|d|i|o|.|h|>| @16 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|i+0#0000000#5fd7ff255|n|t| |f|i|b|(|i|n|t| |n|)| @20 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|{+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|i|f|(|n| |>| |2|)| @21 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|{| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@7|r|e|t|u|r|n| |f|i|b|(|n|-|1|)| |+| |f|i|b|(|n|-|2|)|; +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|}| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|r|e|t|u|r|n| |1|;| @21 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|}+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34 +| +0#0000e05#a8a8a8255@1|/+0#0000000#ffffff0@1| |F|r|o|b|s| |f|o@1| |h|e|a|r|t|i|l|y| @13||+1&&| +0#0000e05#a8a8a8255@1|/+0#0000000#ffffff0@1| |F|r|o|b|s| |f|o@1| |h|e|a|r|t|i|l|y| @13 +| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|t| |f|r|o|b|n|i|t|z|(|i|n|t| |f|o@1|)| @13||+1&&| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|t| |f|r|o|b|n|i|t|z|(|i|n|t| |f|o@1|)| @13 +| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|i|n|t| |i|;| @24||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|i|n|t| |i|;| @24 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|f|o|r|(|i| |=| |0|;| |i| |<| |1|0|;| |i|+@1|)| @7||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|f|o|r|(|i| |=| |0|;| |i| |<| |1|0|;| |i|+@1|)| @7 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| @29||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| @29 +| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@7|p|r|i|n|t|f|(|"|Y|o|u|r| |a|n|s|w|e|r| |i|s|:| |"|)|;||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +|X+3#0000000#ffffff0|d|i|f|i|l|e|1| @10|1|,|1| @11|T|o|p| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|T|o|p +|:+0&&|s|e|t| |d|i|f@1|o|p|t|+|=|a|l|g|o|r|i|t|h|m|:|p|a|t|i|e|n|c|e| @42 diff --git a/src/testdir/dumps/Test_diff_09.dump b/src/testdir/dumps/Test_diff_09.dump new file mode 100644 index 0000000..700d30c --- /dev/null +++ b/src/testdir/dumps/Test_diff_09.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>#+0#0000000#ffffff0|i|n|c|l|u|d|e| |<|s|t|d|i|o|.|h|>| @16||+1&&| +0#0000e05#a8a8a8255@1|#+0#0000000#ffffff0|i|n|c|l|u|d|e| |<|s|t|d|i|o|.|h|>| @16 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|i+0#0000000#5fd7ff255|n|t| |f|i|b|(|i|n|t| |n|)| @20 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|{+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|i|f|(|n| |>| |2|)| @21 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|{| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@7|r|e|t|u|r|n| |f|i|b|(|n|-|1|)| |+| |f|i|b|(|n|-|2|)|; +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|}| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|r|e|t|u|r|n| |1|;| @21 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|}+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34 +| +0#0000e05#a8a8a8255@1|/+0#0000000#ffffff0@1| |F|r|o|b|s| |f|o@1| |h|e|a|r|t|i|l|y| @13||+1&&| +0#0000e05#a8a8a8255@1|/+0#0000000#ffffff0@1| |F|r|o|b|s| |f|o@1| |h|e|a|r|t|i|l|y| @13 +| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|t| |f|r|o|b|n|i|t|z|(|i|n|t| |f|o@1|)| @13||+1&&| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|t| |f|r|o|b|n|i|t|z|(|i|n|t| |f|o@1|)| @13 +| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|i|n|t| |i|;| @24||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|i|n|t| |i|;| @24 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|f|o|r|(|i| |=| |0|;| |i| |<| |1|0|;| |i|+@1|)| @7||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|f|o|r|(|i| |=| |0|;| |i| |<| |1|0|;| |i|+@1|)| @7 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| @29||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| @29 +| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@7|p|r|i|n|t|f|(|"|Y|o|u|r| |a|n|s|w|e|r| |i|s|:| |"|)|;||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +|X+3#0000000#ffffff0|d|i|f|i|l|e|1| @10|1|,|1| @11|T|o|p| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|T|o|p +|:+0&&|s|e|t| |d|i|f@1|o|p|t|+|=|a|l|g|o|r|i|t|h|m|:|h|i|s|t|o|g|r|a|m| @41 diff --git a/src/testdir/dumps/Test_diff_10.dump b/src/testdir/dumps/Test_diff_10.dump new file mode 100644 index 0000000..8bc91fb --- /dev/null +++ b/src/testdir/dumps/Test_diff_10.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|d|e|f| |f|i|n|a|l|i|z|e|(|v|a|l|u|e|s|)| @12||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|d|e|f| |f|i|n|a|l|i|z|e|(|v|a|l|u|e|s|)| @12 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v|a|l|u|e|s|.|e|a|c|h| |d|o| |||v||| @12||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v|a|l|u|e|s|.|e|a|c|h| |d|o| |||v||| @12 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@5|v|.|p|r|e|p|a|r|e| @19 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|e|n|d| @27 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|v|a|l|u|e|s|.|e|a|c|h| |d|o| |||v||| @12 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@5|v|.|f|i|n|a|l|i|z|e| @18||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@5|v|.|f|i|n|a|l|i|z|e| @18 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|e|n|d| @27||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|e|n|d| @27 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|0|-|1| @9|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|0|-|1| @9|A|l@1 +|:+0&&|s|e|t| |d|i|f@1|o|p|t|+|=|i|n|t|e|r|n|a|l| @52 diff --git a/src/testdir/dumps/Test_diff_11.dump b/src/testdir/dumps/Test_diff_11.dump new file mode 100644 index 0000000..216c66b --- /dev/null +++ b/src/testdir/dumps/Test_diff_11.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|d|e|f| |f|i|n|a|l|i|z|e|(|v|a|l|u|e|s|)| @12||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|d|e|f| |f|i|n|a|l|i|z|e|(|v|a|l|u|e|s|)| @12 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|v|a|l|u|e|s|.|e|a|c|h| |d|o| |||v||| @12 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@5|v|.|p|r|e|p|a|r|e| @19 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@3|e|n|d| @27 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v|a|l|u|e|s|.|e|a|c|h| |d|o| |||v||| @12||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v|a|l|u|e|s|.|e|a|c|h| |d|o| |||v||| @12 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@5|v|.|f|i|n|a|l|i|z|e| @18||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@5|v|.|f|i|n|a|l|i|z|e| @18 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|e|n|d| @27||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|e|n|d| @27 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|0|-|1| @9|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|0|-|1| @9|A|l@1 +|:+0&&| @73 diff --git a/src/testdir/dumps/Test_diff_12.dump b/src/testdir/dumps/Test_diff_12.dump new file mode 100644 index 0000000..dd29b9f --- /dev/null +++ b/src/testdir/dumps/Test_diff_12.dump @@ -0,0 +1,20 @@ +|++0#0000e05#a8a8a8255| |+|-@1| |1|0| |l|i|n|e|s|:| |1|-@19||+1#0000000#ffffff0|++0#0000e05#a8a8a8255| |+|-@1| |1|0| |l|i|n|e|s|:| |1|-@19 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_13.dump b/src/testdir/dumps/Test_diff_13.dump new file mode 100644 index 0000000..b93fba7 --- /dev/null +++ b/src/testdir/dumps/Test_diff_13.dump @@ -0,0 +1,20 @@ +|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@34||+1&&|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@34 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|0|,|0|-|1| @9|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|0|,|0|-|1| @9|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_14.dump b/src/testdir/dumps/Test_diff_14.dump new file mode 100644 index 0000000..c241898 --- /dev/null +++ b/src/testdir/dumps/Test_diff_14.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|A+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255|d| @32||+1&#ffffff0| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255|D|e+2&#ff404010| +0&#ffd7ff255@31 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_15.dump b/src/testdir/dumps/Test_diff_15.dump new file mode 100644 index 0000000..6a65c2d --- /dev/null +++ b/src/testdir/dumps/Test_diff_15.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>i+0#0000000#ffffff0|n|t| |m|a|i|n|(|)| @24||+1&&| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|t| |m|a|i|n|(|)| @24 +| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@2|i|f| |(|0|)| @25 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@2|{| @30 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@2|p|r|i|n|t|f|(|"|H|e|l@1|o|,| |W|o|r|l|d|!|"|)|;| @7||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@5|p|r|i|n|t|f|(|"|H|e|l@1|o|,| |W|o|r|l|d|!|"|)|;| @4 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@2|r|e|t|u|r|n| |0|;| @22||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@5|r|e|t|u|r|n| |0|;| @19 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@2|}| @30 +| +0#0000e05#a8a8a8255@1|}+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|}+0#0000000#ffffff0| @33 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&|s|e|t| |d|i|f@1|o|p|t|&|v|i|m| |d|i|f@1|o|p|t|+|=|f|i|l@1|e|r| |d|i|f@1|o|p|t|+|=|i|w|h|i|t|e| @26 diff --git a/src/testdir/dumps/Test_diff_16.dump b/src/testdir/dumps/Test_diff_16.dump new file mode 100644 index 0000000..5121bc9 --- /dev/null +++ b/src/testdir/dumps/Test_diff_16.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>i+0#0000000#ffffff0|n|t| |m|a|i|n|(|)| @24||+1&&| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|t| |m|a|i|n|(|)| @24 +| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@2|i|f| |(|0|)| @25 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@2|{| @30 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@2|p|r|i|n|t|f|(|"|H|e|l@1|o|,| |W|o|r|l|d|!|"|)|;| @7||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@5|p|r|i|n|t|f|(|"|H|e|l@1|o|,| |W|o|r|l|d|!|"|)|;| @4 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@2|r|e|t|u|r|n| |0|;| @22||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@5|r|e|t|u|r|n| |0|;| @19 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@2|}| @30 +| +0#0000e05#a8a8a8255@1|}+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|}+0#0000000#ffffff0| @33 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&|s|e|t| |d|i|f@1|o|p|t|+|=|i|n|t|e|r|n|a|l| @52 diff --git a/src/testdir/dumps/Test_diff_17.dump b/src/testdir/dumps/Test_diff_17.dump new file mode 100644 index 0000000..f1cd41f --- /dev/null +++ b/src/testdir/dumps/Test_diff_17.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32 +| +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1|x+2#0000000#ff404010@2| +0&#ffd7ff255@31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32 +|~+0#4040ff13&| @35||+1#0000000&| +0#0000e05#a8a8a8255@1|y+2#0000000#ff404010@2| +0&#ffd7ff255@31 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_18.dump b/src/testdir/dumps/Test_diff_18.dump new file mode 100644 index 0000000..5fd231c --- /dev/null +++ b/src/testdir/dumps/Test_diff_18.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32 +| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32||+1&&| +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32 +| +0#0000e05#a8a8a8255@1|x+2#0000000#ff404010@2| +0&#ffd7ff255@31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|y+2#0000000#ff404010@2| +0&#ffd7ff255@31 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_19.dump b/src/testdir/dumps/Test_diff_19.dump new file mode 100644 index 0000000..82543df --- /dev/null +++ b/src/testdir/dumps/Test_diff_19.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255|d| @32||+1&#ffffff0| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255| +2&#ff404010|d+0&#ffd7ff255| @31 +| +0#0000e05#a8a8a8255@1|e+0#0000000#ffd7ff255|f| @32||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010|e+0&#ffd7ff255|f| @31 +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffd7ff255@1| | +2&#ff404010|x+0&#ffd7ff255@1| @28||+1&#ffffff0| +0#0000e05#a8a8a8255@1|x+0#0000000#ffd7ff255@1| |x@1| @29 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0|a|r| @31||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0|a|r| @31 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_20.dump b/src/testdir/dumps/Test_diff_20.dump new file mode 100644 index 0000000..1180de6 --- /dev/null +++ b/src/testdir/dumps/Test_diff_20.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0| |d| @31 +| +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0|e|f| @31 +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @1|x@1| @28||+1&&| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| |x@1| @29 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0|a|r| @31||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0|a|r| @31 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|X+3#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+1&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1 +|:+0&&> @73 diff --git a/src/testdir/dumps/Test_diff_bin_01.dump b/src/testdir/dumps/Test_diff_bin_01.dump new file mode 100644 index 0000000..a7d4cce --- /dev/null +++ b/src/testdir/dumps/Test_diff_bin_01.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>A+2#0000000#ff404010| +0&#ffd7ff255@33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|a+2#0000000#ff404010| +0&#ffd7ff255@33 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255| @33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255|^+2#0000e05#ff404010|@| +0#0000000#ffd7ff255@31 +| +0#0000e05#a8a8a8255@1|d+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|d+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|E+2#0000000#ff404010| +0&#ffd7ff255@33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|e+2#0000000#ff404010| +0&#ffd7ff255@33 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|g+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|g+0#0000000#ffffff0| @33 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_bin_02.dump b/src/testdir/dumps/Test_diff_bin_02.dump new file mode 100644 index 0000000..64ee1ac --- /dev/null +++ b/src/testdir/dumps/Test_diff_bin_02.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>A+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255| @33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255|^+2#0000e05#ff404010|@| +0#0000000#ffd7ff255@31 +| +0#0000e05#a8a8a8255@1|d+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|d+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|E+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|g+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|g+0#0000000#ffffff0| @33 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_bin_03.dump b/src/testdir/dumps/Test_diff_bin_03.dump new file mode 100644 index 0000000..a7d4cce --- /dev/null +++ b/src/testdir/dumps/Test_diff_bin_03.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>A+2#0000000#ff404010| +0&#ffd7ff255@33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|a+2#0000000#ff404010| +0&#ffd7ff255@33 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255| @33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255|^+2#0000e05#ff404010|@| +0#0000000#ffd7ff255@31 +| +0#0000e05#a8a8a8255@1|d+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|d+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|E+2#0000000#ff404010| +0&#ffd7ff255@33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|e+2#0000000#ff404010| +0&#ffd7ff255@33 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|g+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|g+0#0000000#ffffff0| @33 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_bin_04.dump b/src/testdir/dumps/Test_diff_bin_04.dump new file mode 100644 index 0000000..64ee1ac --- /dev/null +++ b/src/testdir/dumps/Test_diff_bin_04.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>A+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255| @33||+1&#ffffff0| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255|^+2#0000e05#ff404010|@| +0#0000000#ffd7ff255@31 +| +0#0000e05#a8a8a8255@1|d+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|d+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|E+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|g+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|g+0#0000000#ffffff0| @33 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_cuc_01.dump b/src/testdir/dumps/Test_diff_cuc_01.dump new file mode 100644 index 0000000..19c42f4 --- /dev/null +++ b/src/testdir/dumps/Test_diff_cuc_01.dump @@ -0,0 +1,20 @@ +>a+0&#ffffff0@1| @34||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0@1| @32 +|-+0#4040ff13#afffff255@36||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255@1| @32 +|c+0&#e0e0e08|c+0&#ffffff0| @34||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0@1| @32 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_cuc_02.dump b/src/testdir/dumps/Test_diff_cuc_02.dump new file mode 100644 index 0000000..80a296c --- /dev/null +++ b/src/testdir/dumps/Test_diff_cuc_02.dump @@ -0,0 +1,20 @@ +|a+0&#ffffff0>a| @34||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0@1| @32 +|-+0#4040ff13#afffff255@36||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255@1| @32 +|c+0&#ffffff0|c+0&#e0e0e08| +0&#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0@1| @32 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|2| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|2| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_cuc_03.dump b/src/testdir/dumps/Test_diff_cuc_03.dump new file mode 100644 index 0000000..19a3c1f --- /dev/null +++ b/src/testdir/dumps/Test_diff_cuc_03.dump @@ -0,0 +1,20 @@ +|a+0&#e0e0e08|a+0&#ffffff0| @34||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0@1| @32 +|-+0#4040ff13#afffff255@36||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255@1| @32 +>c+0&#ffffff0@1| @34||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0@1| @32 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_cuc_04.dump b/src/testdir/dumps/Test_diff_cuc_04.dump new file mode 100644 index 0000000..ba29893 --- /dev/null +++ b/src/testdir/dumps/Test_diff_cuc_04.dump @@ -0,0 +1,20 @@ +|a+0&#ffffff0|a+0&#e0e0e08| +0&#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0@1| @32 +|-+0#4040ff13#afffff255@36||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255@1| @32 +|c+0&#ffffff0>c| @34||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0@1| @32 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|2| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|2| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_of_diff_01.dump b/src/testdir/dumps/Test_diff_of_diff_01.dump new file mode 100644 index 0000000..2213bf3 --- /dev/null +++ b/src/testdir/dumps/Test_diff_of_diff_01.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| >a+0#0000000&@1| @28||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0@1| @32 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| |b+0#0000000&@1| @28||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0@1| @32 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |c+0#0000000&@1| @28||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0@1| @32 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|-+0#4040ff13#afffff255@30||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|@+0#0000000#5fd7ff255@1| |-|3|,|2| |+|5|,|7| |@@1| @19 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|-+0#4040ff13#afffff255@30||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|d+0#0000000#5fd7ff255@1| @32 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|-+0#4040ff13#afffff255@30||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|e+0#0000000#5fd7ff255@1| @32 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|-+0#4040ff13#afffff255@30||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|f+0#0000000#5fd7ff255@1| @32 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_of_diff_02.dump b/src/testdir/dumps/Test_diff_of_diff_02.dump new file mode 100644 index 0000000..86c06f5 --- /dev/null +++ b/src/testdir/dumps/Test_diff_of_diff_02.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@28|a>a| +0#af5f00255&|1| @1| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0@1| @32 +@29|b@1| +0#af5f00255&|2| @1| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0@1| @32 +@29|c@1| +0#af5f00255&|3| @1| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0@1| @32 +|-+0#4040ff13#afffff255@30| +0#af5f00255#ffffff0@3| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|@+0#0000000#5fd7ff255@1| |-|3|,|2| |+|5|,|7| |@@1| @19 +|-+0#4040ff13#afffff255@30| +0#af5f00255#ffffff0@3| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|d+0#0000000#5fd7ff255@1| @32 +|-+0#4040ff13#afffff255@30| +0#af5f00255#ffffff0@3| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|e+0#0000000#5fd7ff255@1| @32 +|-+0#4040ff13#afffff255@30| +0#af5f00255#ffffff0@3| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|f+0#0000000#5fd7ff255@1| @32 +| +0#4040ff13#ffffff0@35|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +@36|~||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +|:+0&&|s|e|t| |r|i|g|h|t|l|e|f|t| @60 diff --git a/src/testdir/dumps/Test_diff_rnu_01.dump b/src/testdir/dumps/Test_diff_rnu_01.dump new file mode 100644 index 0000000..dc7c0f9 --- /dev/null +++ b/src/testdir/dumps/Test_diff_rnu_01.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&|1+0#af5f00255&| @2>a+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|1| |a+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|2| |a+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|x+2#0000000#ff404010| +0&#ffd7ff255@33||+1&#ffffff0| +0#af5f00255&@1|3| |y+2#0000000#ff404010| +0&#ffd7ff255@31 +| +0#0000e05#a8a8a8255@1|x+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#af5f00255&@3|-+0#4040ff13#afffff255@32 +| +0#0000e05#a8a8a8255@1|x+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#af5f00255&@3|-+0#4040ff13#afffff255@32 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|4| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|5| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|6| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|7| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|8| |b+0#0000000&| @31 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_rnu_02.dump b/src/testdir/dumps/Test_diff_rnu_02.dump new file mode 100644 index 0000000..32ffc40 --- /dev/null +++ b/src/testdir/dumps/Test_diff_rnu_02.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|1| |a+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&|2+0#af5f00255&| @2>a+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|1| |a+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|x+2#0000000#ff404010| +0&#ffd7ff255@33||+1&#ffffff0| +0#af5f00255&@1|2| |y+2#0000000#ff404010| +0&#ffd7ff255@31 +| +0#0000e05#a8a8a8255@1|x+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#af5f00255&@3|-+0#4040ff13#afffff255@32 +| +0#0000e05#a8a8a8255@1|x+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#af5f00255&@3|-+0#4040ff13#afffff255@32 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|3| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|4| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|5| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|6| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|7| |b+0#0000000&| @31 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_rnu_03.dump b/src/testdir/dumps/Test_diff_rnu_03.dump new file mode 100644 index 0000000..8c8b938 --- /dev/null +++ b/src/testdir/dumps/Test_diff_rnu_03.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|2| |a+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|1| |a+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&|3+0#af5f00255&| @2>a+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|x+2#0000000#ff404010| +0&#ffd7ff255@33||+1&#ffffff0| +0#af5f00255&@1|1| |y+2#0000000#ff404010| +0&#ffd7ff255@31 +| +0#0000e05#a8a8a8255@1|x+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#af5f00255&@3|-+0#4040ff13#afffff255@32 +| +0#0000e05#a8a8a8255@1|x+0#0000000#5fd7ff255| @33||+1&#ffffff0| +0#af5f00255&@3|-+0#4040ff13#afffff255@32 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|2| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|3| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|4| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|5| |b+0#0000000&| @31 +| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0| @33||+1&&| +0#af5f00255&@1|6| |b+0#0000000&| @31 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_scroll_1.dump b/src/testdir/dumps/Test_diff_scroll_1.dump new file mode 100644 index 0000000..ee53c35 --- /dev/null +++ b/src/testdir/dumps/Test_diff_scroll_1.dump @@ -0,0 +1,12 @@ +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |1| @28||+1&&| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |1| @28 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |2| @28||+1&&| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |2| @28 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |3| @28||+1&&| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |3| @28 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |4| @28||+1&&| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |4| @28 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|L+0#0000000#5fd7ff255|o|r|e|m| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|i+0#0000000#5fd7ff255|p|s|u|m| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|d+0#0000000#5fd7ff255|o|l|o|r| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|s+0#0000000#5fd7ff255|i|t| @31 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|a+0#0000000#5fd7ff255|m|e|t|,| @29 +|X+1&#ffffff0|l|e|f|t| @13|5|,|0|-|1| @9|T|o|p| |X+3&&|r|i|g|h|t| @12|5|,|0|-|1| @9|T|o|p +|"+0&&|X|r|i|g|h|t|"| |3@1|L|,| |2|6|3|B| @56 diff --git a/src/testdir/dumps/Test_diff_scroll_2.dump b/src/testdir/dumps/Test_diff_scroll_2.dump new file mode 100644 index 0000000..4cac386 --- /dev/null +++ b/src/testdir/dumps/Test_diff_scroll_2.dump @@ -0,0 +1,12 @@ +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |1| @28||+1&&| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |1| @28 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |2| @28||+1&&| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |2| @28 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |3| @28||+1&&| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |3| @28 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |4| @28||+1&&| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |4| @28 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1>L+0#0000000#5fd7ff255|o|r|e|m| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|i+0#0000000#5fd7ff255|p|s|u|m| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|d+0#0000000#5fd7ff255|o|l|o|r| @29 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|s+0#0000000#5fd7ff255|i|t| @31 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|a+0#0000000#5fd7ff255|m|e|t|,| @29 +|X+1&#ffffff0|l|e|f|t| @13|6|,|1| @11|T|o|p| |X+3&&|r|i|g|h|t| @12|6|,|1| @11|T|o|p +|"+0&&|X|r|i|g|h|t|"| |3@1|L|,| |2|6|3|B| @56 diff --git a/src/testdir/dumps/Test_diff_scroll_change_01.dump b/src/testdir/dumps/Test_diff_scroll_change_01.dump new file mode 100644 index 0000000..886fe60 --- /dev/null +++ b/src/testdir/dumps/Test_diff_scroll_change_01.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|6+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|7+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|8+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0@1| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0@1| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|2| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|2| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|3| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|3| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|4| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|4| @32 +|-+0#0000e05#a8a8a8255| |1+0#0000000#ffffff0>5| @32||+1&&|-+0#0000e05#a8a8a8255| |1+0#0000000#ffffff0|5| @32 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|7|,|2| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|5|,|2| @10|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_scroll_change_02.dump b/src/testdir/dumps/Test_diff_scroll_change_02.dump new file mode 100644 index 0000000..d699ded --- /dev/null +++ b/src/testdir/dumps/Test_diff_scroll_change_02.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|6+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|7+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|8+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0@1| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0@1| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|2| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|2| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|3| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|3| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|4| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|4| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffd7ff255|5>x+2&#ff404010| +0&#ffd7ff255@31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|1+0#0000000#ffd7ff255|5| @32 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|7|,|3| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|5|,|3| @10|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_scroll_change_03.dump b/src/testdir/dumps/Test_diff_scroll_change_03.dump new file mode 100644 index 0000000..6d0c860 --- /dev/null +++ b/src/testdir/dumps/Test_diff_scroll_change_03.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|6+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|7+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|8+0#0000000#5fd7ff255| @33 +| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|9+0#0000000#ffffff0| @33 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|0| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0@1| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0@1| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|2| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|2| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|3| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|3| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|4| @32||+1&&| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0|4| @32 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffd7ff255|5|x+2&#ff404010| +0&#ffd7ff255@31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|1+0#0000000#ffd7ff255|5>y+2&#ff404010| +0&#ffd7ff255@31 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|7|,|3| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|5|,|3| @10|B|o|t +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_syntax_1.dump b/src/testdir/dumps/Test_diff_syntax_1.dump new file mode 100644 index 0000000..c96793a --- /dev/null +++ b/src/testdir/dumps/Test_diff_syntax_1.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1>v+0#00e0003#ffd7ff255|o|i|d| +0#0000000&|d|o|S+2&#ff404010|o|m|e|t+0&#ffd7ff255|h|i|n|g|(|)| |{| @52 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@2|i+0#00e0003&|n|t| +0#0000000&|x| |=| |0+0#e000002&|;+0#0000000&| @59 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@2|c+0#00e0003&|h|a|r| +0#0000000&|*|s| |=| |"+0#e000002&|t+2&#ff404010|h|e|r|e|"+0&#ffd7ff255|;+0#0000000&| @51 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&|;+0#0000000&| @60 +| +0#0000e05#a8a8a8255@1|}+0#0000000#ffffff0| @71 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|X+3#0000000&|p|r|o|g|r|a|m|2|.|c| @45|1|,|1| @11|A|l@1 +| +0#0000e05#a8a8a8255@1|v+0#00e0003#ffd7ff255|o|i|d| +0#0000000&|d|o|N+2&#ff404010|o|t+0&#ffd7ff255|h|i|n|g|(|)| |{| @54 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@2|i+0#00e0003&|n|t| +0#0000000&|x| |=| |0+0#e000002&|;+0#0000000&| @59 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@2|c+0#00e0003&|h|a|r| +0#0000000&|*|s| |=| |"+0#e000002&|h+2&#ff404010|e|l@1|o|"+0&#ffd7ff255|;+0#0000000&| @51 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&|;+0#0000000&| @60 +| +0#0000e05#a8a8a8255@1|}+0#0000000#ffffff0| @71 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|X+1#0000000&|p|r|o|g|r|a|m|1|.|c| @45|1|,|1| @11|A|l@1 +|"+0&&|X|p|r|o|g|r|a|m|2|.|c|"| |5|L|,| |7|2|B| @53 diff --git a/src/testdir/dumps/Test_diff_with_cul_bri_01.dump b/src/testdir/dumps/Test_diff_with_cul_bri_01.dump new file mode 100644 index 0000000..8151088 --- /dev/null +++ b/src/testdir/dumps/Test_diff_with_cul_bri_01.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1| +8#ffffff16#ff404010@1|b+10&&|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1> +8#ffffff16#ff404010@1|f+10&&|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +8#ffffff16#ff404010@21 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b+10#ffffff16&|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|o+10#ffffff16&|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b+10#ffffff16&|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1| +8&&@2||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|o+10#ffffff16&@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1| @2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1| @2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|b|a|z+2&#ff404010|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|b|a|r+2&#ff404010|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z| +0&#ffd7ff255@2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r||+1&#ffffff0|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1| |<+3&&| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_with_cul_bri_02.dump b/src/testdir/dumps/Test_diff_with_cul_bri_02.dump new file mode 100644 index 0000000..62126f6 --- /dev/null +++ b/src/testdir/dumps/Test_diff_with_cul_bri_02.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|b+2&#ff404010|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f+2&#ff404010|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +8#ffffff16#ff404010@21 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|o|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1| +0&#ffd7ff255@2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +8#ffffff16#ff404010@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1> +8#ffffff16#ff404010@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f+8#ffffff16#ff404010|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o+8#ffffff16#ff404010|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f+8#ffffff16#ff404010|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1| @2||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o+8#ffffff16#ff404010@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1| @2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|b|a|z+2&#ff404010|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|b|a|r+2&#ff404010|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z| +0&#ffd7ff255@2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r||+1&#ffffff0|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |2|,|1| @5|A|l@1| |<+3&&| |N|a|m|e|]| |[|+|]| |2|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_with_cul_bri_03.dump b/src/testdir/dumps/Test_diff_with_cul_bri_03.dump new file mode 100644 index 0000000..f32be73 --- /dev/null +++ b/src/testdir/dumps/Test_diff_with_cul_bri_03.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|b+2&#ff404010|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f+2&#ff404010|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +8#ffffff16#ff404010@21 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|o|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1| +0&#ffd7ff255@2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1| @2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +8#ffffff16#ff404010@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1> +8#ffffff16#ff404010@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f+8#ffffff16#ff404010|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o+8#ffffff16#ff404010|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f+8#ffffff16#ff404010|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1| @2||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o+8#ffffff16#ff404010@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|b|a|z+2&#ff404010|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|b|a|r+2&#ff404010|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z| +0&#ffd7ff255@2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r||+1&#ffffff0|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |3|,|1| @5|A|l@1| |<+3&&| |N|a|m|e|]| |[|+|]| |3|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_with_cul_bri_04.dump b/src/testdir/dumps/Test_diff_with_cul_bri_04.dump new file mode 100644 index 0000000..9489f9a --- /dev/null +++ b/src/testdir/dumps/Test_diff_with_cul_bri_04.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|b+2&#ff404010|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f+2&#ff404010|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +8#ffffff16#ff404010@21 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|o|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1|b|e@1| +0&#ffd7ff255@2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1| @2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1| @2||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#ffd7ff255@1|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1|f|o@1||+1&#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +8#ffffff16#ff404010@1|b|a|z+10&&|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1> +8#ffffff16#ff404010@1|b|a|r+10&&|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b+10#ffffff16&|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|r+10#ffffff16&|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b||+1#0000000#ffffff0|~+0#4040ff13&| @22 +| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|b+10#ffffff16&|a|z|b|a|z|b|a|z|b|a|z|b|a|z|b|a|z| +8&&@2||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010@1|a+10#ffffff16&|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r|b|a|r||+1#0000000#ffffff0|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22 +|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |4|,|1| @5|A|l@1| |<+3&&| |N|a|m|e|]| |[|+|]| |4|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_with_cursorline_01.dump b/src/testdir/dumps/Test_diff_with_cursorline_01.dump new file mode 100644 index 0000000..d43c9ca --- /dev/null +++ b/src/testdir/dumps/Test_diff_with_cursorline_01.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|b+8#ffffff16#ff404010|e@1| @31||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31||+1&&| +0#0000e05#a8a8a8255@1>f+8#ffffff16#ff404010|o@1| @31 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31 +| +0#0000e05#a8a8a8255@1|b+2#0000000#ff404010|a|z| +0&#ffd7ff255@31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|f+2#0000000#ff404010|o@1| +0&#ffd7ff255@31 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255|a|r| @31 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_with_cursorline_02.dump b/src/testdir/dumps/Test_diff_with_cursorline_02.dump new file mode 100644 index 0000000..477e367 --- /dev/null +++ b/src/testdir/dumps/Test_diff_with_cursorline_02.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255|e@1| @31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31 +| +0#0000e05#a8a8a8255@1|f+8#ffffff16#ff404010|o@1| @31||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1>f+8#ffffff16#ff404010|o@1| @31 +| +0#0000e05#a8a8a8255@1|b+2#0000000#ff404010|a|z| +0&#ffd7ff255@31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|f+2#0000000#ff404010|o@1| +0&#ffd7ff255@31 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255|a|r| @31 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_with_cursorline_03.dump b/src/testdir/dumps/Test_diff_with_cursorline_03.dump new file mode 100644 index 0000000..efef1c1 --- /dev/null +++ b/src/testdir/dumps/Test_diff_with_cursorline_03.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255|e@1| @31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31 +| +0#0000e05#a8a8a8255@1|b+10#ffffff16#ff404010|a|z| +8&&@31||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1>f+10#ffffff16#ff404010|o@1| +8&&@31 +| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255|a|r| @31 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|4|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_with_cursorline_number_01.dump b/src/testdir/dumps/Test_diff_with_cursorline_number_01.dump new file mode 100644 index 0000000..8289210 --- /dev/null +++ b/src/testdir/dumps/Test_diff_with_cursorline_number_01.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|-+0#4040ff13#afffff255@30||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| |b+0#0000000#5fd7ff255|a|z| @27 +| +0#0000e05#a8a8a8255@1| +8#0000001#ffffff16@1|1| >f+8#ffffff16#ff404010|o@1| @27||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +8#0000001#ffffff16@1|2| |f+8#ffffff16#ff404010|o@1| @27 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| |f+0#0000000&|o@1| @27||+1&&| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |f+0#0000000&|o@1| @27 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |b+0#0000000&|a|r| @27||+1&&| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|4| |b+0#0000000&|a|r| @27 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_diff_with_cursorline_number_02.dump b/src/testdir/dumps/Test_diff_with_cursorline_number_02.dump new file mode 100644 index 0000000..028441c --- /dev/null +++ b/src/testdir/dumps/Test_diff_with_cursorline_number_02.dump @@ -0,0 +1,20 @@ +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|-+0#4040ff13#afffff255@30||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| |b+0#0000000#5fd7ff255|a|z| @27 +| +0#0000e05#a8a8a8255@1| +8#0000001#ffffff16@1|1| >f+0#0000000#ffffff0|o@1| @27||+1&&| +0#0000e05#a8a8a8255@1| +8#0000001#ffffff16@1|2| |f+8#ffffff16#ff404010|o@1| @27 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| |f+0#0000000&|o@1| @27||+1&&| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |f+0#0000000&|o@1| @27 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |b+0#0000000&|a|r| @27||+1&&| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|4| |b+0#0000000&|a|r| @27 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1 +|:+0&&|s|e|t| |c|u|r|s|o|r|l|i|n|e|o|p|t|=|n|u|m|b|e|r| @49 diff --git a/src/testdir/dumps/Test_display_fillchars_1.dump b/src/testdir/dumps/Test_display_fillchars_1.dump new file mode 100644 index 0000000..b0b1642 --- /dev/null +++ b/src/testdir/dumps/Test_display_fillchars_1.dump @@ -0,0 +1,12 @@ +|w+0&#ffffff0|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28 +|w|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28 +|w|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28 +|y+0#4040ff13&| @35|++1#0000000&|x+0#4040ff13&| @35 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]|b@5|1|,|1|b@11|A|l@1|b|[|N|o| |N|a|m|e|]| |[|+|]|a@5|1|,|1|a@11|A|l@1 +>w+0&&|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28 +|w|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28 +|w|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28 +|o+0#4040ff13&| @35|>+1#0000000&|z+0#4040ff13&| @35 +|o| @35|>+1#0000000&|z+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]|4@5|1|,|1|4@11|A|l@1|4|[+1&&|N|o| |N|a|m|e|]| |[|+|]|c@5|1|,|1|c@11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_display_fillchars_2.dump b/src/testdir/dumps/Test_display_fillchars_2.dump new file mode 100644 index 0000000..b983fac --- /dev/null +++ b/src/testdir/dumps/Test_display_fillchars_2.dump @@ -0,0 +1,12 @@ +>w+0&#ffffff0|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28 +|w|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28 +|w|i|n|d|o|w| |2| @28|++1&&|w+0&&|i|n|d|o|w| |1| @28 +|y+0#4040ff13&| @35|++1#0000000&|x+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]|2@5|1|,|1|2@11|A|l@1|2|[+1&&|N|o| |N|a|m|e|]| |[|+|]|a@5|1|,|1|a@11|A|l@1 +|w+0&&|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28 +|w|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28 +|w|i|n|d|o|w| |4| @28|>+1&&|w+0&&|i|n|d|o|w| |3| @28 +|o+0#4040ff13&| @35|>+1#0000000&|z+0#4040ff13&| @35 +|o| @35|>+1#0000000&|z+0#4040ff13&| @35 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]|d@5|1|,|1|d@11|A|l@1|d|[|N|o| |N|a|m|e|]| |[|+|]|c@5|1|,|1|c@11|A|l@1 +|:+0&&|w|i|n|c|m|d| |k| @65 diff --git a/src/testdir/dumps/Test_display_lastline_1.dump b/src/testdir/dumps/Test_display_lastline_1.dump new file mode 100644 index 0000000..d074773 --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_1.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0||+1&&|a+0&&@2| @69 +|a||+1&&|b+0&&@72 +|a||+1&&|b+0&&@72 +@1||+1&&|b+0&&@53| @18 +|b||+1&&|~+0#4040ff13&| @71 +|b+0#0000000&||+1&&|~+0#4040ff13&| @71 +|b+0#0000000&||+1&&|~+0#4040ff13&| @71 +|@||+1#0000000&|~+0#4040ff13&| @71 +|<+3#0000000&| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @41|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_display_lastline_2.dump b/src/testdir/dumps/Test_display_lastline_2.dump new file mode 100644 index 0000000..065e5d8 --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_2.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0||+1&&|a+0&&@2| @69 +|a||+1&&|b+0&&@72 +|a||+1&&|b+0&&@72 +@1||+1&&|b+0&&@53| @18 +|b||+1&&|~+0#4040ff13&| @71 +|b+0#0000000&||+1&&|~+0#4040ff13&| @71 +|b+0#0000000&||+1&&|~+0#4040ff13&| @71 +|@||+1#0000000&|~+0#4040ff13&| @71 +|<+3#0000000&| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @41|1|,|1| @11|A|l@1 +|:+0&&|s|e|t| |d|i|s|p|l|a|y|=|l|a|s|t|l|i|n|e| @53 diff --git a/src/testdir/dumps/Test_display_lastline_3.dump b/src/testdir/dumps/Test_display_lastline_3.dump new file mode 100644 index 0000000..38673ab --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_3.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0@2| @69||+1&&|a+0&& +|b@72||+1&&|a+0&& +|b@72||+1&&|a+0&& +|b@53| @18||+1&&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|@+0#4040ff13& +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @41|1|,|1| @11|A|l@1| |<+1&& +|:+0&&|1|0@1|w|i|n|c|m|d| |>| @62 diff --git a/src/testdir/dumps/Test_display_lastline_4.dump b/src/testdir/dumps/Test_display_lastline_4.dump new file mode 100644 index 0000000..2978631 --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_4.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0@2| @69||+1&&|a+0&& +|b@72||+1&&|a+0&& +|b@72||+1&&|a+0&& +|b@53| @18||+1&&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|@+0#4040ff13& +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @41|1|,|1| @11|A|l@1| |<+1&& +|:+0&&|s|e|t| |d|i|s|p|l|a|y|=|t|r|u|n|c|a|t|e| @53 diff --git a/src/testdir/dumps/Test_display_lastline_5.dump b/src/testdir/dumps/Test_display_lastline_5.dump new file mode 100644 index 0000000..7567da1 --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_5.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0@2| @71 +|b@74 +|@+0#4040ff13&@2| @71 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +|a+0&&@2| @71 +|b@74 +@75 +@50| @24 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1 +|:+0&&|3|s|p|l|i|t| @67 diff --git a/src/testdir/dumps/Test_display_lastline_6.dump b/src/testdir/dumps/Test_display_lastline_6.dump new file mode 100644 index 0000000..e5ede7f --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_6.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0@1||+1&&|a+0&&@2| @68 +|a| ||+1&&|b+0&&@71 +@2||+1&&|b+0&&@71 +@2||+1&&|b+0&&@55| @15 +|b@1||+1&&|~+0#4040ff13&| @70 +|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70 +|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70 +|@@1||+1#0000000&|~+0#4040ff13&| @70 +|<+3#0000000&|1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @40|1|,|1| @11|A|l@1 +|:+0&&|2|v|s|p|l|i|t| @66 diff --git a/src/testdir/dumps/Test_display_lastline_euro_1.dump b/src/testdir/dumps/Test_display_lastline_euro_1.dump new file mode 100644 index 0000000..2223d87 --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_euro_1.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0||+1&&|a+0&&@2| @69 +|a||+1&&|b+0&&@72 +|a||+1&&|b+0&&@72 +@1||+1&&|b+0&&@53| @18 +|b||+1&&|~+0#4040ff13&| @71 +|b+0#0000000&||+1&&|~+0#4040ff13&| @71 +|b+0#0000000&||+1&&|~+0#4040ff13&| @71 +|€||+1#0000000&|~+0#4040ff13&| @71 +|<+3#0000000&| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @41|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_display_lastline_euro_2.dump b/src/testdir/dumps/Test_display_lastline_euro_2.dump new file mode 100644 index 0000000..e8da202 --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_euro_2.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0||+1&&|a+0&&@2| @69 +|a||+1&&|b+0&&@72 +|a||+1&&|b+0&&@72 +@1||+1&&|b+0&&@53| @18 +|b||+1&&|~+0#4040ff13&| @71 +|b+0#0000000&||+1&&|~+0#4040ff13&| @71 +|b+0#0000000&||+1&&|~+0#4040ff13&| @71 +|€||+1#0000000&|~+0#4040ff13&| @71 +|<+3#0000000&| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @41|1|,|1| @11|A|l@1 +|:+0&&|s|e|t| |d|i|s|p|l|a|y|=|l|a|s|t|l|i|n|e| @53 diff --git a/src/testdir/dumps/Test_display_lastline_euro_3.dump b/src/testdir/dumps/Test_display_lastline_euro_3.dump new file mode 100644 index 0000000..db414e7 --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_euro_3.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0@2| @69||+1&&|a+0&& +|b@72||+1&&|a+0&& +|b@72||+1&&|a+0&& +|b@53| @18||+1&&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|€+0#4040ff13& +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @41|1|,|1| @11|A|l@1| |<+1&& +|:+0&&|1|0@1|w|i|n|c|m|d| |>| @62 diff --git a/src/testdir/dumps/Test_display_lastline_euro_4.dump b/src/testdir/dumps/Test_display_lastline_euro_4.dump new file mode 100644 index 0000000..492438c --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_euro_4.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0@2| @69||+1&&|a+0&& +|b@72||+1&&|a+0&& +|b@72||+1&&|a+0&& +|b@53| @18||+1&&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|b+0&& +|~+0#4040ff13&| @71||+1#0000000&|€+0#4040ff13& +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @41|1|,|1| @11|A|l@1| |<+1&& +|:+0&&|s|e|t| |d|i|s|p|l|a|y|=|t|r|u|n|c|a|t|e| @53 diff --git a/src/testdir/dumps/Test_display_lastline_euro_5.dump b/src/testdir/dumps/Test_display_lastline_euro_5.dump new file mode 100644 index 0000000..75fc732 --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_euro_5.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0@2| @71 +|b@74 +|€+0#4040ff13&@2| @71 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +|a+0&&@2| @71 +|b@74 +@75 +@50| @24 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1 +|:+0&&|3|s|p|l|i|t| @67 diff --git a/src/testdir/dumps/Test_display_lastline_euro_6.dump b/src/testdir/dumps/Test_display_lastline_euro_6.dump new file mode 100644 index 0000000..80e2cbb --- /dev/null +++ b/src/testdir/dumps/Test_display_lastline_euro_6.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0@1||+1&&|a+0&&@2| @68 +|a| ||+1&&|b+0&&@71 +@2||+1&&|b+0&&@71 +@2||+1&&|b+0&&@55| @15 +|b@1||+1&&|~+0#4040ff13&| @70 +|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70 +|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70 +|€@1||+1#0000000&|~+0#4040ff13&| @70 +|<+3#0000000&|1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @40|1|,|1| @11|A|l@1 +|:+0&&|2|v|s|p|l|i|t| @66 diff --git a/src/testdir/dumps/Test_display_scroll_at_topline.dump b/src/testdir/dumps/Test_display_scroll_at_topline.dump new file mode 100644 index 0000000..9c843c0 --- /dev/null +++ b/src/testdir/dumps/Test_display_scroll_at_topline.dump @@ -0,0 +1,4 @@ +> +0&#ffffff0@19 +|a@19 +@1| @18 +|~+0#4040ff13&| @18 diff --git a/src/testdir/dumps/Test_display_scroll_update_visual.dump b/src/testdir/dumps/Test_display_scroll_update_visual.dump new file mode 100644 index 0000000..c174390 --- /dev/null +++ b/src/testdir/dumps/Test_display_scroll_update_visual.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1>f+0#0000000#ffffff0|o+0&#e0e0e08@1| | +0&#ffffff0@53 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @54 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @54 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @54 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @54 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @54 +| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @54 +|-+2&&@1| |V|I|S|U|A|L| |L|I|N|E| |-@1| +0&&@14|2| @8|2|,|1| @10|3@1|%| diff --git a/src/testdir/dumps/Test_display_unprintable_01.dump b/src/testdir/dumps/Test_display_unprintable_01.dump new file mode 100644 index 0000000..552b402 --- /dev/null +++ b/src/testdir/dumps/Test_display_unprintable_01.dump @@ -0,0 +1,9 @@ +>m+0&#ffffff0|a|c| @46 +|^+0#0000e05&|J|t+0#0000000&|w|o|^+0#0000e05&|J| +0#0000000&@42 +|~+0#4040ff13&| @48 +|X+3#0000000&|m|a|c|.|t|x|t| @23|1|,|1| @11|A|l@1 +|u+0&&|n|i|x|^+0#0000e05&|M| +0#0000000&@43 +|t|w|o| @46 +|~+0#4040ff13&| @48 +|X+1#0000000&|u|n|i|x|.|t|x|t| @22|1|,|1| @11|A|l@1 +|"+0&&|X|m|a|c|.|t|x|t|"| |[|n|o|e|o|l|]|[|m|a|c|]| |2|L|,| |9|B| @19 diff --git a/src/testdir/dumps/Test_display_unprintable_02.dump b/src/testdir/dumps/Test_display_unprintable_02.dump new file mode 100644 index 0000000..6338465 --- /dev/null +++ b/src/testdir/dumps/Test_display_unprintable_02.dump @@ -0,0 +1,9 @@ +|m+0&#ffffff0|a|c| @46 +|^+0#0000e05&|J|t+0#0000000&|w|o|^+0#0000e05&|J| +0#0000000&@42 +|~+0#4040ff13&| @48 +|X+1#0000000&|m|a|c|.|t|x|t| @23|1|,|1| @11|A|l@1 +>u+0&&|n|i|x|^+0#0000e05&|M| +0#0000000&@43 +|t|w|o| @46 +|~+0#4040ff13&| @48 +|X+3#0000000&|u|n|i|x|.|t|x|t| @22|1|,|1| @11|A|l@1 +| +0&&@49 diff --git a/src/testdir/dumps/Test_display_visual_block_scroll.dump b/src/testdir/dumps/Test_display_visual_block_scroll.dump new file mode 100644 index 0000000..afb52fb --- /dev/null +++ b/src/testdir/dumps/Test_display_visual_block_scroll.dump @@ -0,0 +1,7 @@ +|{+0&#e0e0e08| | +0&#ffffff0@72 +|}+0&#e0e0e08| | +0&#ffffff0@72 +|{+0&#e0e0e08| | +0&#ffffff0@72 +|f+0&#e0e0e08| | +0&#ffffff0@72 +>g| +0&#e0e0e08| +0&#ffffff0@72 +|}| @73 +|-+2&&@1| |V|I|S|U|A|L| |L|I|N|E| |-@1| +0&&@29|7| @8|1@1|,|1| @9|B|o|t| diff --git a/src/testdir/dumps/Test_echowin_eval.dump b/src/testdir/dumps/Test_echowin_eval.dump new file mode 100644 index 0000000..80d5fc7 --- /dev/null +++ b/src/testdir/dumps/Test_echowin_eval.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|═+0#e000002&@74 +|t|e|s|t| @70 +|1+0#0000000&|2|3| @53|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_echowin_showmode.dump b/src/testdir/dumps/Test_echowin_showmode.dump new file mode 100644 index 0000000..24eb4d0 --- /dev/null +++ b/src/testdir/dumps/Test_echowin_showmode.dump @@ -0,0 +1,8 @@ +>o+0&#ffffff0|n+0&#e0e0e08|e| | +0&#ffffff0@70 +|t|w|o| @71 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|═+0#e000002&@74 +|e|c|h|o| |w|i|n|d|o|w| @63 +|-+2#0000000&@1| |V|I|S|U|A|L| |L|I|N|E| |-@1| +0&&@29|1| @8|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_echowindow_1.dump b/src/testdir/dumps/Test_echowindow_1.dump new file mode 100644 index 0000000..8c3db07 --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_1.dump @@ -0,0 +1,8 @@ +>s+0&#ffffff0|o|m|e| |t|e|x|t| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|═+0#e000002&@74 +|f|i|r|s|t| |l|i|n|e| @64 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_echowindow_2.dump b/src/testdir/dumps/Test_echowindow_2.dump new file mode 100644 index 0000000..58b2f3f --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_2.dump @@ -0,0 +1,8 @@ +>s+0&#ffffff0|o|m|e| |t|e|x|t| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|═+0#e000002&@74 +|f|i|r|s|t| |l|i|n|e| @64 +|s|e|c|o|n|d| |l|i|n|e| @63 +|:+0#0000000&|c|a|l@1| |S|h|o|w|M|e|s@1|a|g|e|(|'|s|e|c|o|n|d| |l|i|n|e|'|)| @24|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_echowindow_3.dump b/src/testdir/dumps/Test_echowindow_3.dump new file mode 100644 index 0000000..5d84236 --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_3.dump @@ -0,0 +1,8 @@ +>s+0&#ffffff0|o|m|e| |t|e|x|t| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_echowindow_4.dump b/src/testdir/dumps/Test_echowindow_4.dump new file mode 100644 index 0000000..c8bd387 --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_4.dump @@ -0,0 +1,8 @@ +>═+0#e000002#ffffff0@74 +|l|i|n|e| |1|4| @67 +|l|i|n|e| |1|5| @67 +|l|i|n|e| |1|6| @67 +|l|i|n|e| |1|7| @67 +|l|i|n|e| |1|8| @67 +|l|i|n|e| |1|9| @67 +|:+0#0000000&|c|a|l@1| |M|a|n|y|M|e|s@1|a|g|e|s|(|)| @36|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_echowindow_5.dump b/src/testdir/dumps/Test_echowindow_5.dump new file mode 100644 index 0000000..a87640c --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_5.dump @@ -0,0 +1,8 @@ +>s+0&#ffffff0|o|m|e| |t|e|x|t| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|═+0#e000002&@74 +|m|e|s@1|a|g|e| @67 +|o+0#0000000&|n|e| @71 +|t|w|o| @53|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_echowindow_6.dump b/src/testdir/dumps/Test_echowindow_6.dump new file mode 100644 index 0000000..3bf6303 --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_6.dump @@ -0,0 +1,8 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|o+0#0000000&|n|e| @71 +|t|w|o| @71 +|t|h|r|e@1| @69 +|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@35 diff --git a/src/testdir/dumps/Test_echowindow_7.dump b/src/testdir/dumps/Test_echowindow_7.dump new file mode 100644 index 0000000..774495f --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_7.dump @@ -0,0 +1,8 @@ +>s+0&#ffffff0|o|m|e| |t|e|x|t| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|═+0#e000002&@74 +|l|a|t|e|r| |m|e|s@1|a|g|e| @61 +| +0#0000000&@74 +@57|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_echowindow_8.dump b/src/testdir/dumps/Test_echowindow_8.dump new file mode 100644 index 0000000..cb5b50d --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_8.dump @@ -0,0 +1,8 @@ +| +8#0000001#e0e0e08|+| |[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@49|X+8#0000001#e0e0e08 +> +0#0000000#ffffff0@74 +|~+0#4040ff13&| @73 +|═+0#e000002&@74 +|l|a|t|e|r| |m|e|s@1|a|g|e| @61 +|m|o|r|e| @70 +|:+0#0000000&|7|e|c|h|o|w|i|n| |'|m|o|r|e|'| @58 +@57|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_echowindow_9.dump b/src/testdir/dumps/Test_echowindow_9.dump new file mode 100644 index 0000000..2efdef0 --- /dev/null +++ b/src/testdir/dumps/Test_echowindow_9.dump @@ -0,0 +1,8 @@ +| +8#0000001#e0e0e08|+| |[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@49|X+8#0000001#e0e0e08 +> +0#0000000#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|c|a|l@1| |H|i|d|e|W|i|n|(|)| @59 +@57|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_fileinfo_after_echo.dump b/src/testdir/dumps/Test_fileinfo_after_echo.dump new file mode 100644 index 0000000..787dced --- /dev/null +++ b/src/testdir/dumps/Test_fileinfo_after_echo.dump @@ -0,0 +1,6 @@ +>h+0&#ffffff0|i| @72 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|'+0#0000000&|b|'| |w|r|i|t@1|e|n| @45|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_folds_with_rnu_01.dump b/src/testdir/dumps/Test_folds_with_rnu_01.dump new file mode 100644 index 0000000..5e6724e --- /dev/null +++ b/src/testdir/dumps/Test_folds_with_rnu_01.dump @@ -0,0 +1,20 @@ +|++0#0000e05#a8a8a8255| @2|0| >+|-@1| @1|2| |l|i|n|e|s|:| |-@54 +|+| @2|1| |+|-@1| @1|2| |l|i|n|e|s|:| |-@54 +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_folds_with_rnu_02.dump b/src/testdir/dumps/Test_folds_with_rnu_02.dump new file mode 100644 index 0000000..d4a2646 --- /dev/null +++ b/src/testdir/dumps/Test_folds_with_rnu_02.dump @@ -0,0 +1,20 @@ +|++0#0000e05#a8a8a8255| @2|1| |+|-@1| @1|2| |l|i|n|e|s|:| |-@54 +|+| @2|0| >+|-@1| @1|2| |l|i|n|e|s|:| |-@54 +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_functions_echoraw.dump b/src/testdir/dumps/Test_functions_echoraw.dump new file mode 100644 index 0000000..f27cd03 --- /dev/null +++ b/src/testdir/dumps/Test_functions_echoraw.dump @@ -0,0 +1,5 @@ +>x+0&#ffffff0|e|l@1|o| @34 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_1.dump b/src/testdir/dumps/Test_hlsearch_1.dump new file mode 100644 index 0000000..abcd91c --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_1.dump @@ -0,0 +1,6 @@ +|x+0&#ffff4012@2| | +0&#ffffff0@45 +>x+8&#ffff4012@2| | +8&#ffffff0@45 +|x+0&#ffff4012@2| | +0&#ffffff0@45 +|~+0#4040ff13&| @48 +|~| @48 +| +0#0000000&@31|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_2.dump b/src/testdir/dumps/Test_hlsearch_2.dump new file mode 100644 index 0000000..0cb13c3 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_2.dump @@ -0,0 +1,6 @@ +|x+0&#ffff4012@2| | +0&#ffffff0@45 +|x+0&#ffff4012@2| | +0&#ffffff0@45 +>x+8&#ffff4012@2| | +8&#ffffff0@45 +|~+0#4040ff13&| @48 +|~| @48 +|/+0#0000000&|\|_|.|*| @26|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_block_visual_match.dump b/src/testdir/dumps/Test_hlsearch_block_visual_match.dump new file mode 100644 index 0000000..0b45678 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_block_visual_match.dump @@ -0,0 +1,9 @@ +|a+0&#ffff4012@1| | +0&#ffffff0@56 +>b+0&#ffff4012@3| | +0&#ffffff0@54 +|c+0&#ffff4012@5| | +0&#ffffff0@52 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +|/+0#0000000&|\|%|V| @37|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_ctrlr_1.dump b/src/testdir/dumps/Test_hlsearch_ctrlr_1.dump new file mode 100644 index 0000000..e0a0af3 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_ctrlr_1.dump @@ -0,0 +1,6 @@ +| +0&#ffffff0@59 +|t+1&&|e|x|t| +0&&@55 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|/+0#0000000&|t|e|x|t> @54 diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_changed_1.dump b/src/testdir/dumps/Test_hlsearch_cursearch_changed_1.dump new file mode 100644 index 0000000..607e079 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_changed_1.dump @@ -0,0 +1,9 @@ +|-+0&#ffffff0@2| @56 +|a+0&#ffff4012|b|c|d|e+0&#ffffff0|f|g| @52 +>a+0࿈ff13|b|c|d|e+0&#ffffff0|f|g| @52 +|h|i|j|k|l| @54 +|-@2| @56 +|a+0&#ffff4012|b|c|d|e+0&#ffffff0|f|g| @52 +|h|i|j|k|l| @54 +|~+0#4040ff13&| @58 +| +0#0000000&@41|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_1.dump b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_1.dump new file mode 100644 index 0000000..950ffef --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_1.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| @56 +>f+0࿈ff13|o@1| | +0&#ffffff0@55 +|b+0࿈ff13|a|r| +0&#ffffff0@56 +|b|a|z| @56 +|f+0&#ffff4012|o@1| | +0&#ffffff0@55 +|b+0&#ffff4012|a|r| +0&#ffffff0@56 +|~+0#4040ff13&| @58 +|~| @58 +|/+0#0000000&|f|o@1|\|n|b|a|r| @32|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_2.dump b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_2.dump new file mode 100644 index 0000000..7b091cf --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_2.dump @@ -0,0 +1,9 @@ +|-+0&#ffffff0@2| @56 +|a|b|c|d>e+0࿈ff13|f|g| | +0&#ffffff0@51 +|h+0࿈ff13|i|j|k+0&#ffffff0|l| @54 +|-@2| @56 +|a|b|c|d|e+0&#ffff4012|f|g| | +0&#ffffff0@51 +|h+0&#ffff4012|i|j|k+0&#ffffff0|l| @54 +|~+0#4040ff13&| @58 +|~| @58 +|/+0#0000000&|e|f|g|\|n|h|i|j| @32|2|,|5| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_3.dump b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_3.dump new file mode 100644 index 0000000..ef03675 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_3.dump @@ -0,0 +1,9 @@ +|-+0&#ffffff0@2| @56 +|a|b|c>d|e+0&#ffff4012|f|g| | +0&#ffffff0@51 +|h+0&#ffff4012|i|j|k+0&#ffffff0|l| @54 +|-@2| @56 +|a|b|c|d|e+0&#ffff4012|f|g| | +0&#ffffff0@51 +|h+0&#ffff4012|i|j|k+0&#ffffff0|l| @54 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|2|,|4| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_4.dump b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_4.dump new file mode 100644 index 0000000..2235295 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_4.dump @@ -0,0 +1,9 @@ +|-+0&#ffffff0@2| @56 +|a|b|c|d|e+0&#ffff4012|f|g| | +0&#ffffff0@51 +|h+0&#ffff4012|i|j>k+0&#ffffff0|l| @54 +|-@2| @56 +|a|b|c|d|e+0&#ffff4012|f|g| | +0&#ffffff0@51 +|h+0&#ffff4012|i|j|k+0&#ffffff0|l| @54 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|3|,|4| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_5.dump b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_5.dump new file mode 100644 index 0000000..2294566 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_5.dump @@ -0,0 +1,9 @@ +|-+0&#ffffff0@2| @56 +|a|b|c|d|e+0࿈ff13|f|g| | +0&#ffffff0@51 +|h+0࿈ff13|i>j|k+0&#ffffff0|l| @54 +|-@2| @56 +|a|b|c|d|e+0&#ffff4012|f|g| | +0&#ffffff0@51 +|h+0&#ffff4012|i|j|k+0&#ffffff0|l| @54 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|3|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_single_line_1.dump b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_1.dump new file mode 100644 index 0000000..ab72665 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_1.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| @56 +>f+0࿈ff13|o@1| +0&#ffffff0@56 +|b|a|r| @56 +|b|a|z| @56 +|f+0&#ffff4012|o@1| +0&#ffffff0|t|h|e| |f+0&#ffff4012|o@1| +0&#ffffff0|a|n|d| |f+0&#ffff4012|o@1| +0&#ffffff0@40 +|b|a|r| @56 +|~+0#4040ff13&| @58 +|~| @58 +|/+0#0000000&|f|o@1| @37|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_single_line_2.dump b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_2.dump new file mode 100644 index 0000000..dd4aa89 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_2.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| @56 +|f+0&#ffff4012|o@1| +0&#ffffff0@56 +|b|a|r| @56 +|b|a|z| @56 +>f+0࿈ff13|o@1| +0&#ffffff0|t|h|e| |f+0&#ffff4012|o@1| +0&#ffffff0|a|n|d| |f+0&#ffff4012|o@1| +0&#ffffff0@40 +|b|a|r| @56 +|~+0#4040ff13&| @58 +|~| @58 +|/+0#0000000&|f|o@1| @37|5|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_single_line_2a.dump b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_2a.dump new file mode 100644 index 0000000..2cc3c17 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_2a.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| @56 +|f+0&#ffff4012|o@1| +0&#ffffff0@56 +|b|a|r| @56 +|b|a|z| @56 +|f+0&#ffff4012|o@1| +0&#ffffff0|t|h|e| >f+0࿈ff13|o@1| +0&#ffffff0|a|n|d| |f+0&#ffff4012|o@1| +0&#ffffff0@40 +|b|a|r| @56 +|~+0#4040ff13&| @58 +|~| @58 +|/+0#0000000&|f|o@1| @37|5|,|9| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_single_line_2b.dump b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_2b.dump new file mode 100644 index 0000000..0b20bd5 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_2b.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| @56 +|f+0&#ffff4012|o@1| +0&#ffffff0@56 +|b|a|r| @56 +|b|a|z| @56 +|f+0&#ffff4012|o@1| +0&#ffffff0|t|h|e| |f+0&#ffff4012|o@1| +0&#ffffff0|a|n|d| >f+0࿈ff13|o@1| +0&#ffffff0@40 +|b|a|r| @56 +|~+0#4040ff13&| @58 +|~| @58 +|/+0#0000000&|f|o@1| @37|5|,|1|7| @9|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_cursearch_single_line_3.dump b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_3.dump new file mode 100644 index 0000000..b0c38c2 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_cursearch_single_line_3.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| @56 +>f+0࿈ff13|o@1| +0&#ffffff0@56 +|b|a|r| @56 +|b|a|z| @56 +|f+0&#ffff4012|o@1| +0&#ffffff0@56 +|b|a|r| @56 +|~+0#4040ff13&| @58 +|~| @58 +|?+0#0000000&|f|o@1| @37|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hlsearch_visual_1.dump b/src/testdir/dumps/Test_hlsearch_visual_1.dump new file mode 100644 index 0000000..99150db --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_visual_1.dump @@ -0,0 +1,6 @@ +|x+0&#ffffff0@2| |y+2&#ffff4012|y+2&#e0e0e08@1| +0&&|z@2| | +0&#ffffff0@27 +|x+0&#e0e0e08@2| |y+2&&@2| +0&&|z@2| | +0&#ffffff0@27 +|x+0&#e0e0e08@2| |y+2&&>y+2&#ffff4012@1| +0&#ffffff0|z@2| @28 +|~+0#4040ff13&| @38 +|~| @38 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1|3+0&&| @8|3|,|6| @10|A|l@1| diff --git a/src/testdir/dumps/Test_hor_scroll_1.dump b/src/testdir/dumps/Test_hor_scroll_1.dump new file mode 100644 index 0000000..615afb8 --- /dev/null +++ b/src/testdir/dumps/Test_hor_scroll_1.dump @@ -0,0 +1,8 @@ +|a+0&#ffffff0| |b@1| |c@1| |d@1| |e@1| |f@1| |g@1| ||+1&&|a+0&&@1| |b@1| |c@1| |d@1| |e@1| |f@1| |g@1> |h@1| |i@1| |j@1| |k@1| |l@1| |m@1| |n@1| |o@1| |p@1| |q@1| |r@1| +@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32 +@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32 +@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32 +@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|2|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|2|1| @10|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_hor_scroll_2.dump b/src/testdir/dumps/Test_hor_scroll_2.dump new file mode 100644 index 0000000..dfe2e98 --- /dev/null +++ b/src/testdir/dumps/Test_hor_scroll_2.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0|h@1| |i@1| |j@1| |k@1| |l@1| |m@1| |n||+1&&|a+0&&@1| |b@1| |c@1| |d@1| |e@1| |f@1| |g@1| |h@1| |i@1| |j@1| >k@1| |l@1| |m@1| |n@1| |o@1| |p@1| |q@1| |r@1| +@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22 +@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22 +@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22 +@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|3|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|3|1| @10|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_hor_scroll_3.dump b/src/testdir/dumps/Test_hor_scroll_3.dump new file mode 100644 index 0000000..db9fd6f --- /dev/null +++ b/src/testdir/dumps/Test_hor_scroll_3.dump @@ -0,0 +1,8 @@ +|a+8&#ffffff0| |b@1| |c@1| |d@1| |e@1| |f@1| |g@1| ||+1&&|a+8&&@1| |b@1| |c@1| |d@1| |e@1| |f@1| |g@1> |h@1| |i@1| |j@1| |k@1| |l@1| |m@1| |n@1| |o@1| |p@1| |q@1| |r@1| +| +0&&@18| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32 +@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32 +@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32 +@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|2|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|2|1| @10|A|l@1 +|:+0&&|w|i|n|d|o| |:|s|e|t| |c|u|r|s|o|r|l|i|n|e| @52 diff --git a/src/testdir/dumps/Test_hor_scroll_4.dump b/src/testdir/dumps/Test_hor_scroll_4.dump new file mode 100644 index 0000000..8182160 --- /dev/null +++ b/src/testdir/dumps/Test_hor_scroll_4.dump @@ -0,0 +1,8 @@ +| +8&#ffffff0|h@1| |i@1| |j@1| |k@1| |l@1| |m@1| |n||+1&&|a+8&&@1| |b@1| |c@1| |d@1| |e@1| |f@1| |g@1| |h@1| |i@1| |j@1| >k@1| |l@1| |m@1| |n@1| |o@1| |p@1| |q@1| |r@1| +| +0&&@9| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22 +@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22 +@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22 +@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|3|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|3|1| @10|A|l@1 +|:+0&&|w|i|n|d|o| |:|s|e|t| |c|u|r|s|o|r|l|i|n|e| @52 diff --git a/src/testdir/dumps/Test_hor_scroll_5.dump b/src/testdir/dumps/Test_hor_scroll_5.dump new file mode 100644 index 0000000..f2986f3 --- /dev/null +++ b/src/testdir/dumps/Test_hor_scroll_5.dump @@ -0,0 +1,8 @@ +|k+0&#ffffff0@1| |l@1| |m@1| |n@1| |o@1| |p@1| |q@1||+1&&|a+0&&@1| |b@1| |c@1| |d@1| |e@1| |f@1| |g@1| |h@1| |i@1| |j@1| |k@1| |l@1| |m@1| |n>n| |o@1| |p@1| |q@1| |r@1| +@20||+1&&| +0&&@53 +@20||+1&&| +0&&@53 +@20||+1&&| +0&&@53 +@20||+1&&| +0&&@53 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|4|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|4|1| @10|A|l@1 +|:+0&&|w|i|n|d|o| |:|s|e|t| |n|o|c|u|r|s|o|r|l|i|n|e| |n|o|c|u|r|s|o|r|c|o|l|u|m|n| @35 diff --git a/src/testdir/dumps/Test_incsearch_change_01.dump b/src/testdir/dumps/Test_incsearch_change_01.dump new file mode 100644 index 0000000..1c84faf --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_change_01.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| @66 +|x| @68 +|t|h|r|e@1| @64 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|~| @68 +|~| @68 +|:+0#0000000&|%|s|/|X> @64 diff --git a/src/testdir/dumps/Test_incsearch_newline1.dump b/src/testdir/dumps/Test_incsearch_newline1.dump new file mode 100644 index 0000000..9e9241a --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_newline1.dump @@ -0,0 +1,5 @@ +|t+1&#ffffff0|e|s|t| +0&&@5 +|x@2| @6 +|~+0#4040ff13&| @8 +|~| @8 +|/+0#0000000&|t|e|s|t> @4 diff --git a/src/testdir/dumps/Test_incsearch_newline2.dump b/src/testdir/dumps/Test_incsearch_newline2.dump new file mode 100644 index 0000000..677343d --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_newline2.dump @@ -0,0 +1,5 @@ +|t+1&#ffffff0|e|s|t| | +0&&@4 +|x@2| @6 +|~+0#4040ff13&| @8 +|~| @8 +|/+0#0000000&|t|e|s|t|\|n> @2 diff --git a/src/testdir/dumps/Test_incsearch_newline3.dump b/src/testdir/dumps/Test_incsearch_newline3.dump new file mode 100644 index 0000000..d80cc74 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_newline3.dump @@ -0,0 +1,5 @@ +|t+1&#ffffff0|e|s|t| | +0&&@4 +|x+1&&|x+0&&@1| @6 +|~+0#4040ff13&| @8 +|~| @8 +|/+0#0000000&|t|e|s|t|\|n|x> @1 diff --git a/src/testdir/dumps/Test_incsearch_newline4.dump b/src/testdir/dumps/Test_incsearch_newline4.dump new file mode 100644 index 0000000..50d88b3 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_newline4.dump @@ -0,0 +1,5 @@ +|t+1&#ffffff0|e|s|t| | +0&&@4 +|x+1&&@1|x+0&&| @6 +|~+0#4040ff13&| @8 +|~| @8 +|/+0#0000000&|t|e|s|t|\|n|x@1> diff --git a/src/testdir/dumps/Test_incsearch_newline5.dump b/src/testdir/dumps/Test_incsearch_newline5.dump new file mode 100644 index 0000000..6568348 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_newline5.dump @@ -0,0 +1,5 @@ +|o+0#00e0003#ffffff0|r| |t|y|p|e| |c|o +|m| @7|m +|a|n|d| |t|o| |c|o|n +|t| @7|i +|n|u|e> +0#0000000&@6 diff --git a/src/testdir/dumps/Test_incsearch_scrolling_01.dump b/src/testdir/dumps/Test_incsearch_scrolling_01.dump new file mode 100644 index 0000000..c133d5f --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_scrolling_01.dump @@ -0,0 +1,9 @@ +|.+0&#ffffff0@69 +@50| @19 +|.@69 +@50| @19 +@70 +|t+1&&|a|r|g|e+0&&|t| @63 +|@+0#4040ff13&@2| @66 +|/+0#0000000&|t|a|r|g> @64 +@70 diff --git a/src/testdir/dumps/Test_incsearch_search_01.dump b/src/testdir/dumps/Test_incsearch_search_01.dump new file mode 100644 index 0000000..324abfe --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_search_01.dump @@ -0,0 +1,9 @@ +|f+0&#ffff4012|o|o+0&#ffffff0| |1| @64 +|f+0&#ffff4012|o|o+0&#ffffff0| |2| @64 +|f+0&#ffff4012|o|o+0&#ffffff0| |3| @64 +|f+1&&|o|o+0&&| |4| @64 +|f+0&#ffff4012|o|o+0&#ffffff0| |5| @64 +|f+0&#ffff4012|o|o+0&#ffffff0| |6| @64 +|f+0&#ffff4012|o|o+0&#ffffff0| |7| @64 +|f+0&#ffff4012|o|o+0&#ffffff0| |8| @64 +|/|f|o> @66 diff --git a/src/testdir/dumps/Test_incsearch_search_02.dump b/src/testdir/dumps/Test_incsearch_search_02.dump new file mode 100644 index 0000000..6c1b743 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_search_02.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |1| @64 +|f|o@1| |2| @64 +|f|o+1&&|o+0&&| |3| @64 +|f|o@1| |4| @64 +|f|o@1| |5| @64 +|f|o@1| |6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|/|\|v> @66 diff --git a/src/testdir/dumps/Test_incsearch_sort_01.dump b/src/testdir/dumps/Test_incsearch_sort_01.dump new file mode 100644 index 0000000..6c003af --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_sort_01.dump @@ -0,0 +1,9 @@ +|a+0&#ffffff0|n|o|t|h|e|r| |o+1&&|n|e+0&&| |2| @56 +|t|h|a|t| |o+0&#ffff4012|n|e+0&#ffffff0| |3| @59 +|t|h|e| |o+0&#ffff4012|n|e+0&#ffffff0| |1| @60 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|~| @68 +|~| @68 +|:+0#0000000&|s|o|r|t| |n|i| |u| |/|o|n> @55 diff --git a/src/testdir/dumps/Test_incsearch_sort_02.dump b/src/testdir/dumps/Test_incsearch_sort_02.dump new file mode 100644 index 0000000..ee752e1 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_sort_02.dump @@ -0,0 +1,9 @@ +|a+0&#ffffff0|n|o|t|h|e|r| |o+1&&|n|e+0&&| |2| @56 +|t|h|a|t| |o+0&#ffff4012|n|e+0&#ffffff0| |3| @59 +|t|h|e| |o+0&#ffff4012|n|e+0&#ffffff0| |1| @60 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|~| @68 +|~| @68 +|:+0#0000000&|s|o|r|t|!| |/|o|n> @59 diff --git a/src/testdir/dumps/Test_incsearch_sub_01.dump b/src/testdir/dumps/Test_incsearch_sub_01.dump new file mode 100644 index 0000000..5924fbd --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_sub_01.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |1| @64 +|f|o@1| |2| @64 +|f|o@1| |3| @64 +|f|o@1| |4| @64 +|a|b|c|||d|e|f| @62 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|:+0#0000000&|%|s|/|\|v|a|b|c||> @59 diff --git a/src/testdir/dumps/Test_incsearch_sub_02.dump b/src/testdir/dumps/Test_incsearch_sub_02.dump new file mode 100644 index 0000000..c6b58cb --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_sub_02.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |1| @64 +|f|o@1| |2| @64 +|f|o@1| |3| @64 +|f|o@1| |4| @64 +|a|b|c|||d|e|f| @62 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|:+0#0000000&|1|,|5|s|/|\|v||> @60 diff --git a/src/testdir/dumps/Test_incsearch_substitute_01.dump b/src/testdir/dumps/Test_incsearch_substitute_01.dump new file mode 100644 index 0000000..63886f5 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_01.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |1| @64 +|f|o@1| |2| @64 +|f+1&&|o@1| +0&&|3| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|4| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|5| @64 +|f|o@1| |6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|:|.|,|.|+|2|s|/|f|o@1> @58 diff --git a/src/testdir/dumps/Test_incsearch_substitute_02.dump b/src/testdir/dumps/Test_incsearch_substitute_02.dump new file mode 100644 index 0000000..fd1f912 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_02.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |1| @64 +|f|o@1| |2| @64 +|f|o@1| |3| @64 +|f+1&&|o@1| +0&&|4| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|5| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|:|.|,|.|+|2|s|/@1> @60 diff --git a/src/testdir/dumps/Test_incsearch_substitute_03.dump b/src/testdir/dumps/Test_incsearch_substitute_03.dump new file mode 100644 index 0000000..5d7afa0 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_03.dump @@ -0,0 +1,9 @@ +|f+0&#ffff4012|o@1| +0&#ffffff0|1| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|2| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|3| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|4| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|5| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|6| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|7| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|8| @64 +|:|.|,|.|+|2|s|/> @61 diff --git a/src/testdir/dumps/Test_incsearch_substitute_04.dump b/src/testdir/dumps/Test_incsearch_substitute_04.dump new file mode 100644 index 0000000..bae6c7b --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_04.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |1| @64 +|f+1&&|o@1| +0&&|2| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|3| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|4| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|5| @64 +|f|o@1| |6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|:|5|,|2|s|/|f|o@1> @60 diff --git a/src/testdir/dumps/Test_incsearch_substitute_05.dump b/src/testdir/dumps/Test_incsearch_substitute_05.dump new file mode 100644 index 0000000..6ec8ea3 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_05.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |1| @64 +|f+1&&|o|o+0&&| |2| @64 +|f+0&#ffff4012|o|o+0&#ffffff0| |3| @64 +|f|o@1| |4| @64 +|f|o@1| |5| @64 +|f|o@1| |6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|:|2|,|3|s|u|b| @1|/|f|o> @57 diff --git a/src/testdir/dumps/Test_incsearch_substitute_06.dump b/src/testdir/dumps/Test_incsearch_substitute_06.dump new file mode 100644 index 0000000..8a66620 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_06.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |3| @64 +|f+1&&|o@1| +0&&|4| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|5| @64 +|f|o@1| |6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|:|a|b|o|v|e| |b|e|l|o|w| |b|r|o|w|s|e| |b|o|t|r| |c|o|n|f|i|r|m| |k|e@1|p|m|a|r| |k|e@1|p|a|l|t| |k|e@1|p@1|a|t| |k|e@1|p|j|u|m| |f|i|l|t|e +|r| |x@2| |h|i|d|e| |l|o|c|k|m| |l|e|f|t|a|b|o|v|e| |n|o|a|u| |n|o|s|w|a|p| |r|i|g|h|t|b|e|l| |s|a|n|d|b|o|x| |s|i|l|e|n|t| |s|i|l|e|n|t|! +| |$|t|a|b| |t|o|p| |u|n|s|i|l| |v|e|r|t| |v|e|r|b|o|s|e| |4|,|5|s|/|f|o|.> @32 diff --git a/src/testdir/dumps/Test_incsearch_substitute_07.dump b/src/testdir/dumps/Test_incsearch_substitute_07.dump new file mode 100644 index 0000000..7b4dc6e --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_07.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |4| @64 +|f|o@1| |5| @64 +|f|o@1| |6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|f|o@1| |9| @64 +|f|o@1| |1|0| @63 +|b+9&&|a|r| +8&&|1@1| @63 +|:+0&&|9|,|1@1|s|/|b|a|r> @59 diff --git a/src/testdir/dumps/Test_incsearch_substitute_08.dump b/src/testdir/dumps/Test_incsearch_substitute_08.dump new file mode 100644 index 0000000..d87e507 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_08.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |4| @64 +|f|o@1| |5| @64 +|f|o@1| |6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|f+8&&|o@1| |9| @64 +|f+0&&|o@1| |1|0| @63 +|b|a|r| |1@1| @63 +|:|9|,|1|0|s|/|b|a|r> @59 diff --git a/src/testdir/dumps/Test_incsearch_substitute_09.dump b/src/testdir/dumps/Test_incsearch_substitute_09.dump new file mode 100644 index 0000000..633e7d8 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_09.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |3| @64 +|f+8&&|o@1| |4| @64 +|f+0&&|o@1| |5| @64 +|f|o@1| |6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|f|o@1| |9| @64 +|f|o@1| |1|0| @63 +|:|6|,|7|s|/|\|v> @61 diff --git a/src/testdir/dumps/Test_incsearch_substitute_10.dump b/src/testdir/dumps/Test_incsearch_substitute_10.dump new file mode 100644 index 0000000..f98e046 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_10.dump @@ -0,0 +1,9 @@ +|f+0&#ffff4012|o@1| +0&#ffffff0|1| @64 +>f+0&#ffff4012|o@1| +0&#ffffff0|2| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|3| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|4| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|5| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|6| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|7| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|8| @64 +@52|2|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_incsearch_substitute_11.dump b/src/testdir/dumps/Test_incsearch_substitute_11.dump new file mode 100644 index 0000000..cc401be --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_11.dump @@ -0,0 +1,9 @@ +|f+1&#ffffff0|o+0&#ffff4012@1| |1| +0&#ffffff0@64 +|f+0&#ffff4012|o@1| |2| +0&#ffffff0@64 +|f+0&#ffff4012|o@1| |3| +0&#ffffff0@64 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @38|1|,|1| @11|T|o|p +|f+0&#ffff4012|o@1| |2| +0&#ffffff0@64 +|f+0&#ffff4012|o@1| |3| +0&#ffffff0@64 +|f+0&#ffff4012|o@1| |4| +0&#ffffff0@64 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @38|2|,|1| @11|1|2|% +|:+0&&|%|s|/|.> @64 diff --git a/src/testdir/dumps/Test_incsearch_substitute_12.dump b/src/testdir/dumps/Test_incsearch_substitute_12.dump new file mode 100644 index 0000000..3170e54 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_12.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |2| @64 +|f|o@1| |3| @64 +|f|o@1| |4| @64 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @38|2|,|1| @11|1|2|% +|f+0&&|o@1| |2| @64 +|f|o@1| |3| @64 +|f|o@1| |4| @64 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @38|2|,|1| @11|1|2|% +|:+0&&|%|s|/> @65 diff --git a/src/testdir/dumps/Test_incsearch_substitute_13.dump b/src/testdir/dumps/Test_incsearch_substitute_13.dump new file mode 100644 index 0000000..32feb55 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_13.dump @@ -0,0 +1,9 @@ +>f+0&#ffffff0|o@1| |2| @64 +|f|o@1| |3| @64 +|f|o@1| |4| @64 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @38|2|,|1| @11|1|2|% +|f+0&&|o@1| |2| @64 +|f|o@1| |3| @64 +|f|o@1| |4| @64 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @38|2|,|1| @11|1|2|% +| +0&&@69 diff --git a/src/testdir/dumps/Test_incsearch_substitute_14.dump b/src/testdir/dumps/Test_incsearch_substitute_14.dump new file mode 100644 index 0000000..c319856 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_14.dump @@ -0,0 +1,9 @@ +|a+1&#ffffff0|s+0&&|d|f|a+0&#ffff4012|s+0&#ffffff0|d|f| @61 +|~+0#4040ff13&| @68 +|~| @68 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @38|1|,|1| @11|A|l@1 +|b+0&&|s|d|f|b|s|d|f| @61 +|~+0#4040ff13&| @68 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @38|1|,|1| @11|A|l@1 +|:+0&&|'|<|,|'|>|s|/|a|/|b|/|g> @56 +@70 diff --git a/src/testdir/dumps/Test_incsearch_substitute_15.dump b/src/testdir/dumps/Test_incsearch_substitute_15.dump new file mode 100644 index 0000000..41dd358 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_15.dump @@ -0,0 +1,4 @@ +|h+0&#ffffff0|e+1&&|l@1|o|/|t|h|e|r+0&&|e| @8 +|~+0#4040ff13&| @18 +|~| @18 +|:+0#0000000&|%|s|;|e|l@1|o|/|t|h|e> @7 diff --git a/src/testdir/dumps/Test_incsearch_vimgrep_01.dump b/src/testdir/dumps/Test_incsearch_vimgrep_01.dump new file mode 100644 index 0000000..955d030 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_vimgrep_01.dump @@ -0,0 +1,9 @@ +|a+0&#ffffff0|n|o|t|h|e|r| |o+1&&|n|e+0&&| |2| @56 +|t|h|a|t| |o+0&#ffff4012|n|e+0&#ffffff0| |3| @59 +|t|h|e| |o+0&#ffff4012|n|e+0&#ffffff0| |1| @60 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|~| @68 +|~| @68 +|:+0#0000000&|v|i|m|g|r|e|p| |o|n> @58 diff --git a/src/testdir/dumps/Test_incsearch_vimgrep_02.dump b/src/testdir/dumps/Test_incsearch_vimgrep_02.dump new file mode 100644 index 0000000..a5d94ea --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_vimgrep_02.dump @@ -0,0 +1,9 @@ +|a+0&#ffffff0|n|o|t|h|e|r| |o+1&&|n|e+0&&| |2| @56 +|t|h|a|t| |o+0&#ffff4012|n|e+0&#ffffff0| |3| @59 +|t|h|e| |o+0&#ffff4012|n|e+0&#ffffff0| |1| @60 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|~| @68 +|~| @68 +|:+0#0000000&|v|i|m|g| |/|o|n|/| |*|.|t|x|t> @53 diff --git a/src/testdir/dumps/Test_incsearch_vimgrep_03.dump b/src/testdir/dumps/Test_incsearch_vimgrep_03.dump new file mode 100644 index 0000000..038ceb9 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_vimgrep_03.dump @@ -0,0 +1,9 @@ +|a+0&#ffffff0|n|o|t|h|e|r| |o+1&&|n|e+0&&| |2| @56 +|t|h|a|t| |o+0&#ffff4012|n|e+0&#ffffff0| |3| @59 +|t|h|e| |o+0&#ffff4012|n|e+0&#ffffff0| |1| @60 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|~| @68 +|~| @68 +|:+0#0000000&|v|i|m|g|r|e|p|a|d@1| |"|\|<|o|n> @52 diff --git a/src/testdir/dumps/Test_incsearch_vimgrep_04.dump b/src/testdir/dumps/Test_incsearch_vimgrep_04.dump new file mode 100644 index 0000000..92dd78d --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_vimgrep_04.dump @@ -0,0 +1,9 @@ +|a+0&#ffffff0|n|o|t|h|e|r| |o|n|e| |2| @56 +|t+1&&|h|a|t+0&&| |o|n|e| |3| @59 +|t|h|e| |o|n|e| |1| @60 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|~| @68 +|~| @68 +|:+0#0000000&|l|v| |"|t|h|a> @61 diff --git a/src/testdir/dumps/Test_incsearch_vimgrep_05.dump b/src/testdir/dumps/Test_incsearch_vimgrep_05.dump new file mode 100644 index 0000000..e11ff57 --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_vimgrep_05.dump @@ -0,0 +1,9 @@ +|a+0&#ffffff0|n|o|t+1&&|h|e|r+0&&| |o|n|e| |2| @56 +|t|h|a|t| |o|n|e| |3| @59 +|t+0&#ffff4012|h|e| +0&#ffffff0|o|n|e| |1| @60 +|~+0#4040ff13&| @68 +|~| @68 +|~| @68 +|~| @68 +|~| @68 +|:+0#0000000&|l|v|i|m|g|r|e|p|a| |"|t|h|e|"| |*@1|/|*|.|t|x|t> @44 diff --git a/src/testdir/dumps/Test_job_buffer_scroll_1.dump b/src/testdir/dumps/Test_job_buffer_scroll_1.dump new file mode 100644 index 0000000..11abe60 --- /dev/null +++ b/src/testdir/dumps/Test_job_buffer_scroll_1.dump @@ -0,0 +1,10 @@ +|s+0&#ffffff0|o|m|e|t|e|x|t| @66 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|X+1#0000000&|s|c|r|o|l@1|b|u|f@1|e|r| |[|+|]| @39|1|,|1| @11|A|l@1 +> +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|-+0&&@1|N|o| |l|i|n|e|s| |i|n| |b|u|f@1|e|r|-@1| @52 diff --git a/src/testdir/dumps/Test_keytyped_in_nested_func.dump b/src/testdir/dumps/Test_keytyped_in_nested_func.dump new file mode 100644 index 0000000..46bebea --- /dev/null +++ b/src/testdir/dumps/Test_keytyped_in_nested_func.dump @@ -0,0 +1,6 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|"> @72 diff --git a/src/testdir/dumps/Test_linebreak_reset_restore_1.dump b/src/testdir/dumps/Test_linebreak_reset_restore_1.dump new file mode 100644 index 0000000..5c6db4f --- /dev/null +++ b/src/testdir/dumps/Test_linebreak_reset_restore_1.dump @@ -0,0 +1,8 @@ +|a+0&#ffffff0@64| @9 +|b@9| > @63 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|E+0#ffffff16#e000002|4|9|0|:| |N|o| |f|o|l|d| |f|o|u|n|d| +0#0000000#ffffff0@37|1|,|7|8|-|8|7| @6|A|l@1| diff --git a/src/testdir/dumps/Test_listchars_01.dump b/src/testdir/dumps/Test_listchars_01.dump new file mode 100644 index 0000000..72fff58 --- /dev/null +++ b/src/testdir/dumps/Test_listchars_01.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @13||+1&&| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0|>+0#4040ff13&||+1#0000000&| +0#0000e05#a8a8a8255@2>a+0#0000000#ffffff0@2| @26 +| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@16||+1&&| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@1||+1&&| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@29 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @15||+1&&| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| ||+1&&| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @28 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @10||+1&&| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0|>+0#4040ff13&||+1#0000000&| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @23 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31 +|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31 +|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31 +|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<|]| |1|,| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @3|1|,|1| @9|A|l@1 +| +0&&@59 diff --git a/src/testdir/dumps/Test_listchars_02.dump b/src/testdir/dumps/Test_listchars_02.dump new file mode 100644 index 0000000..b7be52e --- /dev/null +++ b/src/testdir/dumps/Test_listchars_02.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @13||+1&&| +0#0000e05#a8a8a8255@2|>+0#4040ff13#ffffff0||+1#0000000&| +0#0000e05#a8a8a8255@2>a+0#0000000#ffffff0@2| @27 +| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@16||+1&&| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0||+1&&| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@30 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @15||+1&&| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0||+1&&| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @29 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @10||+1&&| +0#0000e05#a8a8a8255@2|>+0#4040ff13#ffffff0||+1#0000000&| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @24 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @2||+1#0000000&|~+0#4040ff13&| @32 +|~| @18||+1#0000000&|~+0#4040ff13&| @2||+1#0000000&|~+0#4040ff13&| @32 +|~| @18||+1#0000000&|~+0#4040ff13&| @2||+1#0000000&|~+0#4040ff13&| @32 +|~| @18||+1#0000000&|~+0#4040ff13&| @2||+1#0000000&|~+0#4040ff13&| @32 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<| |1|,| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @3|1|,|1| @10|A|l@1 +| +0&&@59 diff --git a/src/testdir/dumps/Test_listchars_03.dump b/src/testdir/dumps/Test_listchars_03.dump new file mode 100644 index 0000000..13aca6d --- /dev/null +++ b/src/testdir/dumps/Test_listchars_03.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @13||+1&&| +0#0000e05#a8a8a8255@2||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2>a+0#0000000#ffffff0@2| @28 +| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@16||+1&&| +0#0000e05#a8a8a8255@2||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@31 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @15||+1&&| +0#0000e05#a8a8a8255@2||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @30 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @10||+1&&| +0#0000e05#a8a8a8255@2||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @25 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @1||+1#0000000&|~+0#4040ff13&| @33 +|~| @18||+1#0000000&|~+0#4040ff13&| @1||+1#0000000&|~+0#4040ff13&| @33 +|~| @18||+1#0000000&|~+0#4040ff13&| @1||+1#0000000&|~+0#4040ff13&| @33 +|~| @18||+1#0000000&|~+0#4040ff13&| @1||+1#0000000&|~+0#4040ff13&| @33 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<| |1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @4|1|,|1| @10|A|l@1 +| +0&&@59 diff --git a/src/testdir/dumps/Test_listchars_04.dump b/src/testdir/dumps/Test_listchars_04.dump new file mode 100644 index 0000000..e62c5af --- /dev/null +++ b/src/testdir/dumps/Test_listchars_04.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @13||+1&&| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2>a+0#0000000#ffffff0@2| @29 +| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@16||+1&&| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@32 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @15||+1&&| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @31 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @10||+1&&| +0#0000e05#a8a8a8255@1||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @26 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| ||+1#0000000&|~+0#4040ff13&| @34 +|~| @18||+1#0000000&|~+0#4040ff13&| ||+1#0000000&|~+0#4040ff13&| @34 +|~| @18||+1#0000000&|~+0#4040ff13&| ||+1#0000000&|~+0#4040ff13&| @34 +|~| @18||+1#0000000&|~+0#4040ff13&| ||+1#0000000&|~+0#4040ff13&| @34 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<|1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @4|1|,|1| @11|A|l@1 +| +0&&@59 diff --git a/src/testdir/dumps/Test_listchars_05.dump b/src/testdir/dumps/Test_listchars_05.dump new file mode 100644 index 0000000..89b759f --- /dev/null +++ b/src/testdir/dumps/Test_listchars_05.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @13||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2>a+0#0000000#ffffff0@2| @30 +| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@16||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@33 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @15||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @32 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @10||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @27 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35 +|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35 +|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35 +|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +| +0&&@59 diff --git a/src/testdir/dumps/Test_listchars_06.dump b/src/testdir/dumps/Test_listchars_06.dump new file mode 100644 index 0000000..9f4b5d3 --- /dev/null +++ b/src/testdir/dumps/Test_listchars_06.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @13||+1&&| +0#0000e05#a8a8a8255@4||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @26 +| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@16||+1&&| +0#0000e05#a8a8a8255@4||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@29 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @15||+1&&| +0#0000e05#a8a8a8255@4||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @28 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @10||+1&&| +0#0000e05#a8a8a8255@3> ||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @23 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31 +|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31 +|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31 +|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<+3&&|]| |1|,| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @3|1|,|1| @9|A|l@1 +|:+0&&|s|e|t| |n|o|w|r|a|p| |f|o|l|d|c|o|l|u|m|n|=|4| @35 diff --git a/src/testdir/dumps/Test_listchars_07.dump b/src/testdir/dumps/Test_listchars_07.dump new file mode 100644 index 0000000..ad81656 --- /dev/null +++ b/src/testdir/dumps/Test_listchars_07.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @13||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @30 +| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@16||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@33 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @15||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @32 +| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @10||+1&&> +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @27 +|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35 +|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35 +|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35 +|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35 +|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<+3&&| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1 +|:+0&&|s|e|t| |n|o|w|r|a|p| |f|o|l|d|c|o|l|u|m|n|=|4| @35 diff --git a/src/testdir/dumps/Test_long_file_name_1.dump b/src/testdir/dumps/Test_long_file_name_1.dump new file mode 100644 index 0000000..1dcafc3 --- /dev/null +++ b/src/testdir/dumps/Test_long_file_name_1.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|<+0#0000000&|x@64|"| |0|L|,| |0|B| diff --git a/src/testdir/dumps/Test_long_text_with_padding_1.dump b/src/testdir/dumps/Test_long_text_with_padding_1.dump new file mode 100644 index 0000000..18ca00c --- /dev/null +++ b/src/testdir/dumps/Test_long_text_with_padding_1.dump @@ -0,0 +1,8 @@ +|f+0&#ffffff0|i|r|s|t| |l|i|n|e| @49 +@3|a+0&#ffd7ff255|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|… +| +0&#ffffff0@29|m+0&#ffd7ff255|o|r|e| |m|o|r|e| |m|o|r|e| |m|o|r|e| |m|o|r|e| |m|o|r|e|… +|s+0&#ffffff0|e|c|o|n|d| >l|i|n|e| @48 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|8| @10|A|l@1| diff --git a/src/testdir/dumps/Test_long_text_with_padding_2.dump b/src/testdir/dumps/Test_long_text_with_padding_2.dump new file mode 100644 index 0000000..981613f --- /dev/null +++ b/src/testdir/dumps/Test_long_text_with_padding_2.dump @@ -0,0 +1,8 @@ +|f+0&#ffffff0|i|r|s|t| |l|i|n|e|$+0#4040ff13&| +0#0000000&@48 +@3|a+0&#ffd7ff255|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|t|e|r| |a|f|… +| +0&#ffffff0@29|m+0&#ffd7ff255|o|r|e| |m|o|r|e| |m|o|r|e| |m|o|r|e| |m|o|r|e| |m|o|r|e|… +|s+0&#ffffff0|e|c|o|n|d| >l|i|n|e|$+0#4040ff13&| +0#0000000&@47 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|:+0#0000000&|s|e|t| |l|i|s|t| @32|2|,|8| @10|A|l@1| diff --git a/src/testdir/dumps/Test_map_expr_1.dump b/src/testdir/dumps/Test_map_expr_1.dump new file mode 100644 index 0000000..15b772e --- /dev/null +++ b/src/testdir/dumps/Test_map_expr_1.dump @@ -0,0 +1,10 @@ +|o+0&#ffffff0|n|e| @71 +>t|w|o| @71 +|t|h|r|e@1| @69 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+0#ffffff16#e000002|o|n|]| @70 +| +0#0000000#ffffff0@74 diff --git a/src/testdir/dumps/Test_map_expr_2.dump b/src/testdir/dumps/Test_map_expr_2.dump new file mode 100644 index 0000000..270a233 --- /dev/null +++ b/src/testdir/dumps/Test_map_expr_2.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_map_expr_3.dump b/src/testdir/dumps/Test_map_expr_3.dump new file mode 100644 index 0000000..6404e8c --- /dev/null +++ b/src/testdir/dumps/Test_map_expr_3.dump @@ -0,0 +1,10 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|a|b|c| @70 +|E+0#ffffff16#e000002|r@1|o|r| |d|e|t|e|c|t|e|d| |w|h|i|l|e| |p|r|o|c|e|s@1|i|n|g| |f|u|n|c|t|i|o|n| |F|u|n|c|[|1|]|.@1|f|u|n|c|t|i|o|n| |F|u|n|c|:| +0#0000000#ffffff0@10 +|l+0#af5f00255&|i|n|e| @3|1|:| +0#0000000&@64 +|E+0#ffffff16#e000002|6|0|5|:| |E|x|c|e|p|t|i|o|n| |n|o|t| |c|a|u|g|h|t|:| |t|e|s|t| +0#0000000#ffffff0@42 +|:|a|b|c> @70 diff --git a/src/testdir/dumps/Test_map_expr_4.dump b/src/testdir/dumps/Test_map_expr_4.dump new file mode 100644 index 0000000..270a233 --- /dev/null +++ b/src/testdir/dumps/Test_map_expr_4.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_map_list_1.dump b/src/testdir/dumps/Test_map_list_1.dump new file mode 100644 index 0000000..64bdcf9 --- /dev/null +++ b/src/testdir/dumps/Test_map_list_1.dump @@ -0,0 +1,6 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|n+0#0000000&| @1|a| @12|b| @38|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_match_linebreak.dump b/src/testdir/dumps/Test_match_linebreak.dump new file mode 100644 index 0000000..33be5b3 --- /dev/null +++ b/src/testdir/dumps/Test_match_linebreak.dump @@ -0,0 +1,10 @@ +>x+0&#ffffff0@49|]+0#ffffff16#e000002| +0#0000000#ffffff0@23 +|x@69| @4 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_match_tab_linebreak.dump b/src/testdir/dumps/Test_match_tab_linebreak.dump new file mode 100644 index 0000000..9a525d1 --- /dev/null +++ b/src/testdir/dumps/Test_match_tab_linebreak.dump @@ -0,0 +1,10 @@ +| +0#ffffff16#e000002@6> |i+0#0000000#ffffff0|x| @64 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1|-|8| @8|A|l@1| diff --git a/src/testdir/dumps/Test_match_with_incsearch_1.dump b/src/testdir/dumps/Test_match_with_incsearch_1.dump new file mode 100644 index 0000000..8a9d30c --- /dev/null +++ b/src/testdir/dumps/Test_match_with_incsearch_1.dump @@ -0,0 +1,6 @@ +>0+0&#ffffff0| @73 +|1| @73 +|2+0#ffffff16#e000002| +0#0000000#ffffff0@73 +|3| @73 +|4| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_match_with_incsearch_2.dump b/src/testdir/dumps/Test_match_with_incsearch_2.dump new file mode 100644 index 0000000..9e9868b --- /dev/null +++ b/src/testdir/dumps/Test_match_with_incsearch_2.dump @@ -0,0 +1,6 @@ +|0+1&#ffffff0| +0&&@73 +|1| @73 +|2+0#ffffff16#e000002| +0#0000000#ffffff0@73 +|3| @73 +|4| @73 +|:|s|/|0> @70 diff --git a/src/testdir/dumps/Test_matchadd_1.dump b/src/testdir/dumps/Test_matchadd_1.dump new file mode 100644 index 0000000..d07507b --- /dev/null +++ b/src/testdir/dumps/Test_matchadd_1.dump @@ -0,0 +1,12 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|H+0&#ffff4012|e|l@1|o| +0&#ffffff0|V|i|m| |w+0#ffffff16#ff404010|o|r|l|d| +0#0000000#ffffff0@59 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1 +|:+0&&| @73 diff --git a/src/testdir/dumps/Test_matchaddpos_1.dump b/src/testdir/dumps/Test_matchaddpos_1.dump new file mode 100644 index 0000000..b282b24 --- /dev/null +++ b/src/testdir/dumps/Test_matchaddpos_1.dump @@ -0,0 +1,14 @@ +>1+0&#ffff4012|2+0&#ffffff0|3|4|5|6|7|8|9|0|1|2|3| @61 +|1|2+0&#ffff4012|3+0&#ffffff0|4|5|6|7|8|9|0|1|2|3| @61 +|1|2|3+0&#ffff4012|4+0&#ffffff0|5|6|7|8|9|0|1|2|3| @61 +|1|2|3|4+0&#ffff4012|5+0&#ffffff0|6|7|8|9|0|1|2|3| @61 +|1|2|3|4|5+0&#ffff4012|6+0&#ffffff0|7|8|9|0|1|2|3| @61 +|1|2|3|4|5|6+0&#ffff4012|7+0&#ffffff0|8|9|0|1|2|3| @61 +|1|2|3|4|5|6|7+0&#ffff4012|8+0&#ffffff0|9|0|1|2|3| @61 +|1|2|3|4|5|6|7|8+0&#ffff4012|9+0&#ffffff0|0|1|2|3| @61 +|1|2|3|4|5|6|7|8|9+0&#ffff4012|0+0&#ffffff0|1|2|3| @61 +|1|2|3|4|5|6|7|8|9|0+0&#ffff4012|1+0&#ffffff0|2|3| @61 +|1|2|3|4|5|6|7|8|9|0|1+0&#ffff4012|2+0&#ffffff0|3| @61 +|1|2|3|4|5|6|7|8|9|0|1|2+0&#ffff4012|3+0&#ffffff0| @61 +|1|2|3|4|5|6|7|8|9|0|1|2|3| @61 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_matchclear_1.dump b/src/testdir/dumps/Test_matchclear_1.dump new file mode 100644 index 0000000..164bfd4 --- /dev/null +++ b/src/testdir/dumps/Test_matchclear_1.dump @@ -0,0 +1,12 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|H+0&&|e|l@1|o| |V|i|m| |w|o|r|l|d| @59 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1 +|:+0&&|c|a|l@1| |c|l|e|a|r|m|a|t|c|h|e|s|(|w|i|n|i|d|)| @49 diff --git a/src/testdir/dumps/Test_matchdelete_1.dump b/src/testdir/dumps/Test_matchdelete_1.dump new file mode 100644 index 0000000..06b16b5 --- /dev/null +++ b/src/testdir/dumps/Test_matchdelete_1.dump @@ -0,0 +1,12 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|H+0&&|e|l@1|o| |V|i|m| |w|o|r|l|d| @59 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1 +|:+0&&|c|a|l@1| |m|a|t|c|h|d|e|l|e|t|e|(|m|i|d|,| |w|i|n|i|d|)| @45 diff --git a/src/testdir/dumps/Test_matchparen_clear_highlight_1.dump b/src/testdir/dumps/Test_matchparen_clear_highlight_1.dump new file mode 100644 index 0000000..1a96275 --- /dev/null +++ b/src/testdir/dumps/Test_matchparen_clear_highlight_1.dump @@ -0,0 +1,5 @@ +>(+0(ffff15|)| +0&#ffffff0@72 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_matchparen_clear_highlight_2.dump b/src/testdir/dumps/Test_matchparen_clear_highlight_2.dump new file mode 100644 index 0000000..c3f93fa --- /dev/null +++ b/src/testdir/dumps/Test_matchparen_clear_highlight_2.dump @@ -0,0 +1,5 @@ +>a+0&#ffffff0@1| @72 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_misplaced_type.dump b/src/testdir/dumps/Test_misplaced_type.dump new file mode 100644 index 0000000..afb82a0 --- /dev/null +++ b/src/testdir/dumps/Test_misplaced_type.dump @@ -0,0 +1,6 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|E+0#ffffff16#e000002|1|2|7|2|:| |U|s|i|n|g| |t|y|p|e| |n|o|t| |i|n| |a| |s|c|r|i|p|t| |c|o|n|t|e|x|t|:| |:| |s|t|r|i|n|g| +0#0000000#ffffff0@23 +|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@35 diff --git a/src/testdir/dumps/Test_mode_updated_1.dump b/src/testdir/dumps/Test_mode_updated_1.dump new file mode 100644 index 0000000..6bbded4 --- /dev/null +++ b/src/testdir/dumps/Test_mode_updated_1.dump @@ -0,0 +1,5 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_more_scrollback_1.dump b/src/testdir/dumps/Test_more_scrollback_1.dump new file mode 100644 index 0000000..619f5a7 --- /dev/null +++ b/src/testdir/dumps/Test_more_scrollback_1.dump @@ -0,0 +1,10 @@ +|0+0#ffffff16#0000001| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|-+0#00e0003&@1| |M|o|r|e| |-@1> +0#ffffff16&@64 diff --git a/src/testdir/dumps/Test_more_scrollback_2.dump b/src/testdir/dumps/Test_more_scrollback_2.dump new file mode 100644 index 0000000..619f5a7 --- /dev/null +++ b/src/testdir/dumps/Test_more_scrollback_2.dump @@ -0,0 +1,10 @@ +|0+0#ffffff16#0000001| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|-+0#00e0003&@1| |M|o|r|e| |-@1> +0#ffffff16&@64 diff --git a/src/testdir/dumps/Test_move_undo_1.dump b/src/testdir/dumps/Test_move_undo_1.dump new file mode 100644 index 0000000..71e3120 --- /dev/null +++ b/src/testdir/dumps/Test_move_undo_1.dump @@ -0,0 +1,10 @@ +|S+0&#ffffff0|e|c|o|n|d| @53 +>F|i|r|s|t| @54 +|T|h|i|r|d| @54 +|F|o|u|r|t|h| @53 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|m|o|v|e| |+|1| @33|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_move_undo_2.dump b/src/testdir/dumps/Test_move_undo_2.dump new file mode 100644 index 0000000..ff0bc1a --- /dev/null +++ b/src/testdir/dumps/Test_move_undo_2.dump @@ -0,0 +1,10 @@ +>F+0&#ffffff0|i|r|s|t| @54 +|S|e|c|o|n|d| @53 +|T|h|i|r|d| @54 +|F|o|u|r|t|h| @53 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_popup_and_previewwindow_01.dump b/src/testdir/dumps/Test_popup_and_previewwindow_01.dump new file mode 100644 index 0000000..b235c7d --- /dev/null +++ b/src/testdir/dumps/Test_popup_and_previewwindow_01.dump @@ -0,0 +1,20 @@ +|a+0&#ffffff0|b|0| @71 +|a|b|1| @71 +|a|b|2| @71 +|a|b|3| @71 +|a|b|4| @71 +|a|b|5| @71 +|a|b|6| @71 +|a|b|7| @71 +|a|b|8| @71 +|a+0#0000001#e0e0e08|b|0| @11| +0#0000000#0000001|e+1&#ffffff0|w|]|[|+|]| @34|1|,|1| @11|T|o|p +|a+0#0000001#ffd7ff255|b|1| @11| +0#0000000#0000001| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255|b|2| @11| +0#0000000#0000001| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255|b|3| @11| +0#0000000#0000001| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255|b|4| @11| +0#0000000#a8a8a8255| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255|b|5| @11| +0#0000000#a8a8a8255| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255|b|6| @11| +0#0000000#a8a8a8255| +0&#ffffff0@58 +|a|b|0> @71 +|~+0#4040ff13&| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1@1|,|1| @10|B|o|t +|-+2&&@1| |K|e|y|w|o|r|d| |L|o|c|a|l| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |1|0| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popup_command_01.dump b/src/testdir/dumps/Test_popup_command_01.dump new file mode 100644 index 0000000..8d0cd9c --- /dev/null +++ b/src/testdir/dumps/Test_popup_command_01.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| @51 +|a|n|d| |o|n|e| |t|w|o| >X|t|h|r|e@1| |f|o|u|r| |f|i|v|e| @46 +|o|n|e| |m|o|r|e| |t|w| +0#0000001#ffd7ff255|U|n|d|o| @12| +0#0000000#ffffff0@45 +|~+0#4040ff13&| @9| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|P|a|s|t|e| @11| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |W|o|r|d| @5| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |S|e|n|t|e|n|c|e| @1| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |P|a|r|a|g|r|a|p|h| | +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |L|i|n|e| @5| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |B|l|o|c|k| @4| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |A|l@1| @6| +0#4040ff13#ffffff0@45 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|p|o|p|u|p| |P|o|p|U|p| @62 diff --git a/src/testdir/dumps/Test_popup_command_02.dump b/src/testdir/dumps/Test_popup_command_02.dump new file mode 100644 index 0000000..e33ea4d --- /dev/null +++ b/src/testdir/dumps/Test_popup_command_02.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| @51 +|a|n|d| |o|n|e| |t|w|o| >X|t|h|r|e@1| |f|o|u|r| |f|i|v|e| @46 +|o|n|e| |m|o|r|e| |t|w| +0#0000001#ffd7ff255|U|n|d|o| @12| +0#0000000#ffffff0@45 +|~+0#4040ff13&| @9| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#e0e0e08|P|a|s|t|e| @11| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |W|o|r|d| @5| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |S|e|n|t|e|n|c|e| @1| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |P|a|r|a|g|r|a|p|h| | +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |L|i|n|e| @5| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |B|l|o|c|k| @4| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |A|l@1| @6| +0#4040ff13#ffffff0@45 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|p|o|p|u|p| |P|o|p|U|p| @62 diff --git a/src/testdir/dumps/Test_popup_command_03.dump b/src/testdir/dumps/Test_popup_command_03.dump new file mode 100644 index 0000000..fa2ac70 --- /dev/null +++ b/src/testdir/dumps/Test_popup_command_03.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| @51 +|a|n|d| |o|n|e| |t|w|o| |X+0&#e0e0e08|t|h|r|e@1> +0&#ffffff0|f|o|u|r| |f|i|v|e| @46 +|o|n|e| |m|o|r|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| @46 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@34|7| @8|2|,|1|9| @9|A|l@1| diff --git a/src/testdir/dumps/Test_popup_command_04.dump b/src/testdir/dumps/Test_popup_command_04.dump new file mode 100644 index 0000000..c14576c --- /dev/null +++ b/src/testdir/dumps/Test_popup_command_04.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| @51 +|a|n|d| |o|n|e| |t|w|o| |X|t|h|r|e@1| |f|o|u|r| |f|i|v|e| @46 +|o|n|e| |m|o|r|e| |t|w| +0#0000001#ffd7ff255|U|n|d|o| @12| +0#0000000#ffffff0@45 +|~+0#4040ff13&| @9| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|P|a|s|t|e| @11| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |W|o|r|d| @5| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |S|e|n|t|e|n|c|e| @1| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |P|a|r|a|g|r|a|p|h| | +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |L|i|n|e| @5| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |B|l|o|c|k| @4| +0#4040ff13#ffffff0@45 +|~| @9| +0#0000001#ffd7ff255|S|e|l|e|c|t| |A|l@1| @6| +0#4040ff13#ffffff0@45 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|c+0#0000000&|h|a|n|g|e|d> @67 diff --git a/src/testdir/dumps/Test_popup_command_05.dump b/src/testdir/dumps/Test_popup_command_05.dump new file mode 100644 index 0000000..de1c95e --- /dev/null +++ b/src/testdir/dumps/Test_popup_command_05.dump @@ -0,0 +1,20 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| @51 +|a|n|d| |o|n|e| |t|w|o| >X|t|h|r|e@1| |f|o|u|r| |f|i|v|e| @46 +|o|n|e| |m|o|r|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| @46 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|p+0#0000000&|a|s|t|e|d| @50|2|,|1|3| @9|A|l@1| diff --git a/src/testdir/dumps/Test_popup_position_01.dump b/src/testdir/dumps/Test_popup_position_01.dump new file mode 100644 index 0000000..43900fb --- /dev/null +++ b/src/testdir/dumps/Test_popup_position_01.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|a| @5||+1&&|1+0&&|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|a| @5 +|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|b| @5||+1&&|1+0&&|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|b| @5 +@12|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5||+1&&| +0&&@11|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5 +|6|7|8|9|_|a> @30||+1&&|6+0&&|7|8|9|_|a| @30 +|~+0#4040ff13&| @9| +0#0000001#e0e0e08|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|a| | +0#4040ff13#ffffff0@30 +|~| @9| +0#0000001#ffd7ff255|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|b| | +0#4040ff13#ffffff0@30 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 diff --git a/src/testdir/dumps/Test_popup_position_02.dump b/src/testdir/dumps/Test_popup_position_02.dump new file mode 100644 index 0000000..c3613c3 --- /dev/null +++ b/src/testdir/dumps/Test_popup_position_02.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|a| @5||+1&&|1+0&&|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|a| @5 +|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|b| @5||+1&&|1+0&&|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|b| @5 +@12|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5||+1&&| +0&&@11|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5 +|6|7|8|9|_|a| @30||+1&&|6+0&&|7|8|9|_|a> @30 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @9| +0#0000001#e0e0e08|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @9| +0#0000001#ffd7ff255|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 diff --git a/src/testdir/dumps/Test_popup_position_03.dump b/src/testdir/dumps/Test_popup_position_03.dump new file mode 100644 index 0000000..650cb7f --- /dev/null +++ b/src/testdir/dumps/Test_popup_position_03.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|a| @5||+1&&|1+0&&|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|a| @5 +|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|b| @5||+1&&|1+0&&|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|b| @5 +@12|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5||+1&&| +0&&@11|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5 +|6|7|8|9|_|a| @30||+1&&|6+0&&|7|8|9|_|a> @30 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @4| +0#0000001#e0e0e08|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_ +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @4| +0#0000001#ffd7ff255|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_ +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 diff --git a/src/testdir/dumps/Test_popup_position_04.dump b/src/testdir/dumps/Test_popup_position_04.dump new file mode 100644 index 0000000..1793b23 --- /dev/null +++ b/src/testdir/dumps/Test_popup_position_04.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7||+1&&|1+0&&|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7 +|8|9|_|a| @32||+1&&|8+0&&|9|_|a| @32 +|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7||+1&&|1+0&&|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7 +|8|9|_|b| @32||+1&&|8+0&&|9|_|b| @32 +@12|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5||+1&&| +0&&@11|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5 +|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|a| @20||+1&&|6+0&&|7|8|9|_|1|2|3|4|5|6|7|8|9|_|a> @20 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @9| +0#0000001#e0e0e08|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @9| +0#0000001#ffd7ff255|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5|6|7|8|9|_|1|2|3|4|5 +|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_01.dump b/src/testdir/dumps/Test_popup_prop_not_visible_01.dump new file mode 100644 index 0000000..dbcfda1 --- /dev/null +++ b/src/testdir/dumps/Test_popup_prop_not_visible_01.dump @@ -0,0 +1,10 @@ +| +2&#ffffff0|2+2#e000e06&|++2#0000000&| |[|N|o| |N|a|m|e|]| | +1&&@60 +| +0&&@42||+1&&> +0&&@30 +|~+0#4040ff13&| @41||+1#0000000&|s+0&&|o|m|e| |t|e|x|t|a+0#ffffff16#e000002|t@1|a|c|h|e|d| |t|o| |"|s|o|m|e|"| +0#0000000#ffffff0@3 +|~+0#4040ff13&| @41||+1#0000000&| +0&&@30 +|~+0#4040ff13&| @41||+1#0000000&|o+0&&|t|h|e|r| |t|e|x|t|a+0#ffffff16#e000002|t@1|a|c|h|e|d| |t|o| |"|o|t|h|e|r|"| +0#0000000#ffffff0@1 +|~+0#4040ff13&| @41||+1#0000000&|~+0#4040ff13&| @29 +|~| @41||+1#0000000&|~+0#4040ff13&| @29 +|~| @41||+1#0000000&|~+0#4040ff13&| @29 +|[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_01a.dump b/src/testdir/dumps/Test_popup_prop_not_visible_01a.dump new file mode 100644 index 0000000..0b97cb8 --- /dev/null +++ b/src/testdir/dumps/Test_popup_prop_not_visible_01a.dump @@ -0,0 +1,10 @@ +| +2&#ffffff0|2+2#e000e06&|++2#0000000&| |[|N|o| |N|a|m|e|]| | +1&&@60 +| +0&&@42||+1&&> +0&&@30 +|~+0#4040ff13&| @41||+1#0000000&|s+0&&|o|m|e| |t|e|x|t| @21 +|~+0#4040ff13&| @41||+1#0000000&| +0&&@30 +|~+0#4040ff13&| @41||+1#0000000&|o+0&&|t|h|e|r| |t|e|x|t|a+0#ffffff16#e000002|t@1|a|c|h|e|d| |t|o| |"|o|t|h|e|r|"| +0#0000000#ffffff0@1 +|~+0#4040ff13&| @41||+1#0000000&|~+0#4040ff13&| @29 +|~| @41||+1#0000000&|~+0#4040ff13&| @29 +|~| @41||+1#0000000&|~+0#4040ff13&| @29 +|[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1 +|:+0&&|c|a|l@1| |p|o|p|u|p|_|h|i|d|e|(|g|:|s|o|m|e|_|i|d|)| @47 diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_01b.dump b/src/testdir/dumps/Test_popup_prop_not_visible_01b.dump new file mode 100644 index 0000000..e8a5c2e --- /dev/null +++ b/src/testdir/dumps/Test_popup_prop_not_visible_01b.dump @@ -0,0 +1,10 @@ +| +2&#ffffff0|2+2#e000e06&|++2#0000000&| |[|N|o| |N|a|m|e|]| | +1&&@60 +| +0&&@42||+1&&> +0&&@30 +|~+0#4040ff13&| @41||+1#0000000&|s+0&&|o|m|e| |t|e|x|t|a+0#ffffff16#e000002|t@1|a|c|h|e|d| |t|o| |"|s|o|m|e|"| +0#0000000#ffffff0@3 +|~+0#4040ff13&| @41||+1#0000000&| +0&&@30 +|~+0#4040ff13&| @41||+1#0000000&|o+0&&|t|h|e|r| |t|e|x|t|a+0#ffffff16#e000002|t@1|a|c|h|e|d| |t|o| |"|o|t|h|e|r|"| +0#0000000#ffffff0@1 +|~+0#4040ff13&| @41||+1#0000000&|~+0#4040ff13&| @29 +|~| @41||+1#0000000&|~+0#4040ff13&| @29 +|~| @41||+1#0000000&|~+0#4040ff13&| @29 +|[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1 +|:+0&&|c|a|l@1| |p|o|p|u|p|_|s|h|o|w|(|g|:|s|o|m|e|_|i|d|)| @47 diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_02.dump b/src/testdir/dumps/Test_popup_prop_not_visible_02.dump new file mode 100644 index 0000000..1d1a553 --- /dev/null +++ b/src/testdir/dumps/Test_popup_prop_not_visible_02.dump @@ -0,0 +1,10 @@ +| +2&#ffffff0|2+2#e000e06&|++2#0000000&| |[|N|o| |N|a|m|e|]| | +1&&@60 +| +0&&@56||+1&&> +0&&@16 +|~+0#4040ff13&| @55||+1#0000000&|s+0&&|o|m|e| |t|e|x|t|a+0#ffffff16#e000002|t@1|a|c|h|e|d +|~+0#4040ff13#ffffff0| @55||+1#0000000&| +0&&@16 +|~+0#4040ff13&| @54|a+0#ffffff16#e000002|t@1|a|c|h|e|d| |t|o| |"|o|t|h|e|r|" +|~+0#4040ff13#ffffff0| @55||+1#0000000&|~+0#4040ff13&| @15 +|~| @55||+1#0000000&|~+0#4040ff13&| @15 +|~| @55||+1#0000000&|~+0#4040ff13&| @15 +|[+1#0000000&|N|o| |N|a|m|e|]| @29|0|,|0|-|1| @9|A|l@1| |<+3&&|m|e|]| |[|+|]| |1|,|0|-|1| @2 +|:+0&&|v|e|r|t| |r|e|s|i|z|e| |-|1|4| @58 diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_03.dump b/src/testdir/dumps/Test_popup_prop_not_visible_03.dump new file mode 100644 index 0000000..caaa881 --- /dev/null +++ b/src/testdir/dumps/Test_popup_prop_not_visible_03.dump @@ -0,0 +1,10 @@ +| +2&#ffffff0|2+2#e000e06&|++2#0000000&| |[|N|o| |N|a|m|e|]| | +1&&@60 +| +0&&@64||+1&&> +0&&@8 +|~+0#4040ff13&| @63||+1#0000000&|s+0&&|o|m|e| |t|e|x|t +|~+0#4040ff13&| @63||+1#0000000&| +0&&@8 +|~+0#4040ff13&| @63||+1#0000000&|o+0&&|t|h|e|r| |t|e|x +|~+0#4040ff13&| @63||+1#0000000&|~+0#4040ff13&| @7 +|~| @63||+1#0000000&|~+0#4040ff13&| @7 +|~| @63||+1#0000000&|~+0#4040ff13&| @7 +|[+1#0000000&|N|o| |N|a|m|e|]| @37|0|,|0|-|1| @9|A|l@1| |<+3&&|[|+|]| |1|,|0|- +|:+0&&|v|e|r|t| |r|e|s|i|z|e| |-|8| @59 diff --git a/src/testdir/dumps/Test_popup_settext_01.dump b/src/testdir/dumps/Test_popup_settext_01.dump new file mode 100644 index 0000000..768c1bd --- /dev/null +++ b/src/testdir/dumps/Test_popup_settext_01.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @28|t+0#0000001#ffd7ff255|h|i|s| |i|s| |a| |t|e|x|t| +0#4040ff13#ffffff0@30 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popup_settext_02.dump b/src/testdir/dumps/Test_popup_settext_02.dump new file mode 100644 index 0000000..565e97f --- /dev/null +++ b/src/testdir/dumps/Test_popup_settext_02.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @35| +0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|c|a|l@1| |p|o|p|u|p|_|s|e|t@1|e|x|t|(|p|,| |'@1|)| @30|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popup_settext_03.dump b/src/testdir/dumps/Test_popup_settext_03.dump new file mode 100644 index 0000000..b2c0504 --- /dev/null +++ b/src/testdir/dumps/Test_popup_settext_03.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @35|a+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|~| @35|b+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|~| @35|c+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|c|a|l@1| |p|o|p|u|p|_|s|e|t@1|e|x|t|(|p|,| |[|'|a|'|,|'|b|'|,|'|c|'|]|)| @19|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popup_settext_04.dump b/src/testdir/dumps/Test_popup_settext_04.dump new file mode 100644 index 0000000..8e20916 --- /dev/null +++ b/src/testdir/dumps/Test_popup_settext_04.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @35|a+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|c|a|l@1| |p|o|p|u|p|_|s|e|t@1|e|x|t|(|p|,| |[|'|a|'|]|)| @27|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popup_settext_05.dump b/src/testdir/dumps/Test_popup_settext_05.dump new file mode 100644 index 0000000..1ae670e --- /dev/null +++ b/src/testdir/dumps/Test_popup_settext_05.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @35| +0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|c|a|l@1| |p|o|p|u|p|_|s|e|t@1|e|x|t|(|p|,| |[|]|)| @30|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popup_settext_06.dump b/src/testdir/dumps/Test_popup_settext_06.dump new file mode 100644 index 0000000..99c32c8 --- /dev/null +++ b/src/testdir/dumps/Test_popup_settext_06.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @33|a+0#0000001#ffd7ff255@3| +0#4040ff13#ffffff0@35 +|~| @33|b+0#0000001#ffd7ff255@3| +0#4040ff13#ffffff0@35 +|~| @33|c+0#0000001#ffd7ff255@3| +0#4040ff13#ffffff0@35 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popup_settext_07.dump b/src/testdir/dumps/Test_popup_settext_07.dump new file mode 100644 index 0000000..2362aa7 --- /dev/null +++ b/src/testdir/dumps/Test_popup_settext_07.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @35| +0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|E+0#ffffff16#e000002|1|0|2|4|:| |U|s|i|n|g| |a| |N|u|m|b|e|r| |a|s| |a| |S|t|r|i|n|g| +0#0000000#ffffff0@23|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popup_textprop_01.dump b/src/testdir/dumps/Test_popup_textprop_01.dump new file mode 100644 index 0000000..e85ea7e --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_01.dump @@ -0,0 +1,10 @@ +|4+0&#ffffff0|6| @72 +|4|7| @14|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@45 +|4|8| @14|║+0#0000001#ffd7ff255| |t|h|e| |t|e|x|t| |║| +0#0000000#ffffff0@45 +|4|9| @14|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@45 +>s|o|m|e| |t|e|x|t| |t+0fd7ff255|o| |w|o|r|k| +0&#ffffff0|w|i|t|h| @52 +|5|1| @72 +|5|2| @72 +|5|3| @72 +|5|4| @72 +@57|5|0|,|1| @9|4|9|%| diff --git a/src/testdir/dumps/Test_popup_textprop_02.dump b/src/testdir/dumps/Test_popup_textprop_02.dump new file mode 100644 index 0000000..58fdc28 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_02.dump @@ -0,0 +1,10 @@ +>s+0&#ffffff0|o|m|e| |t|e|x|t| |t+0fd7ff255|o| |w|o|r|k| +0&#ffffff0|w|i|t|h| @52 +|5|1| @14|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@45 +|5|2| @14|║+0#0000001#ffd7ff255| |t|h|e| |t|e|x|t| |║| +0#0000000#ffffff0@45 +|5|3| @14|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@45 +|5|4| @72 +|5@1| @72 +|5|6| @72 +|5|7| @72 +|5|8| @72 +@57|5|0|,|1| @9|5|3|%| diff --git a/src/testdir/dumps/Test_popup_textprop_03.dump b/src/testdir/dumps/Test_popup_textprop_03.dump new file mode 100644 index 0000000..efc6853 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_03.dump @@ -0,0 +1,10 @@ +|4+0&#ffffff0|6| @72 +|4|7| @17|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@42 +|4|8| @17|║+0#0000001#ffd7ff255| |t|h|e| |t|e|x|t| |║| +0#0000000#ffffff0@42 +|4|9| @17|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@42 +|a|w>e|s|o|m|e| |t|e|x|t| |t+0fd7ff255|o| |w|o|r|k| +0&#ffffff0|w|i|t|h| @49 +|5|1| @72 +|5|2| @72 +|5|3| @72 +|5|4| @72 +@57|5|0|,|3| @9|4|9|%| diff --git a/src/testdir/dumps/Test_popup_textprop_04.dump b/src/testdir/dumps/Test_popup_textprop_04.dump new file mode 100644 index 0000000..b8179c6 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_04.dump @@ -0,0 +1,10 @@ +|4+0&#ffffff0|6| @72 +|4|7| @9|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@50 +|4|8| @9|║+0#0000001#ffd7ff255| |t|h|e| |t|e|x|t| |║| +0#0000000#ffffff0@50 +|4|9| @9|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@50 +>t|e|x|t| |t+0fd7ff255|o| |w|o|r|k| +0&#ffffff0|w|i|t|h| @57 +|5|1| @72 +|5|2| @72 +|5|3| @72 +|5|4| @72 +@57|5|0|,|1| @9|4|9|%| diff --git a/src/testdir/dumps/Test_popup_textprop_05.dump b/src/testdir/dumps/Test_popup_textprop_05.dump new file mode 100644 index 0000000..78ae142 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_05.dump @@ -0,0 +1,10 @@ +|4+0&#ffffff0|6| @72 +|4|7| @72 +|4|8| @9|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@50 +|4|9| @9|║+0#0000001#ffd7ff255| |t|h|e| |t|e|x|t| |║| +0#0000000#ffffff0@50 +|i|n|s|e|r|t|e>d| @3|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@50 +|t|e|x|t| |t+0fd7ff255|o| |w|o|r|k| +0&#ffffff0|w|i|t|h| @57 +|5|1| @72 +|5|2| @72 +|5|3| @72 +@57|5|0|,|8| @9|4|8|%| diff --git a/src/testdir/dumps/Test_popup_textprop_06.dump b/src/testdir/dumps/Test_popup_textprop_06.dump new file mode 100644 index 0000000..2327998 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_06.dump @@ -0,0 +1,10 @@ +|4+0&#ffffff0|6| @9|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@50 +|4|7| @9|║+0#0000001#ffd7ff255| |t|h|e| |t|e|x|t| |║| +0#0000000#ffffff0@50 +|4|8| @9|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@50 +>t|e|x|t| |t+0fd7ff255|o| |w|o|r|k| +0&#ffffff0|w|i|t|h| @57 +|5|1| @72 +|5|2| @72 +|5|3| @72 +|5|4| @72 +|5@1| @72 +@57|4|9|,|1| @9|5|0|%| diff --git a/src/testdir/dumps/Test_popup_textprop_07.dump b/src/testdir/dumps/Test_popup_textprop_07.dump new file mode 100644 index 0000000..2950ddc --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_07.dump @@ -0,0 +1,10 @@ +>5+0&#ffffff0|1| @72 +|5|2| @72 +|5|3| @72 +|5|4| @72 +|5@1| @72 +|5|6| @72 +|5|7| @72 +|5|8| @72 +|5|9| @72 +@57|5|0|,|1| @9|5|4|%| diff --git a/src/testdir/dumps/Test_popup_textprop_corn_1.dump b/src/testdir/dumps/Test_popup_textprop_corn_1.dump new file mode 100644 index 0000000..ac18c99 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_corn_1.dump @@ -0,0 +1,12 @@ +|4+0&#ffffff0|5| @72 +|4|6| @72 +|4|7| @3|╔+0#0000001#ffd7ff255|═@13|╗| +0#0000000#ffffff0@52 +|4|8| @3|║+0#0000001#ffd7ff255| |b|o|t@1|o|m| |r|i|g|h|t| |║| +0#0000000#ffffff0@52 +|4|9| @3|╚+0#0000001#ffd7ff255|═@13|╝| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255|b|o|t@1|o|m| |l|e|f|t| | +0#0000000#ffffff0@33 +>n|o|w| |w|o|r|k|i|n|g| |w|i|t|h| |s|o|m|e| |l+0fd7ff255|o|n|g|e|r| +0&#ffffff0|t|e|x|t| |h|e|r|e| @36 +|5|1| @8| +0#0000001#ffd7ff255|t|o|p| |r|i|g|h|t| | +0#0000000#ffffff0@5|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@34 +|5|2| @25|║+0#0000001#ffd7ff255| |t|o|p| |l|e|f|t| |║| +0#0000000#ffffff0@34 +|5|3| @25|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@34 +|5|4| @72 +|5@1| @72 +@57|5|0|,|1| @9|4|9|%| diff --git a/src/testdir/dumps/Test_popup_textprop_corn_2.dump b/src/testdir/dumps/Test_popup_textprop_corn_2.dump new file mode 100644 index 0000000..b7be5dd --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_corn_2.dump @@ -0,0 +1,12 @@ +|4+0&#ffffff0|5| @72 +|4|6| @72 +|4|7|╔+0#0000001#ffd7ff255|═@13|╗| +0#0000000#ffffff0@56 +|4|8|║+0#0000001#ffd7ff255| |b|o|t@1|o|m| |r|i|g|h|t| |║| +0#0000000#ffffff0@56 +|4|9|╚+0#0000001#ffd7ff255|═@13|╝| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255|b|o|t@1|o|m| |l|e|f|t| | +0#0000000#ffffff0@37 +>w|o|r|k|i|n|g| |w|i|t|h| |s|o|m|e| |l+0fd7ff255|o|n|g|e|r| +0&#ffffff0|t|e|x|t| |h|e|r|e| @40 +|5|1| @4| +0#0000001#ffd7ff255|t|o|p| |r|i|g|h|t| | +0#0000000#ffffff0@5|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@38 +|5|2| @21|║+0#0000001#ffd7ff255| |t|o|p| |l|e|f|t| |║| +0#0000000#ffffff0@38 +|5|3| @21|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@38 +|5|4| @72 +|5@1| @72 +@57|5|0|,|1| @9|4|9|%| diff --git a/src/testdir/dumps/Test_popup_textprop_corn_3.dump b/src/testdir/dumps/Test_popup_textprop_corn_3.dump new file mode 100644 index 0000000..bd77c07 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_corn_3.dump @@ -0,0 +1,12 @@ +|4+0&#ffffff0|5| @72 +|4|6| @72 +|e|x|t|r>a| @69 +|4|7|╔+0#0000001#ffd7ff255|═@13|╗| +0#0000000#ffffff0@56 +|4|8|║+0#0000001#ffd7ff255| |b|o|t@1|o|m| |r|i|g|h|t| |║| +0#0000000#ffffff0@56 +|4|9|╚+0#0000001#ffd7ff255|═@13|╝| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255|b|o|t@1|o|m| |l|e|f|t| | +0#0000000#ffffff0@37 +|w|o|r|k|i|n|g| |w|i|t|h| |s|o|m|e| |l+0fd7ff255|o|n|g|e|r| +0&#ffffff0|t|e|x|t| |h|e|r|e| @40 +|5|1| @4| +0#0000001#ffd7ff255|t|o|p| |r|i|g|h|t| | +0#0000000#ffffff0@5|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@38 +|5|2| @21|║+0#0000001#ffd7ff255| |t|o|p| |l|e|f|t| |║| +0#0000000#ffffff0@38 +|5|3| @21|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@38 +|5|4| @72 +@57|4|7|,|5| @9|4|8|%| diff --git a/src/testdir/dumps/Test_popup_textprop_corn_4.dump b/src/testdir/dumps/Test_popup_textprop_corn_4.dump new file mode 100644 index 0000000..6db9eee --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_corn_4.dump @@ -0,0 +1,12 @@ +|4+0&#ffffff0|5| @72 +>4|6| @72 +|4|7|╔+0#0000001#ffd7ff255|═@13|╗| +0#0000000#ffffff0@56 +|4|8|║+0#0000001#ffd7ff255| |b|o|t@1|o|m| |r|i|g|h|t| |║| +0#0000000#ffffff0@56 +|4|9|╚+0#0000001#ffd7ff255|═@13|╝| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255|b|o|t@1|o|m| |l|e|f|t| | +0#0000000#ffffff0@37 +|w|o|r|k|i|n|g| |w|i|t|h| |s|o|m|e| |l+0fd7ff255|o|n|g|e|r| +0&#ffffff0|t|e|x|t| |h|e|r|e| @40 +|5|1| @4| +0#0000001#ffd7ff255|t|o|p| |r|i|g|h|t| | +0#0000000#ffffff0@5|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@38 +|5|2| @21|║+0#0000001#ffd7ff255| |t|o|p| |l|e|f|t| |║| +0#0000000#ffffff0@38 +|5|3| @21|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@38 +|5|4| @72 +|5@1| @72 +|:| @55|4|6|,|1| @9|4|9|%| diff --git a/src/testdir/dumps/Test_popup_textprop_corn_5.dump b/src/testdir/dumps/Test_popup_textprop_corn_5.dump new file mode 100644 index 0000000..59bae78 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_corn_5.dump @@ -0,0 +1,12 @@ +> +0&#ffffff0@36||+1&&|4+0&&|5| @34 +|~+0#4040ff13&| @35||+1#0000000&|4+0&&|6| @34 +|~+0#4040ff13&| @35||+1#0000000&|4+0&&|7|╔+0#0000001#ffd7ff255|═@13|╗| +0#0000000#ffffff0@18 +|~+0#4040ff13&| @35||+1#0000000&|4+0&&|8|║+0#0000001#ffd7ff255| |b|o|t@1|o|m| |r|i|g|h|t| |║| +0#0000000#ffffff0@18 +|~+0#4040ff13&| @35||+1#0000000&|4+0&&|9|╚+0#0000001#ffd7ff255|═@13|╝| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255|b|o|t@1|o|m| |l|e|f|t| +|~+0#4040ff13#ffffff0| @35||+1#0000000&|w+0&&|o|r|k|i|n|g| |w|i|t|h| |s|o|m|e| |l+0fd7ff255|o|n|g|e|r| +0&#ffffff0|t|e|x|t| |h|e|r|e| @2 +|~+0#4040ff13&| @35||+1#0000000&|5+0&&|1| @4| +0#0000001#ffd7ff255|t|o|p| |r|i|g|h|t| | +0#0000000#ffffff0@5|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0 +|~+0#4040ff13&| @35||+1#0000000&|5+0&&|2| @21|║+0#0000001#ffd7ff255| |t|o|p| |l|e|f|t| |║| +0#0000000#ffffff0 +|~+0#4040ff13&| @35||+1#0000000&|5+0&&|3| @21|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0 +|~+0#4040ff13&| @35||+1#0000000&|5+0&&|4| @34 +|f+3&&|o@1| @15|0|,|0|-|1| @9|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|4|6|,|1| @10|4|8|% +|"+0&&|f|o@1|"| |[|N|e|w|]| @63 diff --git a/src/testdir/dumps/Test_popup_textprop_corn_6.dump b/src/testdir/dumps/Test_popup_textprop_corn_6.dump new file mode 100644 index 0000000..7e6426c --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_corn_6.dump @@ -0,0 +1,12 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|o|n|l|y|!| @50|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popup_textprop_off_1.dump b/src/testdir/dumps/Test_popup_textprop_off_1.dump new file mode 100644 index 0000000..33f2978 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_off_1.dump @@ -0,0 +1,12 @@ +|4+0&#ffffff0|5| @72 +|4|6| @1|╔+0#0000001#ffd7ff255|═@13|╗| +0#0000000#ffffff0@54 +|4|7| @1|║+0#0000001#ffd7ff255| |b|o|t@1|o|m| |r|i|g|h|t| |║| +0#0000000#ffffff0@54 +|4|8| @1|╚+0#0000001#ffd7ff255|═@13|╝| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255|b|o|t@1|o|m| |l|e|f|t| | +0#0000000#ffffff0@31 +|4|9| @72 +>n|o|w| |w|o|r|k|i|n|g| |w|i|t|h| |s|o|m|e| |l+0fd7ff255|o|n|g|e|r| +0&#ffffff0|t|e|x|t| |h|e|r|e| @36 +|5|1| @72 +|5|2| @6| +0#0000001#ffd7ff255|t|o|p| |r|i|g|h|t| | +0#0000000#ffffff0@9|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@32 +|5|3| @27|║+0#0000001#ffd7ff255| |t|o|p| |l|e|f|t| |║| +0#0000000#ffffff0@32 +|5|4| @27|╚+0#0000001#ffd7ff255|═@9|╝| +0#0000000#ffffff0@32 +|5@1| @72 +@57|5|0|,|1| @9|4|9|%| diff --git a/src/testdir/dumps/Test_popup_textprop_off_2.dump b/src/testdir/dumps/Test_popup_textprop_off_2.dump new file mode 100644 index 0000000..1896c64 --- /dev/null +++ b/src/testdir/dumps/Test_popup_textprop_off_2.dump @@ -0,0 +1,12 @@ +|4+0&#ffffff0|5| @72 +|4|6| @72 +|4|7| @72 +|4|8| @72 +|4|9| @72 +>n|o|w| |w|o|r|k|i|n|g| |w|i|t|h| |s|o|m|e| |l|o|n|g|e|r| |t|e|x|t| |h|e|r|e| @36 +|5|1| @72 +|5|2| @72 +|5|3| @72 +|5|4| @72 +|5@1| @72 +|:|c|a|l@1| |p|r|o|p|_|c|l|e|a|r|(|5|0|)| @36|5|0|,|1| @9|4|9|%| diff --git a/src/testdir/dumps/Test_popupwin_01.dump b/src/testdir/dumps/Test_popupwin_01.dump new file mode 100644 index 0000000..2a444ca --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_01.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @8|h+0fd7ff255|e|l@1|o| |t|h|e|r|e| @8|r+0&#afffff255| |o|n|e| @8| +0&#ffffff0@30 +|4| @22|a+0&#afffff255|n|o|t|h|e|r| |t|w|o| @8| +0&#ffffff0@30 +|5| @22|a+0&#afffff255|n|o|t|h|e|r| |t|h|r|e@1| @6| +0&#ffffff0@30 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_02.dump b/src/testdir/dumps/Test_popupwin_02.dump new file mode 100644 index 0000000..9f658e5 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_02.dump @@ -0,0 +1,10 @@ +| +8#0000001#e0e0e08|+| |[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@49|X+8#0000001#e0e0e08 +> +0#0000000#ffffff0@74 +|~+0&#e0e0e08| @73 +|~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @10| +0#0000000#e0e0e08@46 +|~| @6|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| @5| +0#0000000#e0e0e08@46 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0&#ffffff0@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_03.dump b/src/testdir/dumps/Test_popupwin_03.dump new file mode 100644 index 0000000..d842654 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_03.dump @@ -0,0 +1,10 @@ +| +2&#ffffff0|+| |[|N|o| |N|a|m|e|]| | +8#0000001#e0e0e08|[|N|o| |N|a|m|e|]| | +1#0000000#ffffff0@49|X+8#0000001#e0e0e08 +>1+0#0000000#ffffff0| @73 +|2| @8|h+0fd7ff255|e|l@1|o| |t|h|e|r|e| @8|r+0&#afffff255| |o|n|e| @8| +0&#ffffff0@30 +|3| @22|a+0&#afffff255|n|o|t|h|e|r| |t|w|o| @8| +0&#ffffff0@30 +|4| @22|a+0&#afffff255|n|o|t|h|e|r| |t|h|r|e@1| @6| +0&#ffffff0@30 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_04.dump b/src/testdir/dumps/Test_popupwin_04.dump new file mode 100644 index 0000000..d83beda --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_04.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0&#e0e0e08| @73 +|~| @73 +|~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @10| +0#0000000#e0e0e08@46 +|~| @6|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| @5| +0#0000000#e0e0e08@46 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0&#ffffff0|q|u|i|t|!| @50|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_04a.dump b/src/testdir/dumps/Test_popupwin_04a.dump new file mode 100644 index 0000000..4df0dd3 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_04a.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@11 +|~+0&#e0e0e08| @10 +|~| @10 +|~| @6|o+0#0000001#ffd7ff255|t|h|e +|~+0#0000000#e0e0e08| @6|r+0#0000001#ffd7ff255| |t|a +|~+0#0000000#e0e0e08| @6|b+0#0000001#ffd7ff255| @2 +|~+0#0000000#e0e0e08| @6|a+0#0000001#ffd7ff255| |c+0#ff404010&|o +|~+0#0000000#e0e0e08| @6|m+0#ff404010#ffd7ff255@1|e|n +|~+0#0000000#e0e0e08| @6|t+0#ff404010#ffd7ff255| +0#0000001&|l|i +| +0#0000000#ffffff0@5|0|,|n+0#0000001#ffd7ff255|e| @1 diff --git a/src/testdir/dumps/Test_popupwin_05.dump b/src/testdir/dumps/Test_popupwin_05.dump new file mode 100644 index 0000000..7e23a09 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_05.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0&#e0e0e08| @73 +|~| @73 +|~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @5| +0#0000000#e0e0e08@51 +|~| @6|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| | +0#0000000#e0e0e08@51 +|~| @6| +0#4040ff13#ffd7ff255@14| +0#0000000#e0e0e08@51 +|~| @73 +|~| @73 +|~| @73 +|:+0&#ffffff0|r|e|d|r|a|w| @49|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_06.dump b/src/testdir/dumps/Test_popupwin_06.dump new file mode 100644 index 0000000..6d89503 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_06.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0&#e0e0e08| @73 +|~| @73 +|~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @15| +0#0000000#e0e0e08@41 +|~| @6|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| @10| +0#0000000#e0e0e08@41 +|~| @6|t+0#0000001#ffd7ff255|h|i|s| |l|i|n|e| |w|i|l@1| |n|o|t| |f|i|t| |h|e| +0#0000000#e0e0e08@41 +|~| @6|r+0#0000001#ffd7ff255|e| @22| +0#0000000#e0e0e08@41 +|~| @73 +|~| @73 +|:+0&#ffffff0|r|e|d|r|a|w| @49|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_07.dump b/src/testdir/dumps/Test_popupwin_07.dump new file mode 100644 index 0000000..07f1fc4 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_07.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0&#e0e0e08| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @52|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @11 +|~+0#0000000#e0e0e08| @52|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| @6 +|:+0#0000000#ffffff0| @52|t+0#0000001#ffd7ff255|h|i|s| |l|i|n|e| |w|i|l@1| |n|o|t| |f|i +| +0#0000000#ffffff0@53|t+0#0000001#ffd7ff255| |h|e|r|e| @14 diff --git a/src/testdir/dumps/Test_popupwin_08.dump b/src/testdir/dumps/Test_popupwin_08.dump new file mode 100644 index 0000000..814c979 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_08.dump @@ -0,0 +1,10 @@ +>x+0&#ffffff0@2| @71 +|~+0&#e0e0e08| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0&#ffffff0@74 +@57|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_10.dump b/src/testdir/dumps/Test_popupwin_10.dump new file mode 100644 index 0000000..2d80e0a --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_10.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @22|#+0#e000e06#5fd7ff255|i|n|c|l|u|d|e| |<+0#e000002&|s|t|d|i|o|.|h|>| +0#0000000#ffffff0@32 +|4| @22|i+0#00e0003#5fd7ff255|n|t| +0#0000000&|m|a|i|n|(|v+0#00e0003&|o|i|d|)+0#0000000&| @3| +0&#ffffff0@32 +|5| @22|{+0fd7ff255| @16| +0&#ffffff0@32 +|6| @22| +0fd7ff255@3|p|r|i|n|t|f|(|1+0#e000002&|2|3|)+0#0000000&|;| @1| +0&#ffffff0@32 +|7| @22|}+0fd7ff255| @16| +0&#ffffff0@32 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_11.dump b/src/testdir/dumps/Test_popupwin_11.dump new file mode 100644 index 0000000..f67a314 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_11.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @18|#+0#e000e06#e0e0e08|i|n|c|l|u|d|e| |<+0#e000002&|s|t|d|i|o|.|h|>| +0#0000000&@1| +0&#ffffff0@34 +|4| @18|i+0#00e0003#e0e0e08|n|t| +0#0000000&|m|a|i|n|(|v+0#00e0003&|o|i|d|)+0#0000000&| @5| +0&#ffffff0@34 +|5| @18|{+0&#e0e0e08| @18| +0&#ffffff0@34 +|6| @18| +0&#e0e0e08@7|p|r|i|n|t|f|(|5+0#e000002&|6|7|)+0#0000000&|;| +0&#ffffff0@34 +|7| @18|}+0&#e0e0e08| @18| +0&#ffffff0@34 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_20.dump b/src/testdir/dumps/Test_popupwin_20.dump new file mode 100644 index 0000000..692708b --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_20.dump @@ -0,0 +1,15 @@ +>1+0&#ffffff0| @73 +|2| |++0#0000001#ffd7ff255|-@11|+| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@4|+|-@11|+| @15|X+0#0000001#ffd7ff255| +0#0000000#ffffff0@1 +|3| ||+0#0000001#ffd7ff255|h|e|l@1|o| |b|o|r|d|e|r||| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255|h|e|l@1|o| |p|a|d@1|i|n|g| | +0#0000000#ffffff0@4||| @11||| @16|X+0#0000001#ffd7ff255| +0#0000000#ffffff0 +|4| |++0#0000001#ffd7ff255|-@11|+| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@4||| |h|e|l@1|o| |b|o|t|h| ||| @17|X+0#0000001#ffd7ff255 +|5+0#0000000#ffffff0| @40||| @11||| @17|X+0#0000001#ffd7ff255 +|6+0#0000000#ffffff0| |++0#0000001#ffd7ff255|-@8| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@5|+|-@11|+| @18 +|7| ||+0#0000001#ffd7ff255|b|o|r|d|e|r| |T|L| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@3|p|a|d@1|i|n|g|s| @1| +0#0000000#ffffff0@38 +|8| @20| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@13||+0#0000001#ffd7ff255| @2|w|r|a|p@1|e|d| |l|o|n|g|e|r| |t|e| @2|| +|9+0#0000000#ffffff0| @20| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@13||+0#0000001#ffd7ff255| @2|x|t| @17|| +|1+0#0000000#ffffff0|0| @19| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@38 +|1@1| @46||+0#0000001#ffd7ff255| @2|r|i|g|h|t| |a|l|i|g|n|e|d| |t|e|x|t| @2|| +|1+0#0000000#ffffff0|2| @72 +|1|3| @72 +|1|4| @72 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_21.dump b/src/testdir/dumps/Test_popupwin_21.dump new file mode 100644 index 0000000..6398549 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_21.dump @@ -0,0 +1,15 @@ +>1+0&#ffffff0| @73 +|2| |╔+0#0000001#ffd7ff255|═@11|╗| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@4|╔|═@11|╗| @15|X+0#0000001#ffd7ff255| +0#0000000#ffffff0@1 +|3| |║+0#0000001#ffd7ff255|h|e|l@1|o| |b|o|r|d|e|r|║| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255|h|e|l@1|o| |p|a|d@1|i|n|g| | +0#0000000#ffffff0@4|║| @11|║| @16|X+0#0000001#ffd7ff255| +0#0000000#ffffff0 +|4| |╚+0#0000001#ffd7ff255|═@11|╝| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@4|║| |h|e|l@1|o| |b|o|t|h| |║| @17|X+0#0000001#ffd7ff255 +|5+0#0000000#ffffff0| @40|║| @11|║| @17|X+0#0000001#ffd7ff255 +|6+0#0000000#ffffff0| |╔+0#0000001#ffd7ff255|═@8| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@5|╚|═@11|╝| @18 +|7| |║+0#0000001#ffd7ff255|b|o|r|d|e|r| |T|L| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@3|p|a|d@1|i|n|g|s| @1| +0#0000000#ffffff0@38 +|8| @20| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@13|║+0#0000001#ffd7ff255| @2|w|r|a|p@1|e|d| |l|o|n|g|e|r| |t|e| @2|║ +|9+0#0000000#ffffff0| @20| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@13|║+0#0000001#ffd7ff255| @2|x|t| @17|║ +|1+0#0000000#ffffff0|0| @19| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@38 +|1@1| @46|║+0#0000001#ffd7ff255| @2|r|i|g|h|t| |a|l|i|g|n|e|d| |t|e|x|t| @2|║ +|1+0#0000000#ffffff0|2| @72 +|1|3| @72 +|1|4| @72 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_22.dump b/src/testdir/dumps/Test_popupwin_22.dump new file mode 100644 index 0000000..7e38906 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_22.dump @@ -0,0 +1,12 @@ +>1+0&#ffffff0| @73 +|2| |╔+0fd7ff255|═@11|╗| +0&#ffffff0@5|╔+0&#dadada255|═@11|╗+0a8a8a255| +0&#ffffff0@5|x+0fd7ff255@13| +0&#ffffff0@2|#+0fd7ff255|x@11|#| +0&#ffffff0@1 +|3| |║+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|║+0#0000000#5fd7ff255| +0&#ffffff0@5|║+0&#a8a8a8255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|║+0#0000000#8a8a8a255| +0&#ffffff0@5|x+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|x+0#0000000#5fd7ff255| +0&#ffffff0@2|x+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|x+0#0000000#5fd7ff255| +0&#ffffff0@1 +|4| |╚+0fd7ff255|═@11|╝| +0&#ffffff0@5|║+0&#a8a8a8255|a+0#0000001#ffd7ff255|n|d| |m|o|r|e| @3|║+0#0000000#8a8a8a255| +0&#ffffff0@5|x+0fd7ff255|l+0#0000001#ffd7ff255|i|n|e|s| |o|n|l|y| @1|x+0#0000000#5fd7ff255| +0&#ffffff0@2|x+0fd7ff255|w+0#0000001#ffd7ff255|i|t|h| |c|o|r|n|e|r|s|x+0#0000000#5fd7ff255| +0&#ffffff0@1 +|5| @20|╚+0�|═@11|╝| +0&#ffffff0@5|x+0fd7ff255@13| +0&#ffffff0@2|#+0fd7ff255|x@11|#| +0&#ffffff0@1 +|6| |4+0fd7ff255|0@11|5| +0&#ffffff0@58 +|7| |3+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|1+0#0000000#5fd7ff255| +0&#ffffff0@5| +0fd7ff255@13| +0&#ffffff0@38 +|8| |3+0fd7ff255|w+0#0000001#ffd7ff255|i|t|h| |n|u|m|b|e|r|s|1+0#0000000#5fd7ff255| +0&#ffffff0@5| +0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r| +0#0000000#5fd7ff255| +0&#ffffff0@38 +|9| |7+0fd7ff255|2@11|6| +0&#ffffff0@5| +0fd7ff255|j+0#0000001#ffd7ff255|u|s|t| |b|l|a|n|k|s| | +0#0000000#5fd7ff255| +0&#ffffff0@38 +|1|0| @19| +0fd7ff255@13| +0&#ffffff0@38 +|1@1| @72 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_23.dump b/src/testdir/dumps/Test_popupwin_23.dump new file mode 100644 index 0000000..737d8f1 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_23.dump @@ -0,0 +1,12 @@ +>1+0&#ffffff0| @73 +|2| |╔+0fd7ff255|═@11|╗| +0&#ffffff0@5|╔+0&#dadada255|═@11|╗+0a8a8a255| +0&#ffffff0@5|x+0fd7ff255@13| +0&#ffffff0@2|#+0fd7ff255|x@11|#| +0&#ffffff0@1 +|3| |║+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|║+0#0000000#5fd7ff255| +0&#ffffff0@5|║+0&#a8a8a8255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|║+0#0000000#8a8a8a255| +0&#ffffff0@5|x+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|x+0#0000000#5fd7ff255| +0&#ffffff0@2|x+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|x+0#0000000#5fd7ff255| +0&#ffffff0@1 +|4| |╚+0fd7ff255|═@11|╝| +0&#ffffff0@5|║+0&#a8a8a8255|a+0#0000001#ffd7ff255|n|d| |m|o|r|e| @3|║+0#0000000#8a8a8a255| +0&#ffffff0@5|x+0fd7ff255|l+0#0000001#ffd7ff255|i|n|e|s| |o|n|l|y| @1|x+0#0000000#5fd7ff255| +0&#ffffff0@2|x+0fd7ff255|w+0#0000001#ffd7ff255|i|t|h| |c|o|r|n|e|r|s|x+0#0000000#5fd7ff255| +0&#ffffff0@1 +|5| @20|╚+0�|═@11|╝| +0&#ffffff0@5|x+0fd7ff255@13| +0&#ffffff0@2|#+0fd7ff255|x@11|#| +0&#ffffff0@1 +|6| |e+0fd7ff255|a@11|f| +0&#ffffff0@58 +|7| |d+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|b+0#0000000#5fd7ff255| +0&#ffffff0@5| +0fd7ff255@13| +0&#ffffff0@38 +|8| |d+0fd7ff255|w+0#0000001#ffd7ff255|i|t|h| |n|u|m|b|e|r|s|b+0#0000000#5fd7ff255| +0&#ffffff0@5| +0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r| +0#0000000#5fd7ff255| +0&#ffffff0@38 +|9| |h+0fd7ff255|c@11|g| +0&#ffffff0@5| +0fd7ff255|j+0#0000001#ffd7ff255|u|s|t| |b|l|a|n|k|s| | +0#0000000#5fd7ff255| +0&#ffffff0@38 +|1|0| @19| +0fd7ff255@13| +0&#ffffff0@38 +|1@1| @72 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_24.dump b/src/testdir/dumps/Test_popupwin_24.dump new file mode 100644 index 0000000..f5386c9 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_24.dump @@ -0,0 +1,12 @@ +>1+0&#ffffff0| @73 +|2| |╔+0fd7ff255|═@11|╗| +0&#ffffff0@5|╔+0&#dadada255|═@11|╗+0a8a8a255| +0&#ffffff0@5|x+0fd7ff255@13| +0&#ffffff0@2|#+0fd7ff255|x@11|#| +0&#ffffff0@1 +|3| |║+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|║+0#0000000#5fd7ff255| +0&#ffffff0@5|║+0&#a8a8a8255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|║+0#0000000#8a8a8a255| +0&#ffffff0@5|x+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|x+0#0000000#5fd7ff255| +0&#ffffff0@2|x+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|x+0#0000000#5fd7ff255| +0&#ffffff0@1 +|4| |╚+0fd7ff255|═@11|╝| +0&#ffffff0@5|║+0&#a8a8a8255|a+0#0000001#ffd7ff255|n|d| |m|o|r|e| @3|║+0#0000000#8a8a8a255| +0&#ffffff0@5|x+0fd7ff255|l+0#0000001#ffd7ff255|i|n|e|s| |o|n|l|y| @1|x+0#0000000#5fd7ff255| +0&#ffffff0@2|x+0fd7ff255|w+0#0000001#ffd7ff255|i|t|h| |c|o|r|n|e|r|s|x+0#0000000#5fd7ff255| +0&#ffffff0@1 +|5| @20|╚+0�|═@11|╝| +0&#ffffff0@5|x+0fd7ff255@13| +0&#ffffff0@2|#+0fd7ff255|x@11|#| +0&#ffffff0@1 +|6| |e+0fd7ff255|a@11|f| +0&#ffffff0@58 +|7| |d+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|b+0#0000000#5fd7ff255| +0&#ffffff0@5| +0fd7ff255@13| +0&#ffffff0@38 +|8| |d+0fd7ff255|w+0#0000001#ffd7ff255|i|t|h| |n|u|m|b|e|r|s|b+0#0000000#5fd7ff255| +0&#ffffff0@5| +0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r| +0#0000000#5fd7ff255| +0&#ffffff0@5|┌+0#0000001#ffd7ff255|─@4|┐| +0#0000000#ffffff0@25 +|9| |h+0fd7ff255|c@11|g| +0&#ffffff0@5| +0fd7ff255|j+0#0000001#ffd7ff255|u|s|t| |b|l|a|n|k|s| | +0#0000000#5fd7ff255| +0&#ffffff0@5|│+0#0000001#ffd7ff255|h|e|l@1|o|│| +0#0000000#ffffff0@25 +|1|0| @19| +0fd7ff255@13| +0&#ffffff0@5|└+0#0000001#ffd7ff255|─@4|┘| +0#0000000#ffffff0@25 +|1@1| @72 +|:|c|a|l@1| |M|u|l|t|i|B|y|t|e|(|)| @39|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_atcursor_pos.dump b/src/testdir/dumps/Test_popupwin_atcursor_pos.dump new file mode 100644 index 0000000..3a4f0c2 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_atcursor_pos.dump @@ -0,0 +1,12 @@ +|-+0&#ffffff0@59| @14 +|-@59| @14 +|-@25|%|-@16|@|-@14| @14 +|-@25|f+0#0000001#ffd7ff255|i|R|S|t| |-+0#0000000#ffffff0@6|F+0#0000001#ffd7ff255|i|r|s|t| |-+0#0000000#ffffff0@14| @14 +|-@25|s+0#0000001#ffd7ff255|e|C|O|n|d|-+0#0000000#ffffff0@6|S+0#0000001#ffd7ff255|e|c|o|n|D|-+0#0000000#ffffff0@14| @14 +|-@59| @14 +|-@1|f+0#0000001#ffd7ff255|i|r|s|t| |-+0#0000000#ffffff0@6|F+0#0000001#ffd7ff255|I|r|s|T| |-+0#0000000#ffffff0@38| @14 +|-@1|s+0#0000001#ffd7ff255|e|c|o|n|d|-+0#0000000#ffffff0@6|S+0#0000001#ffd7ff255|E|c|o|N|D|-+0#0000000#ffffff0@6|m+0#0000001#ffd7ff255|a|r|k|-+0#0000000#ffffff0@27| @14 +|-@1|#|-@16|&|-@4| @1>X|-@21| @23 +|-@59| @14 +|-@59| @14 +@57|9|,|3|8| @9|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_behind.dump b/src/testdir/dumps/Test_popupwin_behind.dump new file mode 100644 index 0000000..cec0a52 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_behind.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@36||+1&&> +0&&@36 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @34|l+0#0000001#ffd7ff255|i|n|e|1| +0#4040ff13#ffffff0@33 +|[+1#0000000&|N|o| |N|a|m|e|]| @9|0|,|0|-|1| @9|A|l|l+0#0000001#ffd7ff255|i|n|e|2| +3#0000000#ffffff0|N|a|m|e|]| @9|0|,|0|-|1| @9|A|l@1 +| +0&&@35|l+0#0000001#ffd7ff255|i|n|e|3| +0#0000000#ffffff0@33 +|~+0#4040ff13&| @34|l+0#0000001#ffd7ff255|i|n|e|4| +0#4040ff13#ffffff0@33 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_popupwin_beval_1.dump b/src/testdir/dumps/Test_popupwin_beval_1.dump new file mode 100644 index 0000000..410ac5c --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_beval_1.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0| @73 +>2| @73 +|3| @73 +|4| @12|t+0#0000001#ffd7ff255|e|x|t| +0#0000000#ffffff0@56 +|h|e|r|e| |i|s| |s|o|m|e| |t|e|x|t| |t|o| |h|o|v|e|r| |o|v|e|r| @43 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|:|c|a|l@1| |H|o|v|e|r|(|)| @43|2|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_beval_2.dump b/src/testdir/dumps/Test_popupwin_beval_2.dump new file mode 100644 index 0000000..34b222d --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_beval_2.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0| @73 +>2| @73 +|3| @73 +|4| @12|t+0#0000001#ffd7ff255|e|x|t| +0#0000000#ffffff0@56 +|h|e|r|e| |i|s| |s|o|m|e| |t|e|x|t| |t|o| |h|o|v|e|r| |o|v|e|r| @43 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|:|c|a|l@1| |M|o|v|e|O|n|t|o|P|o|p|u|p|(|)| @35|2|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_beval_3.dump b/src/testdir/dumps/Test_popupwin_beval_3.dump new file mode 100644 index 0000000..2e8e419 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_beval_3.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0| @73 +>2| @73 +|3| @73 +|4| @73 +|h|e|r|e| |i|s| |s|o|m|e| |t|e|x|t| |t|o| |h|o|v|e|r| |o|v|e|r| @43 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|:|c|a|l@1| |M|o|v|e|A|w|a|y|(|)| @40|2|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_close_01.dump b/src/testdir/dumps/Test_popupwin_close_01.dump new file mode 100644 index 0000000..e11ae83 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_close_01.dump @@ -0,0 +1,10 @@ +>╔+0#0000001#ffd7ff255|═@5|X| +0#0000000#ffffff0@66 +|║+0#0000001#ffd7ff255|f|o@1|b|a|r|║| +0#0000000#ffffff0@66 +|╚+0#0000001#ffd7ff255|═@5|╝| +0#0000000#ffffff0@5|n+0#0000001#ffd7ff255|o|t|i|f|i|c|a|t|i|o|n| +0#0000000#ffffff0@48 +|4| @73 +|5| |n+0#0000001#ffd7ff255|o| |b|o|r|d|e|r| |h|e|r|X| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@12|X| +0#0000000#ffffff0@38 +|6| @20| +0#0000001#ffd7ff255|o|n|l|y| |p|a|d@1|i|n|g| | +0#0000000#ffffff0@38 +|7| @20| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@38 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_close_02.dump b/src/testdir/dumps/Test_popupwin_close_02.dump new file mode 100644 index 0000000..75342ef --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_close_02.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @12|n+0#0000001#ffd7ff255|o|t|i|f|i|c|a|t|i|o|n| +0#0000000#ffffff0@48 +|4| @73 +|5| |n+0#0000001#ffd7ff255|o| |b|o|r|d|e|r| |h|e|r|X| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@12|X| +0#0000000#ffffff0@38 +|6| @20| +0#0000001#ffd7ff255|o|n|l|y| |p|a|d@1|i|n|g| | +0#0000000#ffffff0@38 +|7| @20| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@38 +|8| @73 +|9| @73 +|:|c|a|l@1| |C|l|o|s|e|W|i|t|h|X|(|)| @38|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_close_03.dump b/src/testdir/dumps/Test_popupwin_close_03.dump new file mode 100644 index 0000000..82438c8 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_close_03.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @73 +|5| |n+0#0000001#ffd7ff255|o| |b|o|r|d|e|r| |h|e|r|X| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@12|X| +0#0000000#ffffff0@38 +|6| @20| +0#0000001#ffd7ff255|o|n|l|y| |p|a|d@1|i|n|g| | +0#0000000#ffffff0@38 +|7| @20| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@38 +|8| @73 +|9| @73 +|P|o|p|u|p| |c|l|o|s|e|d| |w|i|t|h| |-|2| @36|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_close_04.dump b/src/testdir/dumps/Test_popupwin_close_04.dump new file mode 100644 index 0000000..91d7f09 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_close_04.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @37|╔+0#0000001#ffd7ff255|═@5|X| +0#0000000#ffffff0@27 +|2| @37|║+0#0000001#ffd7ff255|b|a|r|f|o@1|║| +0#0000000#ffffff0@27 +|3| @37|╚+0#0000001#ffd7ff255|═@5|╝| +0#0000000#ffffff0@27 +|4| @73 +|5| |n+0#0000001#ffd7ff255|o| |b|o|r|d|e|r| |h|e|r|X| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@12|X| +0#0000000#ffffff0@38 +|6| @20| +0#0000001#ffd7ff255|o|n|l|y| |p|a|d@1|i|n|g| | +0#0000000#ffffff0@38 +|7| @20| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@38 +|8| @73 +|9| @73 +|:|c|a|l@1| |C|r|e|a|t|e|W|i|t|h|M|e|n|u|F|i|l|t|e|r|(|)| @28|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_close_05.dump b/src/testdir/dumps/Test_popupwin_close_05.dump new file mode 100644 index 0000000..75ce052 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_close_05.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @73 +|5| |n+0#0000001#ffd7ff255|o| |b|o|r|d|e|r| |h|e|r|X| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@12|X| +0#0000000#ffffff0@38 +|6| @20| +0#0000001#ffd7ff255|o|n|l|y| |p|a|d@1|i|n|g| | +0#0000000#ffffff0@38 +|7| @20| +0#0000001#ffd7ff255@13| +0#0000000#ffffff0@38 +|8| @73 +|9| @73 +|:|c|a|l@1| |C|r|e|a|t|e|W|i|t|h|M|e|n|u|F|i|l|t|e|r|(|)| @28|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_corners.dump b/src/testdir/dumps/Test_popupwin_corners.dump new file mode 100644 index 0000000..82188c0 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_corners.dump @@ -0,0 +1,12 @@ +|-+0&#ffffff0@49>*|-@8| @14 +|-@1|#|-@19|@|-@25|╔+0#0000001#ffd7ff255|═@4|╗|-+0#0000000#ffffff0@2| @14 +|-@1|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@1|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@1|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@1|╔+0#0000001#ffd7ff255|═@7|╗|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @4|║|-+0#0000000#ffffff0@2| @14 +|-@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |o|n|e| |║|-+0#0000000#ffffff0@2| @14 +|-@1|║+0#0000001#ffd7ff255| |f|i|r|s|t| @1|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |F|i|r|s|t| @1|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |f|i|R|S|t| @1|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |F|I|r|s|T| @1|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |t|w|o| |║|-+0#0000000#ffffff0@2| @14 +|-@1|║+0#0000001#ffd7ff255| |s|e|c|o|n|d| |║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |S|e|c|o|n|D| |║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |s|e|C|O|n|d| |║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| |S|E|c|o|N|D| |║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @4|║|-+0#0000000#ffffff0@2| @14 +|-@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255| @7|║|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@4|╝|-+0#0000000#ffffff0@2| @14 +|-@1|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@7|╝|-+0#0000000#ffffff0@11| @14 +|-@25|%|-@19|&|-@11| @14 +|-@59| @14 +|-@59| @14 +@57|1|,|5|1| @9|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_ctrl_c.dump b/src/testdir/dumps/Test_popupwin_ctrl_c.dump new file mode 100644 index 0000000..d6636ae --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_ctrl_c.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@36||+1&&| +0&&@36 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|~| @35||+1#0000000&|~+0#4040ff13&| @35 +|[+3#0000000&|N|o| |N|a|m|e|]| @9|0|,|0|-|1| @9|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @9|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_popupwin_cursorline_1.dump b/src/testdir/dumps/Test_popupwin_cursorline_1.dump new file mode 100644 index 0000000..d73b149 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_cursorline_1.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @34|1+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35 +|~| @34|2+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35 +|~| @34|3+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_cursorline_2.dump b/src/testdir/dumps/Test_popupwin_cursorline_2.dump new file mode 100644 index 0000000..6c00f96 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_cursorline_2.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @34|1+0#0000001#e0e0e08@2| +0#4040ff13#ffffff0@35 +|~| @34|2+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35 +|~| @34|3+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_cursorline_3.dump b/src/testdir/dumps/Test_popupwin_cursorline_3.dump new file mode 100644 index 0000000..5866f4f --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_cursorline_3.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @31|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |1@2| | +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@33 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_cursorline_4.dump b/src/testdir/dumps/Test_popupwin_cursorline_4.dump new file mode 100644 index 0000000..6139eb7 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_cursorline_4.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @31|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |3@2| | +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@33 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_cursorline_5.dump b/src/testdir/dumps/Test_popupwin_cursorline_5.dump new file mode 100644 index 0000000..bd9b2d4 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_cursorline_5.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @31|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |1+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@33 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_cursorline_6.dump b/src/testdir/dumps/Test_popupwin_cursorline_6.dump new file mode 100644 index 0000000..d814edd --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_cursorline_6.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @31|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |3+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@33 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_cursorline_7.dump b/src/testdir/dumps/Test_popupwin_cursorline_7.dump new file mode 100644 index 0000000..15eb0be --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_cursorline_7.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @34|1+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35 +|~| @34|2+0#0000001#e0e0e08@2| +0#4040ff13#ffffff0@35 +|~| @34|3+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_cursorline_8.dump b/src/testdir/dumps/Test_popupwin_cursorline_8.dump new file mode 100644 index 0000000..51a009a --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_cursorline_8.dump @@ -0,0 +1,10 @@ +>o+0&#ffffff0|n|e| @71 +|t|w|o| @71 +|t|h|r|e@1| @69 +|~+0#4040ff13&| @33|o+0#0000001#ffd7ff255|n|e| @1| +0#4040ff13#ffffff0@34 +|~| @33|t+0#0000001#e0e0e08|w|o| @1| +0#4040ff13#ffffff0@34 +|~| @33|t+0#0000001#ffd7ff255|h|r|e@1| +0#4040ff13#ffffff0@34 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_doublewidth_1.dump b/src/testdir/dumps/Test_popupwin_doublewidth_1.dump new file mode 100644 index 0000000..d59466d --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_doublewidth_1.dump @@ -0,0 +1,10 @@ +>x+0&#ffffff0| |你*0#0000001#ffd7ff255|好|,|世|界| +&|-| |>+0#4040ff13&| +0#0000000#ffffff0|好*&|世|界|你|好| +&@47 +|你*&|你*0#0000001#ffd7ff255|好|,|世|界|x+&@3|好*0#0000000#ffffff0|世|界|你|好| +&@48 +|x| |x+0#0000001#ffd7ff255| @12| +0#0000000#ffffff0|好*&|世|界|你|好| +&@47 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_drag_01.dump b/src/testdir/dumps/Test_popupwin_drag_01.dump new file mode 100644 index 0000000..afed63e --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_drag_01.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @35||+1&&|1+0&&| @35 +|2| @35||+1&&|2+0&&| @35 +|3| @35||+1&&|3+0&&| @35 +|4| @35||+1&&|4+0&&| @35 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|1+0&&| @31|╔+0#0000001#ffd7ff255|═@5|╗| +0#0000000#ffffff0@33 +|2| @31|║+0#0000001#ffd7ff255|1@3| @1|║| +0#0000000#ffffff0@33 +|3| @31|║+0#0000001#ffd7ff255|2@5|║| +0#0000000#ffffff0@33 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @10|║+0#0000001#ffd7ff255|3@4| |║| +1#0000000#ffffff0|N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +| +0&&@32|╚+0#0000001#ffd7ff255|═@5|⇲| +0#0000000#ffffff0@33 diff --git a/src/testdir/dumps/Test_popupwin_drag_02.dump b/src/testdir/dumps/Test_popupwin_drag_02.dump new file mode 100644 index 0000000..a6a560d --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_drag_02.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @35||+1&&|1+0&&| @35 +|2| @11|╔+0#0000001#ffd7ff255|═@5|╗| +0#0000000#ffffff0@15||+1&&|2+0&&| @35 +|3| @11|║+0#0000001#ffd7ff255|1@3| @1|║| +0#0000000#ffffff0@15||+1&&|3+0&&| @35 +|4| @11|║+0#0000001#ffd7ff255|2@5|║| +0#0000000#ffffff0@15||+1&&|4+0&&| @35 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]|║+0#0000001#ffd7ff255|3@4| |║|1+3#0000000#ffffff0| @11|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|1+0&&| @11|╚+0#0000001#ffd7ff255|═@5|⇲| +0#0000000#ffffff0@15||+1&&|1+0&&| @35 +|2| @35||+1&&|2+0&&| @35 +|3| @35||+1&&|3+0&&| @35 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p| |[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +| +0&&@74 diff --git a/src/testdir/dumps/Test_popupwin_drag_03.dump b/src/testdir/dumps/Test_popupwin_drag_03.dump new file mode 100644 index 0000000..497a6e3 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_drag_03.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @35||+1&&|1+0&&| @35 +|2| @11|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@11||+1&&|2+0&&| @35 +|3| @11|║+0#0000001#ffd7ff255|1@3| @5|║| +0#0000000#ffffff0@11||+1&&|3+0&&| @35 +|4| @11|║+0#0000001#ffd7ff255|2@5| @3|║| +0#0000000#ffffff0@11||+1&&|4+0&&| @35 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]|║+0#0000001#ffd7ff255|3@4| @4|║| +3#0000000#ffffff0@8|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|1+0&&| @11|║+0#0000001#ffd7ff255| +0#4040ff13&@9|║+0#0000001&| +0#0000000#ffffff0@11||+1&&|1+0&&| @35 +|2| @11|╚+0#0000001#ffd7ff255|═@9|⇲| +0#0000000#ffffff0@11||+1&&|2+0&&| @35 +|3| @35||+1&&|3+0&&| @35 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p| |[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|:+0&&|c|a|l@1| |R|e|s|i|z|e|(|)| @60 diff --git a/src/testdir/dumps/Test_popupwin_drag_04.dump b/src/testdir/dumps/Test_popupwin_drag_04.dump new file mode 100644 index 0000000..931e13c --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_drag_04.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @35||+1&&|1+0&&| @35 +|2| @15|╔+0#0000001#ffd7ff255|═@9|╗| +0#0000000#ffffff0@7||+1&&|2+0&&| @35 +|3| @15|║+0#0000001#ffd7ff255|1@3| @5|║| +0#0000000#ffffff0@7||+1&&|3+0&&| @35 +|4| @15|║+0#0000001#ffd7ff255|2@5| @3|║| +0#0000000#ffffff0@7||+1&&|4+0&&| @35 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @3|║+0#0000001#ffd7ff255|3@4| @4|║| +3#0000000#ffffff0@4|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|1+0&&| @15|║+0#0000001#ffd7ff255| +0#4040ff13&@9|║+0#0000001&| +0#0000000#ffffff0@7||+1&&|1+0&&| @35 +|2| @15|╚+0#0000001#ffd7ff255|═@9|⇲| +0#0000000#ffffff0@7||+1&&|2+0&&| @35 +|3| @35||+1&&|3+0&&| @35 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p| |[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|:+0&&|c|a|l@1| |C|l|i|c|k|A|n|d|D|r|a|g|(|)| @54 diff --git a/src/testdir/dumps/Test_popupwin_drag_05.dump b/src/testdir/dumps/Test_popupwin_drag_05.dump new file mode 100644 index 0000000..3ca5513 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_drag_05.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @35||+1&&|1+0&&| @35 +|2| @35||+1&&|2+0&&| @35 +|3| @2|h+0#0000001#ffd7ff255|e|l@1|o| +0#0000000#ffffff0@27||+1&&|3+0&&| @35 +|4| @35||+1&&|4+0&&| @35 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|1+0&&| @35||+1&&|1+0&&| @35 +|2| @35||+1&&|2+0&&| @35 +|3| @35||+1&&|3+0&&| @35 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p| |[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|:+0&&|c|a|l@1| |D|r|a|g|A|l@1|S|t|a|r|t|(|)| @54 diff --git a/src/testdir/dumps/Test_popupwin_drag_06.dump b/src/testdir/dumps/Test_popupwin_drag_06.dump new file mode 100644 index 0000000..702f051 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_drag_06.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @35||+1&&|1+0&&| @35 +|2| @35||+1&&|2+0&&| @35 +|3| @35||+1&&|3+0&&| @35 +|4| @35||+1&&|4+0&&| @35 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|h+0#0000001#ffd7ff255|e|l@1|o|o+1#0000000#ffffff0| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|1+0&&| @35||+1&&|1+0&&| @35 +|2| @35||+1&&|2+0&&| @35 +|3| @35||+1&&|3+0&&| @35 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p| |[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p +|:+0&&|c|a|l@1| |D|r|a|g|A|l@1|D|r|a|g|(|)| @55 diff --git a/src/testdir/dumps/Test_popupwin_drag_minwidth_1.dump b/src/testdir/dumps/Test_popupwin_drag_minwidth_1.dump new file mode 100644 index 0000000..fbeec7a --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_drag_minwidth_1.dump @@ -0,0 +1,10 @@ +>╔+0#0000001#ffd7ff255|═@73 +|║|0| @72 +|║|1| @72 +|║|2| @72 +|║|3| @72 +|║|4| @72 +|║|5| @72 +|║|6| @72 +|║|7| @72 +|║|8| @72 diff --git a/src/testdir/dumps/Test_popupwin_drag_minwidth_2.dump b/src/testdir/dumps/Test_popupwin_drag_minwidth_2.dump new file mode 100644 index 0000000..b4edcfe --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_drag_minwidth_2.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @26|╔+0#0000001#ffd7ff255|═@44|╗ +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|0| @42| +0#0000000#0000001|║+0#0000001#ffd7ff255 +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|1| @42| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|2| @42| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|3| @42| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +| +0#0000000#ffffff0@27|╚+0#0000001#ffd7ff255|═@44|╝ diff --git a/src/testdir/dumps/Test_popupwin_drag_minwidth_3.dump b/src/testdir/dumps/Test_popupwin_drag_minwidth_3.dump new file mode 100644 index 0000000..e429d38 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_drag_minwidth_3.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @26|╔+0#0000001#ffd7ff255|═@44|╗ +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|0| @42| +0#0000000#0000001|║+0#0000001#ffd7ff255 +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|1| @42| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|2| @42| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|3| @42| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|4| @42| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|~+0#4040ff13#ffffff0| @26|║+0#0000001#ffd7ff255|5| @42| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +| +0#0000000#ffffff0@27|╚+0#0000001#ffd7ff255|═@44|╝ diff --git a/src/testdir/dumps/Test_popupwin_firstline_1.dump b/src/testdir/dumps/Test_popupwin_firstline_1.dump new file mode 100644 index 0000000..b3b0349 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_firstline_1.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @32|3+0#0000001#ffd7ff255@4| | +0#0000000#a8a8a8255| +0&#ffffff0@33 +|5| @32|4+0#0000001#ffd7ff255@1| @3| +0#0000000#0000001| +0&#ffffff0@33 +|6| @32|5+0#0000001#ffd7ff255| @4| +0#0000000#0000001| +0&#ffffff0@33 +|7| @32|6+0#0000001#ffd7ff255@5| +0#0000000#a8a8a8255| +0&#ffffff0@33 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_firstline_2.dump b/src/testdir/dumps/Test_popupwin_firstline_2.dump new file mode 100644 index 0000000..6b95fb5 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_firstline_2.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @27|6+0#0000001#ffd7ff255@5| @9| +0#0000000#a8a8a8255| +0&#ffffff0@28 +|5| @27|7+0#0000001#ffd7ff255@4| @10| +0#0000000#a8a8a8255| +0&#ffffff0@28 +|6| @27|8+0#0000001#ffd7ff255@2| @12| +0#0000000#0000001| +0&#ffffff0@28 +|7| @27|9+0#0000001#ffd7ff255@15| +0#0000000#0000001| +0&#ffffff0@28 +|8| @73 +|9| @73 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_infopopup_1.dump b/src/testdir/dumps/Test_popupwin_infopopup_1.dump new file mode 100644 index 0000000..36bb2ee --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_1.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|a|w|o|r|d> @15|╔+0&#ffff4012|═@15|X| +0&#ffffff0@9 +|~+0#4040ff13&| @23| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| |║+0#0000000#ffff4012| |w|o|r|d|s| |a|r|e| |c|o@1|l| |║| +0#4040ff13#ffffff0@9 +|~| @23| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| |╚+0#0000000#ffff4012|═@15|⇲| +0#4040ff13#ffffff0@9 +|~| @23| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_2.dump b/src/testdir/dumps/Test_popupwin_infopopup_2.dump new file mode 100644 index 0000000..34c46e9 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_2.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|a|n|o|t|h|e|r|w|o|r|d> @37 +|~+0#4040ff13&| @23| +0#0000001#ffd7ff255|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| |╔+0#0000000#ffff4012|═@25|X +|~+0#4040ff13#ffffff0| @23| +0#0000001#e0e0e08|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| |║+0#0000000#ffff4012| |o|t|h|e|r| |w|o|r|d|s| |a|r|e| @9|║ +|~+0#4040ff13#ffffff0| @23| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| |║+0#0000000#ffff4012| |c|o@1|l|e|r| |t|h|a|n| |t|h|i|s| |a|n|d| |s|o|m| |║ +|~+0#4040ff13#ffffff0| @23| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| |║+0#0000000#ffff4012| |e| |m|o|r|e| |t|e|x|t| @13|║ +|~+0#4040ff13#ffffff0| @45|║+0#0000000#ffff4012| |t|o| |m|a|k|e| |w|r|a|p| @12|║ +|~+0#4040ff13#ffffff0| @45|╚+0#0000000#ffff4012|═@25|⇲ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |2| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_3.dump b/src/testdir/dumps/Test_popupwin_infopopup_3.dump new file mode 100644 index 0000000..fe5e7b1 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_3.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|n|o|i|n|f|o> @42 +|~+0#4040ff13&| @23| +0#0000001#ffd7ff255|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| |╔+0#0000000#ffff4012|═@11|X| +0#4040ff13#ffffff0@13 +|~| @23| +0#0000001#e0e0e08|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| |║+0#0000000#ffff4012| |l|e|t|s| @5| +0|║+0&#ffff4012| +0#4040ff13#ffffff0@13 +|~| @23| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| |║+0#0000000#ffff4012| |s|h|o|w| @5| +0|║+0&#ffff4012| +0#4040ff13#ffffff0@13 +|~| @45|║+0#0000000#ffff4012| |a| @8| +0|║+0&#ffff4012| +0#4040ff13#ffffff0@13 +|~| @45|║+0#0000000#ffff4012| |s|c|r|o|l@1|b|a|r| | +0&#a8a8a8255|║+0&#ffff4012| +0#4040ff13#ffffff0@13 +|~| @45|╚+0#0000000#ffff4012|═@11|⇲| +0#4040ff13#ffffff0@13 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |3| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_4.dump b/src/testdir/dumps/Test_popupwin_infopopup_4.dump new file mode 100644 index 0000000..3a15a9f --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_4.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| > @39 +|~+0#4040ff13&| @23| +0#0000001#ffd7ff255|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |B+0#e000002&|a|c|k| |a|t| |o|r|i|g|i|n|a|l| +0#0000000&@22 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_5.dump b/src/testdir/dumps/Test_popupwin_infopopup_5.dump new file mode 100644 index 0000000..fbcebee --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_5.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|s|t| |t|e|x|t| |n|o|i|n|f|o> @23 +|~+0#4040ff13&| @42| +0#0000001#ffd7ff255|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@8 +|~| @28|╔+0#0000000#ffff4012|═@11|X| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@8 +|~| @28|║+0#0000000#ffff4012| |l|e|t|s| @5| +0|║+0&#ffff4012| +0#0000001#e0e0e08|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@8 +|~| @28|║+0#0000000#ffff4012| |s|h|o|w| @5| +0|║+0&#ffff4012| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@8 +|~| @28|║+0#0000000#ffff4012| |a| @8| +0|║+0&#ffff4012| +0#4040ff13#ffffff0@30 +|~| @28|║+0#0000000#ffff4012| |s|c|r|o|l@1|b|a|r| | +0&#a8a8a8255|║+0&#ffff4012| +0#4040ff13#ffffff0@30 +|~| @28|╚+0#0000000#ffff4012|═@11|⇲| +0#4040ff13#ffffff0@30 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |3| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_6.dump b/src/testdir/dumps/Test_popupwin_infopopup_6.dump new file mode 100644 index 0000000..18ed96b --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_6.dump @@ -0,0 +1,14 @@ +|a+0&#ffffff0|w|o|r|d> @17|╔+0&#ffff4012|═@15|X| +0&#ffffff0@33 +|w+0#0000001#e0e0e08|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#0000001|║+0&#ffff4012| |w|o|r|d|s| |a|r|e| |c|o@1|l| |║| +0#4040ff13#ffffff0@33 +|a+0#0000001#ffd7ff255|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#0000001|╚+0&#ffff4012|═@15|⇲| +0#4040ff13#ffffff0@33 +|n+0#0000001#ffd7ff255|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@51 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_7.dump b/src/testdir/dumps/Test_popupwin_infopopup_7.dump new file mode 100644 index 0000000..3890d12 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_7.dump @@ -0,0 +1,14 @@ +|a+0&#ffffff0|w|o|r|d| @69 +|t|e|s|t| |t|e|x|t| |a|w|o|r|d> @17|╔+0&#ffff4012|═@15|X| +0&#ffffff0@23 +|~+0#4040ff13&| @7| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#0000001|║+0&#ffff4012| |w|o|r|d|s| |a|r|e| |c|o@1|l| |║| +0#4040ff13#ffffff0@23 +|~| @7| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#0000001|╚+0&#ffff4012|═@15|⇲| +0#4040ff13#ffffff0@23 +|~| @7| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@41 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_8.dump b/src/testdir/dumps/Test_popupwin_infopopup_8.dump new file mode 100644 index 0000000..6838bcd --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_8.dump @@ -0,0 +1,14 @@ +|a+0&#ffffff0|w|o|r|d| @69 +|t|e|s|t| |t|a|w|o|r|d> @63 +|~+0#4040ff13&| @3| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#0000001| +0#0000001#e0e0e08|w|o|r|d|s| |a|r|e| |c|o@1|l| | +0#4040ff13#ffffff0@29 +|~| @3| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#0000001| +0#4040ff13#ffffff0@45 +|~| @3| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@45 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_9.dump b/src/testdir/dumps/Test_popupwin_infopopup_9.dump new file mode 100644 index 0000000..4a5fb3b --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_9.dump @@ -0,0 +1,14 @@ +|a+0&#ffffff0|w|o|r|d| @69 +|t|e|s|a|w|o|r|d> @66 +|~+0#4040ff13&| | +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#0000001| +0#0000001#e0e0e08|w|o|r|d|s| |a|r|e| @1| +0#4040ff13#ffffff0@36 +|~| | +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#0000001| +0#0000001#e0e0e08|c|o@1|l| @6| +0#4040ff13#ffffff0@36 +|~| | +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| @1| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@48 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_align_1.dump b/src/testdir/dumps/Test_popupwin_infopopup_align_1.dump new file mode 100644 index 0000000..20c9790 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_align_1.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t@1|h|a|t|w|o|r|d> @40 +|~+0#4040ff13&| @23| +0#0000001#ffd7ff255|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0&#e0e0e08|t|h|a|t| |w|o|r|d| |i|s| |c|o@1|l| | +0#4040ff13#ffffff0@8 +|~| @23| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#e0e0e08|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |4| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_align_2.dump b/src/testdir/dumps/Test_popupwin_infopopup_align_2.dump new file mode 100644 index 0000000..6b4a4e0 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_align_2.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t@1|h|a|t|w|o|r|d|t|e|s|t| |t|e|x|t| |t|e|s|t| |a|n|o|t|h|e|r|w|o|r|d> @14 +|~+0#4040ff13&| @9| +0#0000001#e0e0e08|o|t|h|e|r| |w|o|r|d|s| |a|r|e| @20| +0&#ffd7ff255|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@4 +|~| @9| +0#0000001#e0e0e08|c|o@1|l|e|r| |t|h|a|n| |t|h|i|s| |a|n|d| |s|o|m|e| |m|o|r|e| |t|e|x|t| @1|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@4 +|~| @9| +0#0000001#e0e0e08|t|o| |m|a|k|e| |w|r|a|p| @23| +0&#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@4 +|~| @46| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@4 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |2| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_align_3.dump b/src/testdir/dumps/Test_popupwin_infopopup_align_3.dump new file mode 100644 index 0000000..2599094 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_align_3.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t@1|h|a|t|w|o|r|d|t|e|s|t| |t|e|x|t| |t|e|s|t| |a|n|o|t|h|e|r|w|o|r|d| @14 +|x| @73 +|x| @73 +|x| @73 +|x| @73 +|x| @73 +|x| @73 +|x| @7| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43 +|x| @7| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43 +|x| @7| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43 +|x| @7| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffff4012|w|o|r|d|s| |a|r|e| |c|o@1|l| | +0&#ffffff0@27 +|t|e|s|t| |t|e|x|t| |a|w|o|r|d> @59 +|~+0#4040ff13&| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_hidden_1.dump b/src/testdir/dumps/Test_popupwin_infopopup_hidden_1.dump new file mode 100644 index 0000000..f56ebc4 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_hidden_1.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|a|w|o|r|d> @43 +|~+0#4040ff13&| @23| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_hidden_2.dump b/src/testdir/dumps/Test_popupwin_infopopup_hidden_2.dump new file mode 100644 index 0000000..d834e57 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_hidden_2.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|a|n|o|t|h|e|r|w|o|r|d> @37 +|~+0#4040ff13&| @23| +0#0000001#ffd7ff255|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0&#e0e0e08|i|m@1|e|d|i|a|t|e| |i|n|f|o| |3| | +0#4040ff13#ffffff0@9 +|~| @23| +0#0000001#e0e0e08|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |2| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_hidden_3.dump b/src/testdir/dumps/Test_popupwin_infopopup_hidden_3.dump new file mode 100644 index 0000000..410c393 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_hidden_3.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|n|o|i|n|f|o> @42 +|~+0#4040ff13&| @23| +0#0000001#ffd7ff255|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0&#e0e0e08|a|s|y|n|c| |i|n|f|o| |4| | +0#4040ff13#ffffff0@13 +|~| @23| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#e0e0e08|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |3| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_nb_1.dump b/src/testdir/dumps/Test_popupwin_infopopup_nb_1.dump new file mode 100644 index 0000000..41208ee --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_nb_1.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|a|w|o|r|d> @43 +|~+0#4040ff13&| @23| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| @1|w|o|r|d|s| |a|r|e| |c|o@1|l| | +0#4040ff13#ffffff0@11 +|~| @23| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @23| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_infopopup_wide_1.dump b/src/testdir/dumps/Test_popupwin_infopopup_wide_1.dump new file mode 100644 index 0000000..f7b583b --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_infopopup_wide_1.dump @@ -0,0 +1,8 @@ +|s+0&#ffffff0|c|r|a|p> @69 +|s+0#0000001#e0e0e08|c|r|a|p| @5|s|o|m|e| |l|o|n|g| |t|e|x|t| |t|o| |m|a|k|e| |s|u|r|e| |t|h|e| |m|e|n|u| |t|a|k|e|s| |u|p| |a|l@1| |o|f| |t|h|e| |w|i|d|t|h| |o +|s+0&#ffd7ff255|c|a|p@1|i|e|r| @2|s|o|m|e| |l|o|n|g| |t|e|x|t| |t|o| |m|a|k|e| |s|u|r|e| |t|h|e| |m|e|n|u| |t|a|k|e|s| |u|p| |a|l@1| |o|f| |t|h|e| |w|i|d|t|h| |o +|s|c|r|a|p@1|i|e|r|2| |s|o|m|e| |l|o|n|g| |t|e|x|t| |t|o| |m|a|k|e| |s|u|r|e| |t|h|e| |m|e|n|u| |t|a|k|e|s| |u|p| |a|l@1| |o|f| |t|h|e| |w|i|d|t|h| |o +|4+0#0000000#ffffff0| @73 +|5| @73 +|6| @73 +|-+2&&@1| |O|m|n|i| |c|o|m|p|l|e|t|i|o|n| |(|^|O|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |3| +0#0000000&@34 diff --git a/src/testdir/dumps/Test_popupwin_longtitle_1.dump b/src/testdir/dumps/Test_popupwin_longtitle_1.dump new file mode 100644 index 0000000..92af8b2 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_longtitle_1.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @25| +0#0000001#ffd7ff255|a| |v|e|r|y| |.@2|g| |t|o| |f|i|t| | +0#0000000#ffffff0@27 +|5| @25|o+0#0000001#ffd7ff255|n|e| @16| +0#0000000#ffffff0@27 +|6| @25|t+0#0000001#ffd7ff255|w|o| @16| +0#0000000#ffffff0@27 +|7| @25|a+0#0000001#ffd7ff255|n|o|t|h|e|r| @12| +0#0000000#ffffff0@27 +|8| @73 +|9| @73 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_longtitle_2.dump b/src/testdir/dumps/Test_popupwin_longtitle_2.dump new file mode 100644 index 0000000..079fbc3 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_longtitle_2.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @24|╔+0#0000001#ffd7ff255|a| |v|e|r|y| |l|.@2|n|g| |t|o| |f|i|t|╗| +0#0000000#ffffff0@26 +|4| @24|║+0#0000001#ffd7ff255|o|n|e| @16|║| +0#0000000#ffffff0@26 +|5| @24|║+0#0000001#ffd7ff255|t|w|o| @16|║| +0#0000000#ffffff0@26 +|6| @24|║+0#0000001#ffd7ff255|a|n|o|t|h|e|r| @12|║| +0#0000000#ffffff0@26 +|7| @24|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26 +|8| @73 +|9| @73 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_longtitle_3.dump b/src/testdir/dumps/Test_popupwin_longtitle_3.dump new file mode 100644 index 0000000..b1e67c2 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_longtitle_3.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @27| +0#0000001#ffd7ff255|T|i|t|l|e| @9| +0#0000000#ffffff0@29 +|4| @27| +0#0000001#ffd7ff255@15| +0#0000000#ffffff0@29 +|5| @27| +0#0000001#ffd7ff255@1|a@2| @10| +0#0000000#ffffff0@29 +|6| @27| +0#0000001#ffd7ff255@1|b@2| @10| +0#0000000#ffffff0@29 +|7| @27| +0#0000001#ffd7ff255@15| +0#0000000#ffffff0@29 +|8| @27| +0#0000001#ffd7ff255@15| +0#0000000#ffffff0@29 +|9| @73 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_longtitle_4.dump b/src/testdir/dumps/Test_popupwin_longtitle_4.dump new file mode 100644 index 0000000..02ae4cc --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_longtitle_4.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @26|╔+0#0000001#ffd7ff255|T|i|t|l|e|═@10|╗| +0#0000000#ffffff0@28 +|3| @26|║+0#0000001#ffd7ff255| @15|║| +0#0000000#ffffff0@28 +|4| @26|║+0#0000001#ffd7ff255| @15|║| +0#0000000#ffffff0@28 +|5| @26|║+0#0000001#ffd7ff255| @1|a@2| @10|║| +0#0000000#ffffff0@28 +|6| @26|║+0#0000001#ffd7ff255| @1|b@2| @10|║| +0#0000000#ffffff0@28 +|7| @26|║+0#0000001#ffd7ff255| @15|║| +0#0000000#ffffff0@28 +|8| @26|║+0#0000001#ffd7ff255| @15|║| +0#0000000#ffffff0@28 +|9| @26|╚+0#0000001#ffd7ff255|═@15|╝| +0#0000000#ffffff0@28 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_mask_1.dump b/src/testdir/dumps/Test_popupwin_mask_1.dump new file mode 100644 index 0000000..2fa0d7c --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_mask_1.dump @@ -0,0 +1,13 @@ +>1+0&#ffffff0|2|3|4|5|6|7|8|9|1| +0&#e0e0e08@12|1+0&#ffffff0|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9| +0&#e0e0e08|s|o|m|e| |1+0&#ffffff0|3|1|t+0&#e0e0e08| @3|1+0&#ffffff0|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9| +0&#e0e0e08|0+0&#ffffff0|1@1|t+0&#e0e0e08|h|1+0&#ffffff0|3|x+0#0000001#ffd7ff255|l+0#0000000#e0e0e08|i|n|e| |x+0#0000001#ffd7ff255@2|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9| +0&#e0e0e08@8|y+0#0000001#ffd7ff255@7|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|═+0#0000001#ffd7ff255@13|X|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|║+0#0000001#ffd7ff255| @4|1+0#0000000#ffffff0|3|1| +0#0000001#ffd7ff255@6|║|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|║+0#0000001#ffd7ff255| |j|u|s|t|1+0#0000000#ffffff0|3|1|e+0#0000001#ffd7ff255| |l|i|n|e| |║|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|║+0#0000001#ffd7ff255| @10|1+0#0000000#ffffff0|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|╚+0#0000001#ffd7ff255|═|1+0#0000000#ffffff0@2|═+0#0000001#ffd7ff255@4|1+0#0000000#ffffff0|5|1|6|═+0#0000001#ffd7ff255@1|╝|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +| @56|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_mask_2.dump b/src/testdir/dumps/Test_popupwin_mask_2.dump new file mode 100644 index 0000000..173d40a --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_mask_2.dump @@ -0,0 +1,13 @@ +>1+0&#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0| +0&#e0e0e08@12|7+0&#ffffff0|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1| +0&#e0e0e08|s|o|m|e| |3+0&#ffffff0|x+0#0000001#ffd7ff255@1|t+0#0000000#e0e0e08| @3|x+0#0000001#ffd7ff255@1|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1| +0&#e0e0e08|1+0&#ffffff0@2|t+0&#e0e0e08|h|3+0&#ffffff0|y+0#0000001#ffd7ff255@1|l+0#0000000#e0e0e08|i|n|e| |y+0#0000001#ffd7ff255@1|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1| +0&#e0e0e08@8|1+0&#ffffff0|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@1|═+0#0000001#ffd7ff255@13|X|9+0#0000000#ffffff0|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|║+0#0000001#ffd7ff255| @4|1+0#0000000#ffffff0|4|1| +0#0000001#ffd7ff255@6|║|9+0#0000000#ffffff0|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|║+0#0000001#ffd7ff255| |j|u|s|t|1+0#0000000#ffffff0|4|1|e+0#0000001#ffd7ff255| |l|i|n|e| |║|9+0#0000000#ffffff0|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|║+0#0000001#ffd7ff255| @10|1+0#0000000#ffffff0|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|╚+0#0000001#ffd7ff255|═|1+0#0000000#ffffff0|2|1|═+0#0000001#ffd7ff255@4|1+0#0000000#ffffff0|6|1|7|═+0#0000001#ffd7ff255@1|╝|9+0#0000000#ffffff0|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_mask_3.dump b/src/testdir/dumps/Test_popupwin_mask_3.dump new file mode 100644 index 0000000..40681fb --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_mask_3.dump @@ -0,0 +1,13 @@ +>1+0&#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7| +0&#e0e0e08@9 +|1+0&#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|x+0#0000001#ffd7ff255@8|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3| +0&#e0e0e08|s|o|m|e| |0+0&#ffffff0|4|1|t+0&#e0e0e08| +|1+0&#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|y+0#0000001#ffd7ff255@8|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3| +0&#e0e0e08|3+0&#ffffff0|8|3|t+0&#e0e0e08|h|0+0&#ffffff0|4|1|l+0&#e0e0e08|i +|1+0&#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3| +0&#e0e0e08@8|4+0&#ffffff0|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|═+0#0000001#ffd7ff255@10 +|1+0#0000000#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|║+0#0000001#ffd7ff255| @4|9+0#0000000#ffffff0|4|0| +0#0000001#ffd7ff255@3 +|1+0#0000000#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|║+0#0000001#ffd7ff255| |j|u|s|t|9+0#0000000#ffffff0|4|0|e+0#0000001#ffd7ff255| |l|i +|1+0#0000000#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|║+0#0000001#ffd7ff255| @10|2+0#0000000#ffffff0 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|╚+0#0000001#ffd7ff255|═|7+0#0000000#ffffff0|3|8|═+0#0000001#ffd7ff255@4|1+0#0000000#ffffff0|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_mask_4.dump b/src/testdir/dumps/Test_popupwin_mask_4.dump new file mode 100644 index 0000000..0cf44d2 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_mask_4.dump @@ -0,0 +1,13 @@ +>1+0&#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +| +0&#e0e0e08@11|1+0&#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|o+0&#e0e0e08|m|e| |5+0&#ffffff0|6|7|t+0&#e0e0e08| @3|1+0&#ffffff0@1|2|1|3|x+0#0000001#ffd7ff255@8|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|t+0&#e0e0e08|h|5+0&#ffffff0|6|7|l+0&#e0e0e08|i|n|e| |1+0&#ffffff0@1|2|1|3|y+0#0000001#ffd7ff255@8|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +| +0&#e0e0e08@6|8+0&#ffffff0|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|═+0#0000001#ffd7ff255@10|X|1+0#0000000#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +| +0#0000001#ffd7ff255|2+0#0000000#ffffff0|3|4| +0#0000001#ffd7ff255@6|║|1+0#0000000#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|t+0#0000001#ffd7ff255|2+0#0000000#ffffff0|3|4|e+0#0000001#ffd7ff255| |l|i|n|e| |║|1+0#0000000#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +| +0#0000001#ffd7ff255@6|8+0#0000000#ffffff0|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|═+0#0000001#ffd7ff255@4|6+0#0000000#ffffff0|7|8|9|═+0#0000001#ffd7ff255@1|╝|1+0#0000000#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_mask_5.dump b/src/testdir/dumps/Test_popupwin_mask_5.dump new file mode 100644 index 0000000..78cc6f0 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_mask_5.dump @@ -0,0 +1,13 @@ +>1+0&#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|x+0#0000001#ffd7ff255@8|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|y+0#0000001#ffd7ff255@8|8+0#0000000#ffffff0|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +| +0&#e0e0e08@11|1+0&#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|═+0#0000001#ffd7ff255@13|X|4+0#0000000#ffffff0|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|o+0&#e0e0e08|m|e| |5+0&#ffffff0|6|7|t+0&#e0e0e08| @3|1+0&#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|║+0#0000001#ffd7ff255| @4|2+0#0000000#ffffff0|9|3| +0#0000001#ffd7ff255@6|║|4+0#0000000#ffffff0|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2 +|:| |t+0&#e0e0e08|h| +0&#ffffff0@2|l+0&#e0e0e08|i|n|e| | +0&#ffffff0@28|║+0#0000001#ffd7ff255| |j|u|s|t| +0#0000000#ffffff0@2|e+0#0000001#ffd7ff255| |l|i|n|e| |║|,+0#0000000#ffffff0|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_matches.dump b/src/testdir/dumps/Test_popupwin_matches.dump new file mode 100644 index 0000000..6d9faf3 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_matches.dump @@ -0,0 +1,10 @@ +|1+0#ffffff16#e000002@2| +0#0000000#ffffff0|2@2| |3@2| @63 +>4+0#4040ff13&@2| +0#0000000&|5@2| |6+0&#ffff4012@2| +0&#ffffff0@63 +|~+0#4040ff13&| @7|╔+0#0000001#ffd7ff255|═@10|╗| +0#4040ff13#ffffff0@52 +|~| @7|║+0#0000001#ffd7ff255|1+0#ffffff16#e000002@2| +0#0000001#ffd7ff255|2@2| |3@2|║| +0#4040ff13#ffffff0@52 +|~| @7|║+0#0000001#ffd7ff255|4@2| |5+0#4040ff13&@2| +0#0000001&|6@2|║| +0#4040ff13#ffffff0@52 +|~| @7|╚+0#0000001#ffd7ff255|═@10|╝| +0#4040ff13#ffffff0@52 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_menu_01.dump b/src/testdir/dumps/Test_popupwin_menu_01.dump new file mode 100644 index 0000000..b41b398 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_01.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @20|╔+0#0000001#ffd7ff255| |m|a|k|e| |a| |c|h|o|i|c|e| |f|r|o|m| |t|h|e| |l|i|s|t| |╗| +0#0000000#ffffff0@21 +|4| @20|║+0#0000001#ffd7ff255| |o+0fd7ff255|n|e| @23| +0&#ffd7ff255|║| +0#0000000#ffffff0@21 +|5| @20|║+0#0000001#ffd7ff255| |t|w|o| @24|║| +0#0000000#ffffff0@21 +|6| @20|║+0#0000001#ffd7ff255| |a|n|o|t|h|e|r| @20|║| +0#0000000#ffffff0@21 +|7| @20|╚+0#0000001#ffd7ff255|═@28|╝| +0#0000000#ffffff0@21 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_menu_02.dump b/src/testdir/dumps/Test_popupwin_menu_02.dump new file mode 100644 index 0000000..b7a40e8 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_02.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @20|╔+0#0000001#ffd7ff255| |m|a|k|e| |a| |c|h|o|i|c|e| |f|r|o|m| |t|h|e| |l|i|s|t| |╗| +0#0000000#ffffff0@21 +|4| @20|║+0#0000001#ffd7ff255| |o|n|e| @24|║| +0#0000000#ffffff0@21 +|5| @20|║+0#0000001#ffd7ff255| |t|w|o| @24|║| +0#0000000#ffffff0@21 +|6| @20|║+0#0000001#ffd7ff255| |a+0fd7ff255|n|o|t|h|e|r| @19| +0&#ffd7ff255|║| +0#0000000#ffffff0@21 +|7| @20|╚+0#0000001#ffd7ff255|═@28|╝| +0#0000000#ffffff0@21 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_menu_03.dump b/src/testdir/dumps/Test_popupwin_menu_03.dump new file mode 100644 index 0000000..1aa7fe8 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_03.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|s|e|l|e|c|t|e|d| |3| @46|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_menu_04.dump b/src/testdir/dumps/Test_popupwin_menu_04.dump new file mode 100644 index 0000000..2ee61fc --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_04.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @31|╔+0#0000001#ffd7ff255|═@6|╗| +0#0000000#ffffff0@32 +|4| @31|║+0#0000001#ffd7ff255| |o+0(ff4011|n|e| @1| +0&#ffd7ff255|║| +0#0000000#ffffff0@32 +|5| @31|║+0#0000001#ffd7ff255| |t|w|o| @2|║| +0#0000000#ffffff0@32 +|6| @31|║+0#0000001#ffd7ff255| |t|h|r|e@1| |║| +0#0000000#ffffff0@32 +|7| @31|╚+0#0000001#ffd7ff255|═@6|╝| +0#0000000#ffffff0@32 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_menu_filter_1.dump b/src/testdir/dumps/Test_popupwin_menu_filter_1.dump new file mode 100644 index 0000000..b99b8d0 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_filter_1.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @31|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |1@2| | +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |2+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |3@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@33 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_menu_filter_2.dump b/src/testdir/dumps/Test_popupwin_menu_filter_2.dump new file mode 100644 index 0000000..e510f1d --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_filter_2.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @31|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |1+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |3@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@33 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_menu_filter_3.dump b/src/testdir/dumps/Test_popupwin_menu_filter_3.dump new file mode 100644 index 0000000..77bec0e --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_filter_3.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @31|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |7@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |8@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |9+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@33 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_menu_filter_4.dump b/src/testdir/dumps/Test_popupwin_menu_filter_4.dump new file mode 100644 index 0000000..e510f1d --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_filter_4.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @31|╔+0#0000001#ffd7ff255|═@5|╗| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |1+0&#e0e0e08@2| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |2@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|║+0#0000001#ffd7ff255| |3@2| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@33 +|~| @31|╚+0#0000001#ffd7ff255|═@5|╝| +0#4040ff13#ffffff0@33 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_menu_filter_5.dump b/src/testdir/dumps/Test_popupwin_menu_filter_5.dump new file mode 100644 index 0000000..910e224 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_filter_5.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&> @73 diff --git a/src/testdir/dumps/Test_popupwin_menu_maxwidth_1.dump b/src/testdir/dumps/Test_popupwin_menu_maxwidth_1.dump new file mode 100644 index 0000000..813fb36 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_maxwidth_1.dump @@ -0,0 +1,13 @@ +>╔+0#0000001#ffd7ff255|═@2|╗| +0#0000000#ffffff0@9|╔+0#0000001#ffd7ff255|═@11|╗| +0#0000000#ffffff0@2|╔+0#0000001#ffd7ff255|═@12|╗| +0#0000000#ffffff0@27 +|║+0#0000001#ffd7ff255| |x+0&#e0e0e08| +0&#ffd7ff255|║| +0#0000000#ffffff0@9|║+0#0000001#ffd7ff255| |1+0&#e0e0e08|2|3|4|5|6|7|8|9||| +0&#ffd7ff255|║| +0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| |1+0&#e0e0e08|2|3|4|5|6|7|8|9||| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@27 +|╚+0#0000001#ffd7ff255|═@2|╝| +0#0000000#ffffff0@9|╚+0#0000001#ffd7ff255|═@11|╝| +0#0000000#ffffff0@2|║+0#0000001#ffd7ff255| |1|2|3|4|5|6|7|8|9||| | +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@27 +|4| @30|║+0#0000001#ffd7ff255| |1|2|3|4|5|6|7|8|9||| | +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@27 +|5| @30|╚+0#0000001#ffd7ff255|═@12|╝| +0#0000000#ffffff0@27 +|6| @73 +|╔+0#0000001#ffd7ff255|═@11|╗| +0#0000000#ffffff0|╔+0#0000001#ffd7ff255|═@11|╗| +0#0000000#ffffff0@45 +|║+0#0000001#ffd7ff255| |1+0&#e0e0e08|2|3|4|5|6|7|8|9||| +0&#ffd7ff255|║| +0#0000000#ffffff0|║+0#0000001#ffd7ff255| |1+0&#e0e0e08|2|3|4|5|6|7|8|9||| +0&#ffd7ff255|║| +0#0000000#ffffff0@45 +|╚+0#0000001#ffd7ff255|═@11|╝| +0#0000000#ffffff0|╚+0#0000001#ffd7ff255|═@11|╝| +0#0000000#ffffff0@45 +|1|0| @72 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_menu_scroll_1.dump b/src/testdir/dumps/Test_popupwin_menu_scroll_1.dump new file mode 100644 index 0000000..95d020f --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_scroll_1.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @29|╔+0#0000001#ffd7ff255|═@10|╗| +0#0000000#ffffff0@30 +|4| @29|║+0#0000001#ffd7ff255| |o|n|e| @5| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|5| @29|║+0#0000001#ffd7ff255| |t+0&#e0e0e08|w|o| @4| +0&#ffd7ff255| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|6| @29|║+0#0000001#ffd7ff255| |t|h|r|e@1| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|7| @29|╚+0#0000001#ffd7ff255|═@10|╝| +0#0000000#ffffff0@30 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_menu_scroll_2.dump b/src/testdir/dumps/Test_popupwin_menu_scroll_2.dump new file mode 100644 index 0000000..935e3b4 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_scroll_2.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @29|╔+0#0000001#ffd7ff255|═@10|╗| +0#0000000#ffffff0@30 +|4| @29|║+0#0000001#ffd7ff255| |t|h|r|e@1| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|5| @29|║+0#0000001#ffd7ff255| |f|o|u|r| @4| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|6| @29|║+0#0000001#ffd7ff255| |f+0&#e0e0e08|i|v|e| @3| +0&#ffd7ff255| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|7| @29|╚+0#0000001#ffd7ff255|═@10|╝| +0#0000000#ffffff0@30 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_menu_scroll_3.dump b/src/testdir/dumps/Test_popupwin_menu_scroll_3.dump new file mode 100644 index 0000000..00fe0c8 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_scroll_3.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @29|╔+0#0000001#ffd7ff255|═@10|╗| +0#0000000#ffffff0@30 +|4| @29|║+0#0000001#ffd7ff255| |s|e|v|e|n| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|5| @29|║+0#0000001#ffd7ff255| |e|i|g|h|t| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|6| @29|║+0#0000001#ffd7ff255| |n+0&#e0e0e08|i|n|e| @3| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|7| @29|╚+0#0000001#ffd7ff255|═@10|╝| +0#0000000#ffffff0@30 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_menu_scroll_4.dump b/src/testdir/dumps/Test_popupwin_menu_scroll_4.dump new file mode 100644 index 0000000..d019c86 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_scroll_4.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @29|╔+0#0000001#ffd7ff255|═@10|╗| +0#0000000#ffffff0@30 +|4| @29|║+0#0000001#ffd7ff255| |s+0&#e0e0e08|e|v|e|n| @2| +0&#ffd7ff255| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|5| @29|║+0#0000001#ffd7ff255| |e|i|g|h|t| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|6| @29|║+0#0000001#ffd7ff255| |n|i|n|e| @4| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|7| @29|╚+0#0000001#ffd7ff255|═@10|╝| +0#0000000#ffffff0@30 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_menu_scroll_5.dump b/src/testdir/dumps/Test_popupwin_menu_scroll_5.dump new file mode 100644 index 0000000..132137a --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_scroll_5.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @29|╔+0#0000001#ffd7ff255|═@10|╗| +0#0000000#ffffff0@30 +|4| @29|║+0#0000001#ffd7ff255| |s+0&#e0e0e08|i|x| @4| +0&#ffd7ff255| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|5| @29|║+0#0000001#ffd7ff255| |s|e|v|e|n| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|6| @29|║+0#0000001#ffd7ff255| |e|i|g|h|t| @3| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|7| @29|╚+0#0000001#ffd7ff255|═@10|╝| +0#0000000#ffffff0@30 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_menu_scroll_6.dump b/src/testdir/dumps/Test_popupwin_menu_scroll_6.dump new file mode 100644 index 0000000..6718bb3 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_menu_scroll_6.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @29|╔+0#0000001#ffd7ff255|═@10|╗| +0#0000000#ffffff0@30 +|4| @29|║+0#0000001#ffd7ff255| |o+0&#e0e0e08|n|e| @4| +0&#ffd7ff255| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|5| @29|║+0#0000001#ffd7ff255| |t|w|o| @5| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|6| @29|║+0#0000001#ffd7ff255| |t|h|r|e@1| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@30 +|7| @29|╚+0#0000001#ffd7ff255|═@10|╝| +0#0000000#ffffff0@30 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_multibytetitle.dump b/src/testdir/dumps/Test_popupwin_multibytetitle.dump new file mode 100644 index 0000000..95b0871 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_multibytetitle.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @25|╔+0#0000001#ffd7ff255|▶|Ä|あ*&|い|う|え|お|◀+&|═@4|╗| +0#0000000#ffffff0@27 +|5| @25|║+0#0000001#ffd7ff255| |T+0&#e0e0e08|h|i|s| |i|s| |a| |l|i|n|e| @1| +0&#ffd7ff255|║| +0#0000000#ffffff0@27 +|6| @25|║+0#0000001#ffd7ff255| |a|n|d| |a|n|o|t|h|e|r| |l|i|n|e| |║| +0#0000000#ffffff0@27 +|7| @25|╚+0#0000001#ffd7ff255|═@17|╝| +0#0000000#ffffff0@27 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_normal_cmd.dump b/src/testdir/dumps/Test_popupwin_normal_cmd.dump new file mode 100644 index 0000000..95588d6 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_normal_cmd.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @33|8+0#0000001#ffd7ff255| @1| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @33|9+0#0000001#ffd7ff255| @1| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @33|1+0#0000001#ffd7ff255|0| | +0#0000000#0000001| +0#4040ff13#ffffff0@35 +|~| @33|1+0#0000001#ffd7ff255@1| | +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @33|1+0#0000001#ffd7ff255|2| | +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_nospace.dump b/src/testdir/dumps/Test_popupwin_nospace.dump new file mode 100644 index 0000000..de8521c --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_nospace.dump @@ -0,0 +1,12 @@ +|-+0&#ffffff0|╔+0#0000001#ffd7ff255|═@2|╗|-+0#0000000#ffffff0@1|╔+0#0000001#ffd7ff255|═@2|╗|-+0#0000000#ffffff0@8|╔+0#0000001#ffd7ff255|═@2|╗|-+0#0000000#ffffff0@15|╔+0#0000001#ffd7ff255|═@2|╗|-+0#0000000#ffffff0@11| @14 +|-|║+0#0000001#ffd7ff255|o|n|e|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255|o|n|e|║|-+0#0000000#ffffff0@8|║+0#0000001#ffd7ff255|a@2|║|-+0#0000000#ffffff0@15|║+0#0000001#ffd7ff255|o|n|e|║|-+0#0000000#ffffff0@11| @14 +|-|║+0#0000001#ffd7ff255|t|w|o|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255|t|w|o|║|-+0#0000000#ffffff0@8|║+0#0000001#ffd7ff255|b@2|║|-+0#0000000#ffffff0@15|║+0#0000001#ffd7ff255|t|w|o|║|-+0#0000000#ffffff0@11| @14 +|-|╚+0#0000001#ffd7ff255|═@2|╝|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@2|╝|-+0#0000000#ffffff0@8|║+0#0000001#ffd7ff255|c@2|║|-+0#0000000#ffffff0@15|║+0#0000001#ffd7ff255|t|e@1|║|-+0#0000000#ffffff0@11| @14 +|-|@|-@5|#|-@5|%|-@5|║+0#0000001#ffd7ff255|d@2|║|-+0#0000000#ffffff0@15|║+0#0000001#ffd7ff255|f|o|u|║|-+0#0000000#ffffff0@1>*|-@8| @14 +|-@14|╔+0#0000001#ffd7ff255|═@2|╗|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255|e@2|║|-+0#0000000#ffffff0@15|║+0#0000001#ffd7ff255|f|i|v|║|-+0#0000000#ffffff0@1|╔+0#0000001#ffd7ff255|═@3|╗|-+0#0000000#ffffff0@3| @14 +|-@14|║+0#0000001#ffd7ff255|o|n|e|║|-+0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@2|╝|-+0#0000000#ffffff0@15|╚+0#0000001#ffd7ff255|═@2|╝|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255|a@2| +0#0000000#0000001|║+0#0000001#ffd7ff255|-+0#0000000#ffffff0@3| @14 +|-@14|║+0#0000001#ffd7ff255|t|w|o|║|-+0#0000000#ffffff0@1|*|-@5|@|-@5|#|-@5|%|-@5|║+0#0000001#ffd7ff255|b@2| +0#0000000#0000001|║+0#0000001#ffd7ff255|-+0#0000000#ffffff0@3| @14 +|-@14|║+0#0000001#ffd7ff255|t|e@1|║|-+0#0000000#ffffff0@8|╔+0#0000001#ffd7ff255|═@2|╗|-+0#0000000#ffffff0@1|╔+0#0000001#ffd7ff255|═@3|╗|-+0#0000000#ffffff0@7|║+0#0000001#ffd7ff255|c@2| +0#0000000#0000001|║+0#0000001#ffd7ff255|-+0#0000000#ffffff0@3| @14 +|-@14|╚+0#0000001#ffd7ff255|═@2|╝|-+0#0000000#ffffff0@8|║+0#0000001#ffd7ff255|o|n|e|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255|o|n|e| +0#0000000#0000001|║+0#0000001#ffd7ff255|-+0#0000000#ffffff0@7|║+0#0000001#ffd7ff255|d@2| +0#0000000#0000001|║+0#0000001#ffd7ff255|-+0#0000000#ffffff0@3| @14 +|-@28|║+0#0000001#ffd7ff255|t|w|o|║|-+0#0000000#ffffff0@1|║+0#0000001#ffd7ff255|t|w|o| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255|-+0#0000000#ffffff0@7|║+0#0000001#ffd7ff255|e@2| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255|-+0#0000000#ffffff0@3| @14 +@29|╚+0#0000001#ffd7ff255|═@2|╝| +0#0000000#ffffff0@1|╚+0#0000001#ffd7ff255|═@3|╝| +0#0000000#ffffff0@7|╚+0#0000001#ffd7ff255|═@3|╝| +0#0000000#ffffff0|5|,|5|1| @9|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_notify_01.dump b/src/testdir/dumps/Test_popupwin_notify_01.dump new file mode 100644 index 0000000..bad62f6 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_notify_01.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @7|╔+0#e000002&|═@21|╗| +0#0000000&@41 +|2| @7|║+0#e000002&| |f|i|r|s|t| |n|o|t|i|f|i|c|a|t|i|o|n| @2|║| +0#0000000&@41 +|3| @7|╚+0#e000002&|═@21|╝| +0#0000000&@41 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_notify_02.dump b/src/testdir/dumps/Test_popupwin_notify_02.dump new file mode 100644 index 0000000..72e2895 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_notify_02.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @7|╔+0#e000002&|═@21|╗| +0#0000000&@41 +|2| @7|║+0#e000002&| |f|i|r|s|t| |n|o|t|i|f|i|c|a|t|i|o|n| @2|║| +0#0000000&@41 +|3| @7|╚+0#e000002&|═@21|╝| +0#0000000&@41 +|4| @7|╔+0fd7ff255|═@31|╗| +0&#ffffff0@31 +|5| @7|║+0fd7ff255| |a|n|o|t|h|e|r| |i|m|p|o|r|t|a|n|t| |n|o|t|i|f|i|c|a|t|i|o|n| |║| +0&#ffffff0@31 +|6| @7|╚+0fd7ff255|═@31|╝| +0&#ffffff0@31 +|7| @73 +|8| @73 +|9| @73 +|:|c|a|l@1| |p|o|p|u|p|_|n|o|t|i|f|i|c|a|t|i|o|n|(|'|a|n|o|t|h|e|r| |i|m|p|o|r|t|a|n|t| |n|o|t|i|f|i|c|a|t|i|o|n|'|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_nowrap.dump b/src/testdir/dumps/Test_popupwin_nowrap.dump new file mode 100644 index 0000000..6088d3b --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_nowrap.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @17|a+0#0000001#ffd7ff255| |l|o|n|g| |l|i|n| +0#0000000#ffffff0@45 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_poptermscroll_1.dump b/src/testdir/dumps/Test_popupwin_poptermscroll_1.dump new file mode 100644 index 0000000..510b7b2 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_poptermscroll_1.dump @@ -0,0 +1,15 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @14|╔+0#0000001#ffd7ff255|═@40|╗| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|4|2| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|4|3| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|4@1| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|[+1#0000000&|N|o| |N|a|m|e|]| @6|║+0#0000001#ffd7ff255|4|5| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255|0+1#0000000#ffffff0|-|1| @9|A|l@1 +| +0&&@15|║+0#0000001#ffd7ff255|4|6| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@15 +|~+0#4040ff13&| @14|║+0#0000001#ffd7ff255|4|7| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|4|8| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255>4|9| @37| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|╚+0#0000001#ffd7ff255|═@40|╝| +0#4040ff13#ffffff0@15 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@56|5|0|,|1| @9|B|o|t| diff --git a/src/testdir/dumps/Test_popupwin_poptermscroll_2.dump b/src/testdir/dumps/Test_popupwin_poptermscroll_2.dump new file mode 100644 index 0000000..2d77aa2 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_poptermscroll_2.dump @@ -0,0 +1,15 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @14|╔+0#0000001#ffd7ff255|═@40|╗| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2|1| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2@1| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2|3| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|[+1#0000000&|N|o| |N|a|m|e|]| @6|║+0#0000001#ffd7ff255>2|4| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255|0+1#0000000#ffffff0|-|1| @9|A|l@1 +| +0&&@15|║+0#0000001#ffd7ff255|2|5| @37| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@15 +|~+0#4040ff13&| @14|║+0#0000001#ffd7ff255|2|6| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2|7| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2|8| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|╚+0#0000001#ffd7ff255|═@40|╝| +0#4040ff13#ffffff0@15 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@56|2|5|,|1| @9|5|0|%| diff --git a/src/testdir/dumps/Test_popupwin_poptermscroll_3.dump b/src/testdir/dumps/Test_popupwin_poptermscroll_3.dump new file mode 100644 index 0000000..73f13fd --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_poptermscroll_3.dump @@ -0,0 +1,15 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @14|╔+0#0000001#ffd7ff255|═@40|╗| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2|1| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2@1| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2|3| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|[+1#0000000&|N|o| |N|a|m|e|]| @6|║+0#0000001#ffd7ff255>2|4| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255|0+1#0000000#ffffff0|-|1| @9|A|l@1 +| +0&&@15|║+0#0000001#ffd7ff255|2|5| @37| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@15 +|~+0#4040ff13&| @14|║+0#0000001#ffd7ff255|2|6| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2|7| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|║+0#0000001#ffd7ff255|2|8| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@15 +|~| @14|╚+0#0000001#ffd7ff255|═@40|╝| +0#4040ff13#ffffff0@15 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|E+0#ffffff16#e000002|9@1|4|:| |N|o|t| |a|l@1|o|w|e|d| |i|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| +0#0000000#ffffff0@39 diff --git a/src/testdir/dumps/Test_popupwin_poptermscroll_4.dump b/src/testdir/dumps/Test_popupwin_poptermscroll_4.dump new file mode 100644 index 0000000..0e7b283 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_poptermscroll_4.dump @@ -0,0 +1,15 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +|:+0&&|q| @72 diff --git a/src/testdir/dumps/Test_popupwin_popupmenu_masking_1.dump b/src/testdir/dumps/Test_popupwin_popupmenu_masking_1.dump new file mode 100644 index 0000000..9cf4149 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_popupmenu_masking_1.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|a|w|o|r|d> @2|p+0#ffffff16#e000002|o|p|u|p| |b|e|l|o|w| @1|╔+0#0000001#e0e0e08|═@15|X| +0#0000000#ffffff0@9 +|~+0#4040ff13&| @23| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| |║| |w|o|r|d|s| |a|r|e| |c|o@1|l| |║| +0#4040ff13#ffffff0@9 +|~| @23| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| |╚+0&#e0e0e08|═@15|⇲| +0#4040ff13#ffffff0@9 +|~| @19|p+0#0000000#ffff4012|o|p|u|p| |o|n| |t|o|p| +0#0000001#ffd7ff255|W| |e|x|t|r|a| |t|e|x|t| | +0#ffffff16#e000002@3| +0#4040ff13#ffffff0@23 +|~| @19|p+0#0000000#ffff4012|o|p|u|p| |o|n| |t|o|p| +0#0000001#ffd7ff255|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27 +|~| @19|p+0#0000000#ffff4012|o|p|u|p| |o|n| |t|o|p| +0#4040ff13#ffffff0@41 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26 diff --git a/src/testdir/dumps/Test_popupwin_popupmenu_masking_2.dump b/src/testdir/dumps/Test_popupwin_popupmenu_masking_2.dump new file mode 100644 index 0000000..41fb879 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_popupmenu_masking_2.dump @@ -0,0 +1,14 @@ +|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|a|w|o|r>d| @2|p+0#ffffff16#e000002|o|p|u|p| |b|e|l|o|w| @5| +0#0000000#ffffff0@23 +|~+0#4040ff13&| @32|p+0#ffffff16#e000002|o|p|u|p| |b|e|l|o|w| @5| +0#4040ff13#ffffff0@23 +|~| @32|p+0#ffffff16#e000002|o|p|u|p| |b|e|l|o|w| @5| +0#4040ff13#ffffff0@23 +|~| @19|p+0#0000000#ffff4012|o|p|u|p| |o|n| |t|o|p| +0#4040ff13#ffffff0|p+0#ffffff16#e000002|o|p|u|p| |b|e|l|o|w| @5| +0#4040ff13#ffffff0@23 +|~| @19|p+0#0000000#ffff4012|o|p|u|p| |o|n| |t|o|p| +0#4040ff13#ffffff0@41 +|~| @19|p+0#0000000#ffff4012|o|p|u|p| |o|n| |t|o|p| +0#4040ff13#ffffff0@41 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|3|1| @9|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_1.dump b/src/testdir/dumps/Test_popupwin_previewpopup_1.dump new file mode 100644 index 0000000..e65023e --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_1.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|╔+0#0000001#ffd7ff255| |X|t|a|g|f|i|l|e| |═@30|X| +0#0000000#ffffff0@26 +|t|h|r|e@1|║+0#0000001#ffd7ff255|2|0| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|f|o|u|r| |║+0#0000001#ffd7ff255|t|h|e|w|o|r|d| |i|s| |h|e|r|e| @24| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|f|i|v|e| |║+0#0000001#ffd7ff255|2@1| @37| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|s|i|x| @1|║+0#0000001#ffd7ff255|2|3| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|s|e|v|e|n|╚+0#0000001#ffd7ff255|═@40|⇲| +0#0000000#ffffff0@26 +|f|i|n|d| >t|h|e|w|o|r|d| |s|o|m|e|w|h|e|r|e| @52 +|n|i|n|e| @70 +|t|h|i|s| |i|s| |a|n|o|t|h|e|r| |w|o|r|d| @54 +|v|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| |a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +|:+0#0000000&| @55|8|,|6| @10|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_10.dump b/src/testdir/dumps/Test_popupwin_previewpopup_10.dump new file mode 100644 index 0000000..fdf16b4 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_10.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|u|d|e| |"|X|h|e|a|d|e|r|.|h|"| @54 +|t|h|r|e@1| @69 +|f|o|u|r| @70 +|f|i|v|e| @27|╔+0#0000001#ffd7ff255| |X|h|e|a|d|e|r|.|h| |═@29|X +|s+0#0000000#ffffff0|i|x| @28|║+0#0000001#ffd7ff255|1+0#e000002&|0| +0#0000001&@37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|s+0#0000000#ffffff0|e|v|e|n| @26|║+0#0000001#ffd7ff255|s|e|a|r|c|h|e|d| |w|o|r|d| |i|s| |h|e|r|e| @18| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|f+0#0000000#ffffff0|i|n|d| |t|h|e|w|o|r|d| |s|o|m|e|w|h|e|r|e| @9|║+0#0000001#ffd7ff255|1+0#e000002&|2| +0#0000001&@37| +0#0000000#0000001|║+0#0000001#ffd7ff255 +|n+0#0000000#ffffff0|i|n|e| @27|║+0#0000001#ffd7ff255|1+0#e000002&|3| +0#0000001&@37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|t+0#0000000#ffffff0|h|i|s| |i|s| |a|n|o|t|h|e|r| |w|o|r|d| @11|╚+0#0000001#ffd7ff255|═@40|⇲ +|v+0#0000000#ffffff0|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| >a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +|E+0#ffffff16#e000002|9@1|4|:| |N|o|t| |a|l@1|o|w|e|d| |i|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| +0#0000000#ffffff0@21|1@1|,|3|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_2.dump b/src/testdir/dumps/Test_popupwin_previewpopup_2.dump new file mode 100644 index 0000000..99934ef --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_2.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|u|d|e| |"|X|h|e|a|d|e|r|.|h|"| @54 +|t|h|r|e@1| @69 +|f|o|u|r| @3|╔+0&#afffff255| |X|t|a|g|f|i|l|e| |═@30|X| +0&#ffffff0@23 +|f|i|v|e| @3|║+0&#afffff255|2|6| @37| +0&#a8a8a8255|║+0&#afffff255| +0&#ffffff0@23 +|s|i|x| @4|║+0&#afffff255|2|7| @37| +0&#a8a8a8255|║+0&#afffff255| +0&#ffffff0@23 +|s|e|v|e|n| @2|║+0&#afffff255|t|h|i|s| |i|s| |a|n|o|t|h|e|r| |p|l|a|c|e| @18| +0|║+0&#afffff255| +0&#ffffff0@23 +|f|i|n|d| |t|h|e|║+0&#afffff255|2|9| @37| +0&#a8a8a8255|║+0&#afffff255| +0&#ffffff0@23 +|n|i|n|e| @3|╚+0&#afffff255|═@40|⇲| +0&#ffffff0@23 +|t|h|i|s| |i|s| >a|n|o|t|h|e|r| |w|o|r|d| @54 +|v|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| |a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +|/+0#0000000&|a|n|o|t|h|e|r| @48|1|0|,|9| @9|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_3.dump b/src/testdir/dumps/Test_popupwin_previewpopup_3.dump new file mode 100644 index 0000000..d1e77e9 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_3.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|u|d|e| |"|X|h|e|a|d|e|r|.|h|"| @54 +|t|h|r|e@1| @69 +|f|o|u|r| @9|╔+0&#afffff255| |X|t|a|g|f|i|l|e| |═@30|X| +0&#ffffff0@17 +|f|i|v|e| @9|║+0&#afffff255|2|6| @37| +0&#a8a8a8255|║+0&#afffff255| +0&#ffffff0@17 +|s|i|x| @10|║+0&#afffff255|2|7| @37| +0&#a8a8a8255|║+0&#afffff255| +0&#ffffff0@17 +|s|e|v|e|n| @8|║+0&#afffff255|t|h|i|s| |i|s| |a|n|o|t|h|e|r| |p|l|a|c|e| @18| +0|║+0&#afffff255| +0&#ffffff0@17 +|f|i|n|d| |t|h|e|w|o|r|d| |s|║+0&#afffff255|2|9| @37| +0&#a8a8a8255|║+0&#afffff255| +0&#ffffff0@17 +|n|i|n|e| @9|╚+0&#afffff255|═@40|⇲| +0&#ffffff0@17 +|t|h|i|s| |i|s| >a|n|o|t|h|e|r| |w|o|r|d| @54 +|v|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| |a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +|:+0#0000000&| @55|1|0|,|9| @9|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_4.dump b/src/testdir/dumps/Test_popupwin_previewpopup_4.dump new file mode 100644 index 0000000..f8d411d --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_4.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|u|d|e| |"|X|h|e|a|d|e|r|.|h|"| @54 +|t|h|r|e@1| @69 +|f|o|u|r| @70 +|f|i|v|e| @27|╔+0&#afffff255| |X|t|a|g|f|i|l|e| |═@30|X +|s+0&#ffffff0|i|x| @28|║+0&#afffff255|2|6| @37| +0&#a8a8a8255|║+0&#afffff255 +|s+0&#ffffff0|e|v|e|n| @26|║+0&#afffff255|2|7| @37| +0&#a8a8a8255|║+0&#afffff255 +|f+0&#ffffff0|i|n|d| |t|h|e|w|o|r|d| |s|o|m|e|w|h|e|r|e| @9|║+0&#afffff255|t|h|i|s| |i|s| |a|n|o|t|h|e|r| |p|l|a|c|e| @18| +0|║+0&#afffff255 +|n+0&#ffffff0|i|n|e| @27|║+0&#afffff255|2|9| @37| +0&#a8a8a8255|║+0&#afffff255 +|t+0&#ffffff0|h|i|s| |i|s| |a|n|o|t|h|e|r| |w|o|r|d| @11|╚+0&#afffff255|═@40|⇲ +|v+0&#ffffff0|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| >a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +|/+0#0000000&|a|n|o|t|h|e|r| @48|1@1|,|3|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_5.dump b/src/testdir/dumps/Test_popupwin_previewpopup_5.dump new file mode 100644 index 0000000..8f1b98f --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_5.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|u|d|e| |"|X|h|e|a|d|e|r|.|h|"| @54 +|t|h|r|e@1| @69 +|f|o|u|r| @70 +|f|i|v|e| @27|╔+0&#afffff255| |t|e|s|t|d|i|r|/|X|t|a|g|f|i|l|e| |═@22|X +|s+0&#ffffff0|i|x| @28|║+0&#afffff255|2|6| @37| +0&#a8a8a8255|║+0&#afffff255 +|s+0&#ffffff0|e|v|e|n| @26|║+0&#afffff255|2|7| @37| +0&#a8a8a8255|║+0&#afffff255 +|f+0&#ffffff0|i|n|d| |t|h|e|w|o|r|d| |s|o|m|e|w|h|e|r|e| @9|║+0&#afffff255|t|h|i|s| |i|s| |a|n|o|t|h|e|r| |p|l|a|c|e| @18| +0|║+0&#afffff255 +|n+0&#ffffff0|i|n|e| @27|║+0&#afffff255|2|9| @37| +0&#a8a8a8255|║+0&#afffff255 +|t+0&#ffffff0|h|i|s| |i|s| |a|n|o|t|h|e|r| |w|o|r|d| @11|╚+0&#afffff255|═@40|⇲ +|v+0&#ffffff0|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| >a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +|:+0#0000000&| @55|1@1|,|3|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_6.dump b/src/testdir/dumps/Test_popupwin_previewpopup_6.dump new file mode 100644 index 0000000..a9a2be4 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_6.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|u|d|e| |"|X|h|e|a|d|e|r|.|h|"| @54 +|t|h|r|e@1| @69 +|f|o|u|r| @70 +|f|i|v|e| @70 +|s|i|x| @71 +|s|e|v|e|n| @69 +|f|i|n|d| |t|h|e|w|o|r|d| |s|o|m|e|w|h|e|r|e| @52 +|n|i|n|e| @70 +|t|h|i|s| |i|s| |a|n|o|t|h|e|r| |w|o|r|d| @54 +|v|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| >a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|1@1|,|3|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_7.dump b/src/testdir/dumps/Test_popupwin_previewpopup_7.dump new file mode 100644 index 0000000..f510b8b --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_7.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|u|d|e| |"|X|h|e|a|d|e|r|.|h|"| @54 +|t|h|r|e@1| @69 +|f|o|u|r| @70 +|f|i|v|e| @27|╔+0#0000001#ffd7ff255| |X|t|a|g|f|i|l|e| |═@30|X +|s+0#0000000#ffffff0|i|x| @28|║+0#0000001#ffd7ff255|2|0| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|s+0#0000000#ffffff0|e|v|e|n| @26|║+0#0000001#ffd7ff255|t|h|e|w|o|r|d| |i|s| |h|e|r|e| @24| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|f+0#0000000#ffffff0|i|n|d| |t|h|e|w|o|r|d| |s|o|m|e|w|h|e|r|e| @9|║+0#0000001#ffd7ff255|2@1| @37| +0#0000000#0000001|║+0#0000001#ffd7ff255 +|n+0#0000000#ffffff0|i|n|e| @27|║+0#0000001#ffd7ff255|2|3| @37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|t+0#0000000#ffffff0|h|i|s| |i|s| |a|n|o|t|h|e|r| |w|o|r|d| @11|╚+0#0000001#ffd7ff255|═@40|⇲ +|v+0#0000000#ffffff0|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| >a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +|:+0#0000000&| @55|1@1|,|3|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_8.dump b/src/testdir/dumps/Test_popupwin_previewpopup_8.dump new file mode 100644 index 0000000..6e88fff --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_8.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|u|d|e| |"|X|h|e|a|d|e|r|.|h|"| @54 +|t|h|r|e@1| @69 +|f|o|u|r| @70 +|f|i|v|e| @27|╔+0#0000001#ffd7ff255| |X|h|e|a|d|e|r|.|h| |═@29|X +|s+0#0000000#ffffff0|i|x| @28|║+0#0000001#ffd7ff255|1+0#e000002&|0| +0#0000001&@37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|s+0#0000000#ffffff0|e|v|e|n| @26|║+0#0000001#ffd7ff255|s|e|a|r|c|h|e|d| |w|o|r|d| |i|s| |h|e|r|e| @18| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|f+0#0000000#ffffff0|i|n|d| |t|h|e|w|o|r|d| |s|o|m|e|w|h|e|r|e| @9|║+0#0000001#ffd7ff255|1+0#e000002&|2| +0#0000001&@37| +0#0000000#0000001|║+0#0000001#ffd7ff255 +|n+0#0000000#ffffff0|i|n|e| @27|║+0#0000001#ffd7ff255|1+0#e000002&|3| +0#0000001&@37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|t+0#0000000#ffffff0|h|i|s| |i|s| |a|n|o|t|h|e|r| |w|o|r|d| @11|╚+0#0000001#ffd7ff255|═@40|⇲ +|v+0#0000000#ffffff0|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| >a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +|:+0#0000000&| @55|1@1|,|3|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_previewpopup_9.dump b/src/testdir/dumps/Test_popupwin_previewpopup_9.dump new file mode 100644 index 0000000..09f8a45 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_previewpopup_9.dump @@ -0,0 +1,14 @@ +|o+0&#ffffff0|n|e| @71 +|#|i|n|c|l|u|d|e| |"|X|h|e|a|d|e|r|.|h|"| @54 +|t|h|r|e@1| @69 +|f|o|u|r| @70 +|f|i|v|e| @27|╔+0#0000001#ffd7ff255| |X|h|e|a|d|e|r|.|h| |═@29|X +|s+0#0000000#ffffff0|i|x| @28|║+0#0000001#ffd7ff255|1+0#e000002&|0| +0#0000001&@37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|s+0#0000000#ffffff0|e|v|e|n| @26|║+0#0000001#ffd7ff255|s|e|a|r|c|h|e|d| |w|o|r|d| |i|s| |h|e|r|e| @18| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|f+0#0000000#ffffff0|i|n|d| |t|h|e|w|o|r|d| |s|o|m|e|w|h|e|r|e| @9|║+0#0000001#ffd7ff255|1+0#e000002&|2| +0#0000001&@37| +0#0000000#0000001|║+0#0000001#ffd7ff255 +|n+0#0000000#ffffff0|i|n|e| @27|║+0#0000001#ffd7ff255|1+0#e000002&|3| +0#0000001&@37| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255 +|t+0#0000000#ffffff0|h|i|s| |i|s| |a|n|o|t|h|e|r| |w|o|r|d| @11|╚+0#0000001#ffd7ff255|═@40|⇲ +|v+0#0000000#ffffff0|e|r|y| |l|o|n|g| |l|i|n|e| |w|h|e|r|e| |t|h|e| |w|o|r|d| |i|s| |a|l|s|o| >a|n|o|t|h|e|r| @29 +|~+0#4040ff13&| @73 +|~| @73 +|E+0#ffffff16#e000002|3|6@1|:| |N|o|t| |a|l@1|o|w|e|d| |t|o| |e|n|t|e|r| |a| |p|o|p|u|p| |w|i|n|d|o|w| +0#0000000#ffffff0@15|1@1|,|3|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_scroll_1.dump b/src/testdir/dumps/Test_popupwin_scroll_1.dump new file mode 100644 index 0000000..2f623e7 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_1.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @31|o+0#0000001#ffd7ff255|n|e| @4| +0#0000000#0000001| +0&#ffffff0@32 +|5| @31|t+0#0000001#ffd7ff255|w|o| @4| +0#0000000#0000001| +0&#ffffff0@32 +|6| @31|t+0#0000001#ffd7ff255|h|r|e@1| @2| +0#0000000#a8a8a8255| +0&#ffffff0@32 +|7| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#a8a8a8255| +0&#ffffff0@32 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_10.dump b/src/testdir/dumps/Test_popupwin_scroll_10.dump new file mode 100644 index 0000000..eec1db6 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_10.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @31|╔+0#0000001#ffd7ff255|═@5|X| +0#0000000#ffffff0@33 +|3| @31|║+0#0000001#ffd7ff255|f|i|v|e| | +0#0000000#ff404010|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@33 +|4| @31|║+0#0000001#ffd7ff255|s|i|x| @1| +0#0000000#ff404010|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@33 +|5| @31|║+0#0000001#ffd7ff255|s|e|v|e|n| +0#0000000#4040ff13|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@33 +|6| @31|║+0#0000001#ffd7ff255|e|i|g|h|t| +0#0000000#4040ff13|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@33 +|7| @31|║+0#0000001#ffd7ff255|n|i|n|e| | +0#0000000#4040ff13|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@33 +|8| @31|╚+0#0000001#ffd7ff255|═@5|╝| +0#0000000#ffffff0@33 +|9| @73 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_11.dump b/src/testdir/dumps/Test_popupwin_scroll_11.dump new file mode 100644 index 0000000..96b3d27 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_11.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @20|1+0#0000001#ffd7ff255| @28| +0#0000000#0000001| +0&#ffffff0@21 +|5| @20|2+0#0000001#ffd7ff255| @28| +0#0000000#0000001| +0&#ffffff0@21 +|6| @20|3+0#0000001#ffd7ff255| @28| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|7| @20|4+0#0000001#ffd7ff255| @28| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|8| @73 +|9| @73 +|:|c|a|l@1| |g|:|P|o|p|u|p|S|c|r|o|l@1|(|)| @35|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_12.dump b/src/testdir/dumps/Test_popupwin_scroll_12.dump new file mode 100644 index 0000000..e54a187 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_12.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @20|2+0#0000001#ffd7ff255| @28| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|5| @20|3+0#0000001#ffd7ff255| @28| +0#0000000#0000001| +0&#ffffff0@21 +|6| @20|4+0#0000001#ffd7ff255| @28| +0#0000000#0000001| +0&#ffffff0@21 +|7| @20|l+0#0000001#ffd7ff255|o|n|g| |l|i|n|e| |l|o|n|g| |l|i|n|e| |l|o|n|g| |l|i|n|e| | +0#0000000#a8a8a8255| +0&#ffffff0@21 +|8| @73 +|9| @73 +|:|c|a|l@1| |g|:|P|o|p|u|p|S|c|r|o|l@1|(|)| @35|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_13.dump b/src/testdir/dumps/Test_popupwin_scroll_13.dump new file mode 100644 index 0000000..067f484 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_13.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @20|9+0#0000001#ffd7ff255@1| @27| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|2| @20| +0#4040ff13#ffd7ff255@29| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|3| @20| +0#4040ff13#ffd7ff255@29| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|4| @20| +0#4040ff13#ffd7ff255@29| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|5| @20| +0#4040ff13#ffd7ff255@29| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|6| @20| +0#4040ff13#ffd7ff255@29| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|7| @20| +0#4040ff13#ffd7ff255@29| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|8| @20| +0#4040ff13#ffd7ff255@29| +0#0000000#a8a8a8255| +0&#ffffff0@21 +|9| @20| +0#4040ff13#ffd7ff255@29| +0#0000000#0000001| +0&#ffffff0@21 +|:|c|a|l@1| |S|c|r|o|l@1|B|o|t@1|o|m|(|)| @36|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_2.dump b/src/testdir/dumps/Test_popupwin_scroll_2.dump new file mode 100644 index 0000000..227ba6c --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_2.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @31|t+0#0000001#ffd7ff255|w|o| @4| +0#0000000#a8a8a8255| +0&#ffffff0@32 +|5| @31|t+0#0000001#ffd7ff255|h|r|e@1| @2| +0#0000000#0000001| +0&#ffffff0@32 +|6| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#0000001| +0&#ffffff0@32 +|7| @31|f+0#0000001#ffd7ff255|i|v|e| @3| +0#0000000#a8a8a8255| +0&#ffffff0@32 +|8| @73 +|9| @73 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_3.dump b/src/testdir/dumps/Test_popupwin_scroll_3.dump new file mode 100644 index 0000000..623d217 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_3.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @31|s+0#0000001#ffd7ff255|i|x| @4| +0#0000000#a8a8a8255| +0&#ffffff0@32 +|5| @31|s+0#0000001#ffd7ff255|e|v|e|n| @2| +0#0000000#a8a8a8255| +0&#ffffff0@32 +|6| @31|e+0#0000001#ffd7ff255|i|g|h|t| @2| +0#0000000#0000001| +0&#ffffff0@32 +|7| @31|n+0#0000001#ffd7ff255|i|n|e| @3| +0#0000000#0000001| +0&#ffffff0@32 +|8| @73 +|9| @73 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_4.dump b/src/testdir/dumps/Test_popupwin_scroll_4.dump new file mode 100644 index 0000000..3f7f961 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_4.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @31|n+0#0000001#ffd7ff255|i|n|e| @3| +0#0000000#0000001| +0&#ffffff0@32 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|:| @55|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_5.dump b/src/testdir/dumps/Test_popupwin_scroll_5.dump new file mode 100644 index 0000000..c5cbe80 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_5.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @31|t+0#0000001#ffd7ff255|h|r|e@1| @2| +0#0000000#ff404010| +0&#ffffff0@32 +|5| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#4040ff13| +0&#ffffff0@32 +|6| @31|f+0#0000001#ffd7ff255|i|v|e| @3| +0#0000000#4040ff13| +0&#ffffff0@32 +|7| @31|s+0#0000001#ffd7ff255|i|x| @4| +0#0000000#ff404010| +0&#ffffff0@32 +|8| @73 +|9| @73 +|:|c|a|l@1| |S|c|r|o|l@1|U|p|(|)| @40|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_6.dump b/src/testdir/dumps/Test_popupwin_scroll_6.dump new file mode 100644 index 0000000..aade9d0 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_6.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @31|f+0#0000001#ffd7ff255|i|v|e| @3| +0#0000000#ff404010| +0&#ffffff0@32 +|5| @31|s+0#0000001#ffd7ff255|i|x| @4| +0#0000000#ff404010| +0&#ffffff0@32 +|6| @31|s+0#0000001#ffd7ff255|e|v|e|n| @2| +0#0000000#4040ff13| +0&#ffffff0@32 +|7| @31|e+0#0000001#ffd7ff255|i|g|h|t| @2| +0#0000000#4040ff13| +0&#ffffff0@32 +|8| @73 +|9| @73 +|:|c|a|l@1| |S|c|r|o|l@1|D|o|w|n|(|)| @38|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_7.dump b/src/testdir/dumps/Test_popupwin_scroll_7.dump new file mode 100644 index 0000000..1ee91b1 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_7.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @31|s+0#0000001#ffd7ff255|i|x| @4| +0#0000000#ff404010| +0&#ffffff0@32 +|5| @31|s+0#0000001#ffd7ff255|e|v|e|n| @2| +0#0000000#ff404010| +0&#ffffff0@32 +|6| @31|e+0#0000001#ffd7ff255|i|g|h|t| @2| +0#0000000#4040ff13| +0&#ffffff0@32 +|7| @31|n+0#0000001#ffd7ff255|i|n|e| @3| +0#0000000#4040ff13| +0&#ffffff0@32 +|8| @73 +|9| @73 +|:|c|a|l@1| |S|c|r|o|l@1|D|o|w|n|(|)| @38|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_8.dump b/src/testdir/dumps/Test_popupwin_scroll_8.dump new file mode 100644 index 0000000..34b1638 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_8.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @31|f+0#0000001#ffd7ff255|o|u|r| @3| +0#0000000#ff404010| +0&#ffffff0@32 +|5| @31|f+0#0000001#ffd7ff255|i|v|e| @3| +0#0000000#4040ff13| +0&#ffffff0@32 +|6| @31|s+0#0000001#ffd7ff255|i|x| @4| +0#0000000#4040ff13| +0&#ffffff0@32 +|7| @31|s+0#0000001#ffd7ff255|e|v|e|n| @2| +0#0000000#ff404010| +0&#ffffff0@32 +|8| @73 +|9| @73 +|:|c|a|l@1| |C|l|i|c|k|T|o|p|(|)| @40|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_scroll_9.dump b/src/testdir/dumps/Test_popupwin_scroll_9.dump new file mode 100644 index 0000000..b471dc1 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_scroll_9.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @30|╔+0#0000001#ffd7ff255|═@8|X| +0#0000000#ffffff0@31 +|4| @30|║+0#0000001#ffd7ff255|f|i|v|e| @3| +0#0000000#ff404010|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@31 +|5| @30|║+0#0000001#ffd7ff255|s|i|x| @4| +0#0000000#ff404010|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@31 +|6| @30|║+0#0000001#ffd7ff255|s|e|v|e|n| @2| +0#0000000#4040ff13|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@31 +|7| @30|║+0#0000001#ffd7ff255|e|i|g|h|t| @2| +0#0000000#4040ff13|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@31 +|8| @30|╚+0#0000001#ffd7ff255|═@8|╝| +0#0000000#ffffff0@31 +|9| @73 +|:|c|a|l@1| |C|l|i|c|k|B|o|t|(|)| @40|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_select_01.dump b/src/testdir/dumps/Test_popupwin_select_01.dump new file mode 100644 index 0000000..b6cedc5 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_select_01.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @7|╔+0#0000001#ffd7ff255|═@18|╗| +0#0000000#ffffff0@44 +|4| @7|║+0#0000001#ffd7ff255|t|h|e| |w+1#0000000#ffffff0|o|r|d| @9| +0|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@44 +|5| @7|║+0#0000001#ffd7ff255|s+1#0000000#ffffff0|o|m|e| |m|o|r|e| @8| +0&#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@44 +|6| @7|║+0#0000001#ffd7ff255|s+1#0000000#ffffff0|e|v|e|r|a|l| |w|o|r|d|s| +0#0000001#ffd7ff255|h|e|r|e| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@44 +|7| @7|╚+0#0000001#ffd7ff255|═@18|╝| +0#0000000#ffffff0@44 +|8| @73 +|9| @73 +|:|c|a|l@1| |S|e|l|e|c|t|1|(|)| @41|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_select_02.dump b/src/testdir/dumps/Test_popupwin_select_02.dump new file mode 100644 index 0000000..550e0db --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_select_02.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0>w|o|r|d| @69 +|s|o|m|e| |m|o|r|e| @65 +|s|e|v|e|r|a|l| |w|o|r|d|s| @61 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +@57|1|,|2| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_set_firstline_1.dump b/src/testdir/dumps/Test_popupwin_set_firstline_1.dump new file mode 100644 index 0000000..7d8c20d --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_set_firstline_1.dump @@ -0,0 +1,16 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @25|1+0#0000001#e0e0e08|0| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255@1| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|2| @17| +0#0000000#0000001| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|3| @17| +0#0000000#0000001| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|4| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|5| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|6| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|7| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|8| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|9| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|2+0#0000001#ffd7ff255|0| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_set_firstline_2.dump b/src/testdir/dumps/Test_popupwin_set_firstline_2.dump new file mode 100644 index 0000000..5744eaf --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_set_firstline_2.dump @@ -0,0 +1,16 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @25|5+0#0000001#ffd7ff255| @18| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|6+0#0000001#ffd7ff255| @18| +0#0000000#0000001| +0#4040ff13#ffffff0@26 +|~| @25|7+0#0000001#ffd7ff255| @18| +0#0000000#0000001| +0#4040ff13#ffffff0@26 +|~| @25|8+0#0000001#ffd7ff255| @18| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|9+0#0000001#ffd7ff255| @18| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#e0e0e08|0| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255@1| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|2| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|3| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|4| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @25|1+0#0000001#ffd7ff255|5| @17| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@26 +|~| @73 +|~| @73 +|:+0#0000000&| @55|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_showbreak.dump b/src/testdir/dumps/Test_popupwin_showbreak.dump new file mode 100644 index 0000000..8ce0a75 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_showbreak.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @27|╔+0#0000001#ffd7ff255|═@13|╗| +0#0000000#ffffff0@29 +|4| @27|║+0#0000001#ffd7ff255| |a| |l|o|n|g| |l|i|n|e| @1|║| +0#0000000#ffffff0@29 +|5| @27|║+0#0000001#ffd7ff255| |>+0#4040ff13&@1| |h+0#0000001&|e|r|e| |t|h|a|t| |║| +0#0000000#ffffff0@29 +|6| @27|║+0#0000001#ffd7ff255| |>+0#4040ff13&@1| | +0#0000001&|w|r|a|p|s| @3|║| +0#0000000#ffffff0@29 +|7| @27|╚+0#0000001#ffd7ff255|═@13|╝| +0#0000000#ffffff0@29 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_sign_1.dump b/src/testdir/dumps/Test_popupwin_sign_1.dump new file mode 100644 index 0000000..59cc904 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_sign_1.dump @@ -0,0 +1,10 @@ +|>+0#e000002#ffffff0@1>0+0#ffffff16#ff404010| @71 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @23|#+0#ffffff16#ff404010|!|h+0#0000001#ffff4012|e|l@1|o| @12| +0#0000000#ffffff0@27 +| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @23| +0#0000e05#a8a8a8255@1|b+0#0000001#ffd7ff255|r|i|g|h|t| @11| +0#0000000#ffffff0@27 +| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @23| +0#0000e05#a8a8a8255@1|w+0#0000001#ffd7ff255|o|r|l|d| @12| +0#0000000#ffffff0@27 +| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @71 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_sign_2.dump b/src/testdir/dumps/Test_popupwin_sign_2.dump new file mode 100644 index 0000000..ddccde1 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_sign_2.dump @@ -0,0 +1,10 @@ +|>+0#e000002#ffffff0@1>0+0#ffffff16#ff404010| @71 +| +0#0000e05#a8a8a8255@1|1+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|2+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|3+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|4+0#0000000#ffffff0| @13| +0#0000e05#a8a8a8255@1|#+0#ffffff16#ff404010|!| +0#af5f00255#ffd7ff255@1|1| |a+0#0000001#ffff4012| |l|o|n|g|e|r| |l|i|n|e| |t|o| |c|h|e|c|k| |t|h|e| |w|i|d|t|h| +0#0000000#ffffff0@17 +| +0#0000e05#a8a8a8255@1|5+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|6+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|7+0#0000000#ffffff0| @71 +| +0#0000e05#a8a8a8255@1|8+0#0000000#ffffff0| @71 +|:|c|a|l@1| |S|e|t|O|p|t|i|o|n|s|(|)| @38|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_term_01.dump b/src/testdir/dumps/Test_popupwin_term_01.dump new file mode 100644 index 0000000..50818c1 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_term_01.dump @@ -0,0 +1,16 @@ +|v+0&#ffffff0|i|m|>| @70 +@75 +@34|╔+0#0000001#ffd7ff255|═@3|╗| +0#0000000#ffffff0@34 +@34|║+0#0000001#ffd7ff255|1@3|║| +0#0000000#ffffff0@34 +|!+0#ffffff16#00e0003|/|b|i|n|/|s|h| |[|r|u|n@1|i|n|g|]| @15|║+0#0000001#ffd7ff255|2@3|║| +0#ffffff16#00e0003@34 +>++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@14|╚+0#0000001#ffd7ff255|═@3|⇲|-+0#0000e05#a8a8a8255@34 +|1+0#0000000#ffffff0@1| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|2+0#0000000#ffffff0|3| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|3+0#0000000#ffffff0|5| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|4+0#0000000#ffffff0|7| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|[+3#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @61 +| +0&&@74 diff --git a/src/testdir/dumps/Test_popupwin_term_02.dump b/src/testdir/dumps/Test_popupwin_term_02.dump new file mode 100644 index 0000000..160834a --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_term_02.dump @@ -0,0 +1,16 @@ +|v+0&#ffffff0|i|m|>| @70 +@75 +@14|╔+0#0000001#ffd7ff255|═@3|╗| +0#0000000#ffffff0@54 +@14|║+0#0000001#ffd7ff255|1@3|║| +0#0000000#ffffff0@54 +|!+0#ffffff16#00e0003|/|b|i|n|/|s|h| |[|r|u|n@1|║+0#0000001#ffd7ff255|2@3|║| +0#ffffff16#00e0003@54 +>++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |╚+0#0000001#ffd7ff255|═@3|⇲|-+0#0000e05#a8a8a8255@54 +|1+0#0000000#ffffff0@1| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|2+0#0000000#ffffff0|3| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|3+0#0000000#ffffff0|5| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|4+0#0000000#ffffff0|7| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|[+3#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @61 +|:+0&&|c|a|l@1| |D|r|a|g|i|t|L|e|f|t|(|)| @56 diff --git a/src/testdir/dumps/Test_popupwin_term_03.dump b/src/testdir/dumps/Test_popupwin_term_03.dump new file mode 100644 index 0000000..0632ee8 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_term_03.dump @@ -0,0 +1,16 @@ +|v+0&#ffffff0|i|m|>| @70 +@75 +@75 +@75 +|!+0#ffffff16#00e0003|/|b|i|n|/|s|h| |[|r|u|n@1|i|n|g|]| @56 +>++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|1+0#0000000#ffffff0@1| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|2+0#0000000#ffffff0|3| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|3+0#0000000#ffffff0|5| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@14|╔+0#0000001#ffd7ff255|═@3|╗|-+0#0000e05#a8a8a8255@34 +|4+0#0000000#ffffff0|7| @31|║+0#0000001#ffd7ff255|1@3|║| +0#0000000#ffffff0@34 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@14|║+0#0000001#ffd7ff255|2@3|║|-+0#0000e05#a8a8a8255@34 +|[+3#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @20|╚+0#0000001#ffd7ff255|═@3|⇲| +3#0000000#ffffff0@34 +|:+0&&|c|a|l@1| |D|r|a|g|i|t|D|o|w|n|(|)| @56 diff --git a/src/testdir/dumps/Test_popupwin_term_04.dump b/src/testdir/dumps/Test_popupwin_term_04.dump new file mode 100644 index 0000000..1345b75 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_term_04.dump @@ -0,0 +1,16 @@ +|v+0&#ffffff0|i|m|>| @70 +@75 +@75 +@75 +|!+0#ffffff16#00e0003|/|b|i|n|/|s|h| |[|r|u|n@1|i|n|g|]| @56 +>++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|1+0#0000000#ffffff0@1| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|2+0#0000000#ffffff0|3| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |f|o|l|d| |-@55 +|3+0#0000000#ffffff0|5| @72 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |╔+0#0000001#ffd7ff255|═@3|╗|-+0#0000e05#a8a8a8255@54 +|4+0#0000000#ffffff0|7| @11|║+0#0000001#ffd7ff255|1@3|║| +0#0000000#ffffff0@54 +|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |║+0#0000001#ffd7ff255|2@3|║|-+0#0000e05#a8a8a8255@54 +|[+3#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| |╚+0#0000001#ffd7ff255|═@3|⇲| +3#0000000#ffffff0@54 +|:+0&&|c|a|l@1| |D|r|a|g|i|t|D|o|w|n|L|e|f|t|(|)| @52 diff --git a/src/testdir/dumps/Test_popupwin_three_errors_1.dump b/src/testdir/dumps/Test_popupwin_three_errors_1.dump new file mode 100644 index 0000000..64b1a75 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_three_errors_1.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @27|o+0#0000001#ffd7ff255|n|e| |t|w|o| |t|h|r|e@1|.@2| +0#4040ff13#ffffff0@29 +|~| @73 +|~| @73 +|~| @73 +|E+0#ffffff16#e000002|1|2|5|0|:| |A|r|g|u|m|e|n|t| |o|f| |f|i|l|t|e|r|(|)| |m|u|s|t| |b|e| |a| |L|i|s|t|,| |S|t|r|i|n|g|,| |D|i|c|t|i|o|n|a|r|y| |o|r| |B|l|o|b| +0#0000000#ffffff0@4 +@57|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_three_errors_2.dump b/src/testdir/dumps/Test_popupwin_three_errors_2.dump new file mode 100644 index 0000000..aa90915 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_three_errors_2.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|E+0#ffffff16#e000002|1|2|5|0|:| |A|r|g|u|m|e|n|t| |o|f| |f|i|l|t|e|r|(|)| |m|u|s|t| |b|e| |a| |L|i|s|t|,| |S|t|r|i|n|g|,| |D|i|c|t|i|o|n|a|r|y| |o|r| |B|l|o|b| +0#0000000#ffffff0@4 +@57|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_title.dump b/src/testdir/dumps/Test_popupwin_title.dump new file mode 100644 index 0000000..ae15279 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_title.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @28| +0#0000001#ffd7ff255|T|i|t|l|e| |S|t|r|i|n|g| | +0#0000000#ffffff0@30 +|5| @28|o+0#0000001#ffd7ff255|n|e| @10| +0#0000000#ffffff0@30 +|6| @28|t+0#0000001#ffd7ff255|w|o| @10| +0#0000000#ffffff0@30 +|7| @28|a+0#0000001#ffd7ff255|n|o|t|h|e|r| @6| +0#0000000#ffffff0@30 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_toohigh_1.dump b/src/testdir/dumps/Test_popupwin_toohigh_1.dump new file mode 100644 index 0000000..41dbd44 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_toohigh_1.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0@9| @64 +|2@9| @64 +|3@8>3| @64 +|4@8|╔+0#0000001#ffd7ff255|═@8|╗| +0#0000000#ffffff0@54 +|5@8|║+0#0000001#ffd7ff255|o|n|e| @4| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|6@8|║+0#0000001#ffd7ff255|t|w|o| @4| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|7@8|║+0#0000001#ffd7ff255|t|h|r|e@1| @2| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|8@8|║+0#0000001#ffd7ff255|f|o|u|r| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|9@8|║+0#0000001#ffd7ff255|f|i|v|e| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +@9|╚+0#0000001#ffd7ff255|═@8|╝| +0#0000000#ffffff0@36|3|,|1|0| @9|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_toohigh_2.dump b/src/testdir/dumps/Test_popupwin_toohigh_2.dump new file mode 100644 index 0000000..911cc2f --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_toohigh_2.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0@8|╔+0#0000001#ffd7ff255|═@8|╗| +0#0000000#ffffff0@54 +|2@8|║+0#0000001#ffd7ff255|o|n|e| @4| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|3@8|║+0#0000001#ffd7ff255|t|w|o| @4| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|4@8|║+0#0000001#ffd7ff255|t|h|r|e@1| @2| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|5@8|║+0#0000001#ffd7ff255|f|o|u|r| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|6@8|║+0#0000001#ffd7ff255|f|i|v|e| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|7@8|╚+0#0000001#ffd7ff255|═@8|╝| +0#0000000#ffffff0@54 +|8@8>8| @64 +|9@9| @64 +|:|c|a|l@1| |S|h|o|w|P|o|p|u|p|(|)| @39|8|,|1|0| @9|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_toohigh_3.dump b/src/testdir/dumps/Test_popupwin_toohigh_3.dump new file mode 100644 index 0000000..8c15a40 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_toohigh_3.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0@8>1| @64 +|2@8|╔+0#0000001#ffd7ff255|═@8|╗| +0#0000000#ffffff0@54 +|3@8|║+0#0000001#ffd7ff255|o|n|e| @4| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|4@8|║+0#0000001#ffd7ff255|t|w|o| @4| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|5@8|║+0#0000001#ffd7ff255|t|h|r|e@1| @2| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|6@8|║+0#0000001#ffd7ff255|f|o|u|r| @3| +0#0000000#0000001|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|7@8|║+0#0000001#ffd7ff255|f|i|v|e| @3| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|8@8|║+0#0000001#ffd7ff255|s|i|x| @4| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|9@8|║+0#0000001#ffd7ff255|s|e|v|e|n| @2| +0#0000000#a8a8a8255|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@54 +|:|c|a|l@1| |S|h|o|╚+0#0000001#ffd7ff255|═@8|╝| +0#0000000#ffffff0@36|1|,|1|0| @9|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_win_execute.dump b/src/testdir/dumps/Test_popupwin_win_execute.dump new file mode 100644 index 0000000..b890a28 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_win_execute.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @31|s+0#0000001#ffd7ff255|o|m|e| |t|e|x|t| +0#4040ff13#ffffff0@32 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_win_execute_cursorline.dump b/src/testdir/dumps/Test_popupwin_win_execute_cursorline.dump new file mode 100644 index 0000000..e29dca9 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_win_execute_cursorline.dump @@ -0,0 +1,14 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @34|1+0#0000001#ffd7ff255|3| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @34|1+0#0000001#ffd7ff255|4| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @34|1+0#0000001#ffd7ff255|5| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @34|1+0#0000001#ffd7ff255|6| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @34|1+0#0000001#e0e0e08|7| +0#0000000#0000001| +0#4040ff13#ffffff0@35 +|~| @34|1+0#0000001#ffd7ff255|8| +0#0000000#0000001| +0#4040ff13#ffffff0@35 +|~| @34|1+0#0000001#ffd7ff255|9| +0#0000000#0000001| +0#4040ff13#ffffff0@35 +|~| @34|2+0#0000001#ffd7ff255|0| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @34|2+0#0000001#ffd7ff255|1| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@35 +|~| @73 +|~| @73 +|:+0#0000000&| @55|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_popupwin_wrap.dump b/src/testdir/dumps/Test_popupwin_wrap.dump new file mode 100644 index 0000000..3f7b000 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_wrap.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @17|a+0#0000001#ffd7ff255| |l|o|n|g| |l|i|n| +0#0000000#ffffff0@45 +|4| @17|e+0#0000001#ffd7ff255| |t|h|a|t| |w|o|n| +0#0000000#ffffff0@45 +|5| @17|t+0#0000001#ffd7ff255| |f|i|t| @4| +0#0000000#ffffff0@45 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_wrap_1.dump b/src/testdir/dumps/Test_popupwin_wrap_1.dump new file mode 100644 index 0000000..5643dc7 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_wrap_1.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|╔+0#0000001#ffd7ff255|═@73 +|║| |o+0&#e0e0e08|n|e| @67| +0&#ffd7ff255| +0#0000000#0000001 +|║+0#0000001#ffd7ff255| |a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d| | +0#0000000#0000001 +|║+0#0000001#ffd7ff255| |f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s| @52| +0#0000000#a8a8a8255 +|╚+0#0000001#ffd7ff255|═@73 +|8+0#0000000#ffffff0| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_wrap_2.dump b/src/testdir/dumps/Test_popupwin_wrap_2.dump new file mode 100644 index 0000000..3a02fc5 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_wrap_2.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|╔+0#0000001#ffd7ff255|═@73 +|║| |a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d| | +0#0000000#a8a8a8255 +|║+0#0000001#ffd7ff255| |f|a|s|d|f|a|s|d|f|a|s|d|f|a|s|d|f|a|s| @52| +0#0000000#0000001 +|║+0#0000001#ffd7ff255| |t+0&#e0e0e08|h|r|e@1| @65| +0&#ffd7ff255| +0#0000000#0000001 +|╚+0#0000001#ffd7ff255|═@73 +|8+0#0000000#ffffff0| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_wrong_name.dump b/src/testdir/dumps/Test_popupwin_wrong_name.dump new file mode 100644 index 0000000..e63ced5 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_wrong_name.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|E+0#ffffff16#e000002|1@1|7|:| |U|n|k|n|o|w|n| |f|u|n|c|t|i|o|n|:| |N|o|S|u|c|h|F|u|n|c| +0#0000000#ffffff0@22|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_above_below_empty_1.dump b/src/testdir/dumps/Test_prop_above_below_empty_1.dump new file mode 100644 index 0000000..f470016 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_empty_1.dump @@ -0,0 +1,16 @@ +| +0#af5f00255#ffffff0@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|1| |1+0#0000000&@7| @47 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|2| | +0#0000000&@55 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|3| |3+0#0000000&@8| @46 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|4| | +0#0000000&@55 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|5| >5+0#0000000&@10| @44 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +@42|5|,|1|-|5|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_above_below_empty_2.dump b/src/testdir/dumps/Test_prop_above_below_empty_2.dump new file mode 100644 index 0000000..3954a4b --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_empty_2.dump @@ -0,0 +1,16 @@ +| +0#af5f00255#ffffff0@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|1| |1+0#0000000&@7|$+0#4040ff13&| +0#0000000&@46 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|2| |$+0#4040ff13&| +0#0000000&@54 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|3| |3+0#0000000&@8|$+0#4040ff13&| +0#0000000&@45 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|4| |$+0#4040ff13&| +0#0000000&@54 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|5| >5+0#0000000&@10|$+0#4040ff13&| +0#0000000&@43 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +|:|s|e|t| |l|i|s|t| @32|5|,|1|-|5|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_above_below_empty_3.dump b/src/testdir/dumps/Test_prop_above_below_empty_3.dump new file mode 100644 index 0000000..27f9eec --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_empty_3.dump @@ -0,0 +1,16 @@ +| +0#af5f00255#ffffff0@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|1| |1+0#0000000&@7| | +0&#ffd7d7255| +0&#ffffff0@45 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|2| | +0#0000000&@8| +0&#ffd7d7255| +0&#ffffff0@45 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|3| |3+0#0000000&@8| +0&#ffd7d7255| +0&#ffffff0@45 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|4| | +0#0000000&@8| +0&#ffd7d7255| +0&#ffffff0@45 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|5| >5+0#0000000&@8|5+0&#ffd7d7255|5+0&#ffffff0| @44 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +|:| @40|5|,|1|-|5|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_above_below_empty_4.dump b/src/testdir/dumps/Test_prop_above_below_empty_4.dump new file mode 100644 index 0000000..cc3c27d --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_empty_4.dump @@ -0,0 +1,16 @@ +| +0#af5f00255#ffffff0@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|4| |1+0#0000000&@7| @47 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|3| | +0#0000000&@55 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|2| |3+0#0000000&@8| @46 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|1| | +0#0000000&@55 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +|5+0#af5f00255&| @2>5+0#0000000&@10| @44 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +|:| @40|5|,|1|-|5|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_above_below_empty_5.dump b/src/testdir/dumps/Test_prop_above_below_empty_5.dump new file mode 100644 index 0000000..5ee4d80 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_empty_5.dump @@ -0,0 +1,16 @@ +| +0#af5f00255#ffffff0@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|2| |1+0#0000000&@7| @47 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|1| | +0#0000000&@55 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +|3+0#af5f00255&| @2>3+0#0000000&@8| @46 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|1| | +0#0000000&@55 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|2| |5+0#0000000&@10| @44 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +|:| @40|3|,|1|-|5|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_1.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_1.dump new file mode 100644 index 0000000..d6ac04e --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_1.dump @@ -0,0 +1,8 @@ +>"+0&#ffffff0| |l|i|n|e| |1| @51 +|"| |l|i|n|e| |2| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| +0&#ffffff0@47 +|"| |l|i|n|e| |3| @51 +|"| |l|i|n|e| |4| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45 +|@+0#4040ff13&@2| @56 +| +0#0000000&@41|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_10.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_10.dump new file mode 100644 index 0000000..de1ee5c --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_10.dump @@ -0,0 +1,8 @@ +|"+0&#ffffff0| |l|i|n|e| |7| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47 +|"| |l|i|n|e| |8| @51 +>"| |l|i|n|e| |9| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45 +|"| |l|i|n|e| |1|0| @50 +@42|9|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_11.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_11.dump new file mode 100644 index 0000000..2368ecf --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_11.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|e+0#0000000#ffd7ff255|r|t| |b|e|l|o|w| +0&#ffffff0@47 +|"| |l|i|n|e| |8| @51 +>"| |l|i|n|e| |9| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45 +|"| |l|i|n|e| |1|0| @50 +|~+0#4040ff13&| @58 +| +0#0000000&@41|9|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_12.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_12.dump new file mode 100644 index 0000000..de22216 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_12.dump @@ -0,0 +1,8 @@ +|"+0&#ffffff0| |l|i|n|e| |8| @51 +|"| |l|i|n|e| |9| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45 +>"| |l|i|n|e| |1|0| @50 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|0|,|1| @9|B|o|t| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_13.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_13.dump new file mode 100644 index 0000000..6c9db8b --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_13.dump @@ -0,0 +1,8 @@ +|"+0&#ffffff0| |l|i|n|e| |9| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45 +>"| |l|i|n|e| |1|0| @50 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|0|,|1| @9|B|o|t| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_14.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_14.dump new file mode 100644 index 0000000..341707e --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_14.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|e+0#0000000#ffd7ff255|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45 +>"| |l|i|n|e| |1|0| @50 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|0|,|1| @9|B|o|t| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_15.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_15.dump new file mode 100644 index 0000000..4110a19 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_15.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2| +0#0000000&@2|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@39 +>"| |l|i|n|e| |1|0| @50 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|0|,|1| @9|B|o|t| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_16.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_16.dump new file mode 100644 index 0000000..d58f2d0 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_16.dump @@ -0,0 +1,8 @@ +>"+0&#ffffff0| |l|i|n|e| |1|0| @50 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|0|,|1| @9|B|o|t| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_2.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_2.dump new file mode 100644 index 0000000..8e8569b --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_2.dump @@ -0,0 +1,8 @@ +|"+0&#ffffff0| |l|i|n|e| |2| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| +0&#ffffff0@47 +|"| |l|i|n|e| |3| @51 +>"| |l|i|n|e| |4| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45 +|"| |l|i|n|e| |5| @51 +@42|4|,|1| @10|1|6|%| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_3.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_3.dump new file mode 100644 index 0000000..f4e9d92 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_3.dump @@ -0,0 +1,8 @@ +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| +0&#ffffff0@47 +|"| |l|i|n|e| |3| @51 +>"| |l|i|n|e| |4| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45 +|"| |l|i|n|e| |5| @51 +|"| |l|i|n|e| |6| @51 +@42|4|,|1| @10|3@1|%| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_4.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_4.dump new file mode 100644 index 0000000..3ca1c6e --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_4.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|i+0#0000000&|n|e| |3| @51 +>"| |l|i|n|e| |4| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45 +|"| |l|i|n|e| |5| @51 +|"| |l|i|n|e| |6| @51 +|@+0#4040ff13&@2| @56 +| +0#0000000&@41|4|,|1| @10|3@1|%| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_5.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_5.dump new file mode 100644 index 0000000..3b28dbb --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_5.dump @@ -0,0 +1,8 @@ +|"+0&#ffffff0| |l|i|n|e| |4| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45 +|"| |l|i|n|e| |5| @51 +>"| |l|i|n|e| |6| @51 +|"| |l|i|n|e| |7| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47 +@42|6|,|1| @10|5|0|%| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_6.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_6.dump new file mode 100644 index 0000000..7681090 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_6.dump @@ -0,0 +1,8 @@ +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45 +|"| |l|i|n|e| |5| @51 +>"| |l|i|n|e| |6| @51 +|"| |l|i|n|e| |7| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47 +|"| |l|i|n|e| |8| @51 +@42|6|,|1| @10|6@1|%| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_7.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_7.dump new file mode 100644 index 0000000..bf9c0f9 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_7.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|e+0#0000000#ffd7ff255|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45 +|"| |l|i|n|e| |5| @51 +>"| |l|i|n|e| |6| @51 +|"| |l|i|n|e| |7| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47 +|"| |l|i|n|e| |8| @51 +|@+0#4040ff13&@2| @56 +| +0#0000000&@41|6|,|1| @10|6@1|%| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_8.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_8.dump new file mode 100644 index 0000000..06d9e09 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_8.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|i+0#0000000&|n|e| |5| @51 +>"| |l|i|n|e| |6| @51 +|"| |l|i|n|e| |7| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47 +|"| |l|i|n|e| |8| @51 +|"| |l|i|n|e| |9| @51 +|@+0#4040ff13&@2| @56 +| +0#0000000&@41|6|,|1| @10|6@1|%| diff --git a/src/testdir/dumps/Test_prop_above_below_smoothscroll_9.dump b/src/testdir/dumps/Test_prop_above_below_smoothscroll_9.dump new file mode 100644 index 0000000..cac3b28 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_below_smoothscroll_9.dump @@ -0,0 +1,8 @@ +|"+0&#ffffff0| |l|i|n|e| |6| @51 +|"| |l|i|n|e| |7| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47 +>"| |l|i|n|e| |8| @51 +|"| |l|i|n|e| |9| @51 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45 +|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45 +@42|8|,|1| @10|8|3|%| diff --git a/src/testdir/dumps/Test_prop_above_empty_1.dump b/src/testdir/dumps/Test_prop_above_empty_1.dump new file mode 100644 index 0000000..721d0c3 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_empty_1.dump @@ -0,0 +1,16 @@ +| +0#af5f00255#ffffff0@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|1| |1+0#0000000&@7| @47 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|2| | +0#0000000&@55 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|3| |3+0#0000000&@8| @46 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|4| | +0#0000000&@55 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|5| >5+0#0000000&@10| @44 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|5|,|1|-|5|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_above_empty_2.dump b/src/testdir/dumps/Test_prop_above_empty_2.dump new file mode 100644 index 0000000..c8c99e4 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_empty_2.dump @@ -0,0 +1,16 @@ +| +0#af5f00255#ffffff0@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|1| |1+0#0000000&@7|$+0#4040ff13&| +0#0000000&@46 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|2| |$+0#4040ff13&| +0#0000000&@54 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|3| |3+0#0000000&@8|$+0#4040ff13&| +0#0000000&@45 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|4| |$+0#4040ff13&| +0#0000000&@54 +| +0#af5f00255&@3|-+0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|5| >5+0#0000000&@10|$+0#4040ff13&| +0#0000000&@43 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|s|e|t| |l|i|s|t| @32|5|,|1|-|5|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_above_number_1.dump b/src/testdir/dumps/Test_prop_above_number_1.dump new file mode 100644 index 0000000..d986a46 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_number_1.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| >o+0#0000000&|n|e| |o|n|e| |o|n|e| @59 +| +0#af5f00255&@3|a+0#0000000#ffd7ff255|b|o|v|e| |t|h|e| |t|e|x|t| +0&#ffffff0@56 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |t|w|o| |t|w|o| @59 +| +0#af5f00255&@1|3| |t+0#0000000&|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @53 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_above_number_2.dump b/src/testdir/dumps/Test_prop_above_number_2.dump new file mode 100644 index 0000000..e1e5ba5 --- /dev/null +++ b/src/testdir/dumps/Test_prop_above_number_2.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| >o+0#0000000&|n|e| |o|n|e| |o|n|e| @59 +| +0#af5f00255&@3|a+0#0000000#ffd7ff255|b|o|v|e| |t|h|e| |t|e|x|t| +0&#ffffff0@56 +| +0#af5f00255&@3|a+0#0000000#ffd7ff255|l|s|o| |a|b|o|v|e| |t|h|e| |t|e|x|t| +0&#ffffff0@51 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |t|w|o| |t|w|o| @59 +| +0#af5f00255&@1|3| |t+0#0000000&|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @53 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_after_linebreak.dump b/src/testdir/dumps/Test_prop_after_linebreak.dump new file mode 100644 index 0000000..7387c83 --- /dev/null +++ b/src/testdir/dumps/Test_prop_after_linebreak.dump @@ -0,0 +1,10 @@ +>x+0&#ffffff0@36|+| @36 +|(+0#ffffff16#e000002|x+0#0000000#ffffff0@36|)| @35 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_after_tab.dump b/src/testdir/dumps/Test_prop_after_tab.dump new file mode 100644 index 0000000..fd63d5e --- /dev/null +++ b/src/testdir/dumps/Test_prop_after_tab.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@6> |[+0#ffffff16#e000002|x+0#0000000#ffffff0@2|]| @61 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1|-|8| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_at_same_pos.dump b/src/testdir/dumps/Test_prop_at_same_pos.dump new file mode 100644 index 0000000..95f01fa --- /dev/null +++ b/src/testdir/dumps/Test_prop_at_same_pos.dump @@ -0,0 +1,5 @@ +>f+0&#ffffff0|u|n|c|t|i|o|n|(| |o+0#ffffff16#ff404010|n|e|:| |c+0#0000000#ffff4012|a|l@1|,+0&#ffffff0| |t+0#00e0e07&|w|o|:| |a+0#0000000#ffff4012|r|g|u|m|e|n|t|,+0&#ffffff0| |t+0&#ffd7ff255|h|r|e@1|:| |h+0&#ffff4012|e|r|e| +0&#ffffff0|)| @25 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_01.dump b/src/testdir/dumps/Test_prop_before_tab_01.dump new file mode 100644 index 0000000..a0c264e --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_01.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@3> |x| @65 +|1+0&#ffff4012|2|3|4|5|6|7| +0&#ffffff0|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@7|x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@6|x| @57 +@8|A+0&#ffff4012|B|C|x+0&#ffffff0| @62 +@8|x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|1|,|1|-|8| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_02.dump b/src/testdir/dumps/Test_prop_before_tab_02.dump new file mode 100644 index 0000000..4aab872 --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_02.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@4>x| @65 +|1+0&#ffff4012|2|3|4|5|6|7| +0&#ffffff0|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@7|x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@6|x| @57 +@8|A+0&#ffff4012|B|C|x+0&#ffffff0| @62 +@8|x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|1|,|2|-|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_03.dump b/src/testdir/dumps/Test_prop_before_tab_03.dump new file mode 100644 index 0000000..f89f0b9 --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_03.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@4|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7> +0&#ffffff0|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@7|x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@6|x| @57 +@8|A+0&#ffff4012|B|C|x+0&#ffffff0| @62 +@8|x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|2|,|1|-|8| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_04.dump b/src/testdir/dumps/Test_prop_before_tab_04.dump new file mode 100644 index 0000000..a820a41 --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_04.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@4|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7| +0&#ffffff0>x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@7|x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@6|x| @57 +@8|A+0&#ffff4012|B|C|x+0&#ffffff0| @62 +@8|x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|2|,|2|-|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_05.dump b/src/testdir/dumps/Test_prop_before_tab_05.dump new file mode 100644 index 0000000..1524851 --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_05.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@4|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7| +0&#ffffff0|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@6> |x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@6|x| @57 +@8|A+0&#ffff4012|B|C|x+0&#ffffff0| @62 +@8|x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|3|,|1|-|1|6| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_06.dump b/src/testdir/dumps/Test_prop_before_tab_06.dump new file mode 100644 index 0000000..54a06cd --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_06.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@4|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7| +0&#ffffff0|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@7>x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@6|x| @57 +@8|A+0&#ffff4012|B|C|x+0&#ffffff0| @62 +@8|x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|3|,|2|-|1|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_07.dump b/src/testdir/dumps/Test_prop_before_tab_07.dump new file mode 100644 index 0000000..3b07ac6 --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_07.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@4|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7| +0&#ffffff0|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@7|x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@5> |x| @57 +@8|A+0&#ffff4012|B|C|x+0&#ffffff0| @62 +@8|x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|4|,|1|-|1|6| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_08.dump b/src/testdir/dumps/Test_prop_before_tab_08.dump new file mode 100644 index 0000000..07eb40b --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_08.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@4|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7| +0&#ffffff0|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@7|x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@6>x| @57 +@8|A+0&#ffff4012|B|C|x+0&#ffffff0| @62 +@8|x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|4|,|2|-|1|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_09.dump b/src/testdir/dumps/Test_prop_before_tab_09.dump new file mode 100644 index 0000000..ed30b9e --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_09.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@4|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7| +0&#ffffff0|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@7|x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@6|x| @57 +@8|A+0&#ffff4012|B|C>x+0&#ffffff0| @62 +@8|x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|5|,|2|-|1|2| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_before_tab_10.dump b/src/testdir/dumps/Test_prop_before_tab_10.dump new file mode 100644 index 0000000..9957336 --- /dev/null +++ b/src/testdir/dumps/Test_prop_before_tab_10.dump @@ -0,0 +1,8 @@ +|1+0&#ffff4012|2|3| +0&#ffffff0@4|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7| +0&#ffffff0|x| @65 +|1+0&#ffff4012|2|3|4|5|6|7|8| +0&#ffffff0@7|x| @57 +|1+0&#ffff4012|2|3|4|5|6|7|8|9| +0&#ffffff0@6|x| @57 +@8|A+0&#ffff4012|B|C|x+0&#ffffff0| @62 +@8>x|A+0&#ffff4012|B|C| +0&#ffffff0@62 +|~+0#4040ff13&| @73 +| +0#0000000&@56|6|,|2|-|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_below_after_empty_1.dump b/src/testdir/dumps/Test_prop_below_after_empty_1.dump new file mode 100644 index 0000000..b6773df --- /dev/null +++ b/src/testdir/dumps/Test_prop_below_after_empty_1.dump @@ -0,0 +1,8 @@ +>v+0&#ffffff0|i|m|9|s|c|r|i|p|t| @49 +@60 +@1|T+0#ffffff16#e000002|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +0#0000000#ffffff0@15 +|t|h|r|e@1| @54 +@60 +|T+0&#ffd7ff255|h|e| |s|l|o|w| |f|o|x| |b|u|m|p|s| |i|n|t|o| |t|h|e| |l|a|z|y| |d|o|g| +0&#ffffff0@23 +|~+0#4040ff13&| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_below_after_empty_2.dump b/src/testdir/dumps/Test_prop_below_after_empty_2.dump new file mode 100644 index 0000000..e4c9ad2 --- /dev/null +++ b/src/testdir/dumps/Test_prop_below_after_empty_2.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| >v+0#0000000&|i|m|9|s|c|r|i|p|t| @45 +| +0#af5f00255&@1|2| | +0#0000000&@55 +| +0#af5f00255&@3| +0#0000000&|T+0#ffffff16#e000002|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +0#0000000#ffffff0@11 +| +0#af5f00255&@1|3| |t+0#0000000&|h|r|e@1| @50 +| +0#af5f00255&@1|4| | +0#0000000&@55 +| +0#af5f00255&@3|T+0#0000000#ffd7ff255|h|e| |s|l|o|w| |f|o|x| |b|u|m|p|s| |i|n|t|o| |t|h|e| |l|a|z|y| |d|o|g| +0&#ffffff0@19 +|~+0#4040ff13&| @58 +|:+0#0000000&|s|e|t| |n|u|m|b|e|r| @30|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_below_after_empty_3.dump b/src/testdir/dumps/Test_prop_below_after_empty_3.dump new file mode 100644 index 0000000..8658af0 --- /dev/null +++ b/src/testdir/dumps/Test_prop_below_after_empty_3.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| >v+0#0000000&|i|m|9|s|c|r|i|p|t| @45 +| +0#af5f00255&@1|2| | +0#0000000&@55 +| +0#af5f00255&@3| +0#0000000&|T+0#ffffff16#e000002|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +0#0000000#ffffff0@11 +| +0#af5f00255&@1|3| |t+0#0000000&|h|r|e@1| @50 +| +0#af5f00255&@1|4| | +0#0000000&@55 +| +0#af5f00255&@3|T+0#0000000#ffd7ff255|h|e| |s|l|o|w| |f|o|x| |b|u|m|p|s| |i|n|t|o| |t|h|e| |l|a|z|y| |d|o|g| +0&#ffffff0@19 +|~+0#4040ff13&| @58 +|:+0#0000000&|s|e|t| |n|o|w|r|a|p| @30|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_below_split_line_1.dump b/src/testdir/dumps/Test_prop_below_split_line_1.dump new file mode 100644 index 0000000..c1dba26 --- /dev/null +++ b/src/testdir/dumps/Test_prop_below_split_line_1.dump @@ -0,0 +1,8 @@ +|o+0&#ffffff0|n|e| |o|n|e| |o|n|e| @63 +|t|w|o| |t|w|o| |t|w|o| @63 +@3|└+0&#ffff4012|─| |V|i|r|t|u|a|l| |t|e|x|t| |b|e|l|o|w| |t|h|e| |2|n|d| |l|i|n|e| +0&#ffffff0@37 +|x@1> @72 +|t|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @57 +|~+0#4040ff13&| @73 +|~| @73 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|3|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_below_split_line_2.dump b/src/testdir/dumps/Test_prop_below_split_line_2.dump new file mode 100644 index 0000000..e0fc050 --- /dev/null +++ b/src/testdir/dumps/Test_prop_below_split_line_2.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| |o+0#0000000&|n|e| |o|n|e| |o|n|e| @59 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |t|w|o| |t|w|o| @59 +| +0#af5f00255&@3| +0#0000000&@2|└+0&#ffff4012|─| |V|i|r|t|u|a|l| |t|e|x|t| |b|e|l|o|w| |t|h|e| |2|n|d| |l|i|n|e| +0&#ffffff0@33 +| +0#af5f00255&@1|3| |x+0#0000000&>x| @68 +| +0#af5f00255&@1|4| |t+0#0000000&|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @53 +|~+0#4040ff13&| @73 +|~| @73 +|:+0#0000000&|s|e|t| |n|u|m|b|e|r| @45|3|,|2| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_below_split_line_3.dump b/src/testdir/dumps/Test_prop_below_split_line_3.dump new file mode 100644 index 0000000..df881af --- /dev/null +++ b/src/testdir/dumps/Test_prop_below_split_line_3.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| |o+0#0000000&|n|e| |o|n|e| |o|n|e| @59 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |t|w|o| |t|w|o| @59 +| +0#af5f00255&@3| +0#0000000&@2|└+0&#ffff4012|─| |V|i|r|t|u|a|l| |t|e|x|t| |b|e|l|o|w| |t|h|e| |2|n|d| |l|i|n|e| +0&#ffffff0@33 +| +0#af5f00255&@1|3| |x+0#0000000&>x| @68 +| +0#af5f00255&@1|4| |t+0#0000000&|h|r|e@1| |t|h|r|e@1| |t|h|r|e@1| @53 +|~+0#4040ff13&| @73 +|~| @73 +|:+0#0000000&|s|e|t| |n|o|w|r|a|p| @45|3|,|2| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_delete_updates_1.dump b/src/testdir/dumps/Test_prop_delete_updates_1.dump new file mode 100644 index 0000000..400824f --- /dev/null +++ b/src/testdir/dumps/Test_prop_delete_updates_1.dump @@ -0,0 +1,10 @@ +|s+0&#ffffff0|o|m|e| |t|e|x|t| @50 +@3|T+0&#ffd7ff255|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +0&#ffffff0@13 +@5|T+0&#ffd7ff255|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +0&#ffffff0@11 +|m|o|r|e| |t|e|x|t| @50 +>t|h|e| |e|n|d| @52 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_delete_updates_2.dump b/src/testdir/dumps/Test_prop_delete_updates_2.dump new file mode 100644 index 0000000..e7074f5 --- /dev/null +++ b/src/testdir/dumps/Test_prop_delete_updates_2.dump @@ -0,0 +1,10 @@ +|s+0&#ffffff0|o|m|e| |t|e|x|t| @50 +|m|o|r|e| |t|e|x|t| @50 +>t|h|e| |e|n|d| @52 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_delete_updates_3.dump b/src/testdir/dumps/Test_prop_delete_updates_3.dump new file mode 100644 index 0000000..651ed4b --- /dev/null +++ b/src/testdir/dumps/Test_prop_delete_updates_3.dump @@ -0,0 +1,10 @@ +|s+0&#ffffff0|o|m|e| |t|e|x|t| @50 +>m|o|r|e| |t|e|x|t| @50 +|t|h|e| |e|n|d| @52 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_diff_mode_1.dump b/src/testdir/dumps/Test_prop_diff_mode_1.dump new file mode 100644 index 0000000..069c08d --- /dev/null +++ b/src/testdir/dumps/Test_prop_diff_mode_1.dump @@ -0,0 +1,10 @@ +>0+0&#ffd7ff255@2| @26||+1&#ffffff0|<+0&#ffd7ff255|t|e|x|t|>|9+2&#ff404010|0+0&#ffd7ff255@2| @18 +|0@2| @26||+1&#ffffff0|0+0&#ffd7ff255@2|9+2&#ff404010|<+0&#ffd7ff255|t|e|x|t|>| @18 +|0@2| @26||+1&#ffffff0|0+0&#ffd7ff255@2|9+2&#ff404010| +0&#ffd7ff255@18|<|t|e|x|t|> +|0@2| @26||+1&#ffffff0|<+0&#ffd7ff255|t|e|x|t|>| @22 +|0@2| @26||+1&#ffffff0|9+2&#ff404010|0+0&#ffd7ff255@2| @24 +|~+0#4040ff13#ffffff0| @28||+1#0000000&|0+0&#ffd7ff255@2|9+2&#ff404010| +0&#ffd7ff255@24 +|~+0#4040ff13#ffffff0| @28||+1#0000000&|<+0&#ffd7ff255|t|e|x|t|>| @22 +|~+0#4040ff13#ffffff0| @28||+1#0000000&|~+0#4040ff13&| @27 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1| @8|A|l@1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1|-|7| @5|A|l@1 +| +0&&@59 diff --git a/src/testdir/dumps/Test_prop_diff_mode_2.dump b/src/testdir/dumps/Test_prop_diff_mode_2.dump new file mode 100644 index 0000000..243ec0d --- /dev/null +++ b/src/testdir/dumps/Test_prop_diff_mode_2.dump @@ -0,0 +1,10 @@ +| +0#af5f00255#ffffff0@1|1| |0+0#0000000#ffd7ff255@2| @22||+1&#ffffff0| +0#af5f00255&@1|1| |<+0#0000000#ffd7ff255|t|e|x|t|>>9+2&#ff404010|0+0&#ffd7ff255@2| @14 +| +0#af5f00255#ffffff0@1|2| |0+0#0000000#ffd7ff255@2| @22||+1&#ffffff0| +0#af5f00255&@1|2| |0+0#0000000#ffd7ff255@2|9+2&#ff404010|<+0&#ffd7ff255|t|e|x|t|>| @14 +| +0#af5f00255#ffffff0@1|3| |0+0#0000000#ffd7ff255@2| @22||+1&#ffffff0| +0#af5f00255&@1|3| |0+0#0000000#ffd7ff255@2|9+2&#ff404010| +0&#ffd7ff255@14|<|t|e|x|t|> +| +0#af5f00255#ffffff0@1|4| |0+0#0000000#ffd7ff255@2| @22||+1&#ffffff0| +0#af5f00255&@3|<+0#0000000#ffd7ff255|t|e|x|t|>| @18 +| +0#af5f00255#ffffff0@1|5| |0+0#0000000#ffd7ff255@2| @22||+1&#ffffff0| +0#af5f00255&@1|4| |9+2#0000000#ff404010|0+0&#ffd7ff255@2| @20 +|~+0#4040ff13#ffffff0| @28||+1#0000000&| +0#af5f00255&@1|5| |0+0#0000000#ffd7ff255@2|9+2&#ff404010| +0&#ffd7ff255@20 +|~+0#4040ff13#ffffff0| @28||+1#0000000&| +0#af5f00255&@3|<+0#0000000#ffd7ff255|t|e|x|t|>| @18 +|~+0#4040ff13#ffffff0| @28||+1#0000000&|~+0#4040ff13&| @27 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1| @8|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1|-|7| @5|A|l@1 +|:+0&&|w|i|n|d|o| |s|e|t| |n|u|m|b|e|r| @42 diff --git a/src/testdir/dumps/Test_prop_insert_list_mode_1.dump b/src/testdir/dumps/Test_prop_insert_list_mode_1.dump new file mode 100644 index 0000000..3f481d5 --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_list_mode_1.dump @@ -0,0 +1,8 @@ +|T+0&#ffffff0|h|i|s| |i|s| |a| |l|i|n|e| |w|i|t|h| |q|u|i|t|e| |a| |b|i|t| |o|f| |t|e|x|t| |h|e|r|e|.|$+0#4040ff13&|T+0#ffffff16#ff404010|h|e| |q|u|i|c|k| |b|r|o|… +>s+0#0000000#ffffff0|e|c|o|n|d| |l|i|n|e|$+0#4040ff13&| +0#0000000&@47 +|t|h|i|r|d| |l|i|n|e|$+0#4040ff13&| +0#0000000&@48 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_list_mode_2.dump b/src/testdir/dumps/Test_prop_insert_list_mode_2.dump new file mode 100644 index 0000000..26abd88 --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_list_mode_2.dump @@ -0,0 +1,8 @@ +|T+0&#ffffff0|h|i|s| |i|s| |a| |l|i|n|e| |w|i|t|h| |q|u|i|t|e| |a| |b|i|t| |o|f| |t|e|x|t| |h|e|r|e|.|$+0#4040ff13&|T+0#ffffff16#ff404010|h|e| |q|u|i|c|k| |b|r|o|»+0#4040ff13#ffffff0 +>s+0#0000000&|e|c|o|n|d| |l|i|n|e|$+0#4040ff13&| +0#0000000&@47 +|t|h|i|r|d| |l|i|n|e|$+0#4040ff13&| +0#0000000&@48 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|s|e|t| |n|o|w|r|a|p| @30|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_list_mode_3.dump b/src/testdir/dumps/Test_prop_insert_list_mode_3.dump new file mode 100644 index 0000000..58db9f6 --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_list_mode_3.dump @@ -0,0 +1,8 @@ +>o+0&#ffffff0|f| |t|e|x|t| |h|e|r|e|.|$+0#4040ff13&| +0#0000000&@2|T+0#ffffff16#ff404010|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g +|s+0#0000000#ffffff0|e|c|o|n|d| |l|i|n|e|$+0#4040ff13&| +0#0000000&@47 +|t|h|i|r|d| |l|i|n|e|$+0#4040ff13&| +0#0000000&@48 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|s|e|t| |n|o|w|r|a|p| @30|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_start_incl_1.dump b/src/testdir/dumps/Test_prop_insert_start_incl_1.dump new file mode 100644 index 0000000..de1f3d4 --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_start_incl_1.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|e|x|t| |a+0#4040ff13&|f|t|e|r| >o+0#0000000&|n|e| |t|e|x|t| |b+0#4040ff13&|e|f|o|r|e| |t+0#0000000&|w|o| @29 +@60 +|f|u|n|c|t|i|o|n|(|a+0&#ffd7ff255|r|g|:| |a+0&#ffffff0|r|g|)| @41 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|6|-|1|2| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_start_incl_2.dump b/src/testdir/dumps/Test_prop_insert_start_incl_2.dump new file mode 100644 index 0000000..f0c9ac0 --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_start_incl_2.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|e|x|t| |a+0#4040ff13&|f|t|e|r| >o+0#0000000&|n|e| |t|e|x|t| |b+0#4040ff13&|e|f|o|r|e| |t+0#0000000&|w|o| @29 +@60 +|f|u|n|c|t|i|o|n|(|a+0&#ffd7ff255|r|g|:| |a+0&#ffffff0|r|g|)| @41 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@29|1|,|6|-|1|2| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_start_incl_3.dump b/src/testdir/dumps/Test_prop_insert_start_incl_3.dump new file mode 100644 index 0000000..5a8578b --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_start_incl_3.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|e|x|t| |a+0#4040ff13&|f|t|e|r| |x+0#0000000&>x|o|n|e| |t|e|x|t| |b+0#4040ff13&|e|f|o|r|e| |t+0#0000000&|w|o| @27 +@60 +|f|u|n|c|t|i|o|n|(|a+0&#ffd7ff255|r|g|:| |a+0&#ffffff0|r|g|)| @41 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|7|-|1|3| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_start_incl_4.dump b/src/testdir/dumps/Test_prop_insert_start_incl_4.dump new file mode 100644 index 0000000..bf67a1e --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_start_incl_4.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|e|x|t| |a+0#4040ff13&|f|t|e|r| |x+0#0000000&@1|o|n|e| |t|e|x|t| >b+0#4040ff13&|e|f|o|r|e| |t+0#0000000&|w|o| @27 +@60 +|f|u|n|c|t|i|o|n|(|a+0&#ffd7ff255|r|g|:| |a+0&#ffffff0|r|g|)| @41 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@29|1|,|1|7|-|2|3| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_start_incl_5.dump b/src/testdir/dumps/Test_prop_insert_start_incl_5.dump new file mode 100644 index 0000000..270c8a0 --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_start_incl_5.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|e|x|t| |a+0#4040ff13&|f|t|e|r| |x+0#0000000&@1|o|n|e| |t|e|x|t| |y>y|b+0#4040ff13&|e|f|o|r|e| |t+0#0000000&|w|o| @25 +@60 +|f|u|n|c|t|i|o|n|(|a+0&#ffd7ff255|r|g|:| |a+0&#ffffff0|r|g|)| @41 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|1|8|-|2|4| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_start_incl_6.dump b/src/testdir/dumps/Test_prop_insert_start_incl_6.dump new file mode 100644 index 0000000..96156a8 --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_start_incl_6.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|e|x|t| |a+0#4040ff13&|f|t|e|r| |x+0#0000000&@1|o|n|e| |t|e|x|t| |y@1|b+0#4040ff13&|e|f|o|r|e| |t+0#0000000&|w|o| @25 +@60 +|f|u|n|c|t|i|o|n|(| @50 +@7> |a+0&#ffd7ff255|r|g|:| |a+0&#ffffff0|r|g|)| @42 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|4|,|1|-|8| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_start_incl_7.dump b/src/testdir/dumps/Test_prop_insert_start_incl_7.dump new file mode 100644 index 0000000..43545a8 --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_start_incl_7.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|e|x|t| |a+0#4040ff13&|f|t|e|r| |x+0#0000000&@1|o|n|e| |t|e|x|t| |y@1|b+0#4040ff13&|e|f|o|r|e| |t+0#0000000&|w|o| @25 +@60 +|f|u|n|c|t|i|o|n|(| @50 +@12|a+0&#ffd7ff255|r|g|:| >a+0&#ffffff0|r|g|)| @38 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|4|,|6|-|1|8| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_insert_start_incl_8.dump b/src/testdir/dumps/Test_prop_insert_start_incl_8.dump new file mode 100644 index 0000000..9d46839 --- /dev/null +++ b/src/testdir/dumps/Test_prop_insert_start_incl_8.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|e|x|t| |a+0#4040ff13&|f|t|e|r| |x+0#0000000&@1|o|n|e| |t|e|x|t| |y@1|b+0#4040ff13&|e|f|o|r|e| |t+0#0000000&|w|o| @25 +@60 +|f|u|n|c|t|i|o|n|(| @50 +@4|a+0&#ffd7ff255|r|g|:| >a+0&#ffffff0|r|g|)| @46 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|4|,|5|-|1|0| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_1.dump b/src/testdir/dumps/Test_prop_inserts_text_1.dump new file mode 100644 index 0000000..7d1b102 --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_1.dump @@ -0,0 +1,8 @@ +|i+0&#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| |s|o +|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n>g| @27 +|p|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @40 +|F|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @34 +|e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@49 +|l|o@1|k| |n|o| |h|i|g|h|l|i|g|h|t| @42 +|~+0#4040ff13&| @58 +| +0#0000000&@41|1|,|7|6|-|9|2| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_2.dump b/src/testdir/dumps/Test_prop_inserts_text_2.dump new file mode 100644 index 0000000..2a5b2f3 --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_2.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n>g| @23 +| +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @38 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @32 +| +0#0000e05#a8a8a8255@1|e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|o@1|k| |n|o| |h|i|g|h|l|i|g|h|t| @40 +|~+0#4040ff13&| @58 +| +0#0000000&@41|1|,|7|6|-|9|2| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_3.dump b/src/testdir/dumps/Test_prop_inserts_text_3.dump new file mode 100644 index 0000000..36a4b8c --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_3.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n|g| @23 +| +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s>t| @38 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @32 +| +0#0000e05#a8a8a8255@1|e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|o@1|k| |n|o| |h|i|g|h|l|i|g|h|t| @40 +|~+0#4040ff13&| @58 +| +0#0000000&@41|2|,|7|-|1|9| @7|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_4.dump b/src/testdir/dumps/Test_prop_inserts_text_4.dump new file mode 100644 index 0000000..8bb637a --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_4.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n|g| @23 +| +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @38 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=>1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @32 +| +0#0000e05#a8a8a8255@1|e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|o@1|k| |n|o| |h|i|g|h|l|i|g|h|t| @40 +|~+0#4040ff13&| @58 +| +0#0000000&@41|3|,|1|3|-|1|6| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_5.dump b/src/testdir/dumps/Test_prop_inserts_text_5.dump new file mode 100644 index 0000000..75194f6 --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_5.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n|g| @23 +| +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @38 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=>2+0#0000000&| |}|;| @32 +| +0#0000e05#a8a8a8255@1|e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|o@1|k| |n|o| |h|i|g|h|l|i|g|h|t| @40 +|~+0#4040ff13&| @58 +| +0#0000000&@41|3|,|1|6|-|2@1| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_6.dump b/src/testdir/dumps/Test_prop_inserts_text_6.dump new file mode 100644 index 0000000..fb25ddf --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_6.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |S+0#ffffff16#e000002|O|M|E| |h+0#0000000#ffffff0|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |O+0&#ffff4012|T|H|E|R| |t+0&#ffffff0|h|e|r|e| |a|n|d| +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| |a|f|t|e|r| |M+0fd7ff255|O|R|E| |w+0&#ffffff0|r|a|p@1|i|n|g| @23 +| +0#0000e05#a8a8a8255@1|p+0#0000000#ffffff0|r|e|s+0&#e0e0e08|ö|m|e|和*&|平|t+&|é|x|t|p+0&#ffffff0|o|s|t| @38 +| +0#0000e05#a8a8a8255@1|F+0#0000000#ffffff0|o@1| |f|o@1| |=| |{| |.+0#0000e05&|x|=|1+0#0000000&|,| |.+0#0000e05&|y|=|2+0#0000000&| |}|;| @32 +| +0#0000e05#a8a8a8255@1>e+0#ffffff16#e000002|m|p|t|y| |l|i|n|e| +0#0000000#ffffff0@47 +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|o@1|k| |n|o| |h|i|g|h|l|i|g|h|t| @40 +|~+0#4040ff13&| @58 +| +0#0000000&@41|4|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_hi_1.dump b/src/testdir/dumps/Test_prop_inserts_text_hi_1.dump new file mode 100644 index 0000000..863ded3 --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_hi_1.dump @@ -0,0 +1,6 @@ +>i+0&#ffffff0|n|s|e|r|t| |s|o|m|e| |t|e|x|t| |B+0#ffffff16#e000002|E|F|O|R|E|(+0#0000000#5fd7ff255|h+0&#ffffff0|e|r|e|)| |a|n|d| |t|h|e|r|e| @20 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_hi_2.dump b/src/testdir/dumps/Test_prop_inserts_text_hi_2.dump new file mode 100644 index 0000000..1d9d11a --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_hi_2.dump @@ -0,0 +1,6 @@ +|i+0&#ffffff0|n|s|e|r|t| |s|o|m|e| >t+0&#ffff4012|e|x|t| |B+0#ffffff16#e000002|E|F|O|R|E|(+0#0000000#5fd7ff255|h+0&#ffff4012|e|r+0&#ffffff0|e|)| |a|n|d| |t|h|e|r|e| @20 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|/+0#0000000&|t|e|x|t| |(|h|e| @32|1|,|1|3| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_hi_3.dump b/src/testdir/dumps/Test_prop_inserts_text_hi_3.dump new file mode 100644 index 0000000..85ad7dd --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_hi_3.dump @@ -0,0 +1,6 @@ +|i+0&#ffffff0|n|s|e|r|t| |s|o|m|e| >t+0&#ffff4012|e|x|t| |B+0#ffffff16#e000002|E|F|O|R|E|(+0#0000000#ffff4012|h|e|r+0&#ffffff0|e|)| |a|n|d| |t|h|e|r|e| @20 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|c|a|l@1| |m|a|t|c|h|d|e|l|e|t|e|(|t|h|e|m|a|t|c|h|)| @14|1|,|1|3| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_hi_4.dump b/src/testdir/dumps/Test_prop_inserts_text_hi_4.dump new file mode 100644 index 0000000..a5592ac --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_hi_4.dump @@ -0,0 +1,6 @@ +|i+0&#ffffff0|n|s|e|r|t| |s|o|m|e| >t|e|x|t| |(+0fd7ff255|A+0#ffffff16#e000002|F|T|E|R|h+0#0000000#ffffff0|e|r|e|)| |a|n|d| |t|h|e|r|e| @21 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|c|a|l@1| |D|o|A|f|t|e|r|(|)| @26|1|,|1|3| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_hi_5.dump b/src/testdir/dumps/Test_prop_inserts_text_hi_5.dump new file mode 100644 index 0000000..0002aa8 --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_hi_5.dump @@ -0,0 +1,6 @@ +|i+0&#ffffff0|n|s|e|r|t| |s|o|m|e| >t+0&#ffff4012|e|x|t| |(+0fd7ff255|A+0#ffffff16#e000002|F|T|E|R|h+0#0000000#ffff4012|e|r+0&#ffffff0|e|)| |a|n|d| |t|h|e|r|e| @21 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|s+0#e000002&|e|a|r|c|h| |h|i|t| |B|O|T|.@2|t|i|n|u|i|n|g| |a|t| |T|O|P| +0#0000000&@10|1|,|1|3| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_inserts_text_hi_6.dump b/src/testdir/dumps/Test_prop_inserts_text_hi_6.dump new file mode 100644 index 0000000..631f51a --- /dev/null +++ b/src/testdir/dumps/Test_prop_inserts_text_hi_6.dump @@ -0,0 +1,6 @@ +|i+0&#ffffff0|n|s|e|r|t| |s|o|m|e| >t+0&#ffff4012|e|x|t| |(|A+0#ffffff16#e000002|F|T|E|R|h+0#0000000#ffff4012|e|r+0&#ffffff0|e|)| |a|n|d| |t|h|e|r|e| @21 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|c|a|l@1| |m|a|t|c|h|d|e|l|e|t|e|(|t|h|e|m|a|t|c|h|)| @14|1|,|1|3| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_linebreak_1.dump b/src/testdir/dumps/Test_prop_linebreak_1.dump new file mode 100644 index 0000000..c1a56e8 --- /dev/null +++ b/src/testdir/dumps/Test_prop_linebreak_1.dump @@ -0,0 +1,10 @@ +>x+0&#ffffff0@49|]+0(ffff15| +0&#ffffff0@23 +|x@69| @4 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_linebreak_2.dump b/src/testdir/dumps/Test_prop_linebreak_2.dump new file mode 100644 index 0000000..e705f71 --- /dev/null +++ b/src/testdir/dumps/Test_prop_linebreak_2.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@1>x+0&#ffffff0@49|]+0(ffff15| +0#0000000#ffffff0@21 +| +0#0000e05#a8a8a8255@1|x+0&#ffffff0@69| +0#0000000&@2 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_multibyte_below_1.dump b/src/testdir/dumps/Test_prop_multibyte_below_1.dump new file mode 100644 index 0000000..838611b --- /dev/null +++ b/src/testdir/dumps/Test_prop_multibyte_below_1.dump @@ -0,0 +1,10 @@ +| +0#af5f00255#ffffff0@1|1| |©+0#0000000&| @54 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|2| |©+0#0000000&| @54 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +| +0#af5f00255&@1|3| >©+0#0000000&| @54 +| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_negative_error_1.dump b/src/testdir/dumps/Test_prop_negative_error_1.dump new file mode 100644 index 0000000..47458d8 --- /dev/null +++ b/src/testdir/dumps/Test_prop_negative_error_1.dump @@ -0,0 +1,8 @@ +>o+0&#ffffff0|n|e| @56 +|t|w|o| @56 +|t+0#ffffff16#ff404010|h|r|e@1| +0#0000000#ffffff0@54 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_negative_error_2.dump b/src/testdir/dumps/Test_prop_negative_error_2.dump new file mode 100644 index 0000000..188224c --- /dev/null +++ b/src/testdir/dumps/Test_prop_negative_error_2.dump @@ -0,0 +1,8 @@ +|~+0#4040ff13#ffffff0| @58 +|~| @58 +|~| @58 +|E+0#ffffff16#e000002|r@1|o|r| |d|e|t|e|c|t|e|d| |w|h|i|l|e| |p|r|o|c|e|s@1|i|n|g| |f|u|n|c|t|i|o|n| |A|d@1|T|e|x|t|p|r|o|p|:| +0#0000000#ffffff0@6 +|l+0#af5f00255&|i|n|e| @3|5|:| +0#0000000&@49 +|E+0#ffffff16#e000002|1|3@1|9|:| |C|a|n@1|o|t| |a|d@1| |a| |t|e|x|t|p|r|o|p| |w|i|t|h| |t|e|x|t| |a|f|t|e|r| |u|s|i|n|g| |a| |t|e|x|t|p|r|o +|p| |w|i|t|h| |a| |n|e|g|a|t|i|v|e| |i|d| +0#0000000#ffffff0@39 +|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@20 diff --git a/src/testdir/dumps/Test_prop_right_align_twice_1.dump b/src/testdir/dumps/Test_prop_right_align_twice_1.dump new file mode 100644 index 0000000..f3f1afc --- /dev/null +++ b/src/testdir/dumps/Test_prop_right_align_twice_1.dump @@ -0,0 +1,8 @@ +|s+0&#ffffff0|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| +0&#ffd7ff255|n|o|t|h|i|n|g| |h|e|r|e| +0&#ffffff0@12|S+0#ffffff16#e000002|o|m|e| |e|r@1|o|r +| +0#0000000#ffffff0@61|A+0#ffffff16#e000002|n|o|t|h|e|r| |e|r@1|o|r +|l+0#0000000#ffffff0|i|n|e| |t|w>o| @66 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|,|8| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_right_align_twice_2.dump b/src/testdir/dumps/Test_prop_right_align_twice_2.dump new file mode 100644 index 0000000..c4cd617 --- /dev/null +++ b/src/testdir/dumps/Test_prop_right_align_twice_2.dump @@ -0,0 +1,8 @@ +|s+0&#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t|s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| +0&#ffd7ff255|n|o|t|h|i|n|g| |h|e|r|e| +0&#ffffff0@8 +@65|S+0#ffffff16#e000002|o|m|e| |e|r@1|o|r +| +0#0000000#ffffff0@61|A+0#ffffff16#e000002|n|o|t|h|e|r| |e|r@1|o|r +|l+0#0000000#ffffff0|i|n|e| |t|w>o| @66 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|,|8| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_right_align_twice_3.dump b/src/testdir/dumps/Test_prop_right_align_twice_3.dump new file mode 100644 index 0000000..2c4cbee --- /dev/null +++ b/src/testdir/dumps/Test_prop_right_align_twice_3.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t|s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| +0&#ffd7ff255|n|o|t|h|i|n|g| |h|e|r|e| +0&#ffffff0@6 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@62|S+0#ffffff16#e000002|o|m|e| |e|r@1|o|r +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@59|A+0#ffffff16#e000002|n|o|t|h|e|r| |e|r@1|o|r +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |t|w>o| @64 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|,|8| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_text_change_arg_1.dump b/src/testdir/dumps/Test_prop_text_change_arg_1.dump new file mode 100644 index 0000000..174af07 --- /dev/null +++ b/src/testdir/dumps/Test_prop_text_change_arg_1.dump @@ -0,0 +1,5 @@ +>S+0&#ffffff0|e|t|E|r@1|o|r|C|o|d|e|(| |i+0&#ffd7ff255|d|:|-+0#4040ff13#ffffff0|1+0#0000000&|0|,| |i+0&#ffd7ff255|d|:|-+0#4040ff13#ffffff0|2+0#0000000&|0| |)| @29 +|s|e|c|o|n|d| |l|i|n|e| @48 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_text_change_arg_2.dump b/src/testdir/dumps/Test_prop_text_change_arg_2.dump new file mode 100644 index 0000000..57e9a46 --- /dev/null +++ b/src/testdir/dumps/Test_prop_text_change_arg_2.dump @@ -0,0 +1,5 @@ +|S+0&#ffffff0|e|t|E|r@1|o|r|C|o|d|e|(| |i+0&#ffd7ff255|d|:|-+0#4040ff13#ffffff0|1+0#0000000&|2|3>4|,| |i+0&#ffd7ff255|d|:|-+0#4040ff13#ffffff0|2+0#0000000&|0| |)| @27 +|s|e|c|o|n|d| |l|i|n|e| @48 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|,|1|8|-|2@1| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_text_with_padding_1.dump b/src/testdir/dumps/Test_prop_text_with_padding_1.dump new file mode 100644 index 0000000..1fde5e9 --- /dev/null +++ b/src/testdir/dumps/Test_prop_text_with_padding_1.dump @@ -0,0 +1,8 @@ +>S+0&#ffffff0|o|m|e| |t|e|x|t| |t|o| |a|d@1| |v|i|r|t|u|a|l| |t|e|x|t| |t|o|.| @2|a+0&#ffd7ff255|f|t|e|r| +0&#ffffff0@5|r+0&#ffd7ff255|i|g|h|t| |a|l|i|g|n|e|d +| +0&#ffffff0@3|b+0&#ffd7ff255|e|l|o|w| |t|h|e| |l|i|n|e| +0&#ffffff0@41 +|s|e|c|o|n|d| |l|i|n|e| @48 +|A|n|o|t|h|e|r| |l|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |t|o| |m|a|k|e| |t|h|e| |w|r|a|p|.| @5|r+0&#ffd7ff255|i|g|h|t|m|o|s|t +|~+0#4040ff13#ffffff0| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_text_with_padding_2.dump b/src/testdir/dumps/Test_prop_text_with_padding_2.dump new file mode 100644 index 0000000..abedaae --- /dev/null +++ b/src/testdir/dumps/Test_prop_text_with_padding_2.dump @@ -0,0 +1,8 @@ +|x+0&#ffffff0@9|S|o|m|e| |t|e|x|t| |t|o| |a|d@1| |v|i|r|t|u|a|l| |t|e|x|t| |t|o|.| @2|a+0&#ffd7ff255|f|t|e|r| +0&#ffffff0@4|r+0&#ffd7ff255|i|g|… +| +0&#ffffff0@3|b+0&#ffd7ff255|e|l|o|w| |t|h|e| |l|i|n|e| +0&#ffffff0@41 +|s|e|c|o|n|d| |l|i|n|e| @48 +>x|A|n|o|t|h|e|r| |l|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |t|o| |m|a|k|e| |t|h|e| |w|r|a|p|.| @13 +@51|r+0&#ffd7ff255|i|g|h|t|m|o|s|t +|~+0#4040ff13#ffffff0| @58 +|~| @58 +| +0#0000000&@41|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_text_with_padding_3.dump b/src/testdir/dumps/Test_prop_text_with_padding_3.dump new file mode 100644 index 0000000..2911162 --- /dev/null +++ b/src/testdir/dumps/Test_prop_text_with_padding_3.dump @@ -0,0 +1,8 @@ +>x+0&#ffffff0@10|S|o|m|e| |t|e|x|t| |t|o| |a|d@1| |v|i|r|t|u|a|l| |t|e|x|t| |t|o|.| @2|a+0&#ffd7ff255|f|t|e|r| +0&#ffffff0@7 +@47|r+0&#ffd7ff255|i|g|h|t| |a|l|i|g|n|e|d +| +0&#ffffff0@3|b+0&#ffd7ff255|e|l|o|w| |t|h|e| |l|i|n|e| +0&#ffffff0@41 +|s|e|c|o|n|d| |l|i|n|e| @48 +|x|A|n|o|t|h|e|r| |l|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |t|o| |m|a|k|e| |t|h|e| |w|r|a|p|.| @13 +@51|r+0&#ffd7ff255|i|g|h|t|m|o|s|t +|~+0#4040ff13#ffffff0| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_text_with_padding_4.dump b/src/testdir/dumps/Test_prop_text_with_padding_4.dump new file mode 100644 index 0000000..b0b0156 --- /dev/null +++ b/src/testdir/dumps/Test_prop_text_with_padding_4.dump @@ -0,0 +1,8 @@ +>x+0&#ffffff0@10|S|o|m|e| |t|e|x|t| |t|o| |a|d@1| |v|i|r|t|u|a|l| |t|e|x|t| |t|o|.|$+0#4040ff13&| +0#0000000&@2|a+0&#ffd7ff255|f|t|e|r| +0&#ffffff0@6 +@47|r+0&#ffd7ff255|i|g|h|t| |a|l|i|g|n|e|d +| +0&#ffffff0@3|b+0&#ffd7ff255|e|l|o|w| |t|h|e| |l|i|n|e| +0&#ffffff0@41 +|s|e|c|o|n|d| |l|i|n|e|$+0#4040ff13&| +0#0000000&@47 +|x|A|n|o|t|h|e|r| |l|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |t|o| |m|a|k|e| |t|h|e| |w|r|a|p|.|$+0#4040ff13&| +0#0000000&@12 +@51|r+0&#ffd7ff255|i|g|h|t|m|o|s|t +| +0&#ffffff0@59 +|:|s|e|t| |l|i|s|t| @32|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_linebreak_1.dump b/src/testdir/dumps/Test_prop_with_linebreak_1.dump new file mode 100644 index 0000000..9cae5d6 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_linebreak_1.dump @@ -0,0 +1,6 @@ +>o+0&#ffffff0|n|e|:+0#e000e06&| |v|i|r|t|u|a|l| |t|e|x|t| +0#0000000&|t|w|o|w|o|r|d| @24 +|~+0#4040ff13&| @48 +|~| @48 +|~| @48 +|~| @48 +| +0#0000000&@31|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_linebreak_2.dump b/src/testdir/dumps/Test_prop_with_linebreak_2.dump new file mode 100644 index 0000000..6614eb2 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_linebreak_2.dump @@ -0,0 +1,6 @@ +|a+0&#ffffff0|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a>s|o|n|e|:+0#e000e06&| |v|i|r|t|u|a|l| |t|e|x|t| +0#0000000&@5 +|t|w|o|w|o|r|d| @42 +|~+0#4040ff13&| @48 +|~| @48 +|~| @48 +| +0#0000000&@31|1|,|2|7| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_1.dump b/src/testdir/dumps/Test_prop_with_text_above_1.dump new file mode 100644 index 0000000..1a478f1 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_1.dump @@ -0,0 +1,9 @@ +|f+0&#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@42 +|s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@41 +|o|n|e| |t|w|o| @52 +|t|h|r>e@1| |f|o|u|r| @49 +@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@43 +|f|i|v|e| |s|i|x| @51 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|2|,|4| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_1a.dump b/src/testdir/dumps/Test_prop_with_text_above_1a.dump new file mode 100644 index 0000000..67d7a6b --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_1a.dump @@ -0,0 +1,9 @@ +|f+0&#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@42 +|s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@41 +|o|n|e| |t|w>o| @52 +|t|h|r|e@1| |f|o|u|r| @49 +@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@43 +|f|i|v|e| |s|i|x| @51 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|,|7|-|1|2|7| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_1b.dump b/src/testdir/dumps/Test_prop_with_text_above_1b.dump new file mode 100644 index 0000000..24fffb5 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_1b.dump @@ -0,0 +1,9 @@ +|f+0&#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@42 +|s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@41 +>o|n|e| |t|w|o| @52 +|t|h|r|e@1| |f|o|u|r| @49 +@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@43 +|f|i|v|e| |s|i|x| @51 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|,|1|-|1|2|1| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_1c.dump b/src/testdir/dumps/Test_prop_with_text_above_1c.dump new file mode 100644 index 0000000..bdf8811 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_1c.dump @@ -0,0 +1,9 @@ +|f+0&#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@42 +|s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@41 +|o|n>e| |t|w|o| @52 +|t|h|r|e@1| |f|o|u|r| @49 +@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@43 +|f|i|v|e| |s|i|x| @51 +|~+0#4040ff13&| @58 +|~| @58 +|:+0#0000000&|s|e|t| |s|h|o|w|b|r|e|a|k|=|>@1| @24|1|,|3|-|1|2|3| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_2.dump b/src/testdir/dumps/Test_prop_with_text_above_2.dump new file mode 100644 index 0000000..3df0967 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_2.dump @@ -0,0 +1,9 @@ +|f+0&#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@42 +|s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@41 +>o|n|e| |t|w|o| @52 +|t|h|r|e@1| |f|o|u|r| @49 +@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@43 +|f|i|v|e| |s|i|x| @51 +|~+0#4040ff13&| @58 +|~| @58 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@29|1|,|1|-|1|2|1| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_3.dump b/src/testdir/dumps/Test_prop_with_text_above_3.dump new file mode 100644 index 0000000..f58a95b --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_3.dump @@ -0,0 +1,9 @@ +|f+0&#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@42 +|s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@41 +|i|n|s|e|r|t|e|d> |o|n|e| |t|w|o| @43 +|t|h|r|e@1| |f|o|u|r| @49 +@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@43 +|f|i|v|e| |s|i|x| @51 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|,|9|-|1|2|9| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_4.dump b/src/testdir/dumps/Test_prop_with_text_above_4.dump new file mode 100644 index 0000000..2a207eb --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_4.dump @@ -0,0 +1,9 @@ +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|f+0#0000000#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@36 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|s+0#0000000#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@35 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| |i+0#0000000&|n|s|e|r|t|e|d> |o|n|e| |t|w|o| @37 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| |t+0#0000000&|h|r|e@1| |f|o|u|r| @43 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3| +0#0000000&@2|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@37 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |f+0#0000000&|i|v|e| |s|i|x| @45 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|,|9|-|1@1|7| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_5.dump b/src/testdir/dumps/Test_prop_with_text_above_5.dump new file mode 100644 index 0000000..8494bb1 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_5.dump @@ -0,0 +1,9 @@ +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|f+0#0000000#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@36 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|s+0#0000000#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@35 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| |i+0#0000000&|n|s|e|r|t|e|d| |o|n|e| |t|w|o| @37 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| |t+0#0000000&|h|r|e@1| |f|o|u>r| @43 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3| +0#0000000&@2|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@37 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |f+0#0000000&|i|v|e| |s|i|x| @45 +|~+0#4040ff13&| @58 +|~| @58 +|:+0#0000000&|s|e|t| |n|o|w|r|a|p| @30|2|,|1|0| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_6.dump b/src/testdir/dumps/Test_prop_with_text_above_6.dump new file mode 100644 index 0000000..da28228 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_6.dump @@ -0,0 +1,9 @@ +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|f+0#0000000#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@36 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|s+0#0000000#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@35 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| |i+0#0000000#e0e0e08|n|s|e|r|t|e>d+0&#ffffff0| |o|n|e| |t|w|o| @37 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|b+0#0000000#5fd7ff255|e|l|o|w| +0&#ffffff0@48 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| |t+0#0000000&|h|r|e@1| |f|o|u|r| @43 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3| +0#0000000&@2|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@37 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |f+0#0000000&|i|v|e| |s|i|x| @45 +|~+0#4040ff13&| @58 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@19|8| @8|1|,|8|-|1@1|6| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_7.dump b/src/testdir/dumps/Test_prop_with_text_above_7.dump new file mode 100644 index 0000000..c50749b --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_7.dump @@ -0,0 +1,9 @@ +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|f+0#0000000#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@36 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|s+0#0000000#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@35 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| |i+0#0000000#e0e0e08|n|s|e|r|t|e>d+0&#ffffff0| +0&#e0e0e08|o|n|e| |t|w|o| +0&#ffffff0@37 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|b+0#0000000#5fd7ff255|e|l|o|w| +0#4040ff13#ffffff0| +0#0000000&@47 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| |t+0#0000000&|h|r|e@1| |f|o|u|r| @43 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3| +0#0000000&@2|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@37 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |f+0#0000000&|i|v|e| |s|i|x| @45 +|~+0#4040ff13&| @58 +|-+2#0000000&@1| |V|I|S|U|A|L| |L|I|N|E| |-@1| +0&&@14|1| @8|1|,|8|-|1@1|6| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_8.dump b/src/testdir/dumps/Test_prop_with_text_above_8.dump new file mode 100644 index 0000000..b807db5 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_8.dump @@ -0,0 +1,9 @@ +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|f+0#0000000#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@36 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|s+0#0000000#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@35 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| |i+0#0000000&|n|s|e|r|t|e|d| @45 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| >o+0#0000000&|n|e| |t|w|o| @46 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|b+0#0000000#5fd7ff255|e|l|o|w| +0&#ffffff0@48 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| |t+0#0000000&|h|r|e@1| |f|o|u|r| @43 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3| +0#0000000&@2|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| +0&#ffffff0@37 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|4| |f+0#0000000&|i|v|e| |s|i|x| @45 +@42|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_above_9.dump b/src/testdir/dumps/Test_prop_with_text_above_9.dump new file mode 100644 index 0000000..727f859 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_above_9.dump @@ -0,0 +1,9 @@ +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|f+0#0000000#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@36 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|s+0#0000000#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| +0&#ffffff0@35 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3| +0#0000000&@1|0+0&#ffff4012| |1| |2| |3| |4| |5| |6| |7| |8| |9| |1|0| |1@1| |1|2| |1|3| |1|4| |1|5| |1|6| |1|7| |1|8| |1|9| |2|… +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| |i+0#0000000&|n|s|e|r|t|e|d| @45 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| >o+0#0000000&|n|e| |t|w|o| @46 +| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|b+0#0000000#5fd7ff255|e|l|o|w| +0&#ffffff0@48 +|~+0#4040ff13&| @58 +|~| @58 +|:+0#0000000&|c|a|l@1| |A|d@1|L|o|n|g|P|r|o|p|A|b|o|v|e|(|)| @17|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_1.dump b/src/testdir/dumps/Test_prop_with_text_after_1.dump new file mode 100644 index 0000000..159e394 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_1.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@2|s|o|m|e| |t|e|x|t| |h|e|r|e| |a|n|d| |o|t|h|e|r| |t|e|x|t| |t|h|e|r|e| +0&#ffff4012|A|F|T|E|R| | +0&#ffffff0@7| +0#ffffff16#e000002|R|I|G|H|T| +| +0#0000000#5fd7ff255|B|E|L|O|W| | +0&#ffffff0@52 +| +0fd7ff255|A|L|S|O| |B|E|L|O|W| | +0&#ffffff0@47 +|L|a|s|t| |l|i|n|e>.| +0&#ffff4012|A|f|t|e|r| |L|a|s|t| | +0&#ffffff0@37 +|r|i|g|h|t| |h|e|r|e| @37|s+0#ffffff16#e000002|ö|m|e|和*&|平|t+&|é|x|t +|~+0#4040ff13#ffffff0| @58 +|~| @58 +| +0#0000000&@41|2|,|1|0| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_below_trunc_1.dump b/src/testdir/dumps/Test_prop_with_text_after_below_trunc_1.dump new file mode 100644 index 0000000..8481c9c --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_below_trunc_1.dump @@ -0,0 +1,8 @@ +|o+0&#ffffff0|n|a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d| |f|a|s| |d|f|t+0#e000e06&|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|… +| +0#0000000&@3|t+0&#ffd7ff255|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +0&#ffffff0@12 +|t|w>o| @56 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|"+0#0000000&|f|o@1|b|a|r|"| |[|N|e|w|]| @27|2|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_below_trunc_2.dump b/src/testdir/dumps/Test_prop_with_text_after_below_trunc_2.dump new file mode 100644 index 0000000..afa1a36 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_below_trunc_2.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| |o+0#0000000&|n|a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d| |f|a|s| |d|f|t+0#e000e06&|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|… +| +0#af5f00255&@3| +0#0000000&@3|t+0&#ffd7ff255|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +0&#ffffff0@8 +| +0#af5f00255&@1|2| |t+0#0000000&|w>o| @52 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|s|e|t| |n|u|m|b|e|r| @30|2|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_below_trunc_3.dump b/src/testdir/dumps/Test_prop_with_text_after_below_trunc_3.dump new file mode 100644 index 0000000..7b93c7f --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_below_trunc_3.dump @@ -0,0 +1,8 @@ +| +8#af5f00255#ffffff0@1|1| >o+8#0000000&|n|a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d| |f|a|s| |d|f|t+8#e000e06&|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|… +| +8#af5f00255&@3| +8#0000000&@3|t+8&#ffd7ff255|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +8&#ffffff0@8 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| @52 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|s|e|t| |c|u|r|s|o|r|l|i|n|e| @26|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_join_split_1.dump b/src/testdir/dumps/Test_prop_with_text_after_join_split_1.dump new file mode 100644 index 0000000..4aab0b1 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_join_split_1.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0@1| @57 +>2@1| @57 +| +0#ffffff16#e000002|B|e|l|o|w| |t|h|e| |l|i|n|e| | +0#0000000#ffffff0@43 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_join_split_2.dump b/src/testdir/dumps/Test_prop_with_text_after_join_split_2.dump new file mode 100644 index 0000000..d17aacf --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_join_split_2.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0@1> |2@1| @54 +| +0#ffffff16#e000002|B|e|l|o|w| |t|h|e| |l|i|n|e| | +0#0000000#ffffff0@43 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_join_split_3.dump b/src/testdir/dumps/Test_prop_with_text_after_join_split_3.dump new file mode 100644 index 0000000..51a397f --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_join_split_3.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0@1> |2@1| +0&#ffff4012|a|f|t|e|r| |t|h|e| |t|e|x|t| | +0&#ffffff0@27| +0&#ffff4012|r|i|g|h|t| |h|e|r|e +| +0#ffffff16#e000002|B|e|l|o|w| |t|h|e| |l|i|n|e| | +0#0000000#ffffff0@43 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +|:+0#0000000&|c|a|l@1| |A|d@1|M|o|r|e|(|)| @26|1|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_join_split_4.dump b/src/testdir/dumps/Test_prop_with_text_after_join_split_4.dump new file mode 100644 index 0000000..7ec94b1 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_join_split_4.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0@1| @57 +>2@1| +0&#ffff4012|a|f|t|e|r| |t|h|e| |t|e|x|t| | +0&#ffffff0@30| +0&#ffff4012|r|i|g|h|t| |h|e|r|e +| +0#ffffff16#e000002|B|e|l|o|w| |t|h|e| |l|i|n|e| | +0#0000000#ffffff0@43 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_join_split_5.dump b/src/testdir/dumps/Test_prop_with_text_after_join_split_5.dump new file mode 100644 index 0000000..991b64d --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_join_split_5.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0@1> |2@1| +0&#ffff4012|a|f|t|e|r| |t|h|e| |t|e|x|t| | +0&#ffffff0@27| +0&#ffff4012|r|i|g|h|t| |h|e|r|e +| +0#ffffff16#e000002|B|e|l|o|w| |t|h|e| |l|i|n|e| | +0#0000000#ffffff0@43 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_joined_1.dump b/src/testdir/dumps/Test_prop_with_text_after_joined_1.dump new file mode 100644 index 0000000..0a4e73d --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_joined_1.dump @@ -0,0 +1,6 @@ +|o+0&#ffffff0|n|e| |t|w|o| @52 +|t|h|r|e@1| |f|o|u|r| +0&#ffff4012|F|O|U|R| +0&#ffffff0@44 +|a| |b| |c| |d| |e> |f| +0&#ffff4012|F@2| +0&#ffffff0@44 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|3|,|1|0| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_nowrap_1.dump b/src/testdir/dumps/Test_prop_with_text_after_nowrap_1.dump new file mode 100644 index 0000000..610f14f --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_nowrap_1.dump @@ -0,0 +1,12 @@ +|o+0&#ffffff0|n|e| +0&#ffd7ff255|A|f|t|e|r| |t|h|e| |t|e|x|t| +0&#ffffff0@31|r+0&#ffd7ff255|i|g|h|t| |h|e|r|e +| +0#ffffff16#e000002|B|e|l|o|w| |t|h|e| |l|i|n|e| | +0#0000000#ffffff0@43 +|t|w|o| @56 +|a+0&#ffff4012|n|o|t|h|e|r| +0&#ffffff0@52 +|O+0#ffffff16#e000002|n|e| |M|o|r|e| |H|e|r|e| +0#0000000#ffffff0@46 +|t|h|r|e>e| @41|r+0&#ffff4012|i|g|h|t| |a|l|i|g|n|e|d +| +0&#ffffff0@41|a+0&#ffff4012|l|s|o| |r|i|g|h|t| |a|l|i|g|n|e|d +|f+0&#ffffff0|o|u|r| @55 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|3|,|5| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_nowrap_2.dump b/src/testdir/dumps/Test_prop_with_text_after_nowrap_2.dump new file mode 100644 index 0000000..1d5c534 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_nowrap_2.dump @@ -0,0 +1,12 @@ +| +0#0000e05#a8a8a8255@4|o+0#0000000#ffffff0|n|e| +0&#ffd7ff255|A|f|t|e|r| |t|h|e| |t|e|x|t| +0&#ffffff0@26|r+0&#ffd7ff255|i|g|h|t| |h|e|r|e +| +0#0000e05#a8a8a8255@4| +0#ffffff16#e000002|B|e|l|o|w| |t|h|e| |l|i|n|e| | +0#0000000#ffffff0@38 +| +0#0000e05#a8a8a8255@4|t+0#0000000#ffffff0|w|o| @51 +| +0#0000e05#a8a8a8255@4|a+0#0000000#ffff4012|n|o|t|h|e|r| +0&#ffffff0@47 +| +0#0000e05#a8a8a8255@4|O+0#ffffff16#e000002|n|e| |M|o|r|e| |H|e|r|e| +0#0000000#ffffff0@41 +| +0#0000e05#a8a8a8255@4|t+8#0000000#e0e0e08|h|r|e>e| @36|r+8&#ffff4012|i|g|h|t| |a|l|i|g|n|e|d +| +0#0000e05#a8a8a8255@4| +8#0000000#e0e0e08@36|a+8&#ffff4012|l|s|o| |r|i|g|h|t| |a|l|i|g|n|e|d +| +0#0000e05#a8a8a8255@4|f+0#0000000#ffffff0|o|u|r| @50 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|3|,|5| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_nowrap_3.dump b/src/testdir/dumps/Test_prop_with_text_after_nowrap_3.dump new file mode 100644 index 0000000..ca84912 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_nowrap_3.dump @@ -0,0 +1,12 @@ +| +0#0000e05#a8a8a8255@4|o+0#0000000#ffffff0|n|e| +0&#ffd7ff255|A|f|t|e|r| |t|h|e| |t|e|x|t| +0&#ffffff0@26|r+0&#ffd7ff255|i|g|h|t| |h|e|r|e +| +0#0000e05#a8a8a8255@4| +0#ffffff16#e000002|B|e|l|o|w| |t|h|e| |l|i|n|e| | +0#0000000#ffffff0@38 +| +0#0000e05#a8a8a8255@4|t+0#0000000#ffffff0|w|o| @51 +| +0#0000e05#a8a8a8255@4|a+0#0000000#ffff4012|n|o|t|h|e|r| +0&#ffffff0@47 +| +0#0000e05#a8a8a8255@4|O+0#ffffff16#e000002|n|e| |M|o|r|e| |H|e|r|e| +0#0000000#ffffff0@41 +| +0#0000e05#a8a8a8255@4|t+0#0000000#ffffff0|h|r|e@1| @36|r+0&#ffff4012|i|g|h|t| |a|l|i|g|n|e|d +| +0#0000e05#a8a8a8255@4| +0#0000000#ffffff0@36|a+0&#ffff4012|l|s|o| |r|i|g|h|t| |a|l|i|g|n|e|d +| +0#0000e05#a8a8a8255@4|f+8#0000000#e0e0e08|o|u>r| @50 +|~+0#4040ff13#ffffff0| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|4|,|4| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_trunc_1.dump b/src/testdir/dumps/Test_prop_with_text_after_trunc_1.dump new file mode 100644 index 0000000..c8e6369 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_trunc_1.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| +0&#ffff4012|O|N|E| |a|n|d| |T|W|O| |a|n|d| |T|H|R|E@1| |a|n|d|… +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D|… +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| @26 +| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D| |f|o|u|r| |A|N|D| |f|i|v|e| |l|e|t|s| |w|r|a|p| |a|f|t|e|r| |s|o|… +|c+0&#ffffff0|u|r|s|o|r| >h|e|r|e| @48 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|4|,|8| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_after_trunc_2.dump b/src/testdir/dumps/Test_prop_with_text_after_trunc_2.dump new file mode 100644 index 0000000..c6fd499 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_trunc_2.dump @@ -0,0 +1,9 @@ +>o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| +0&#ffff4012|O|N|…||+1&#ffffff0|o+0&&|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v +|o|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| +0&#ffff4012|o|n|…||+1&#ffffff0|e+0&&| |s|i|x| |s|e|v|e|n| +0&#ffff4012|o|n|e| |A|N|D| |t|… +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| @3||+1&&|o+0&&|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v +| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D| |f|o|u|r| |A|N|D| |…||+1&#ffffff0|e+0&&| |s|i|x| |s|e|v|e|n| @10 +|c|u|r|s|o|r| |h|e|r|e| @25||+1&&| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e|… +|~+0#4040ff13#ffffff0| @35||+1#0000000&|c+0&&|u|r|s|o|r| |h|e|r|e| @10 +|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @20 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |<+1&&|N|a|m|e|]| |[|+|]| |4|,|8| @4|B|o|t +|:+0&&|3|7|v|s|p| @53 diff --git a/src/testdir/dumps/Test_prop_with_text_after_trunc_3.dump b/src/testdir/dumps/Test_prop_with_text_after_trunc_3.dump new file mode 100644 index 0000000..5834170 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_trunc_3.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| +0&#ffff4012|O|N||+1&#ffffff0|o+0&&|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e +|E+0&#ffff4012| |a|n|d| |T|W|O| |a|n|d| |T|H|R|E@1| |a|n|d| |F|O|U|R| |a|n|d| |F|I|…||+1&#ffffff0| +0&&|s|i|x| |s|e|v|e|n| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o|… +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e>n| +0&#ffff4012|o|n||+1&#ffffff0|o+0&&|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e +|e+0&#ffff4012| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D| |f|o|u|r| |A|N|D| |f|i|…||+1&#ffffff0| +0&&|s|i|x| |s|e|v|e|n| @12 +|o|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| @2||+1&&| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1|… +| |o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D| |f|o|u|r| |A|N|D|…||+1&#ffffff0|c+0&&|u|r|s|o|r| |h|e|r|e| @11 +|c|u|r|s|o|r| |h|e|r|e| @24||+1&&|~+0#4040ff13&| @21 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @4|2|,|3@1| @10|A|l@1| |<+1&&| |N|a|m|e|]| |[|+|]| |4|,|8| @4|B|o|t +|:+0&&|3|6|w|i|n|c|m|d| ||| @48 diff --git a/src/testdir/dumps/Test_prop_with_text_after_trunc_4.dump b/src/testdir/dumps/Test_prop_with_text_after_trunc_4.dump new file mode 100644 index 0000000..165020a --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_trunc_4.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n||+1&&|o+0&&|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i +| +0&#ffff4012|O|N|E| |a|n|d| |T|W|O| |a|n|d| |T|H|R|E@1| |a|n|d| |F|O|U|R| |…||+1&#ffffff0|x+0&&| |s|e|v|e|n| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|… +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e>n||+1&&|o+0&&|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i +| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D| |f|o|u|r| |…||+1&#ffffff0|x+0&&| |s|e|v|e|n| @18 +|o|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n||+1&&| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|… +| |o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D| |f|o|u|r| |…||+1&#ffffff0|c+0&&|u|r|s|o|r| |h|e|r|e| @14 +|c|u|r|s|o|r| |h|e|r|e| @21||+1&&|~+0#4040ff13&| @24 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @3|2|,|3@1| @8|A|l@1| |<+1&&|o| |N|a|m|e|]| |[|+|]| |4|,|8| @6|B|o|t +|:+0&&|3@1|w|i|n|c|m|d| ||| @48 diff --git a/src/testdir/dumps/Test_prop_with_text_after_trunc_5.dump b/src/testdir/dumps/Test_prop_with_text_after_trunc_5.dump new file mode 100644 index 0000000..e134443 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_trunc_5.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r||+1&&|o+0&&|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| +0&#ffff4012|o|n|e| |A|N|… +| +0&#ffffff0|f|i|v|e| |s|i|x| |s|e|v|e|n| +0&#ffff4012|O|N||+1&#ffffff0|o+0&&|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| @7 +|E+0&#ffff4012| |a|n|d| |T|W|O| |a|n|d| |T|H|R|…||+1&#ffffff0| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D| |f|o|u|r| |A|N|D| |f|i|v|e|… +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r||+1&&|c+0&&|u|r|s|o|r| |h|e|r|e| @29 +@1|f|i|v|e| |s|i>x| |s|e|v|e|n| +0&#ffff4012|o|n||+1&#ffffff0|~+0#4040ff13&| @39 +|e+0#0000000#ffff4012| |A|N|D| |t|w|o| |A|N|D| |t|h|r|…||+1&#ffffff0|~+0#4040ff13&| @39 +|@@2| @14||+1#0000000&|~+0#4040ff13&| @39 +|<+3#0000000&|m|e|]| |[|+|]| |2|,|2|7| @1|T|o|p| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @9|4|,|8| @11|B|o|t +|:+0&&|1|8|w|i|n|c|m|d| ||| @48 diff --git a/src/testdir/dumps/Test_prop_with_text_after_wraps_1.dump b/src/testdir/dumps/Test_prop_with_text_after_wraps_1.dump new file mode 100644 index 0000000..7642f8f --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_after_wraps_1.dump @@ -0,0 +1,9 @@ +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| +0&#ffff4012|O|N|E| |a|n|d| |T|W|O| |a|n|d| |T|H|R|E@1| |a|n|d| +|F|O|U|R| |a|n|d| |F|I|V|E| +0&#ffffff0@46 +|o|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| @26 +@20| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D| |f|o|u|r| |A|N|D| |f|i|v|e +|o+0&#ffffff0|n|e| |t|w|o| |t|h|r|e@1| |f|o|u|r| |f|i|v|e| |s|i|x| |s|e|v|e|n| @26 +| +0&#ffff4012|o|n|e| |A|N|D| |t|w|o| |A|N|D| |t|h|r|e@1| |A|N|D| |f|o|u|r| |A|N|D| |f|i|v|e| |l|e|t|s| |w|r|a|p| |a|f|t|e|r| |s|o|m +|e| |m|o|r|e| |t|e|x|t| +0&#ffffff0@48 +|c|u|r|s|o|r| >h|e|r|e| @48 +@42|4|,|8| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_below_after_match_1.dump b/src/testdir/dumps/Test_prop_with_text_below_after_match_1.dump new file mode 100644 index 0000000..b4c09fa --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_below_after_match_1.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1>v+0#0000000#ffffff0|i|m|9|s|c|r|i|p|t+0&#ffff4012| +0&#ffffff0@47 +| +0#0000e05#a8a8a8255@1|T+0#ffffff16#ff404010|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| +0#0000000#ffffff0@38 +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |t|e|x|t| @48 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_below_cul_1.dump b/src/testdir/dumps/Test_prop_with_text_below_cul_1.dump new file mode 100644 index 0000000..0bfd304 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_below_cul_1.dump @@ -0,0 +1,6 @@ +>s+8&#ffffff0|o|m|e| |t|e|x|t| @50 +@4|T+8&#ffd7ff255|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +8&#ffffff0@12 +|l+0&&|a|s|t| |l|i|n|e| @50 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_below_nowrap_1.dump b/src/testdir/dumps/Test_prop_with_text_below_nowrap_1.dump new file mode 100644 index 0000000..e7f1837 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_below_nowrap_1.dump @@ -0,0 +1,8 @@ +|o+0&#ffffff0|n|a|s|d|f| |a|s|d|f| |a|s|d|f| |s|d|f| |d|f| |a|s|d|f| |a|s|d|f| |e| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d| +|t+0#e000e06&|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +0#0000000&@16 +|t|w>o| @56 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|"+0#0000000&|f|o@1|b|a|r|"| |[|N|e|w|]| @27|2|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_below_nowrap_2.dump b/src/testdir/dumps/Test_prop_with_text_below_nowrap_2.dump new file mode 100644 index 0000000..0bcaf66 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_below_nowrap_2.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0|a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d| |f|a|s| |d>f|t+0#e000e06&|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e +|t|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| |l|a|z|y| |d|o|g| +0#0000000&@16 +@60 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|"+0#0000000&|f|o@1|b|a|r|"| |[|N|e|w|]| @27|1|,|6@1| @9|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_cursormoved_1.dump b/src/testdir/dumps/Test_prop_with_text_cursormoved_1.dump new file mode 100644 index 0000000..6a3c9e4 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_cursormoved_1.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|h|i|s| >i|s| |l|i|n|e| |o|n|e|x+0#ffffff16#ff404010@43 +@60 +@16| +0#0000000#ffffff0@43 +|t|h|i|s| |i|s| |l|i|n|e| |t|w|o| @43 +|t|h|r|e@1| @54 +|f|o|u|r| @55 +|f|i|v|e| @55 +@42|1|,|6| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_cursormoved_2.dump b/src/testdir/dumps/Test_prop_with_text_cursormoved_2.dump new file mode 100644 index 0000000..c1b5f0c --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_cursormoved_2.dump @@ -0,0 +1,8 @@ +|t+0&#ffffff0|h|i|s| |i|s| |l|i|n|e| |o|n|e| @43 +|t|h|i|s| >i|s| |l|i|n|e| |t|w|o| @43 +|t|h|r|e@1| @54 +|f|o|u|r| @55 +|f|i|v|e| @55 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|2|,|6| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_empty_line_1.dump b/src/testdir/dumps/Test_prop_with_text_empty_line_1.dump new file mode 100644 index 0000000..426d64e --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_empty_line_1.dump @@ -0,0 +1,8 @@ +>X+0&#ffff4012@59 +|a+0&#ffffff0@2| @56 +|X+0&#ffff4012@59 +@1| +0&#ffffff0@58 +|b@5| @53 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_empty_line_2.dump b/src/testdir/dumps/Test_prop_with_text_empty_line_2.dump new file mode 100644 index 0000000..426d64e --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_empty_line_2.dump @@ -0,0 +1,8 @@ +>X+0&#ffff4012@59 +|a+0&#ffffff0@2| @56 +|X+0&#ffff4012@59 +@1| +0&#ffffff0@58 +|b@5| @53 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|1|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_empty_line_3.dump b/src/testdir/dumps/Test_prop_with_text_empty_line_3.dump new file mode 100644 index 0000000..3e3e9ea --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_empty_line_3.dump @@ -0,0 +1,8 @@ +|X+0&#ffff4012@59 +|a+0&#ffffff0@1>a| @56 +|X+0&#ffff4012@59 +@1| +0&#ffffff0@58 +|b@5| @53 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|2|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_empty_line_4.dump b/src/testdir/dumps/Test_prop_with_text_empty_line_4.dump new file mode 100644 index 0000000..8689ac4 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_empty_line_4.dump @@ -0,0 +1,8 @@ +|X+0&#ffff4012@59 +|a+0&#ffffff0@2| @56 +>X+0&#ffff4012@59 +@1| +0&#ffffff0@58 +|b@5| @53 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|3|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_empty_line_5.dump b/src/testdir/dumps/Test_prop_with_text_empty_line_5.dump new file mode 100644 index 0000000..9ea16dc --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_empty_line_5.dump @@ -0,0 +1,8 @@ +|X+0&#ffff4012@59 +|a+0&#ffffff0@2| @56 +|X+0&#ffff4012@59 +@1| +0&#ffffff0@58 +|b@4>b| @53 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|4|,|6| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_override_1.dump b/src/testdir/dumps/Test_prop_with_text_override_1.dump new file mode 100644 index 0000000..50b8511 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_override_1.dump @@ -0,0 +1,6 @@ +>s+8&#e0e0e08|o|m|e| | +8#4040ff13#40ffff15|i|n|s|e|r|t|e|d| |t+8#0000000#e0e0e08|e|x|t| |h|e|r|e| @35 +|~+0#4040ff13#ffffff0| @58 +|~| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_text_override_2.dump b/src/testdir/dumps/Test_prop_with_text_override_2.dump new file mode 100644 index 0000000..334929e --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_text_override_2.dump @@ -0,0 +1,6 @@ +|s+0&#ffffff0|o|m+0&#e0e0e08|e| | +0#4040ff13#40ffff15|i|n|s|e|r|t|e|d| |t+0#0000000#e0e0e08|e|x|t| |h|e>r+0&#ffffff0|e| @35 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@19|1@1| @7|1|,|1|3|-|2|3| @6|A|l@1| diff --git a/src/testdir/dumps/Test_prop_with_wrap_1.dump b/src/testdir/dumps/Test_prop_with_wrap_1.dump new file mode 100644 index 0000000..6b6d664 --- /dev/null +++ b/src/testdir/dumps/Test_prop_with_wrap_1.dump @@ -0,0 +1,6 @@ +|a+0&#ffffff0|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|s+0#e000e06&|o|m|e| |v|i|r +|t|u|a|l| |t|e|x|t|d+0#0000000&|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f> @8 +|~+0#4040ff13&| @48 +|~| @48 +|~| @48 +| +0#0000000&@31|1|,|7|5|-|9|2| @6|A|l@1| diff --git a/src/testdir/dumps/Test_props_after_1.dump b/src/testdir/dumps/Test_props_after_1.dump new file mode 100644 index 0000000..dd607f6 --- /dev/null +++ b/src/testdir/dumps/Test_props_after_1.dump @@ -0,0 +1,8 @@ +|o+0&#ffffff0|n|e| @2|0+0#e000e06&| |1| |2| |3| |4| |5| |6| |7| |8| |9| |1|0| |1@1| |1|2| |1|3| |1|4| |1|5| |1|6| |1|7| |1|8| |1|9| |2|0| |… +| +0#0000000&@4|0+0#e000e06&|-|1|-|2|-|3|-|4|-|5|-|6|-|7|-|8|-|9|-|1|0|-|1@1|-|1|2|-|1|3|-|1|4|-|1|5|-|1|6|-|1|7|-|1|8|-|1|9|-|2|0|-|2|… +| +0#0000000&|0+0#e000e06&|.|1|.|2|.|3|.|4|.|5|.|6|.|7|.|8|.|9|.|1|0|.|1@1|.|1|2|.|1|3|.|1|4|.|1|5|.|1|6|.|1|7|.|1|8|.|1|9|.|2|0|.|2|1|.|2@1|… +|t+0#0000000&|w>o| @56 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_props_after_2.dump b/src/testdir/dumps/Test_props_after_2.dump new file mode 100644 index 0000000..146f045 --- /dev/null +++ b/src/testdir/dumps/Test_props_after_2.dump @@ -0,0 +1,8 @@ +|o+0&#ffffff0|n|e|$+0#4040ff13&| +0#0000000&@2|0+0#e000e06&| |1| |2| |3| |4| |5| |6| |7| |8| |9| |1|0| |1@1| |1|2| |1|3| |1|4| |1|5| |1|6| |1|7| |1|8| |1|9| |2|0|… +| +0#0000000&@4|0+0#e000e06&|-|1|-|2|-|3|-|4|-|5|-|6|-|7|-|8|-|9|-|1|0|-|1@1|-|1|2|-|1|3|-|1|4|-|1|5|-|1|6|-|1|7|-|1|8|-|1|9|-|2|0|-|2|… +| +0#0000000&|0+0#e000e06&|.|1|.|2|.|3|.|4|.|5|.|6|.|7|.|8|.|9|.|1|0|.|1@1|.|1|2|.|1|3|.|1|4|.|1|5|.|1|6|.|1|7|.|1|8|.|1|9|.|2|0|.|2|1|.|2@1|… +|t+0#0000000&|w>o|$+0#4040ff13&| +0#0000000&@55 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|:+0#0000000&|s|e|t| |l|i|s|t| @32|2|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_pum_preview_1.dump b/src/testdir/dumps/Test_pum_preview_1.dump new file mode 100644 index 0000000..e8f4225 --- /dev/null +++ b/src/testdir/dumps/Test_pum_preview_1.dump @@ -0,0 +1,12 @@ +|o+0&#ffffff0|n|e| |o|t|h|e|r> @65 +|╔+0#0000001#ffd7ff255| |X| +0&#e0e0e08|o|t|h|e|r| @9|═+0&#ffd7ff255@21|X| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|c|e| @32|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|l|y| @32|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|f@1| @33|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1| +0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o| |h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|║| +0#4040ff13#ffffff0@32 +|╚+0#0000001#ffd7ff255|═@39|⇲| +0#4040ff13#ffffff0@32 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |5| +0#0000000&@33 diff --git a/src/testdir/dumps/Test_pum_preview_2.dump b/src/testdir/dumps/Test_pum_preview_2.dump new file mode 100644 index 0000000..a9fcfc9 --- /dev/null +++ b/src/testdir/dumps/Test_pum_preview_2.dump @@ -0,0 +1,12 @@ +|o+0&#ffffff0|n|e| |o|n|c|e> @66 +|╔+0#0000001#ffd7ff255| |X| |o|t|h|e|r| @9|═@21|X| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001#e0e0e08|o|n|c|e| @10| +0&#ffd7ff255@21|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|l|y| @32|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|f@1| @33|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1| +0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o| |h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|║| +0#4040ff13#ffffff0@32 +|╚+0#0000001#ffd7ff255|═@39|⇲| +0#4040ff13#ffffff0@32 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |2| |o|f| |5| +0#0000000&@33 diff --git a/src/testdir/dumps/Test_pum_preview_3.dump b/src/testdir/dumps/Test_pum_preview_3.dump new file mode 100644 index 0000000..6b14ce3 --- /dev/null +++ b/src/testdir/dumps/Test_pum_preview_3.dump @@ -0,0 +1,12 @@ +|o+0&#ffffff0|n|e| |o|n|l|y> @66 +|╔+0#0000001#ffd7ff255| |X| |o|t|h|e|r| @9|═@21|X| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|c|e| @32|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001#e0e0e08|o|n|l|y| @10| +0&#ffd7ff255@21|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|f@1| @33|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1| +0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o| |h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|║| +0#4040ff13#ffffff0@32 +|╚+0#0000001#ffd7ff255|═@39|⇲| +0#4040ff13#ffffff0@32 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |3| |o|f| |5| +0#0000000&@33 diff --git a/src/testdir/dumps/Test_pum_preview_4.dump b/src/testdir/dumps/Test_pum_preview_4.dump new file mode 100644 index 0000000..40254a8 --- /dev/null +++ b/src/testdir/dumps/Test_pum_preview_4.dump @@ -0,0 +1,12 @@ +|o+0&#ffffff0|n|e| |o|f@1> @67 +|╔+0#0000001#ffd7ff255| |X| |o|t|h|e|r| @9|═@21|X| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|c|e| @32|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|l|y| @32|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001#e0e0e08|o|f@1| @11| +0&#ffd7ff255@21|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1| +0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o| |h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|║| +0#0000000#ffffff0@32 +|║+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|║| +0#4040ff13#ffffff0@32 +|╚+0#0000001#ffd7ff255|═@39|⇲| +0#4040ff13#ffffff0@32 +|~| @73 +|~| @73 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |4| |o|f| |5| +0#0000000&@33 diff --git a/src/testdir/dumps/Test_pum_rightleft_01.dump b/src/testdir/dumps/Test_pum_rightleft_01.dump new file mode 100644 index 0000000..8e8f6b4 --- /dev/null +++ b/src/testdir/dumps/Test_pum_rightleft_01.dump @@ -0,0 +1,8 @@ +|w+0&#ffffff0|v|u|t|s|r|q|p|o|n|m|l|k|j|i|h|g|f|e|d|c|b|a|z|y|x|w|v|u|t|s|r|q|p|o|n|m|l|k|j|i|h|g|f|e|d|c|b|a|z|y|x|w|v|u|t|s|r|q|p|o|n|m|l|k|j|i|h|g|f|e|d|c|b|a +| @45|z|y|x|w|v|u|t|s|r|q|p|o|n|m|l|k|j|i|h|g|f|e|d|c|b|a|z|y|x +| @71|m|i|v +| @67|y|r|o|t|c|i|v +| @66> |y|r|o|t|c|i|v +|w+0#0000001#ffd7ff255|v|u|t|s|r|q|p|o|n|m|l|k|j|i|h|g|f|e|d|c|b|a|z|y|x|w|v|u|t|s|r|q|p|o|n|m|l|k|j|i|h|g|f|e|d|c|b|a|z|y|x|w|v|u|t|s|r|q|p|o|n|m|l|k|j|i|h|g|f|e|d|c|b|a +| @71|m|i|v +| +0&#e0e0e08@67|y|r|o|t|c|i|v diff --git a/src/testdir/dumps/Test_pum_rightleft_02.dump b/src/testdir/dumps/Test_pum_rightleft_02.dump new file mode 100644 index 0000000..0c658c0 --- /dev/null +++ b/src/testdir/dumps/Test_pum_rightleft_02.dump @@ -0,0 +1,7 @@ +| +0&#ffffff0@63|o|w|t| @4|e|n|o +| @61|e@1|r|h|t| @4|e|n|o +| @70|r|u|o|f +| @60> |e@1|r|h|t| @4|e|n|o +| +0#4040ff13&@59| +0#0000001#ffd7ff255@6|o|w|t| @1|e|n|o +| +0#4040ff13#ffffff0@59| +0#0000001#e0e0e08@4|e@1|r|h|t| @1|e|n|o +| +0#4040ff13#ffffff0@73|~ diff --git a/src/testdir/dumps/Test_pum_scrollbar_01.dump b/src/testdir/dumps/Test_pum_scrollbar_01.dump new file mode 100644 index 0000000..af134d0 --- /dev/null +++ b/src/testdir/dumps/Test_pum_scrollbar_01.dump @@ -0,0 +1,7 @@ +|o+0&#ffffff0|n|e| @71 +|t|w|o| @71 +|t|h|r|e@1| @69 +|o|n|e> @71 +|o+0#0000001#e0e0e08|n|e| @11| +0#0000000#0000001| +0#4040ff13#ffffff0@58 +|t+0#0000001#ffd7ff255|w|o| @11| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@58 +|~| @73 diff --git a/src/testdir/dumps/Test_pum_scrollbar_02.dump b/src/testdir/dumps/Test_pum_scrollbar_02.dump new file mode 100644 index 0000000..1a462bc --- /dev/null +++ b/src/testdir/dumps/Test_pum_scrollbar_02.dump @@ -0,0 +1,7 @@ +| +0&#ffffff0@71|e|n|o +| @71|o|w|t +| @69|e@1|r|h|t +| @70> |e|n|o +| +0#4040ff13&@58| +0#0000000#0000001| +0#0000001#e0e0e08@11|e|n|o +| +0#4040ff13#ffffff0@58| +0#0000000#a8a8a8255| +0#0000001#ffd7ff255@11|o|w|t +| +0#4040ff13#ffffff0@73|~ diff --git a/src/testdir/dumps/Test_pum_stopped_by_timer.dump b/src/testdir/dumps/Test_pum_stopped_by_timer.dump new file mode 100644 index 0000000..77ad5ce --- /dev/null +++ b/src/testdir/dumps/Test_pum_stopped_by_timer.dump @@ -0,0 +1,12 @@ +|h+0&#ffffff0|e|l@1|o| @69 +|h|u|l@1|o| @69 +|h|e@2>e| @69 +|h|e|l@1|o| @69 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|3|,|5| @10|A|l@1| diff --git a/src/testdir/dumps/Test_pum_with_folds_two_tabs.dump b/src/testdir/dumps/Test_pum_with_folds_two_tabs.dump new file mode 100644 index 0000000..2414cdc --- /dev/null +++ b/src/testdir/dumps/Test_pum_with_folds_two_tabs.dump @@ -0,0 +1,10 @@ +| +8#0000001#e0e0e08|+| |[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|+| |[|N|o| |N|a|m|e|]| | +1&&@47|X+8#0000001#e0e0e08 +|"+0#0000000#ffffff0| |x| |{@2|1| @66 +|"| |a|0> |s|o|m|e| |t|e|x|t| @60 +|"| +0#0000001#e0e0e08|a|0| @12| +0#0000000#0000001| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|1| @12| +0#0000000#0000001| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|2| @12| +0#0000000#0000001| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|3| @12| +0#0000000#a8a8a8255| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|4| @12| +0#0000000#a8a8a8255| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|5| @12| +0#0000000#a8a8a8255| +0&#ffffff0@56 +|-+2&&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |1|0| +0#0000000&@32 diff --git a/src/testdir/dumps/Test_pum_with_preview_win.dump b/src/testdir/dumps/Test_pum_with_preview_win.dump new file mode 100644 index 0000000..ad0df78 --- /dev/null +++ b/src/testdir/dumps/Test_pum_with_preview_win.dump @@ -0,0 +1,12 @@ +|1+0&#ffffff0|i|n|f|o| @69 +|~+0#4040ff13&| @73 +|~| @73 +|[+1#0000000&|S|c|r|a|t|c|h|]| |[|P|r|e|v|i|e|w|]| @37|1|,|1| @11|A|l@1 +|o+0&&|n|e> @71 +|o+0#0000001#e0e0e08|n|e| @11| +0#4040ff13#ffffff0@59 +|t+0#0000001#ffd7ff255|w|o| @11| +0#4040ff13#ffffff0@59 +|t+0#0000001#ffd7ff255|h|r|e@1| @9| +0#4040ff13#ffffff0@59 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1 +|-+2&&@1| |O|m|n|i| |c|o|m|p|l|e|t|i|o|n| |(|^|O|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |3| +0#0000000&@34 diff --git a/src/testdir/dumps/Test_quickfix_cwindow_1.dump b/src/testdir/dumps/Test_quickfix_cwindow_1.dump new file mode 100644 index 0000000..c2b4872 --- /dev/null +++ b/src/testdir/dumps/Test_quickfix_cwindow_1.dump @@ -0,0 +1,12 @@ +|s+0&#ffffff0|o|m|e| @70 +|t|e|x|t| @70 +|w|i|t|h| @70 +|m|a|t|c|h|e|s| @67 +|~+0#4040ff13&| @73 +|X+1#0000000&|C|w|i|n|d|o|w| @48|1|,|4| @11|A|l@1 +>X+0#0000e05#ffff4012|C|w|i|n|d|o|w||+0#0000000&|1+0#af5f00255&| |c|o|l| |4|-|5||+0#0000000&| |s|o|m|e| @50 +|X+0#0000e05#ffffff0|C|w|i|n|d|o|w||+0#0000000&|2+0#af5f00255&| |c|o|l| |2|-|3||+0#0000000&| |t|e|x|t| @50 +|X+0#0000e05&|C|w|i|n|d|o|w||+0#0000000&|4+0#af5f00255&| |c|o|l| |6|-|7||+0#0000000&| |m|a|t|c|h|e|s| @47 +|~+0#4040ff13&| @73 +|[+3#0000000&|Q|u|i|c|k|f|i|x| |L|i|s|t|]| |:|v|i|m|g|r|e|p| |e| |X|C|w|i|n|d|o|w| @20|1|,|1| @12|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_quickfix_cwindow_2.dump b/src/testdir/dumps/Test_quickfix_cwindow_2.dump new file mode 100644 index 0000000..0e7fa3c --- /dev/null +++ b/src/testdir/dumps/Test_quickfix_cwindow_2.dump @@ -0,0 +1,12 @@ +|s+0&#ffffff0|o|m|e| @70 +|t>e|x|t| @70 +|w|i|t|h| @70 +|m|a|t|c|h|e|s| @67 +|~+0#4040ff13&| @73 +|X+3#0000000&|C|w|i|n|d|o|w| @48|2|,|2| @11|A|l@1 +|X+0#0000e05&|C|w|i|n|d|o|w||+0#0000000&|1+0#af5f00255&| |c|o|l| |4|-|5||+0#0000000&| |s|o|m|e| @50 +|X+0#0000e05#ffff4012|C|w|i|n|d|o|w||+0#0000000&|2+0#af5f00255&| |c|o|l| |2|-|3||+0#0000000&| |t|e|x|t| @50 +|X+0#0000e05#ffffff0|C|w|i|n|d|o|w||+0#0000000&|4+0#af5f00255&| |c|o|l| |6|-|7||+0#0000000&| |m|a|t|c|h|e|s| @47 +|~+0#4040ff13&| @73 +|[+1#0000000&|Q|u|i|c|k|f|i|x| |L|i|s|t|]| |:|v|i|m|g|r|e|p| |e| |X|C|w|i|n|d|o|w| @20|2|,|1| @12|A|l@1 +|:+0&&|c|n|e|x|t| @68 diff --git a/src/testdir/dumps/Test_quickfix_cwindow_3.dump b/src/testdir/dumps/Test_quickfix_cwindow_3.dump new file mode 100644 index 0000000..d4a2e16 --- /dev/null +++ b/src/testdir/dumps/Test_quickfix_cwindow_3.dump @@ -0,0 +1,12 @@ +|s+0&#ffffff0|o|m|e| @70 +|t|e|x|t| @70 +|w|i|t|h| @70 +|m|a|t|c|h|e|s| @67 +|~+0#4040ff13&| @73 +|X+1#0000000&|C|w|i|n|d|o|w| @48|2|,|2| @11|A|l@1 +|X+0#0000e05&|C|w|i|n|d|o|w||+0#0000000&|1+0#af5f00255&| |c|o|l| |4|-|5||+0#0000000&| |s|o|m|e| @50 +>X+8#0000e05#ffff4012|C|w|i|n|d|o|w||+8#0000000&|2+8#af5f00255&| |c|o|l| |2|-|3||+8#0000000&| |t|e|x|t| @50 +|X+0#0000e05#ffffff0|C|w|i|n|d|o|w||+0#0000000&|4+0#af5f00255&| |c|o|l| |6|-|7||+0#0000000&| |m|a|t|c|h|e|s| @47 +|~+0#4040ff13&| @73 +|[+3#0000000&|Q|u|i|c|k|f|i|x| |L|i|s|t|]| |:|v|i|m|g|r|e|p| |e| |X|C|w|i|n|d|o|w| @20|2|,|1| @12|A|l@1 +|:+0&&| @73 diff --git a/src/testdir/dumps/Test_quickfix_cwindow_4.dump b/src/testdir/dumps/Test_quickfix_cwindow_4.dump new file mode 100644 index 0000000..bb92ffc --- /dev/null +++ b/src/testdir/dumps/Test_quickfix_cwindow_4.dump @@ -0,0 +1,12 @@ +|s+0&#ffffff0|o|m|e| @70 +|t|e|x|t| @70 +|w|i|t|h| @70 +|m|a|t|c|h|e|s| @67 +|~+0#4040ff13&| @73 +|X+1#0000000&|C|w|i|n|d|o|w| @48|2|,|2| @11|A|l@1 +|X+0#0000e05&|C|w|i|n|d|o|w||+0#0000000&|1+0#af5f00255&| |c|o|l| |4|-|5||+0#0000000&| |s|o|m|e| @50 +|X+0#0000e05#ffff4012|C|w|i|n|d|o|w||+0#0000000&|2+0#af5f00255&| |c|o|l| |2|-|3||+0#0000000&| |t|e|x|t| @50 +>X+8#0000e05#ffffff0|C|w|i|n|d|o|w||+8#0000000&|4+8#af5f00255&| |c|o|l| |6|-|7||+8#0000000&| |m|a|t|c|h|e|s| @47 +|~+0#4040ff13&| @73 +|[+3#0000000&|Q|u|i|c|k|f|i|x| |L|i|s|t|]| |:|v|i|m|g|r|e|p| |e| |X|C|w|i|n|d|o|w| @20|3|,|1| @12|A|l@1 +|:+0&&| @73 diff --git a/src/testdir/dumps/Test_quickfix_window_fails.dump b/src/testdir/dumps/Test_quickfix_window_fails.dump new file mode 100644 index 0000000..769e30a --- /dev/null +++ b/src/testdir/dumps/Test_quickfix_window_fails.dump @@ -0,0 +1,13 @@ +|a+0&#ffffff0|n|y|t|h|i|n|g| @66 +> @74 +|t|r|y| @71 +|X+3&&|q|u|i|c|k|f|i|x|F|a|i|l|s| |[|+|]| @38|2|,|0|-|1| @9|T|o|p +| +0&&@74 +|t|r|y| @71 +@2|a|n|y|t|h|i|n|g| @64 +|X+1&&|q|u|i|c|k|f|i|x|F|a|i|l|s| |[|+|]| @38|2|,|0|-|1| @9|5|0|% +| +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_quit_long_message.dump b/src/testdir/dumps/Test_quit_long_message.dump new file mode 100644 index 0000000..270a233 --- /dev/null +++ b/src/testdir/dumps/Test_quit_long_message.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_redraw_in_autocmd_1.dump b/src/testdir/dumps/Test_redraw_in_autocmd_1.dump new file mode 100644 index 0000000..8939b70 --- /dev/null +++ b/src/testdir/dumps/Test_redraw_in_autocmd_1.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|f|o|r| |i| |i|n| |r|a|n|g|e|(|3|)| @56 +|:| @1> @71 diff --git a/src/testdir/dumps/Test_redraw_in_autocmd_2.dump b/src/testdir/dumps/Test_redraw_in_autocmd_2.dump new file mode 100644 index 0000000..17b7e04 --- /dev/null +++ b/src/testdir/dumps/Test_redraw_in_autocmd_2.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&| @1|l|e|t| |i| |=> @64 +@75 diff --git a/src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump b/src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump new file mode 100644 index 0000000..d6b3c0d --- /dev/null +++ b/src/testdir/dumps/Test_redrawstatus_in_autocmd_1.dump @@ -0,0 +1,8 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +| +3#0000000&@45|:|e|c|h|o| |"|o|n|e|\|n|t|w|o|\|n|t|h|r|e@1|\|n|f|o|u|r|" +|o+0&&|n|e| @71 +|t|w|o| @71 +|t|h|r|e@1| @69 +|f|o|u|r| @70 +|:|f|o@1|b|a|r> @67 diff --git a/src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump b/src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump new file mode 100644 index 0000000..0c28c20 --- /dev/null +++ b/src/testdir/dumps/Test_redrawstatus_in_autocmd_2.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +3#0000000&@55|:|f|o|r| |i|n| |i|n| |r|a|n|g|e|(|3|) +|:+0&&|f|o|r| |i|n| |i|n| |r|a|n|g|e|(|3|)> @55 diff --git a/src/testdir/dumps/Test_redrawstatus_in_autocmd_3.dump b/src/testdir/dumps/Test_redrawstatus_in_autocmd_3.dump new file mode 100644 index 0000000..9b64605 --- /dev/null +++ b/src/testdir/dumps/Test_redrawstatus_in_autocmd_3.dump @@ -0,0 +1,8 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +3#0000000&@55|:|f|o|r| |i|n| |i|n| |r|a|n|g|e|(|3|) +|:+0&&|f|o|r| |i|n| |i|n| |r|a|n|g|e|(|3|)| @55 +|:| @1|:|e|n|d|f|o|r> @64 diff --git a/src/testdir/dumps/Test_redrawstatus_in_autocmd_4.dump b/src/testdir/dumps/Test_redrawstatus_in_autocmd_4.dump new file mode 100644 index 0000000..8ed408c --- /dev/null +++ b/src/testdir/dumps/Test_redrawstatus_in_autocmd_4.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +3#0000000&@55|:|f|o|r| |i|n| |i|n| |r|a|n|g|e|(|3|) +|:+0&&|f|o|r| |i|n| |i|n| |r|a|n|g|e|(|3|)> @55 +@75 diff --git a/src/testdir/dumps/Test_redrawstatus_in_autocmd_5.dump b/src/testdir/dumps/Test_redrawstatus_in_autocmd_5.dump new file mode 100644 index 0000000..d3e28a8 --- /dev/null +++ b/src/testdir/dumps/Test_redrawstatus_in_autocmd_5.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +3#0000000&@66|:@1|e|n|d|f|o|r +|:+0&&|f|o|r| |i|n| |i|n| |r|a|n|g|e|(|3|)| @55 +|:| @1|:|e|n|d|f|o|r> @64 diff --git a/src/testdir/dumps/Test_relativenumber_callback_1.dump b/src/testdir/dumps/Test_relativenumber_callback_1.dump new file mode 100644 index 0000000..f25612d --- /dev/null +++ b/src/testdir/dumps/Test_relativenumber_callback_1.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|0| >a+0#0000000&@4| @65 +| +0#af5f00255&@1|1| |b+0#0000000&@4| @65 +| +0#af5f00255&@1|2| |c+0#0000000&@4| @65 +| +0#af5f00255&@1|3| |d+0#0000000&@4| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|4|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_relnr_colors_1.dump b/src/testdir/dumps/Test_relnr_colors_1.dump new file mode 100644 index 0000000..ad0ddd9 --- /dev/null +++ b/src/testdir/dumps/Test_relnr_colors_1.dump @@ -0,0 +1,10 @@ +| +0#ff404010#ffffff0@1|4| |1+0#0000000&|0|6| @42 +| +0#ff404010&@1|3| |1+0#0000000&|0|7| @42 +| +0#ff404010&@1|2| |1+0#0000000&|0|8| @42 +| +0#ff404010&@1|1| |1+0#0000000&|0|9| @42 +|1+0#ff404010&@2| >1+0#0000000&@1|0| @42 +| +0#ff404010&@1|1| |1+0#0000000&@2| @42 +| +0#ff404010&@1|2| |1+0#0000000&@1|2| @42 +| +0#ff404010&@1|3| |1+0#0000000&@1|3| @42 +| +0#ff404010&@1|4| |1+0#0000000&@1|4| @42 +@32|1@2|,|1| @8|5@1|%| diff --git a/src/testdir/dumps/Test_relnr_colors_2.dump b/src/testdir/dumps/Test_relnr_colors_2.dump new file mode 100644 index 0000000..e9de7fa --- /dev/null +++ b/src/testdir/dumps/Test_relnr_colors_2.dump @@ -0,0 +1,10 @@ +| +0#4040ff13#ffffff0@1|4| |1+0#0000000&|0|6| @42 +| +0#4040ff13&@1|3| |1+0#0000000&|0|7| @42 +| +0#4040ff13&@1|2| |1+0#0000000&|0|8| @42 +| +0#4040ff13&@1|1| |1+0#0000000&|0|9| @42 +|1+0#ff404010&@2| >1+0#0000000&@1|0| @42 +| +0#ff404010&@1|1| |1+0#0000000&@2| @42 +| +0#ff404010&@1|2| |1+0#0000000&@1|2| @42 +| +0#ff404010&@1|3| |1+0#0000000&@1|3| @42 +| +0#ff404010&@1|4| |1+0#0000000&@1|4| @42 +|:| @30|1@2|,|1| @8|5@1|%| diff --git a/src/testdir/dumps/Test_relnr_colors_3.dump b/src/testdir/dumps/Test_relnr_colors_3.dump new file mode 100644 index 0000000..65f637a --- /dev/null +++ b/src/testdir/dumps/Test_relnr_colors_3.dump @@ -0,0 +1,10 @@ +| +0#4040ff13#ffffff0@1|4| |1+0#0000000&|0|6| @42 +| +0#4040ff13&@1|3| |1+0#0000000&|0|7| @42 +| +0#4040ff13&@1|2| |1+0#0000000&|0|8| @42 +| +0#4040ff13&@1|1| |1+0#0000000&|0|9| @42 +|1+0#ff404010&@2| >1+0#0000000&@1|0| @42 +| +0#40ff4011&@1|1| |1+0#0000000&@2| @42 +| +0#40ff4011&@1|2| |1+0#0000000&@1|2| @42 +| +0#40ff4011&@1|3| |1+0#0000000&@1|3| @42 +| +0#40ff4011&@1|4| |1+0#0000000&@1|4| @42 +|:| @30|1@2|,|1| @8|5@1|%| diff --git a/src/testdir/dumps/Test_relnr_colors_4.dump b/src/testdir/dumps/Test_relnr_colors_4.dump new file mode 100644 index 0000000..8202819 --- /dev/null +++ b/src/testdir/dumps/Test_relnr_colors_4.dump @@ -0,0 +1,10 @@ +| +0#ff404010#ffffff0@1|4| |1+0#0000000&|0|6| @42 +| +0#ff404010&@1|3| |1+0#0000000&|0|7| @42 +| +0#ff404010&@1|2| |1+0#0000000&|0|8| @42 +| +0#ff404010&@1|1| |1+0#0000000&|0|9| @42 +|1+0#ff404010&@2| >1+0#0000000&@1|0| @42 +| +0#40ff4011&@1|1| |1+0#0000000&@2| @42 +| +0#40ff4011&@1|2| |1+0#0000000&@1|2| @42 +| +0#40ff4011&@1|3| |1+0#0000000&@1|3| @42 +| +0#40ff4011&@1|4| |1+0#0000000&@1|4| @42 +|:|h|i| |c|l|e|a|r| |L|i|n|e|N|r|A|b|o|v|e| @10|1@2|,|1| @8|5@1|%| diff --git a/src/testdir/dumps/Test_scroll_no_region_1.dump b/src/testdir/dumps/Test_scroll_no_region_1.dump new file mode 100644 index 0000000..c0c21b5 --- /dev/null +++ b/src/testdir/dumps/Test_scroll_no_region_1.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +| +0&&@74 diff --git a/src/testdir/dumps/Test_scroll_no_region_2.dump b/src/testdir/dumps/Test_scroll_no_region_2.dump new file mode 100644 index 0000000..b8f7c03 --- /dev/null +++ b/src/testdir/dumps/Test_scroll_no_region_2.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0| @73 +|2| @73 +>4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1| @11|T|o|p +| +0&&@74 diff --git a/src/testdir/dumps/Test_scroll_no_region_3.dump b/src/testdir/dumps/Test_scroll_no_region_3.dump new file mode 100644 index 0000000..7ec5a3c --- /dev/null +++ b/src/testdir/dumps/Test_scroll_no_region_3.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0| @73 +|2| @73 +|4| @73 +|5| @73 +>3| @73 +|6| @73 +|7| @73 +|8| @73 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|5|,|1| @11|T|o|p +| +0&&@74 diff --git a/src/testdir/dumps/Test_scroll_no_region_4.dump b/src/testdir/dumps/Test_scroll_no_region_4.dump new file mode 100644 index 0000000..835a991 --- /dev/null +++ b/src/testdir/dumps/Test_scroll_no_region_4.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0| @73 +|2| @73 +>3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|:|s|e|t| |l|a|s|t|s|t|a|t|u|s|=|0| @39|3|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_scroll_no_region_5.dump b/src/testdir/dumps/Test_scroll_no_region_5.dump new file mode 100644 index 0000000..98152c7 --- /dev/null +++ b/src/testdir/dumps/Test_scroll_no_region_5.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0| @73 +|2| @73 +>4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|1|0| @72 +@57|3|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_scroll_no_region_6.dump b/src/testdir/dumps/Test_scroll_no_region_6.dump new file mode 100644 index 0000000..0394608 --- /dev/null +++ b/src/testdir/dumps/Test_scroll_no_region_6.dump @@ -0,0 +1,10 @@ +|1+0&#ffffff0| @73 +|2| @73 +|4| @73 +|5| @73 +>3| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +@57|5|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_scrollbar_on_wide_char.dump b/src/testdir/dumps/Test_scrollbar_on_wide_char.dump new file mode 100644 index 0000000..04d7e7e --- /dev/null +++ b/src/testdir/dumps/Test_scrollbar_on_wide_char.dump @@ -0,0 +1,10 @@ +|a+0&#ffffff0@1|0|b@1> @69 +|a+0#0000001#e0e0e08@1|0|b@1| @9| +0#0000000#0000001|啊*0&#ffffff0| +&@56 +|a+0#0000001#ffd7ff255@1|1|b@1| @9| +0#0000000#0000001| +0&#ffffff0|哦*&| +&@55 +|a+0#0000001#ffd7ff255@1|2|b@1| @9| +0#0000000#0000001|呃*0&#ffffff0@1| +&@54 +|a+0#0000001#ffd7ff255@1|3|b@1| @9| +0#0000000#0000001| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255@1|4|b@1| @9| +0#0000000#0000001| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255@1|5|b@1| @9| +0#0000000#0000001| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255@1|6|b@1| @9| +0#0000000#a8a8a8255| +0&#ffffff0@58 +|a+0#0000001#ffd7ff255@1|7|b@1| @9| +0#0000000#a8a8a8255| +0&#ffffff0@58 +|-+2&&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |1|0| +0#0000000&@32 diff --git a/src/testdir/dumps/Test_searchstat_1.dump b/src/testdir/dumps/Test_searchstat_1.dump new file mode 100644 index 0000000..52b13f2 --- /dev/null +++ b/src/testdir/dumps/Test_searchstat_1.dump @@ -0,0 +1,10 @@ +|f+0&#ffffff0|o@1|b|a|r| @68 +>f|i|n|d| |t|h|i|s| @65 +|f|o@4|b|a|r| @65 +|f|o|b|a| @70 +|f|o@1|b|a|r| @68 +|f|o@1|b|a|r| @68 +|f|o@1| @71 +|f|o@4|b|a|r| @65 +|f|o|b|a| @70 +|/|f|i|n|d| |t|h|i|s| @29|[|1|/|2|]| @11|2|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_searchstat_2.dump b/src/testdir/dumps/Test_searchstat_2.dump new file mode 100644 index 0000000..a6ced4f --- /dev/null +++ b/src/testdir/dumps/Test_searchstat_2.dump @@ -0,0 +1,10 @@ +|f+0&#ffffff0|o@1|b|a|r| @68 +>f|i|n|d| |t|h|i|s| @65 +|f|o@4|b|a|r| @65 +|f|o|b|a| @70 +|f|o@1|b|a|r| @68 +|f|o@1|b|a|r| @68 +|f|o@1| @71 +|f|o@4|b|a|r| @65 +|f|o|b|a| @70 +@40|[|1|/|2|]| @11|2|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_searchstat_3.dump b/src/testdir/dumps/Test_searchstat_3.dump new file mode 100644 index 0000000..a21b47e --- /dev/null +++ b/src/testdir/dumps/Test_searchstat_3.dump @@ -0,0 +1,10 @@ +|i+0&#ffffff0|f| @72 +>++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|o@1|-@57 +|e+0#0000000#ffffff0|n|d|i|f| @69 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|/+0#0000000&|f|o@1| @35|[|1|/|2|]| @11|2|,|2|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_searchstat_4.dump b/src/testdir/dumps/Test_searchstat_4.dump new file mode 100644 index 0000000..899c8fb --- /dev/null +++ b/src/testdir/dumps/Test_searchstat_4.dump @@ -0,0 +1,10 @@ +|t+0&#ffffff0|h|i|s| |i|s| |s+1&&|o|m|e|t|h|i|n|g| +0&&@57 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|1|/|1|]| @69 +|/+0&&|s|o|m|e|t|h|i|n|g> @64 diff --git a/src/testdir/dumps/Test_searchstat_inc_1.dump b/src/testdir/dumps/Test_searchstat_inc_1.dump new file mode 100644 index 0000000..aa4b6c5 --- /dev/null +++ b/src/testdir/dumps/Test_searchstat_inc_1.dump @@ -0,0 +1,10 @@ +| +1&#ffffff0@74 +|a+0#0000001#ffff4012|b|c|-+0#0000000#ffffff0@1|c| @68 +|-@7|a+1&&|b|c| +0&&@63 +|-@1|a+0#0000001#ffff4012|b|c| +0#0000000#ffffff0@69 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|/+0#0000000&|a|b|c> @70 diff --git a/src/testdir/dumps/Test_searchstat_inc_2.dump b/src/testdir/dumps/Test_searchstat_inc_2.dump new file mode 100644 index 0000000..3b580ef --- /dev/null +++ b/src/testdir/dumps/Test_searchstat_inc_2.dump @@ -0,0 +1,10 @@ +|3+1&#ffffff0|/|3| @71 +|a+0#0000001#ffff4012|b|c|-+0#0000000#ffffff0@1|c| @68 +|-@7|a+0#0000001#ffff4012|b|c| +0#0000000#ffffff0@63 +|-@1|a+1&&|b|c| +0&&@69 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|/+0#0000000&|a|b|c> @70 diff --git a/src/testdir/dumps/Test_searchstat_inc_3.dump b/src/testdir/dumps/Test_searchstat_inc_3.dump new file mode 100644 index 0000000..a57b4d1 --- /dev/null +++ b/src/testdir/dumps/Test_searchstat_inc_3.dump @@ -0,0 +1,10 @@ +|1+1&#ffffff0|/|3| @71 +|a|b|c|-+0&&@1|c| @68 +|-@7|a+0#0000001#ffff4012|b|c| +0#0000000#ffffff0@63 +|-@1|a+0#0000001#ffff4012|b|c| +0#0000000#ffffff0@69 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|/+0#0000000&|a|b|c> @70 diff --git a/src/testdir/dumps/Test_searchstatgd_1.dump b/src/testdir/dumps/Test_searchstatgd_1.dump new file mode 100644 index 0000000..672af91 --- /dev/null +++ b/src/testdir/dumps/Test_searchstatgd_1.dump @@ -0,0 +1,10 @@ +|i+0&#ffffff0|n|t| |c|a|t|;| @66 +|i|n|t| >d+0&#ffff4012|o|g|;+0&#ffffff0| @66 +|c|a|t| |=| |d+0&#ffff4012|o|g|;+0&#ffffff0| @64 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|/+0#0000000&|d|o|g| @35|[|1|/|2|]| @11|2|,|5| @10|A|l@1| diff --git a/src/testdir/dumps/Test_searchstatgd_2.dump b/src/testdir/dumps/Test_searchstatgd_2.dump new file mode 100644 index 0000000..ea1ac4d --- /dev/null +++ b/src/testdir/dumps/Test_searchstatgd_2.dump @@ -0,0 +1,10 @@ +|i+0&#ffffff0|n|t| >c+0&#ffff4012|a|t|;+0&#ffffff0| @66 +|i|n|t| |d|o|g|;| @66 +|c+0&#ffff4012|a|t| +0&#ffffff0|=| |d|o|g|;| @64 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|5| @10|A|l@1| diff --git a/src/testdir/dumps/Test_setcellwidths_dump_1.dump b/src/testdir/dumps/Test_setcellwidths_dump_1.dump new file mode 100644 index 0000000..0bb2788 --- /dev/null +++ b/src/testdir/dumps/Test_setcellwidths_dump_1.dump @@ -0,0 +1,6 @@ +>+0&#ffffff0|D|e|s|k|t|o|p| @66 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_setcellwidths_dump_2.dump b/src/testdir/dumps/Test_setcellwidths_dump_2.dump new file mode 100644 index 0000000..f7b4b0f --- /dev/null +++ b/src/testdir/dumps/Test_setcellwidths_dump_2.dump @@ -0,0 +1,6 @@ +>+0&#ffffff0| |D|e|s|k|t|o|p| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_sign_cursor_1.dump b/src/testdir/dumps/Test_sign_cursor_1.dump new file mode 100644 index 0000000..9ca4481 --- /dev/null +++ b/src/testdir/dumps/Test_sign_cursor_1.dump @@ -0,0 +1,6 @@ +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@72 +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @70 +|=+0&#ffff4012|>>m+0&#ffffff0@3| @68 +| +0#0000e05#a8a8a8255@1|y+0#0000000#ffffff0@3| @68 +|~+0#4040ff13&| @73 +| +0#0000000&@56|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_sign_cursor_2.dump b/src/testdir/dumps/Test_sign_cursor_2.dump new file mode 100644 index 0000000..2d10a2c --- /dev/null +++ b/src/testdir/dumps/Test_sign_cursor_2.dump @@ -0,0 +1,6 @@ +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@72 +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @70 +|-+0&#ffff4012|)>m+0&#ffffff0@3| @68 +| +0#0000e05#a8a8a8255@1|y+0#0000000#ffffff0@3| @68 +|~+0#4040ff13&| @73 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e| |s|1| |t|e|x|t|=|-|)| @33|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_sign_cursor_3.dump b/src/testdir/dumps/Test_sign_cursor_3.dump new file mode 100644 index 0000000..88264e4 --- /dev/null +++ b/src/testdir/dumps/Test_sign_cursor_3.dump @@ -0,0 +1,6 @@ +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@72 +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @70 +|-+0&#ffff4012|)>m+0#0000001#ffd7ff255@3| @68 +| +0#0000e05#a8a8a8255@1|y+0#0000000#ffffff0@3| @68 +|~+0#4040ff13&| @73 +|:+0#0000000&|s|i|g|n| |p|l|a|c|e| |1@1| |l|i|n|e|=|2| |n|a|m|e|=|s|2| @27|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_sign_cursor_4.dump b/src/testdir/dumps/Test_sign_cursor_4.dump new file mode 100644 index 0000000..92643c3 --- /dev/null +++ b/src/testdir/dumps/Test_sign_cursor_4.dump @@ -0,0 +1,6 @@ +|x+0&#ffffff0@74 +>m@3| @70 +|y@3| @70 +|~+0#4040ff13&| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |u|n|p|l|a|c|e| |1|0| @40|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_sign_cursor_5.dump b/src/testdir/dumps/Test_sign_cursor_5.dump new file mode 100644 index 0000000..2f256a5 --- /dev/null +++ b/src/testdir/dumps/Test_sign_cursor_5.dump @@ -0,0 +1,6 @@ +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@72 +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @70 +| +0#0000e05#a8a8a8255@1>m+8#0000001#40ff4011@3| @68 +| +0#0000e05#a8a8a8255@1|y+0#0000000#ffffff0@3| @68 +|~+0#4040ff13&| @73 +|:+0#0000000&| @55|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_sign_cursor_6.dump b/src/testdir/dumps/Test_sign_cursor_6.dump new file mode 100644 index 0000000..efd9042 --- /dev/null +++ b/src/testdir/dumps/Test_sign_cursor_6.dump @@ -0,0 +1,6 @@ +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@72 +| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @70 +| +0#0000e05#a8a8a8255@1>m+8#0000001#ffd7ff255@3| @68 +| +0#0000e05#a8a8a8255@1|y+0#0000000#ffffff0@3| @68 +|~+0#4040ff13&| @73 +|:+0#0000000&| @55|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_diff_1.dump b/src/testdir/dumps/Test_smooth_diff_1.dump new file mode 100644 index 0000000..4e2696e --- /dev/null +++ b/src/testdir/dumps/Test_smooth_diff_1.dump @@ -0,0 +1,8 @@ +|-+0#0000e05#a8a8a8255| >j+0#0000000#ffffff0|u|s|t| |s|o|m|e| |t|e|x|t| |h|e|r|e| @53 +|~+0#4040ff13&| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1 +|-+0#0000e05#a8a8a8255| |j+0#0000000#ffffff0|u|s|t| |s|o|m|e| |t|e|x|t| |h|e|r|e| @53 +|~+0#4040ff13&| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_smooth_list_1.dump b/src/testdir/dumps/Test_smooth_list_1.dump new file mode 100644 index 0000000..b155df2 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_list_1.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| +>l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| +|v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| +|t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |$+0#4040ff13&| +0#0000000&@18 +|t|h|r|e@1|$+0#4040ff13&| +0#0000000&@33 +|~+0#4040ff13&| @38 +|~| @38 +| +0#0000000&@21|2|,|8|1| @9|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_list_2.dump b/src/testdir/dumps/Test_smooth_list_2.dump new file mode 100644 index 0000000..82d17b4 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_list_2.dump @@ -0,0 +1,8 @@ +|#+0#4040ff13#ffffff0|e+0#0000000&|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| +>l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| +|v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| +|t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |$+0#4040ff13&| +0#0000000&@18 +|t|h|r|e@1|$+0#4040ff13&| +0#0000000&@33 +|~+0#4040ff13&| @38 +|~| @38 +|:+0#0000000&|s|e|t| |l|i|s|t|c|h|a|r|s|+|=|p|r|e|c|e|d|2|,|8|1| @9|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_long_1.dump b/src/testdir/dumps/Test_smooth_long_1.dump new file mode 100644 index 0000000..86c27ed --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_1.dump @@ -0,0 +1,6 @@ +|L+0&#ffffff0|i|n|e| |w|i|t|h> |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t +| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e +| @21|3|,|1|0| @9|6@1|%| diff --git a/src/testdir/dumps/Test_smooth_long_10.dump b/src/testdir/dumps/Test_smooth_long_10.dump new file mode 100644 index 0000000..10634be --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_10.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|o+0#0000000&|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |e|n|d| @11 +>f|o|u|r| @35 +|~+0#4040ff13&| @38 +|~| @38 +|:+0#0000000&|s|e|t| |s|c|r|o|l@1|o| @9|4|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_long_11.dump b/src/testdir/dumps/Test_smooth_long_11.dump new file mode 100644 index 0000000..0aa7a4b --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_11.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |e|n|d| @11 +>f|o|u|r| @35 +|:|s|e|t| |s|c|r|o|l@1|o| @9|4|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_long_12.dump b/src/testdir/dumps/Test_smooth_long_12.dump new file mode 100644 index 0000000..10634be --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_12.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|o+0#0000000&|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |e|n|d| @11 +>f|o|u|r| @35 +|~+0#4040ff13&| @38 +|~| @38 +|:+0#0000000&|s|e|t| |s|c|r|o|l@1|o| @9|4|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_long_13.dump b/src/testdir/dumps/Test_smooth_long_13.dump new file mode 100644 index 0000000..62d7992 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_13.dump @@ -0,0 +1,6 @@ +>f+0&#ffffff0|o|u|r| @35 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|4|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_long_14.dump b/src/testdir/dumps/Test_smooth_long_14.dump new file mode 100644 index 0000000..7f5bff7 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_14.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |e|n|d| @11 +>f|o|u|r| @35 +@22|4|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_long_15.dump b/src/testdir/dumps/Test_smooth_long_15.dump new file mode 100644 index 0000000..b82fca5 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_15.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |e|n|d| @11 +|f|o|u>r| @35 +@22|4|,|4| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_long_2.dump b/src/testdir/dumps/Test_smooth_long_2.dump new file mode 100644 index 0000000..6800ba4 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_2.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|h| |l|o|t>s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e +|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w +| @21|3|,|5|0| @9|6@1|%| diff --git a/src/testdir/dumps/Test_smooth_long_3.dump b/src/testdir/dumps/Test_smooth_long_3.dump new file mode 100644 index 0000000..63d9794 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_3.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2| +0#0000000&|l|o|t|s| >o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| +|l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s +| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| +|t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t +| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +| @21|3|,|2|5|0| @8|6@1|%| diff --git a/src/testdir/dumps/Test_smooth_long_4.dump b/src/testdir/dumps/Test_smooth_long_4.dump new file mode 100644 index 0000000..479dee4 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_4.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e +|x|t| |w|i|t|h| |l>o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w +| @21|3|,|2|1|0| @8|6@1|%| diff --git a/src/testdir/dumps/Test_smooth_long_5.dump b/src/testdir/dumps/Test_smooth_long_5.dump new file mode 100644 index 0000000..0b728b2 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_5.dump @@ -0,0 +1,6 @@ +|L+0&#ffffff0|i|n|e| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t +| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i>t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e +| @21|3|,|1|7|0| @8|6@1|%| diff --git a/src/testdir/dumps/Test_smooth_long_6.dump b/src/testdir/dumps/Test_smooth_long_6.dump new file mode 100644 index 0000000..ba48c28 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_6.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f> |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e +|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w +| @21|3|,|9|0| @9|6@1|%| diff --git a/src/testdir/dumps/Test_smooth_long_7.dump b/src/testdir/dumps/Test_smooth_long_7.dump new file mode 100644 index 0000000..222e001 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_7.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i>t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e +|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w +| @21|3|,|1|7|0| @8|6@1|%| diff --git a/src/testdir/dumps/Test_smooth_long_8.dump b/src/testdir/dumps/Test_smooth_long_8.dump new file mode 100644 index 0000000..6d2f13c --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_8.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x>t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e +|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w +| @21|3|,|1|3|0| @8|6@1|%| diff --git a/src/testdir/dumps/Test_smooth_long_9.dump b/src/testdir/dumps/Test_smooth_long_9.dump new file mode 100644 index 0000000..6d2f13c --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_9.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t +|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o +|t|s| |o|f| |t|e|x>t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o +|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e +|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w +| @21|3|,|1|3|0| @8|6@1|%| diff --git a/src/testdir/dumps/Test_smooth_long_showbreak_1.dump b/src/testdir/dumps/Test_smooth_long_showbreak_1.dump new file mode 100644 index 0000000..0071dee --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_showbreak_1.dump @@ -0,0 +1,6 @@ +>w+0&#ffffff0|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |i|n| |o|n|e| |l|i|n|e| |w|i|t|h| |l|o|t|s| +|++0#4040ff13&@2| |o+0#0000000&|f| |t|e|x|t| |i|n| |o|n|e| |l|i|n|e| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x +|++0#4040ff13&@2| |t+0#0000000&| |i|n| |o|n|e| |l|i|n|e| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |i|n| |o +|++0#4040ff13&@2| |n+0#0000000&|e| |l|i|n|e| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |i|n| |o|n|e| |l|i|n +|++0#4040ff13&@2| |e+0#0000000&| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |i|n| |o|n|e| |l|i|n|e| @4 +@22|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_long_showbreak_2.dump b/src/testdir/dumps/Test_smooth_long_showbreak_2.dump new file mode 100644 index 0000000..646b8e2 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_long_showbreak_2.dump @@ -0,0 +1,6 @@ +|++0#4040ff13#ffffff0@2| >o+0#0000000&|f| |t|e|x|t| |i|n| |o|n|e| |l|i|n|e| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x +|++0#4040ff13&@2| |t+0#0000000&| |i|n| |o|n|e| |l|i|n|e| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |i|n| |o +|++0#4040ff13&@2| |n+0#0000000&|e| |l|i|n|e| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |i|n| |o|n|e| |l|i|n +|++0#4040ff13&@2| |e+0#0000000&| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |i|n| |o|n|e| |l|i|n|e| @4 +|~+0#4040ff13&| @38 +| +0#0000000&@21|1|,|4|1|-|4|5| @6|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_number_1.dump b/src/testdir/dumps/Test_smooth_number_1.dump new file mode 100644 index 0000000..7953319 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_number_1.dump @@ -0,0 +1,12 @@ +| +0#af5f00255#ffffff0@1|1| |o+0#0000000&|n|e| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o +|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o +|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @12 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o +|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @2 +| +0#af5f00255&@1|3| >l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|4| |l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|5| |l+0#0000000&|i|n|e| @31 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_number_2.dump b/src/testdir/dumps/Test_smooth_number_2.dump new file mode 100644 index 0000000..110775d --- /dev/null +++ b/src/testdir/dumps/Test_smooth_number_2.dump @@ -0,0 +1,12 @@ +|<+0#4040ff13#ffffff0@2|w+0#0000000&|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o +|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @12 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o +|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @2 +| +0#af5f00255&@1|3| >l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|4| |l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|5| |l+0#0000000&|i|n|e| @31 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_number_3.dump b/src/testdir/dumps/Test_smooth_number_3.dump new file mode 100644 index 0000000..3f35de6 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_number_3.dump @@ -0,0 +1,12 @@ +|<+0#4040ff13#ffffff0@2|w+0#0000000&|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @12 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o +|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @2 +| +0#af5f00255&@1|3| >l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|4| |l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|5| |l+0#0000000&|i|n|e| @31 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_number_4.dump b/src/testdir/dumps/Test_smooth_number_4.dump new file mode 100644 index 0000000..6ea393d --- /dev/null +++ b/src/testdir/dumps/Test_smooth_number_4.dump @@ -0,0 +1,12 @@ +|<+0#4040ff13#ffffff0@2| +0#af5f00255&|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @4 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o +| +0#af5f00255&@3|n+0#0000000&|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r +| +0#af5f00255&@3|d+0#0000000&| @34 +| +0#af5f00255&@1|3| >l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|4| |l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|5| |l+0#0000000&|i|n|e| @31 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +|:+0#0000000&|s|e|t| |c|p|o|-|=|n| @10|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_number_5.dump b/src/testdir/dumps/Test_smooth_number_5.dump new file mode 100644 index 0000000..4602de2 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_number_5.dump @@ -0,0 +1,12 @@ +|<+0#4040ff13#ffffff0@2| +0#af5f00255&|r+0#0000000&|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r +| +0#af5f00255&@3|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @4 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o +| +0#af5f00255&@3|n+0#0000000&|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r +| +0#af5f00255&@3|d+0#0000000&| @34 +| +0#af5f00255&@1|3| >l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|4| |l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|5| |l+0#0000000&|i|n|e| @31 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|:+0#0000000&|s|e|t| |c|p|o|-|=|n| @10|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_number_6.dump b/src/testdir/dumps/Test_smooth_number_6.dump new file mode 100644 index 0000000..bec58b5 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_number_6.dump @@ -0,0 +1,12 @@ +| +0#af5f00255#ffffff0@1|1| |o+0#0000000&|n|e| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o +| +0#af5f00255&@3|r+0#0000000&|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r +| +0#af5f00255&@3|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @4 +| +0#af5f00255&@1|2| |t+0#0000000&|w|o| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o +| +0#af5f00255&@3|n+0#0000000&|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r +| +0#af5f00255&@3|d+0#0000000&| @34 +| +0#af5f00255&@1|3| >l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|4| |l+0#0000000&|i|n|e| @31 +| +0#af5f00255&@1|5| |l+0#0000000&|i|n|e| @31 +|~+0#4040ff13&| @38 +|~| @38 +|:+0#0000000&|s|e|t| |c|p|o|-|=|n| @10|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_number_7.dump b/src/testdir/dumps/Test_smooth_number_7.dump new file mode 100644 index 0000000..b617dc0 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_number_7.dump @@ -0,0 +1,12 @@ +|2+0#af5f00255#ffffff0|<+0#4040ff13&@2>o+0#0000000&|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e +| +0#af5f00255&@3|x+0#0000000&|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r +| +0#af5f00255&@3|y+0#0000000&| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g +| +0#af5f00255&@3| +0#0000000&|t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| |v|e|r|y| |l|o|n|g| |t|e|x|t| +| +0#af5f00255&@1|1| |t+0#0000000&|h|r|e@1| @30 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +|-+0#0000000&@1|N|o|.@2|e|r|-@1| @10|2|,|3|7| @9|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_one_long_1.dump b/src/testdir/dumps/Test_smooth_one_long_1.dump new file mode 100644 index 0000000..82c1ea3 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_one_long_1.dump @@ -0,0 +1,6 @@ +>w+0&#ffffff0|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h +| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t +|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f +| |t|e|x|t| @34 +|~+0#4040ff13&| @38 +| +0#0000000&@21|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_one_long_2.dump b/src/testdir/dumps/Test_smooth_one_long_2.dump new file mode 100644 index 0000000..46e4f59 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_one_long_2.dump @@ -0,0 +1,6 @@ +|<+0#4040ff13#ffffff0@2|t+0#0000000&|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t +>s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f| |t|e|x|t| |w|i|t|h| |l|o|t|s| |o|f +| |t|e|x|t| @34 +|~+0#4040ff13&| @38 +|~| @38 +| +0#0000000&@21|1|,|8|1| @9|A|l@1| diff --git a/src/testdir/dumps/Test_smooth_wrap_1.dump b/src/testdir/dumps/Test_smooth_wrap_1.dump new file mode 100644 index 0000000..0b52d40 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_wrap_1.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|h+0#0000000&| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +|L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +>L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +@22|3|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_smooth_wrap_2.dump b/src/testdir/dumps/Test_smooth_wrap_2.dump new file mode 100644 index 0000000..65a357d --- /dev/null +++ b/src/testdir/dumps/Test_smooth_wrap_2.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|h+0#0000000&| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +|L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +>L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +@22|4|,|1| @10|2|5|%| diff --git a/src/testdir/dumps/Test_smooth_wrap_3.dump b/src/testdir/dumps/Test_smooth_wrap_3.dump new file mode 100644 index 0000000..4bf5130 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_wrap_3.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|h+0#0000000&| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +|L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +>L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +@22|5|,|1| @10|5|0|%| diff --git a/src/testdir/dumps/Test_smooth_wrap_4.dump b/src/testdir/dumps/Test_smooth_wrap_4.dump new file mode 100644 index 0000000..c23f494 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_wrap_4.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2|h+0#0000000&| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +|L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +>L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +@22|7|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_wrap_5.dump b/src/testdir/dumps/Test_smooth_wrap_5.dump new file mode 100644 index 0000000..31f1544 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_wrap_5.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffffff0@2>h+0#0000000&| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +|L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +|L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +@22|5|,|8|4| @9|B|o|t| diff --git a/src/testdir/dumps/Test_smooth_wrap_6.dump b/src/testdir/dumps/Test_smooth_wrap_6.dump new file mode 100644 index 0000000..04a17f9 --- /dev/null +++ b/src/testdir/dumps/Test_smooth_wrap_6.dump @@ -0,0 +1,8 @@ +>L+0&#ffffff0|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +|L|i|n|e| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| +|s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| +|w|i|t|h| |s|o|m|e| |t|e|x|t| |w|i|t|h| |s|o|m|e| |t|e|x|t| @10 +|@+0#4040ff13&@2| @36 +| +0#0000000&@21|5|,|1| @10|8|0|%| diff --git a/src/testdir/dumps/Test_smoothscroll_1.dump b/src/testdir/dumps/Test_smoothscroll_1.dump new file mode 100644 index 0000000..7a8c020 --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_1.dump @@ -0,0 +1,12 @@ +|w+0&#ffffff0|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| +|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| +|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20 +|l|i|n|e| |t|h|r|e@1| @29 +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10 +>l|i|n|e| @35 +|l|i|n|e| @35 +|l|i|n|e| @35 +|~+0#4040ff13&| @38 +|~| @38 +| +0#0000000&@21|5|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smoothscroll_2.dump b/src/testdir/dumps/Test_smoothscroll_2.dump new file mode 100644 index 0000000..e8ca1a7 --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_2.dump @@ -0,0 +1,12 @@ +|<+0#4040ff13#ffffff0@2|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| +|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20 +|l|i|n|e| |t|h|r|e@1| @29 +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10 +>l|i|n|e| @35 +|l|i|n|e| @35 +|l|i|n|e| @35 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|5|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smoothscroll_3.dump b/src/testdir/dumps/Test_smoothscroll_3.dump new file mode 100644 index 0000000..5c2ed94 --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_3.dump @@ -0,0 +1,12 @@ +|<+0#4040ff13#ffffff0@2|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20 +|l|i|n|e| |t|h|r|e@1| @29 +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10 +>l|i|n|e| @35 +|l|i|n|e| @35 +|l|i|n|e| @35 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|5|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smoothscroll_4.dump b/src/testdir/dumps/Test_smoothscroll_4.dump new file mode 100644 index 0000000..63539c9 --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_4.dump @@ -0,0 +1,12 @@ +|l+0&#ffffff0|i|n|e| |t|h|r|e@1| @29 +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10 +|l|i|n|e| @35 +|l|i|n|e| @35 +>l|i|n|e| @35 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|7|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smoothscroll_5.dump b/src/testdir/dumps/Test_smoothscroll_5.dump new file mode 100644 index 0000000..b88bd3d --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_5.dump @@ -0,0 +1,12 @@ +|<+0#4040ff13#ffffff0@2|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20 +|l|i|n|e| |t|h|r|e@1| @29 +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10 +|l|i|n|e| @35 +|l|i|n|e| @35 +>l|i|n|e| @35 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|7|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smoothscroll_6.dump b/src/testdir/dumps/Test_smoothscroll_6.dump new file mode 100644 index 0000000..fb73356 --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_6.dump @@ -0,0 +1,12 @@ +|<+0#4040ff13#ffffff0@2|d+0#0000000&| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| +|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20 +|l|i|n|e| |t|h|r|e@1| @29 +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10 +|l|i|n|e| @35 +|l|i|n|e| @35 +>l|i|n|e| @35 +|~+0#4040ff13&| @38 +|~| @38 +|~| @38 +| +0#0000000&@21|7|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smoothscroll_7.dump b/src/testdir/dumps/Test_smoothscroll_7.dump new file mode 100644 index 0000000..0579f6f --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_7.dump @@ -0,0 +1,12 @@ +|w+0&#ffffff0|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| +|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| +|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20 +|l|i|n|e| |t|h|r|e@1| @29 +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10 +|l|i|n|e| @35 +|l|i|n|e| @35 +>l|i|n|e| @35 +|~+0#4040ff13&| @38 +|~| @38 +| +0#0000000&@21|7|,|1| @10|B|o|t| diff --git a/src/testdir/dumps/Test_smoothscroll_8.dump b/src/testdir/dumps/Test_smoothscroll_8.dump new file mode 100644 index 0000000..b7a5bce --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_8.dump @@ -0,0 +1,12 @@ +|l+0&#ffffff0|i|n|e| |o|n|e| @31 +|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| +|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| +|w|o|r|d| |w|o|r|d| |w|o|r|d| |w|o|r|d| @20 +|l|i|n|e| |t|h|r|e@1| @29 +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| +|l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| |l|o|n|g| |w|o|r|d| @10 +|l|i|n|e| @35 +|l|i|n|e| @35 +>l|i|n|e| @35 +|~+0#4040ff13&| @38 +| +0#0000000&@21|7|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_smoothscroll_zero_1.dump b/src/testdir/dumps/Test_smoothscroll_zero_1.dump new file mode 100644 index 0000000..5a99f57 --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_zero_1.dump @@ -0,0 +1,6 @@ +> +0&#ffffff0@59 +@60 +@60 +@60 +@60 +@60 diff --git a/src/testdir/dumps/Test_smoothscroll_zero_2.dump b/src/testdir/dumps/Test_smoothscroll_zero_2.dump new file mode 100644 index 0000000..1879381 --- /dev/null +++ b/src/testdir/dumps/Test_smoothscroll_zero_2.dump @@ -0,0 +1,6 @@ +|:+0&#ffffff0|s|i|l| |n|o|r|m| |^|W|^|N| @45 +> @59 +@60 +@60 +@60 +@60 diff --git a/src/testdir/dumps/Test_spell_1.dump b/src/testdir/dumps/Test_spell_1.dump new file mode 100644 index 0000000..2025be1 --- /dev/null +++ b/src/testdir/dumps/Test_spell_1.dump @@ -0,0 +1,8 @@ +>T+0&#ffffff0|h|i|s| |i|s| |s|o|m|e| |t|e|x|t| |w|i|t|h|o|u|t| |a|n|y| |s|p|e|l@1| |e|r@1|o|r|s|.| @1|E|v|e|r|y|t|h|i|n|g| @19 +|s|h|o|u|l|d| |j|u|s|t| |b|e| |b|l|a|c|k|,| |n|o|t|h|i|n|g| |w|r|o|n|g| |h|e|r|e|.| @33 +@75 +|T|h|i|s| |l|i|n|e| |h|a|s| |a| |s+0&#ffd7d7255|e|p|l@1| +0&#ffffff0|e|r@1|o|r|.| |a+0fd7ff255|n|d| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s|.| @28 +|A+0&#ffd7d7255|n|d| |a|n|d| +0&#ffffff0|t|h|i|s| |i|s| |t+0&#ffd7d7255|h|e| |t|h|e| +0&#ffffff0|d|u|p|l|i|c|a|t|i|o|n|.| @38 +|w+0fd7ff255|i|t|h| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s| |h|e|r|e|.| @51 +|~+0#4040ff13&| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_spell_2.dump b/src/testdir/dumps/Test_spell_2.dump new file mode 100644 index 0000000..961949b --- /dev/null +++ b/src/testdir/dumps/Test_spell_2.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@2|T|h|i|s| |l|i|n|e| |h|a|s| |a| |s+0&#ffd7d7255|e|p|l@1| +0&#ffffff0|e|r@1|o|r|.| |a+0fd7ff255|n|d| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s| |a|n|d| |t|r|a|i|l|i|n|g| |s|p|a|c|e|s|.| @5 +|a+0fd7ff255|n|o|t|h|e|r| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p| |h|e|r|e|.| @49 +@75 +|a+0fd7ff255|n|d| +0&#ffffff0|h|e|r|e|.| @65 +@75 +|a+0fd7ff255|n|d| +0&#ffffff0|h|e|r|e|.| @65 +|~+0#4040ff13&| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_spell_3.dump b/src/testdir/dumps/Test_spell_3.dump new file mode 100644 index 0000000..8dcd045 --- /dev/null +++ b/src/testdir/dumps/Test_spell_3.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@2|T|h|i|s| |l|i|n|e| |h|a|s| |a| |s+0&#ffd7d7255|e|p|l@1| +0&#ffffff0|e|r@1|o|r|.| |a+0fd7ff255|n|d| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s| |a|n|d| |t|r|a|i|l|i|n|g| |s|p|a|c|e|s|.| @5 +|a+0fd7ff255|n|o|t|h|e|r| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p| |h|e|r|e|.| @49 +|N|o>t| @71 +|a|n|d| |h|e|r|e|.| @65 +@75 +|a+0fd7ff255|n|d| +0&#ffffff0|h|e|r|e|.| @65 +|~+0#4040ff13&| @73 +| +0#0000000&@56|3|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_spell_4.dump b/src/testdir/dumps/Test_spell_4.dump new file mode 100644 index 0000000..c49dc84 --- /dev/null +++ b/src/testdir/dumps/Test_spell_4.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@2|T|h|i|s| |l|i|n|e| |h|a|s| |a| |s+0&#ffd7d7255|e|p|l@1| +0&#ffffff0|e|r@1|o|r|.| |a+0fd7ff255|n|d| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s| |a|n|d| |t|r|a|i|l|i|n|g| |s|p|a|c|e|s|.| @5 +|a+0fd7ff255|n|o|t|h|e|r| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p| |h|e|r|e|.| @49 +|N|o|t| @71 +|a|n|d| |h|e|r>e| @66 +|a|n|d| |h|e|r|e|.| @65 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|4|,|8| @10|A|l@1| diff --git a/src/testdir/dumps/Test_spell_5.dump b/src/testdir/dumps/Test_spell_5.dump new file mode 100644 index 0000000..a23ce5c --- /dev/null +++ b/src/testdir/dumps/Test_spell_5.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@2|T|h|i|s| |l|i|n|e| |h|a|s| |a| |s+0&#ffd7d7255|e|p|l@1| +0&#ffffff0|e|r@1|o|r|.| |a+0fd7ff255|n|d| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s| |a|n|d| |t|r|a|i|l|i|n|g| |s|p|a|c|e|s|.| @5 +|a+0fd7ff255|n|o|t|h|e|r| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p| |h|e|r|e|.| @49 +|N|o|t| @71 +|a|n|d| |h|e|r|e>.| @65 +|a+0fd7ff255|n|d| +0&#ffffff0|h|e|r|e|.| @65 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|4|,|9| @10|A|l@1| diff --git a/src/testdir/dumps/Test_spell_compatible_1.dump b/src/testdir/dumps/Test_spell_compatible_1.dump new file mode 100644 index 0000000..4f6b268 --- /dev/null +++ b/src/testdir/dumps/Test_spell_compatible_1.dump @@ -0,0 +1,8 @@ +|t+0fd7ff255|e|s|t| +0&#ffffff0|t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| >t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| +|t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t|$| @49 +@75 +|e+0fd7ff255|n|d| +0&#ffffff0@71 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|5|1| @9|A|l@1| diff --git a/src/testdir/dumps/Test_spell_compatible_2.dump b/src/testdir/dumps/Test_spell_compatible_2.dump new file mode 100644 index 0000000..e1243a6 --- /dev/null +++ b/src/testdir/dumps/Test_spell_compatible_2.dump @@ -0,0 +1,8 @@ +|t+0fd7ff255|e|s|t| +0&#ffffff0|t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |x>e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| +|t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t| |t|e|s|t|$| @49 +@75 +|e+0fd7ff255|n|d| +0&#ffffff0@71 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|5|2| @9|A|l@1| diff --git a/src/testdir/dumps/Test_splitkeep_callback_1.dump b/src/testdir/dumps/Test_splitkeep_callback_1.dump new file mode 100644 index 0000000..4f3a851 --- /dev/null +++ b/src/testdir/dumps/Test_splitkeep_callback_1.dump @@ -0,0 +1,8 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +>4+0&&| @73 +|5| @73 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|5|,|1| @11|6@1|% +| +0&&@74 diff --git a/src/testdir/dumps/Test_splitkeep_callback_2.dump b/src/testdir/dumps/Test_splitkeep_callback_2.dump new file mode 100644 index 0000000..1537db5 --- /dev/null +++ b/src/testdir/dumps/Test_splitkeep_callback_2.dump @@ -0,0 +1,8 @@ +>0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +|4+0&&| @73 +|5| @73 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|6@1|% +| +0&&@74 diff --git a/src/testdir/dumps/Test_splitkeep_callback_3.dump b/src/testdir/dumps/Test_splitkeep_callback_3.dump new file mode 100644 index 0000000..7f265b9 --- /dev/null +++ b/src/testdir/dumps/Test_splitkeep_callback_3.dump @@ -0,0 +1,8 @@ +>1+0&#ffffff0| @73 +|2| @73 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|2|,|1| @11|1|6|% +|4+0&&| @73 +|5| @73 +|6| @73 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|6|,|1| @11|8|0|% +| +0&&@74 diff --git a/src/testdir/dumps/Test_splitkeep_callback_4.dump b/src/testdir/dumps/Test_splitkeep_callback_4.dump new file mode 100644 index 0000000..25da180 --- /dev/null +++ b/src/testdir/dumps/Test_splitkeep_callback_4.dump @@ -0,0 +1,8 @@ +|1+0&#ffffff0| @73 +|2| @73 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|8|,|1| @11|1|6|% +|4+0&&| @73 +>5| @73 +|6| @73 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|6|,|1| @11|8|0|% +| +0&&@74 diff --git a/src/testdir/dumps/Test_splitkeep_fold_1.dump b/src/testdir/dumps/Test_splitkeep_fold_1.dump new file mode 100644 index 0000000..748a3c8 --- /dev/null +++ b/src/testdir/dumps/Test_splitkeep_fold_1.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@1|1| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0@1|8| >a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255@1|9| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|1|6| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|8|,|1| @11|T|o|p +| +0#af5f00255&|2|4| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255|2|5| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|3|2| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +|[+1&&|N|o| |N|a|m|e|]| |[|+|]| @43|2|3|,|1| @10|3|2|% +|:+0&&|w|i|n|c|m|d| |s| @65 diff --git a/src/testdir/dumps/Test_splitkeep_fold_2.dump b/src/testdir/dumps/Test_splitkeep_fold_2.dump new file mode 100644 index 0000000..959cb64 --- /dev/null +++ b/src/testdir/dumps/Test_splitkeep_fold_2.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@1|1| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0@1|8| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255@1|9| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|1|6| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255|1|7| >+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|2|4| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255|2|5| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|3|2| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255|3@1| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +|:+0#0000000#ffffff0|q|u|i|t| @51|1|7|,|1| @9|T|o|p| diff --git a/src/testdir/dumps/Test_splitkeep_fold_3.dump b/src/testdir/dumps/Test_splitkeep_fold_3.dump new file mode 100644 index 0000000..6880104 --- /dev/null +++ b/src/testdir/dumps/Test_splitkeep_fold_3.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@1|1| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0@1|8| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255@1|9| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|T|o|p +| +0#0000e05#a8a8a8255|1|7| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|2|4| >a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255|2|5| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|3|2| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +|[+3&&|N|o| |N|a|m|e|]| |[|+|]| @43|2|4|,|1| @10|2|5|% +|:+0&&|b|e|l|o|w| |s|p|l|i|t| @62 diff --git a/src/testdir/dumps/Test_splitkeep_fold_4.dump b/src/testdir/dumps/Test_splitkeep_fold_4.dump new file mode 100644 index 0000000..959cb64 --- /dev/null +++ b/src/testdir/dumps/Test_splitkeep_fold_4.dump @@ -0,0 +1,10 @@ +| +0#0000e05#a8a8a8255@1|1| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0@1|8| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255@1|9| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|1|6| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255|1|7| >+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|2|4| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255|2|5| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +| +0#af5f00255#ffffff0|3|2| |a+0#0000000&|f|t|e|r| |f|o|l|d| @60 +| +0#0000e05#a8a8a8255|3@1| |+|-@1| @1|7| |l|i|n|e|s|:| |i|n|t| |F|u|n|c|N|a|m|e|(|)| |{|-@40 +|:+0#0000000#ffffff0|q|u|i|t| @51|1|7|,|1| @9|T|o|p| diff --git a/src/testdir/dumps/Test_splitkeep_status_1.dump b/src/testdir/dumps/Test_splitkeep_status_1.dump new file mode 100644 index 0000000..1131c69 --- /dev/null +++ b/src/testdir/dumps/Test_splitkeep_status_1.dump @@ -0,0 +1,10 @@ +|a+0&#ffffff0| @73 +|b| @73 +|c| @73 +|~+0#4040ff13&| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|1|,|1| @11|A|l@1 +>b+0&&| @73 +|c| @73 +|[+3&&|N|o| |N|a|m|e|]| @47|2|,|1| @11|B|o|t +|:+0&&|c|a|l@1| |w|i|n|_|m|o|v|e|_|s|t|a|t|u|s|l|i|n|e|(|w|i|n|,| |1|)| @41 diff --git a/src/testdir/dumps/Test_start_with_tabs.dump b/src/testdir/dumps/Test_start_with_tabs.dump new file mode 100644 index 0000000..0659466 --- /dev/null +++ b/src/testdir/dumps/Test_start_with_tabs.dump @@ -0,0 +1,20 @@ +| +2&#ffffff0|a| | +8#0000001#e0e0e08|b| @1|c| | +1#0000000#ffffff0@64|X+8#0000001#e0e0e08 +> +0#0000000#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|"+0#0000000&|a|"| |[|N|e|w|]| @47|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_statusline_1.dump b/src/testdir/dumps/Test_statusline_1.dump new file mode 100644 index 0000000..f981685 --- /dev/null +++ b/src/testdir/dumps/Test_statusline_1.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@49 +|~+0#4040ff13&| @48 +|~| @48 +|~| @48 +|~| @48 +|~| @48 +|~| @48 +|~| @48 +| +3#0000000&|Q|≡| @46 +| +0&&@49 diff --git a/src/testdir/dumps/Test_statusline_hl.dump b/src/testdir/dumps/Test_statusline_hl.dump new file mode 100644 index 0000000..cebece5 --- /dev/null +++ b/src/testdir/dumps/Test_statusline_hl.dump @@ -0,0 +1,6 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|<+0#ffffff16#e000002|F|G+0#0000e05#ffffff0|H|I| @69 +| +0#0000000&@74 diff --git a/src/testdir/dumps/Test_statusline_mode_1.dump b/src/testdir/dumps/Test_statusline_mode_1.dump new file mode 100644 index 0000000..9d111c9 --- /dev/null +++ b/src/testdir/dumps/Test_statusline_mode_1.dump @@ -0,0 +1,7 @@ +> +0&#ffffff0@49 +|~+0#4040ff13&| @48 +|++3#0000000&|n|+| @46 +| +0&&@49 +|~+0#4040ff13&| @48 +|-+1#0000000&|n|-| @46 +| +0&&@49 diff --git a/src/testdir/dumps/Test_statusline_mode_2.dump b/src/testdir/dumps/Test_statusline_mode_2.dump new file mode 100644 index 0000000..f195543 --- /dev/null +++ b/src/testdir/dumps/Test_statusline_mode_2.dump @@ -0,0 +1,7 @@ +| +0&#ffffff0@49 +|~+0#4040ff13&| @48 +|++3#0000000&|c|+| @46 +| +0&&@49 +|~+0#4040ff13&| @48 +|-+1#0000000&|c|-| @46 +|:+0&&> @48 diff --git a/src/testdir/dumps/Test_statusline_showcmd_1.dump b/src/testdir/dumps/Test_statusline_showcmd_1.dump new file mode 100644 index 0000000..626f60b --- /dev/null +++ b/src/testdir/dumps/Test_statusline_showcmd_1.dump @@ -0,0 +1,6 @@ +|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |a|-@59 +>c+0#0000000#ffffff0| @73 +|~+0#4040ff13&| @73 +|~| @73 +|g+3#0000000&| @73 +| +0&&@74 diff --git a/src/testdir/dumps/Test_statusline_showcmd_2.dump b/src/testdir/dumps/Test_statusline_showcmd_2.dump new file mode 100644 index 0000000..2844f12 --- /dev/null +++ b/src/testdir/dumps/Test_statusline_showcmd_2.dump @@ -0,0 +1,6 @@ +>a+0&#ffffff0| @73 +|b| @73 +|c| @73 +|~+0#4040ff13&| @73 +| +3#0000000&@74 +| +0&&@74 diff --git a/src/testdir/dumps/Test_statusline_showcmd_3.dump b/src/testdir/dumps/Test_statusline_showcmd_3.dump new file mode 100644 index 0000000..049e0f7 --- /dev/null +++ b/src/testdir/dumps/Test_statusline_showcmd_3.dump @@ -0,0 +1,6 @@ +|a+0&#e0e0e08| +0&#ffffff0@73 +|b+0&#e0e0e08| +0&#ffffff0@73 +|c+0&#e0e0e08> +0&#ffffff0@73 +|~+0#4040ff13&| @73 +|3+3#0000000&|x|2| @71 +|-+2&&@1| |V|I|S|U|A|L| |B|L|O|C|K| |-@1| +0&&@56 diff --git a/src/testdir/dumps/Test_statusline_showcmd_4.dump b/src/testdir/dumps/Test_statusline_showcmd_4.dump new file mode 100644 index 0000000..c443662 --- /dev/null +++ b/src/testdir/dumps/Test_statusline_showcmd_4.dump @@ -0,0 +1,6 @@ +|a+0&#ffffff0| @73 +|b| @73 +>c| @73 +|~+0#4040ff13&| @73 +|1+3#0000000&|2|3|4| @70 +| +0&&@74 diff --git a/src/testdir/dumps/Test_statusline_showcmd_5.dump b/src/testdir/dumps/Test_statusline_showcmd_5.dump new file mode 100644 index 0000000..26ba377 --- /dev/null +++ b/src/testdir/dumps/Test_statusline_showcmd_5.dump @@ -0,0 +1,6 @@ +|a+0&#ffffff0| @73 +|b| @73 +>c| @73 +|~+0#4040ff13&| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @32|1|2|3|4| @6|3|,|1| @11|A|l@1 +|:+0&&| @73 diff --git a/src/testdir/dumps/Test_sub_highlight_zer_match_1.dump b/src/testdir/dumps/Test_sub_highlight_zer_match_1.dump new file mode 100644 index 0000000..481d0bb --- /dev/null +++ b/src/testdir/dumps/Test_sub_highlight_zer_match_1.dump @@ -0,0 +1,8 @@ +|o+1&#ffffff0|n+0&&|e| @56 +|t|w|o| @56 +|t|h|r|e@1| @54 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|~| @58 +|r+0#00e0003&|e|p|l|a|c|e| |w|i|t|h| @1|.@2|/|a|/|q|/|l|/|^|E|/|^|Y|)|?> +0#0000000&@10|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_syntax_c_01.dump b/src/testdir/dumps/Test_syntax_c_01.dump new file mode 100644 index 0000000..7224216 --- /dev/null +++ b/src/testdir/dumps/Test_syntax_c_01.dump @@ -0,0 +1,20 @@ +|/+0#0000e05#ffffff0|*| |c|o|m@1|e|n|t| |l|i|n|e| |a|t| |t|h|e| |t|o|p| |*|/| +0#0000000&@45 +|i+0#00e0003&|n|t| +0#0000000&|m|a|i|n|(|i+0#00e0003&|n|t| +0#0000000&|a|r|g|c|,| |c+0#00e0003&|h|a|r| +0#0000000&|*@1|a|r|g|v|)| |{| |/+0#0000e05&@1| |a|n|o|t|h|e|r| |c|o|m@1|e|n|t| +0#0000000&@22 +|#+0#e000e06&|i|f| |0| +0#0000000&@69 +| +0#0000e05&@2|i|n|t| @2|n|o|t|_|u|s|e|d|;| +0#0000000&@56 +|#+0#e000e06&|e|l|s|e| +0#0000000&@69 +@3|i+0#00e0003&|n|t| +0#0000000&@2|u|s|e|d|;| @60 +|#+0#e000e06&|e+0&#e0e0e08|n|d|i|f| +0#0000000&| +0&#ffffff0@67 +| +0&#e0e0e08@2|p|r|i|n|t|f|(|"+0#e000002&|J|u|s|t| |a|n| |e|x|a|m|p|l|e| |p|i|e|c|e| |o|f| >C+0&#ffffff0| |c|o|d|e|\+0#e000e06&|n|"+0#e000002&|)+0#0000000&|;| @27 +@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|0+0#e000002&|x|0|f@1|;+0#0000000&| @58 +|}| @73 +| +0#ffffff16#ff404010@16| +0#0000000#ffffff0@57 +@3|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&@60 +|m|y|F|u|n|c|t|i|o|n|(|c+0#00e0003&|o|n|s|t| +0#0000000&|d+0#00e0003&|o|u|b|l|e| +0#0000000&|c|o|u|n|t|,| |s+0#00e0003&|t|r|u|c|t| +0#0000000&|n|o|t|h|i|n|g|,| |l+0#00e0003&|o|n|g| +0#0000000&|t|h|e|r|e|)| |{| @14 +@8|/+0#0000e05&@1| |1+0#e000002&|2|3|:+0#0000e05&| |n|o|t|h|i|n|g| |t|o| |e+0&#ffff4012|n|d|i|f| +0&#ffffff0|h|e|r|e| +0#0000000&@37 +@8|f+0#af5f00255&|o|r| +0#0000000&|(|i+0#00e0003&|n|t| +0#0000000&|i| |=| |0+0#e000002&|;+0#0000000&| |i| |<| |c|o|u|n|t|;| |+@1|i|)| |{| @33 +@11|b+0#af5f00255&|r|e|a|k|;+0#0000000&| @57 +@8|}| @65 +@8|N+0&#ffff4012|o|t|e|:+0&#ffffff0| |a|s|d|f| @56 +|}| @73 +|-+2&&@1| |V|I|S|U|A|L| |-@1| +0&&@34|2| @8|8|,|3|7| @9|A|l@1| diff --git a/src/testdir/dumps/Test_tabline_showcmd_1.dump b/src/testdir/dumps/Test_tabline_showcmd_1.dump new file mode 100644 index 0000000..40fea4e --- /dev/null +++ b/src/testdir/dumps/Test_tabline_showcmd_1.dump @@ -0,0 +1,6 @@ +|g+1&#ffffff0| @73 +|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |a|-@59 +>c+0#0000000#ffffff0| @73 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tabline_showcmd_2.dump b/src/testdir/dumps/Test_tabline_showcmd_2.dump new file mode 100644 index 0000000..9765de4 --- /dev/null +++ b/src/testdir/dumps/Test_tabline_showcmd_2.dump @@ -0,0 +1,6 @@ +| +1&#ffffff0@74 +>a+0&&| @73 +|b| @73 +|c| @73 +|~+0#4040ff13&| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tabline_showcmd_3.dump b/src/testdir/dumps/Test_tabline_showcmd_3.dump new file mode 100644 index 0000000..3e29cda --- /dev/null +++ b/src/testdir/dumps/Test_tabline_showcmd_3.dump @@ -0,0 +1,6 @@ +|3+1&#ffffff0|x|2| @71 +|a+0&#e0e0e08| +0&#ffffff0@73 +|b+0&#e0e0e08| +0&#ffffff0@73 +|c+0&#e0e0e08> +0&#ffffff0@73 +|~+0#4040ff13&| @73 +|-+2#0000000&@1| |V|I|S|U|A|L| |B|L|O|C|K| |-@1| +0&&@38|3|,|2| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tabline_showcmd_4.dump b/src/testdir/dumps/Test_tabline_showcmd_4.dump new file mode 100644 index 0000000..f9aac49 --- /dev/null +++ b/src/testdir/dumps/Test_tabline_showcmd_4.dump @@ -0,0 +1,6 @@ +|1+1&#ffffff0|2|3|4| @70 +|a+0&&| @73 +|b| @73 +>c| @73 +|~+0#4040ff13&| @73 +| +0#0000000&@56|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tabline_showcmd_5.dump b/src/testdir/dumps/Test_tabline_showcmd_5.dump new file mode 100644 index 0000000..4eaa198 --- /dev/null +++ b/src/testdir/dumps/Test_tabline_showcmd_5.dump @@ -0,0 +1,6 @@ +| +2&#ffffff0|+| |[|N|o| |N|a|m|e|]| | +1&&@51|1+8#0000001#e0e0e08|2|3|4| +1#0000000#ffffff0@5 +|a+0&&| @73 +|b| @73 +>c| @73 +|~+0#4040ff13&| @73 +|:+0#0000000&| @55|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tabpage_cmdheight.dump b/src/testdir/dumps/Test_tabpage_cmdheight.dump new file mode 100644 index 0000000..74ac734 --- /dev/null +++ b/src/testdir/dumps/Test_tabpage_cmdheight.dump @@ -0,0 +1,20 @@ +| +8#0000001#e0e0e08|[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@51|X+8#0000001#e0e0e08 +> +0#0000000#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 +@75 +@75 diff --git a/src/testdir/dumps/Test_tenc_euc_jp_01.dump b/src/testdir/dumps/Test_tenc_euc_jp_01.dump new file mode 100644 index 0000000..14a4313 --- /dev/null +++ b/src/testdir/dumps/Test_tenc_euc_jp_01.dump @@ -0,0 +1,10 @@ +>E+0&#ffffff0|8|9|:| |バ*&|ッ|フ|ァ| +&|%|l|d| |の*&|変|更|は|保|存|さ|れ|て|い|ま|せ|ん| +&|(|!| |で*&|変|更|を|破|棄|)+&| @13 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|X+3#0000000&|e|u|c|_|j|p|.|t|x|t| @45|1|,|1| @11|A|l@1 +|E+0&&|8|3|:| |バ*&|ッ|フ|ァ|を|作|成|で|き|な|い|の|で|、|他|の|を|使|用|し|ま|す|.+&@2| @22 +|~+0#4040ff13&| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|5|2| @10|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_term_popup_bufline.dump b/src/testdir/dumps/Test_term_popup_bufline.dump new file mode 100644 index 0000000..50ba4a6 --- /dev/null +++ b/src/testdir/dumps/Test_term_popup_bufline.dump @@ -0,0 +1,15 @@ +|1+0&#ffffff0| @73 +|2| @73 +|3| @73 +|4| @73 +>5| @35|0+0#0000001#ffd7ff255| +0#0000000#ffffff0@36 +|~+0#4040ff13&| @35|1+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|!+2#ffffff16#00e0003|s|e|q| |1| |5| |[|f|i|n|i|s|h|e|d|]| @17|2+0#0000001#ffd7ff255| +2#ffffff16#00e0003@18|5|,|1| @11|A|l@1 +| +0#0000000#ffffff0@36|3+0#0000001#ffd7ff255| +0#0000000#ffffff0@36 +|~+0#4040ff13&| @35|4+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|~| @35| +0#0000001#ffd7ff255| +0#4040ff13#ffffff0@36 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_terminal_all_ansi_colors.dump b/src/testdir/dumps/Test_terminal_all_ansi_colors.dump new file mode 100644 index 0000000..2a0d481 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_all_ansi_colors.dump @@ -0,0 +1,10 @@ +>A+0#0000001#8080809@1|B+0#e000002#ff404010@1|C+0#00e0003#40ff4011@1|D+0#e0e0004#ffff4012@1|E+0#0000e05#4040ff13@1|F+0#e000e06#ff40ff14@1|G+0#00e0e07#40ffff15@1|H+0#e0e0e08#ffffff16@1|I+0#8080809#0000001@1|J+0#ff404010#e000002@1|K+0#40ff4011#00e0003@1|L+0#ffff4012#e0e0004@1|M+0#4040ff13#0000e05@1|N+0#ff40ff14#e000e06@1|O+0#40ffff15#00e0e07@1|P+0#ffffff16#e0e0e08@1| +0#0000000#ffffff0|X+2#e000002&@1|Y+2#40ff4011&@1|Z+2#ff40ff14#e000e06@1| +0#0000000#ffffff0@35 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_terminal_color_MyTermCol.dump b/src/testdir/dumps/Test_terminal_color_MyTermCol.dump new file mode 100644 index 0000000..8b16c28 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_MyTermCol.dump @@ -0,0 +1,15 @@ +|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +> +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|5+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|6+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|7+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|8+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|9+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|0| @34 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&@1| @34 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|2| @34 +|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump b/src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump new file mode 100644 index 0000000..8b16c28 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump @@ -0,0 +1,15 @@ +|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +> +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|5+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|6+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|7+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|8+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|9+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|0| @34 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&@1| @34 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|2| @34 +|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_MyWinCol.dump b/src/testdir/dumps/Test_terminal_color_MyWinCol.dump new file mode 100644 index 0000000..e89d056 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_MyWinCol.dump @@ -0,0 +1,15 @@ +|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +> +0#ff404010#e0e0004@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|5+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|6+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|7+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|8+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|9+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|0| @34 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&@1| @34 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|2| @34 +|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump b/src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump new file mode 100644 index 0000000..e89d056 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump @@ -0,0 +1,15 @@ +|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +> +0#ff404010#e0e0004@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|5+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|6+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|7+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|8+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|9+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|0| @34 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&@1| @34 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|1+0&&|2| @34 +|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_Terminal.dump b/src/testdir/dumps/Test_terminal_color_Terminal.dump new file mode 100644 index 0000000..9480ccf --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_Terminal.dump @@ -0,0 +1,15 @@ +|h+0#4040ff13#ffff4012|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#4040ff13#ffff4012|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +> +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|5+0&&| @35 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|6+0&&| @35 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|7+0&&| @35 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|8+0&&| @35 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|9+0&&| @35 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|1+0&&|0| @34 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|1+0&&@1| @34 +| +0#4040ff13#ffff4012@36||+1#0000000#ffffff0|1+0&&|2| @34 +|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump b/src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump new file mode 100644 index 0000000..363582f --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump @@ -0,0 +1,15 @@ +|h+0#007800255#6789ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#007800255#6789ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +> +0#007800255#6789ff255@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|5+0&&| @35 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|6+0&&| @35 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|7+0&&| @35 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|8+0&&| @35 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|9+0&&| @35 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|1+0&&|0| @34 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|1+0&&@1| @34 +| +0#007800255#6789ff255@36||+1#0000000#ffffff0|1+0&&|2| @34 +|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump b/src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump new file mode 100644 index 0000000..cb3d0c8 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump @@ -0,0 +1,15 @@ +|h+0#fe1122255#818100255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#fe1122255#818100255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +> +0#fe1122255#818100255@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|5+0&&| @35 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|6+0&&| @35 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|7+0&&| @35 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|8+0&&| @35 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|9+0&&| @35 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|1+0&&|0| @34 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|1+0&&@1| @34 +| +0#fe1122255#818100255@36||+1#0000000#ffffff0|1+0&&|2| @34 +|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_gui_Terminal.dump b/src/testdir/dumps/Test_terminal_color_gui_Terminal.dump new file mode 100644 index 0000000..c5455e4 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_gui_Terminal.dump @@ -0,0 +1,15 @@ +|h+0#3344ff255#b0a700255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#3344ff255#b0a700255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +> +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|5+0&&| @35 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|6+0&&| @35 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|7+0&&| @35 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|8+0&&| @35 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|9+0&&| @35 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|1+0&&|0| @34 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|1+0&&@1| @34 +| +0#3344ff255#b0a700255@36||+1#0000000#ffffff0|1+0&&|2| @34 +|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump b/src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump new file mode 100644 index 0000000..337c5a3 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump @@ -0,0 +1,15 @@ +|h+0#007800255#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35 +|h+0#007800255&|e|l@1|o| @31||+1#0000000&|1+0&&| @35 +> +0#007800255&@36||+1#0000000&|2+0&&| @35 +| +0#007800255&@36||+1#0000000&|3+0&&| @35 +| +0#007800255&@36||+1#0000000&|4+0&&| @35 +| +0#007800255&@36||+1#0000000&|5+0&&| @35 +| +0#007800255&@36||+1#0000000&|6+0&&| @35 +| +0#007800255&@36||+1#0000000&|7+0&&| @35 +| +0#007800255&@36||+1#0000000&|8+0&&| @35 +| +0#007800255&@36||+1#0000000&|9+0&&| @35 +| +0#007800255&@36||+1#0000000&|1+0&&|0| @34 +| +0#007800255&@36||+1#0000000&|1+0&&@1| @34 +| +0#007800255&@36||+1#0000000&|1+0&&|2| @34 +|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump b/src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump new file mode 100644 index 0000000..42cb856 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump @@ -0,0 +1,15 @@ +|h+0#fe1122255#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35 +|h+0#fe1122255&|e|l@1|o| @31||+1#0000000&|1+0&&| @35 +> +0#fe1122255&@36||+1#0000000&|2+0&&| @35 +| +0#fe1122255&@36||+1#0000000&|3+0&&| @35 +| +0#fe1122255&@36||+1#0000000&|4+0&&| @35 +| +0#fe1122255&@36||+1#0000000&|5+0&&| @35 +| +0#fe1122255&@36||+1#0000000&|6+0&&| @35 +| +0#fe1122255&@36||+1#0000000&|7+0&&| @35 +| +0#fe1122255&@36||+1#0000000&|8+0&&| @35 +| +0#fe1122255&@36||+1#0000000&|9+0&&| @35 +| +0#fe1122255&@36||+1#0000000&|1+0&&|0| @34 +| +0#fe1122255&@36||+1#0000000&|1+0&&@1| @34 +| +0#fe1122255&@36||+1#0000000&|1+0&&|2| @34 +|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump b/src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump new file mode 100644 index 0000000..3e640bf --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump @@ -0,0 +1,15 @@ +|h+0#3344ff255#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35 +|h+0#3344ff255&|e|l@1|o| @31||+1#0000000&|1+0&&| @35 +> +0#3344ff255&@36||+1#0000000&|2+0&&| @35 +| +0#3344ff255&@36||+1#0000000&|3+0&&| @35 +| +0#3344ff255&@36||+1#0000000&|4+0&&| @35 +| +0#3344ff255&@36||+1#0000000&|5+0&&| @35 +| +0#3344ff255&@36||+1#0000000&|6+0&&| @35 +| +0#3344ff255&@36||+1#0000000&|7+0&&| @35 +| +0#3344ff255&@36||+1#0000000&|8+0&&| @35 +| +0#3344ff255&@36||+1#0000000&|9+0&&| @35 +| +0#3344ff255&@36||+1#0000000&|1+0&&|0| @34 +| +0#3344ff255&@36||+1#0000000&|1+0&&@1| @34 +| +0#3344ff255&@36||+1#0000000&|1+0&&|2| @34 +|!+2#ffffff255#006400255|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump b/src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump new file mode 100644 index 0000000..3fe2ec1 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump @@ -0,0 +1,15 @@ +|h+0#00e0003#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35 +|h+0#00e0003&|e|l@1|o| @31||+1#0000000&|1+0&&| @35 +> +0#00e0003&@36||+1#0000000&|2+0&&| @35 +| +0#00e0003&@36||+1#0000000&|3+0&&| @35 +| +0#00e0003&@36||+1#0000000&|4+0&&| @35 +| +0#00e0003&@36||+1#0000000&|5+0&&| @35 +| +0#00e0003&@36||+1#0000000&|6+0&&| @35 +| +0#00e0003&@36||+1#0000000&|7+0&&| @35 +| +0#00e0003&@36||+1#0000000&|8+0&&| @35 +| +0#00e0003&@36||+1#0000000&|9+0&&| @35 +| +0#00e0003&@36||+1#0000000&|1+0&&|0| @34 +| +0#00e0003&@36||+1#0000000&|1+0&&@1| @34 +| +0#00e0003&@36||+1#0000000&|1+0&&|2| @34 +|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump b/src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump new file mode 100644 index 0000000..2648d5a --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump @@ -0,0 +1,15 @@ +|h+0#ff404010#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35 +|h+0#ff404010&|e|l@1|o| @31||+1#0000000&|1+0&&| @35 +> +0#ff404010&@36||+1#0000000&|2+0&&| @35 +| +0#ff404010&@36||+1#0000000&|3+0&&| @35 +| +0#ff404010&@36||+1#0000000&|4+0&&| @35 +| +0#ff404010&@36||+1#0000000&|5+0&&| @35 +| +0#ff404010&@36||+1#0000000&|6+0&&| @35 +| +0#ff404010&@36||+1#0000000&|7+0&&| @35 +| +0#ff404010&@36||+1#0000000&|8+0&&| @35 +| +0#ff404010&@36||+1#0000000&|9+0&&| @35 +| +0#ff404010&@36||+1#0000000&|1+0&&|0| @34 +| +0#ff404010&@36||+1#0000000&|1+0&&@1| @34 +| +0#ff404010&@36||+1#0000000&|1+0&&|2| @34 +|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_color_transp_Terminal.dump b/src/testdir/dumps/Test_terminal_color_transp_Terminal.dump new file mode 100644 index 0000000..33d0281 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_color_transp_Terminal.dump @@ -0,0 +1,15 @@ +|h+0#4040ff13#ffffff0|e|l@1|o| @31||+1#0000000&|0+0&&| @35 +|h+0#4040ff13&|e|l@1|o| @31||+1#0000000&|1+0&&| @35 +> +0#4040ff13&@36||+1#0000000&|2+0&&| @35 +| +0#4040ff13&@36||+1#0000000&|3+0&&| @35 +| +0#4040ff13&@36||+1#0000000&|4+0&&| @35 +| +0#4040ff13&@36||+1#0000000&|5+0&&| @35 +| +0#4040ff13&@36||+1#0000000&|6+0&&| @35 +| +0#4040ff13&@36||+1#0000000&|7+0&&| @35 +| +0#4040ff13&@36||+1#0000000&|8+0&&| @35 +| +0#4040ff13&@36||+1#0000000&|9+0&&| @35 +| +0#4040ff13&@36||+1#0000000&|1+0&&|0| @34 +| +0#4040ff13&@36||+1#0000000&|1+0&&@1| @34 +| +0#4040ff13&@36||+1#0000000&|1+0&&|2| @34 +|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|c|a|l@1| |O|p|e|n|T|e|r|m|(|)| @58 diff --git a/src/testdir/dumps/Test_terminal_combining.dump b/src/testdir/dumps/Test_terminal_combining.dump new file mode 100644 index 0000000..390da0a --- /dev/null +++ b/src/testdir/dumps/Test_terminal_combining.dump @@ -0,0 +1,9 @@ +>ポ*0&#ffffff0| +&@72 +|~+0#4040ff13&| @73 +|~| @73 +|!+2#ffffff16#00e0003|/|b|i|n|/|s|h| |[|f|i|n|i|s|h|e|d|]| @37|1|,|1| @11|A|l@1 +| +0#0000000#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_terminal_dumpload.dump b/src/testdir/dumps/Test_terminal_dumpload.dump new file mode 100644 index 0000000..7d2e1b0 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_dumpload.dump @@ -0,0 +1,15 @@ +>1+0&#ffffff0| @73 +|2| |╔+0fd7ff255|═@11|╗| +0&#ffffff0@5|╔+0&#dadada255|═@11|╗+0a8a8a255| +0&#ffffff0@5|x+0fd7ff255@13| +0&#ffffff0@2|#+0fd7ff255|x@11|#| +0&#ffffff0@1 +|3| |║+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|║+0#0000000#5fd7ff255| +0&#ffffff0@5|║+0&#a8a8a8255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|║+0#0000000#8a8a8a255| +0&#ffffff0@5|x+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|x+0#0000000#5fd7ff255| +0&#ffffff0@2|x+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|x+0#0000000#5fd7ff255| +0&#ffffff0@1 +|4| |╚+0fd7ff255|═@11|╝| +0&#ffffff0@5|║+0&#a8a8a8255|a+0#0000001#ffd7ff255|n|d| |m|o|r|e| @3|║+0#0000000#8a8a8a255| +0&#ffffff0@5|x+0fd7ff255|l+0#0000001#ffd7ff255|i|n|e|s| |o|n|l|y| @1|x+0#0000000#5fd7ff255| +0&#ffffff0@2|x+0fd7ff255|w+0#0000001#ffd7ff255|i|t|h| |c|o|r|n|e|r|s|x+0#0000000#5fd7ff255| +0&#ffffff0@1 +|5| @20|╚+0�|═@11|╝| +0&#ffffff0@5|x+0fd7ff255@13| +0&#ffffff0@2|#+0fd7ff255|x@11|#| +0&#ffffff0@1 +|6| |4+0fd7ff255|0@11|5| +0&#ffffff0@58 +|7| |3+0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r|1+0#0000000#5fd7ff255| +0&#ffffff0@5| +0fd7ff255@13| +0&#ffffff0@38 +|8| |3+0fd7ff255|w+0#0000001#ffd7ff255|i|t|h| |n|u|m|b|e|r|s|1+0#0000000#5fd7ff255| +0&#ffffff0@5| +0fd7ff255|h+0#0000001#ffd7ff255|e|l@1|o| |b|o|r|d|e|r| +0#0000000#5fd7ff255| +0&#ffffff0@38 +|9| |7+0fd7ff255|2@11|6| +0&#ffffff0@5| +0fd7ff255|j+0#0000001#ffd7ff255|u|s|t| |b|l|a|n|k|s| | +0#0000000#5fd7ff255| +0&#ffffff0@38 +|1|0| @19| +0fd7ff255@13| +0&#ffffff0@38 +|1@1| @72 +|d+2#ffffff16#00e0003|u|m|p| |d|i|f@1| |d|u|m|p|s|/|T|e|s|t|_|p|o|p|u|p|w|i|n|_|2@1|.|d|u|m|p| |[|f|i|n|i|s|h|e|d|]| @8|1|,|1| @11|T|o|p +| +0#0000000#ffffff0@74 +|[+1&&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_terminal_focus_1.dump b/src/testdir/dumps/Test_terminal_focus_1.dump new file mode 100644 index 0000000..caf67e7 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_focus_1.dump @@ -0,0 +1,6 @@ +>I+0&#ffffff0| |a|m| |l|o|s|t| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_terminal_focus_2.dump b/src/testdir/dumps/Test_terminal_focus_2.dump new file mode 100644 index 0000000..d02c151 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_focus_2.dump @@ -0,0 +1,6 @@ +>I+0&#ffffff0| |a|m| |b|a|c|k| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_terminal_focus_3.dump b/src/testdir/dumps/Test_terminal_focus_3.dump new file mode 100644 index 0000000..8ece5a2 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_focus_3.dump @@ -0,0 +1,6 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|x@73 +@6> @68 diff --git a/src/testdir/dumps/Test_terminal_from_cmd.dump b/src/testdir/dumps/Test_terminal_from_cmd.dump new file mode 100644 index 0000000..5eea73f --- /dev/null +++ b/src/testdir/dumps/Test_terminal_from_cmd.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@74 +@75 +@75 +@75 +@75 +@75 +@75 +@75 +@75 +|!+2#ffffff16#00e0003|/|b|i|n|/|s|h| |[|f|i|n|i|s|h|e|d|]| @37|0|,|0|-|1| @9|A|l@1 +|a+0#0000000#ffffff0| @73 +|b| @73 +|c| @73 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|3|,|1| @11|A|l@1 +|/+0&&> @73 diff --git a/src/testdir/dumps/Test_terminal_normal_1.dump b/src/testdir/dumps/Test_terminal_normal_1.dump new file mode 100644 index 0000000..471419a --- /dev/null +++ b/src/testdir/dumps/Test_terminal_normal_1.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| |1+0#0000000&@4| @65 +| +0#af5f00255&@1|2| |1+0#0000000&@3|2| @65 +| +8#af5f00255&@1|3| >1+8#0000000&@3|3| @65 +| +0#af5f00255&@1|4| |1+0#0000000&@3|4| @65 +| +0#af5f00255&@1|5| |1+0#0000000&@3|5| @65 +| +0#af5f00255&@1|6| |1+0#0000000&@3|6| @65 +| +0#af5f00255&@1|7| |1+0#0000000&@3|7| @65 +|:|s|e|t| |n|u|m|b|e|r| |c|u|r|s|o|r|l|i|n|e| |c|u|l|o|p|t|=|b|o|t|h| @22|3|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_terminal_normal_2.dump b/src/testdir/dumps/Test_terminal_normal_2.dump new file mode 100644 index 0000000..b255d89 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_normal_2.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| |1+0#0000000&@4| @65 +| +0#af5f00255&@1|2| |1+0#0000000&@3|2| @65 +| +8#af5f00255&@1|3| >1+0#0000000&@3|3| @65 +| +0#af5f00255&@1|4| |1+0#0000000&@3|4| @65 +| +0#af5f00255&@1|5| |1+0#0000000&@3|5| @65 +| +0#af5f00255&@1|6| |1+0#0000000&@3|6| @65 +| +0#af5f00255&@1|7| |1+0#0000000&@3|7| @65 +|:|s|e|t| |c|u|l|o|p|t|=|n|u|m|b|e|r| @38|3|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_terminal_normal_3.dump b/src/testdir/dumps/Test_terminal_normal_3.dump new file mode 100644 index 0000000..aa82fe8 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_normal_3.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| |1+0#0000000&@4| @65 +| +0#af5f00255&@1|2| |1+0#0000000&@3|2| @65 +| +0#af5f00255&@1|3| >1+8#0000000&@3|3| @65 +| +0#af5f00255&@1|4| |1+0#0000000&@3|4| @65 +| +0#af5f00255&@1|5| |1+0#0000000&@3|5| @65 +| +0#af5f00255&@1|6| |1+0#0000000&@3|6| @65 +| +0#af5f00255&@1|7| |1+0#0000000&@3|7| @65 +|:|s|e|t| |c|u|l|o|p|t|=|l|i|n|e| @40|3|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_terminal_popup_1.dump b/src/testdir/dumps/Test_terminal_popup_1.dump new file mode 100644 index 0000000..d4311ba --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_1.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @12|╔+0#0000001#ffd7ff255|═@44|╗| +0#0000000#ffffff0@13 +|4| @12|║+0#0000001#ffd7ff255>s+0#0000000#ffffff0|o|m|e| |t|e|x|t| @35|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|5| @12|║+0#0000001#ffd7ff255|t+0#0000000#ffffff0|o| |e|d|i|t| @37|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|6| @12|║+0#0000001#ffd7ff255|i+0#0000000#ffffff0|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| @27|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|7| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|8| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|9| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|1|0| @11|║+0#0000001#ffd7ff255|:+0#0000000#ffffff0| @25|1|,|1| @10|A|l@1| |║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|1@1| @11|╚+0#0000001#ffd7ff255|═@44|⇲| +0#0000000#ffffff0@13 +|1|2| @72 +|1|3| @72 +|t|e|r|m|i|n|a|l| |p|o|p|u|p| @60 diff --git a/src/testdir/dumps/Test_terminal_popup_2.dump b/src/testdir/dumps/Test_terminal_popup_2.dump new file mode 100644 index 0000000..5e53e71 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_2.dump @@ -0,0 +1,15 @@ +>0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|1|0| @72 +|1@1| @72 +|1|2| @72 +|1|3| @72 +|"|[|N|o| |N|a|m|e|]|"| |[|M|o|d|i|f|i|e|d|]| |l|i|n|e| |1| |o|f| |2|0| |-@1|5|%|-@1| |c|o|l| |1| @26 diff --git a/src/testdir/dumps/Test_terminal_popup_3.dump b/src/testdir/dumps/Test_terminal_popup_3.dump new file mode 100644 index 0000000..9177082 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_3.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @12|╔+0&#a8a8a8255|═@44|╗| +0&#ffffff0@13 +|4| @12|║+0&#a8a8a8255|s|o|m|e| |t|e|x|t| @35|║| +0&#ffffff0@13 +|5| @12|║+0&#a8a8a8255|t|o| >e+0&#ffff4012|d|i|t| +0&#a8a8a8255@37|║| +0&#ffffff0@13 +|6| @12|║+0&#a8a8a8255|i|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| @27|║| +0&#ffffff0@13 +|7| @12|║+0&#a8a8a8255|~+0#4040ff13&| @43|║+0#0000000&| +0&#ffffff0@13 +|8| @12|║+0&#a8a8a8255|~+0#4040ff13&| @43|║+0#0000000&| +0&#ffffff0@13 +|9| @12|║+0&#a8a8a8255|~+0#4040ff13&| @43|║+0#0000000&| +0&#ffffff0@13 +|1|0| @11|║+0&#a8a8a8255|/|e|d|i|t| @21|2|,|4| @10|A|l@1| |║| +0&#ffffff0@13 +|1@1| @11|╚+0&#a8a8a8255|═@44|⇲| +0&#ffffff0@13 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_4.dump b/src/testdir/dumps/Test_terminal_popup_4.dump new file mode 100644 index 0000000..de1e6c9 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_4.dump @@ -0,0 +1,15 @@ +|3+0&#ffffff0| @12|╔+0&#a8a8a8255|═@44|╗| +0&#ffffff0@13 +|4| @12|║+0&#a8a8a8255|s|o|m|e| |t|e|x|t| @35|║| +0&#ffffff0@13 +|5| @12|║+0&#a8a8a8255|t|o| |e+0&#ffff4012|d|i|t| +0&#a8a8a8255@37|║| +0&#ffffff0@13 +|6| @12|║+0&#a8a8a8255|i|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| @27|║| +0&#ffffff0@13 +|7| @12|║+0&#a8a8a8255|~+0#4040ff13&| @43|║+0#0000000&| +0&#ffffff0@13 +|8| @12|║+0&#a8a8a8255|~+0#4040ff13&| @43|║+0#0000000&| +0&#ffffff0@13 +|9| @12|║+0&#a8a8a8255|~+0#4040ff13&| @43|║+0#0000000&| +0&#ffffff0@13 +|1|0| @11|║+0&#a8a8a8255|/|e|d|i|t| @21|2|,|4| @10|A|l@1| |║| +0&#ffffff0@13 +|1@1| @11|╚+0&#a8a8a8255|═@44|⇲| +0&#ffffff0@13 +|1|2| @72 +|1|3| @72 +|E+0#ffffff16#e000002|r@1|o|r| |d|e|t|e|c|t|e|d| |w|h|i|l|e| |p|r|o|c|e|s@1|i|n|g| |f|u|n|c|t|i|o|n| |H|i|d|e|P|o|p|u|p|:| +0#0000000#ffffff0@23 +|l+0#af5f00255&|i|n|e| @3|1|:| +0#0000000&@64 +|E+0#ffffff16#e000002|8|6|3|:| |N|o|t| |a|l@1|o|w|e|d| |f|o|r| |a| |t|e|r|m|i|n|a|l| |i|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| +0#0000000#ffffff0@24 +|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@35 diff --git a/src/testdir/dumps/Test_terminal_popup_5.dump b/src/testdir/dumps/Test_terminal_popup_5.dump new file mode 100644 index 0000000..42808b0 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_5.dump @@ -0,0 +1,15 @@ +>0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|9| @73 +|1|0| @72 +|1@1| @72 +|1|2| @72 +|1|3| @72 +|:|c|a|l@1| |C|l|o|s|e|P|o|p|u|p|(|)| @56 diff --git a/src/testdir/dumps/Test_terminal_popup_6.dump b/src/testdir/dumps/Test_terminal_popup_6.dump new file mode 100644 index 0000000..da5cf46 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_6.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @12|╔+0#0000001#ffd7ff255|═@44|╗| +0#0000000#ffffff0@13 +|4| @12|║+0#0000001#ffd7ff255|s+0#0000000#ffffff0|o|m|e| |t|e|x|t| @35|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|5| @12|║+0#0000001#ffd7ff255|t+0#0000000#ffffff0|o| >e+0&#ffff4012|d|i|t| +0&#ffffff0@37|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|6| @12|║+0#0000001#ffd7ff255|i+0#0000000#ffffff0|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| @27|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|7| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|8| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|9| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|1|0| @11|║+0#0000001#ffd7ff255|/+0#0000000#ffffff0|e|d|i|t| @21|2|,|4| @10|A|l@1| |║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|1@1| @11|╚+0#0000001#ffd7ff255|═@44|╝| +0#0000000#ffffff0@13 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_7.dump b/src/testdir/dumps/Test_terminal_popup_7.dump new file mode 100644 index 0000000..e7e5aae --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_7.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @12|╔+0#0000001#ffd7ff255|═@44|╗| +0#0000000#ffffff0@13 +|4| @12|║+0#0000001#ffd7ff255|s|o|m|e| |t|e|x|t| @35|║| +0#0000000#ffffff0@13 +|5| @12|║+0#0000001#ffd7ff255|t|o| |e+0&#ffff4012|d|i|t| +0&#ffd7ff255@37|║| +0#0000000#ffffff0@13 +|6| @12|║+0#0000001#ffd7ff255|i+0&#e0e0e08|n| |a| >p+0&#ffd7ff255|o|p|u|p| |w|i|n|d|o|w| @27|║| +0#0000000#ffffff0@13 +|7| @12|║+0#0000001#ffd7ff255|~+0#4040ff13&| @43|║+0#0000001&| +0#0000000#ffffff0@13 +|8| @12|║+0#0000001#ffd7ff255|~+0#4040ff13&| @43|║+0#0000001&| +0#0000000#ffffff0@13 +|9| @12|║+0#0000001#ffd7ff255|~+0#4040ff13&| @43|║+0#0000001&| +0#0000000#ffffff0@13 +|1|0| @11|║+0#0000001#ffd7ff255|/|e|d|i|t| @21|2|,|4| @10|A|l@1| |║| +0#0000000#ffffff0@13 +|1@1| @11|╚+0#0000001#ffd7ff255|═@44|╝| +0#0000000#ffffff0@13 +|1|2| @72 +|1|3| @72 +|-+2&&@1| |V|I|S|U|A|L| |-@1| +0&&@51|6| @9 diff --git a/src/testdir/dumps/Test_terminal_popup_8.dump b/src/testdir/dumps/Test_terminal_popup_8.dump new file mode 100644 index 0000000..da5cf46 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_8.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @12|╔+0#0000001#ffd7ff255|═@44|╗| +0#0000000#ffffff0@13 +|4| @12|║+0#0000001#ffd7ff255|s+0#0000000#ffffff0|o|m|e| |t|e|x|t| @35|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|5| @12|║+0#0000001#ffd7ff255|t+0#0000000#ffffff0|o| >e+0&#ffff4012|d|i|t| +0&#ffffff0@37|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|6| @12|║+0#0000001#ffd7ff255|i+0#0000000#ffffff0|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| @27|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|7| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|8| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|9| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|1|0| @11|║+0#0000001#ffd7ff255|/+0#0000000#ffffff0|e|d|i|t| @21|2|,|4| @10|A|l@1| |║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13 +|1@1| @11|╚+0#0000001#ffd7ff255|═@44|╝| +0#0000000#ffffff0@13 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump b/src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump new file mode 100644 index 0000000..639ba98 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#40ffff15#40ff4011|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#40ffff15#40ff4011|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|6| @24|║+0#40ffff15#40ff4011|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|7| @24|║+0#40ffff15#40ff4011> @19|║| +0#0000000#ffffff0@26 +|8| @24|║+0#40ffff15#40ff4011| @19|║| +0#0000000#ffffff0@26 +|9| @24|║+0#40ffff15#40ff4011| @19|║| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#40ffff15#40ff4011|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_MyTermCol.dump b/src/testdir/dumps/Test_terminal_popup_MyTermCol.dump new file mode 100644 index 0000000..82fcec7 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_MyTermCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#0000001#ffd7ff255|h+0#00e0003#5fd7ff255|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|6| @24|║+0#0000001#ffd7ff255|h+0#00e0003#5fd7ff255|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|7| @24|║+0#0000001#ffd7ff255> +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|8| @24|║+0#0000001#ffd7ff255| +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|9| @24|║+0#0000001#ffd7ff255| +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump b/src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump new file mode 100644 index 0000000..82fcec7 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#0000001#ffd7ff255|h+0#00e0003#5fd7ff255|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|6| @24|║+0#0000001#ffd7ff255|h+0#00e0003#5fd7ff255|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|7| @24|║+0#0000001#ffd7ff255> +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|8| @24|║+0#0000001#ffd7ff255| +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|9| @24|║+0#0000001#ffd7ff255| +0#00e0003#5fd7ff255@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_MyWinCol.dump b/src/testdir/dumps/Test_terminal_popup_MyWinCol.dump new file mode 100644 index 0000000..502782a --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_MyWinCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#ff404010#e0e0004|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|6| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|7| @24|║+0#ff404010#e0e0004> @19|║| +0#0000000#ffffff0@26 +|8| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26 +|9| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#ff404010#e0e0004|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump b/src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump new file mode 100644 index 0000000..502782a --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#ff404010#e0e0004|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|6| @24|║+0#ff404010#e0e0004|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|7| @24|║+0#ff404010#e0e0004> @19|║| +0#0000000#ffffff0@26 +|8| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26 +|9| @24|║+0#ff404010#e0e0004| @19|║| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#ff404010#e0e0004|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_Terminal.dump b/src/testdir/dumps/Test_terminal_popup_Terminal.dump new file mode 100644 index 0000000..938b419 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_Terminal.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#0000001#ffd7ff255|h+0#4040ff13#ffff4012|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|6| @24|║+0#0000001#ffd7ff255|h+0#4040ff13#ffff4012|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|7| @24|║+0#0000001#ffd7ff255> +0#4040ff13#ffff4012@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|8| @24|║+0#0000001#ffd7ff255| +0#4040ff13#ffff4012@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|9| @24|║+0#0000001#ffd7ff255| +0#4040ff13#ffff4012@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump new file mode 100644 index 0000000..5eb125f --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#00e8f0255#126521255|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#00e8f0255#126521255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|6| @24|║+0#00e8f0255#126521255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|7| @24|║+0#00e8f0255#126521255> @19|║| +0#0000000#ffffff0@26 +|8| @24|║+0#00e8f0255#126521255| @19|║| +0#0000000#ffffff0@26 +|9| @24|║+0#00e8f0255#126521255| @19|║| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#00e8f0255#126521255|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump new file mode 100644 index 0000000..a4570e4 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26 +|5| @24|║+0&#ff8bff255|h+0#007800255#6789ff255|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|6| @24|║+0&#ff8bff255|h+0#007800255#6789ff255|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|7| @24|║+0&#ff8bff255> +0#007800255#6789ff255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|8| @24|║+0&#ff8bff255| +0#007800255#6789ff255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|9| @24|║+0&#ff8bff255| +0#007800255#6789ff255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump new file mode 100644 index 0000000..10ed686 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#fe1122255#818100255|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#fe1122255#818100255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|6| @24|║+0#fe1122255#818100255|h|e|l@1|o| @14|║| +0#0000000#ffffff0@26 +|7| @24|║+0#fe1122255#818100255> @19|║| +0#0000000#ffffff0@26 +|8| @24|║+0#fe1122255#818100255| @19|║| +0#0000000#ffffff0@26 +|9| @24|║+0#fe1122255#818100255| @19|║| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#fe1122255#818100255|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump b/src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump new file mode 100644 index 0000000..eff82b7 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26 +|5| @24|║+0&#ff8bff255|h+0#3344ff255#b0a700255|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|6| @24|║+0&#ff8bff255|h+0#3344ff255#b0a700255|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|7| @24|║+0&#ff8bff255> +0#3344ff255#b0a700255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|8| @24|║+0&#ff8bff255| +0#3344ff255#b0a700255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|9| @24|║+0&#ff8bff255| +0#3344ff255#b0a700255@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump new file mode 100644 index 0000000..763929f --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#00e8f0255&|═@19|╗| +0#0000000&@26 +|5| @24|║+0#00e8f0255&|h|e|l@1|o| @14|║| +0#0000000&@26 +|6| @24|║+0#00e8f0255&|h|e|l@1|o| @14|║| +0#0000000&@26 +|7| @24|║+0#00e8f0255&> @19|║| +0#0000000&@26 +|8| @24|║+0#00e8f0255&| @19|║| +0#0000000&@26 +|9| @24|║+0#00e8f0255&| @19|║| +0#0000000&@26 +|1|0| @23|╚+0#00e8f0255&|═@19|╝| +0#0000000&@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump new file mode 100644 index 0000000..f0621c1 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26 +|5| @24|║+0&#ff8bff255|h+0#007800255#ffffff0|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|6| @24|║+0&#ff8bff255|h+0#007800255#ffffff0|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|7| @24|║+0&#ff8bff255> +0#007800255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|8| @24|║+0&#ff8bff255| +0#007800255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|9| @24|║+0&#ff8bff255| +0#007800255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump new file mode 100644 index 0000000..d7067c1 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#fe1122255&|═@19|╗| +0#0000000&@26 +|5| @24|║+0#fe1122255&|h|e|l@1|o| @14|║| +0#0000000&@26 +|6| @24|║+0#fe1122255&|h|e|l@1|o| @14|║| +0#0000000&@26 +|7| @24|║+0#fe1122255&> @19|║| +0#0000000&@26 +|8| @24|║+0#fe1122255&| @19|║| +0#0000000&@26 +|9| @24|║+0#fe1122255&| @19|║| +0#0000000&@26 +|1|0| @23|╚+0#fe1122255&|═@19|╝| +0#0000000&@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump b/src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump new file mode 100644 index 0000000..072e2f8 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0&#ff8bff255|═@19|╗| +0&#ffffff0@26 +|5| @24|║+0&#ff8bff255|h+0#3344ff255#ffffff0|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|6| @24|║+0&#ff8bff255|h+0#3344ff255#ffffff0|e|l@1|o| @14|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|7| @24|║+0&#ff8bff255> +0#3344ff255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|8| @24|║+0&#ff8bff255| +0#3344ff255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|9| @24|║+0&#ff8bff255| +0#3344ff255#ffffff0@19|║+0#0000000#ff8bff255| +0&#ffffff0@26 +|1|0| @23|╚+0&#ff8bff255|═@19|╝| +0&#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_m1.dump b/src/testdir/dumps/Test_terminal_popup_m1.dump new file mode 100644 index 0000000..0ab9534 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_m1.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#0000001#ffd7ff255|a|n|o|t|h|e|r| |t|e|x|t| @7|║| +0#0000000#ffffff0@26 +|6| @24|║+0#0000001#ffd7ff255|t|o| |s|h|o|w| @12|║| +0#0000000#ffffff0@26 +|7| @24|║+0#0000001#ffd7ff255>i|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| @2|║| +0#0000000#ffffff0@26 +|8| @24|║+0#0000001#ffd7ff255| +0#4040ff13&@19|║+0#0000001&| +0#0000000#ffffff0@26 +|9| @24|║+0#0000001#ffd7ff255| +0#4040ff13&@19|║+0#0000001&| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +|:| @73 diff --git a/src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump b/src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump new file mode 100644 index 0000000..508d812 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#40ffff15&|═@19|╗| +0#0000000&@26 +|5| @24|║+0#40ffff15&|h|e|l@1|o| @14|║| +0#0000000&@26 +|6| @24|║+0#40ffff15&|h|e|l@1|o| @14|║| +0#0000000&@26 +|7| @24|║+0#40ffff15&> @19|║| +0#0000000&@26 +|8| @24|║+0#40ffff15&| @19|║| +0#0000000&@26 +|9| @24|║+0#40ffff15&| @19|║| +0#0000000&@26 +|1|0| @23|╚+0#40ffff15&|═@19|╝| +0#0000000&@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump b/src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump new file mode 100644 index 0000000..9336e76 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#0000001#ffd7ff255|h+0#00e0003#ffffff0|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|6| @24|║+0#0000001#ffd7ff255|h+0#00e0003#ffffff0|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|7| @24|║+0#0000001#ffd7ff255> +0#00e0003#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|8| @24|║+0#0000001#ffd7ff255| +0#00e0003#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|9| @24|║+0#0000001#ffd7ff255| +0#00e0003#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump b/src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump new file mode 100644 index 0000000..9669964 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#ff404010&|═@19|╗| +0#0000000&@26 +|5| @24|║+0#ff404010&|h|e|l@1|o| @14|║| +0#0000000&@26 +|6| @24|║+0#ff404010&|h|e|l@1|o| @14|║| +0#0000000&@26 +|7| @24|║+0#ff404010&> @19|║| +0#0000000&@26 +|8| @24|║+0#ff404010&| @19|║| +0#0000000&@26 +|9| @24|║+0#ff404010&| @19|║| +0#0000000&@26 +|1|0| @23|╚+0#ff404010&|═@19|╝| +0#0000000&@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump b/src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump new file mode 100644 index 0000000..828b0f5 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @24|╔+0#0000001#ffd7ff255|═@19|╗| +0#0000000#ffffff0@26 +|5| @24|║+0#0000001#ffd7ff255|h+0#4040ff13#ffffff0|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|6| @24|║+0#0000001#ffd7ff255|h+0#4040ff13#ffffff0|e|l@1|o| @14|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|7| @24|║+0#0000001#ffd7ff255> +0#4040ff13#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|8| @24|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|9| @24|║+0#0000001#ffd7ff255| +0#4040ff13#ffffff0@19|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26 +|1|0| @23|╚+0#0000001#ffd7ff255|═@19|╝| +0#0000000#ffffff0@26 +|1@1| @72 +|1|2| @72 +|1|3| @72 +@75 diff --git a/src/testdir/dumps/Test_terminal_scrollback_1.dump b/src/testdir/dumps/Test_terminal_scrollback_1.dump new file mode 100644 index 0000000..a242bb7 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_scrollback_1.dump @@ -0,0 +1,20 @@ +|4+0&#ffffff0|2| @72 +|4|3| @72 +|4@1| @72 +|4|5| @72 +|4|6| @72 +|4|7| @72 +|4|8| @72 +>4|9| @72 +|~+0#4040ff13&| @73 +|!+2#ffffff16#00e0003|/|b|i|n|/|s|h| |[|T|e|r|m|i|n|a|l|]| @55 +| +0#0000000#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @65 +| +0&&@74 diff --git a/src/testdir/dumps/Test_terminal_scrollback_2.dump b/src/testdir/dumps/Test_terminal_scrollback_2.dump new file mode 100644 index 0000000..427a9ad --- /dev/null +++ b/src/testdir/dumps/Test_terminal_scrollback_2.dump @@ -0,0 +1,20 @@ +|4+0&#ffffff0|2| @72 +|4|3| @72 +|4@1| @72 +|4|5| @72 +|4|6| @72 +|4|7| @72 +>4|8| @72 +|4|9| @72 +|~+0#4040ff13&| @73 +|!+2#ffffff16#00e0003|/|b|i|n|/|s|h| |[|T|e|r|m|i|n|a|l|]| @55 +| +0#0000000#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @65 +| +0&&@74 diff --git a/src/testdir/dumps/Test_terminal_scrollback_3.dump b/src/testdir/dumps/Test_terminal_scrollback_3.dump new file mode 100644 index 0000000..0796088 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_scrollback_3.dump @@ -0,0 +1,20 @@ +|4+0&#ffffff0|3| @72 +|4@1| @72 +|4|5| @72 +|4|6| @72 +|4|7| @72 +|4|8| @72 +|4|9| @72 +|o|n|e| |m|o|r|e| |l|i|n|e| @61 +> @74 +|!+2#ffffff16#00e0003|/|b|i|n|/|s|h| |[|r|u|n@1|i|n|g|]| @56 +| +0#0000000#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+1#0000000&|N|o| |N|a|m|e|]| @65 +| +0&&@74 diff --git a/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump b/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump new file mode 100644 index 0000000..3633ffe --- /dev/null +++ b/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump @@ -0,0 +1,15 @@ +|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +> +0#ff404010#e0e0004@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0|5+0&&| @35 +|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @22||+1#0000000#ffffff0|6+0&&| @35 +|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|7+0&&| @35 +|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|8+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|9+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|0| @34 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&@1| @34 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|1+0&&|2| @34 +|!+0#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|s|e|t| |w|i|n|c|o|l|o|r|=|M|y|W|i|n|C|o|l| @52 diff --git a/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump b/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump new file mode 100644 index 0000000..ce69e3b --- /dev/null +++ b/src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump @@ -0,0 +1,15 @@ +|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|h+0#0000001#4040ff13|e|l@1|o| @31 +|h+0#ff404010#e0e0004|e|l@1|o| @31||+1#0000000#ffffff0|h+0#0000001#4040ff13|e|l@1|o| @31 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0> +0#0000001#4040ff13@36 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0| +0#0000001#4040ff13@36 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0| +0#0000001#4040ff13@36 +| +0#ff404010#e0e0004@36||+1#0000000#ffffff0| +0#0000001#4040ff13@36 +|!+0#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @22||+1#0000000#ffffff0|!+2#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @22 +|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|0+0&&| @35 +|h+0#00e0003#5fd7ff255|e|l@1|o| @31||+1#0000000#ffffff0|1+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|2+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|3+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|4+0&&| @35 +| +0#00e0003#5fd7ff255@36||+1#0000000#ffffff0|5+0&&| @35 +|!+0#ffffff16#00e0003|c|a|t| |[|r|u|n@1|i|n|g|]| @23|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @23 +|:+0&&|s|e|t| |w|i|n|c|o|l|o|r|=|M|y|W|i|n|C|o|l|2| @51 diff --git a/src/testdir/dumps/Test_text_after_nowrap_1.dump b/src/testdir/dumps/Test_text_after_nowrap_1.dump new file mode 100644 index 0000000..0781e6c --- /dev/null +++ b/src/testdir/dumps/Test_text_after_nowrap_1.dump @@ -0,0 +1,8 @@ +|f+0&#ffffff0|i|r|s|t| |l|i|n|e| @1|r+0&#ffd7ff255|i|g|h|t| |a|f|t|e|r| |t|h|e| |t|e|x|t| |r|i|g|h|t| |a|f|t|e|r| |t|h|e| |t|e|x|t| |r|i|g|h|t| +|0+0&#ffffff0| >1| |2| |3| |4| |5| |6| |7| |8| |9| |1|0| |1@1| |1|2| |1|3| |1|4| |1|5| |1|6| |1|7| |1|8| |1|9| |2|0| |2|1| |2@1| |2 +|t|h|i|r|d| @54 +|f|o|u|r|t|h| @53 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_text_after_nowrap_2.dump b/src/testdir/dumps/Test_text_after_nowrap_2.dump new file mode 100644 index 0000000..28a45f3 --- /dev/null +++ b/src/testdir/dumps/Test_text_after_nowrap_2.dump @@ -0,0 +1,8 @@ +| +0&#ffd7ff255|r|i|g|h|t| |a|f|t|e|r| |t|h|e| | +0&#ffffff0@2|i+0&#ffd7ff255|n| |t|h|e| |m|i|d@1|l|e| |i|n| |t|h|e| |m|i|d@1|l|e| |i|n| |t|h|e| |m|i|d@1|l +|2+0&#ffffff0|1| |2@1| |2|3| |2|4| |2|5| |2|6| |2|7| |2|8| |2|9| |3|0| >3|1| |3|2| |3@1| |3|4| |3|5| |3|6| |3|7| |3|8| |3|9| |4|0| +@60 +@60 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|8|4| @9|A|l@1| diff --git a/src/testdir/dumps/Test_text_after_nowrap_3.dump b/src/testdir/dumps/Test_text_after_nowrap_3.dump new file mode 100644 index 0000000..0a7cb3b --- /dev/null +++ b/src/testdir/dumps/Test_text_after_nowrap_3.dump @@ -0,0 +1,8 @@ +|h+0&#ffd7ff255|e| |m|i|d@1|l|e| | +0&#ffffff0|t+0&#ffd7ff255|h|e| |l|a|s|t| |o|n|e| |t|h|e| |l|a|s|t| |o|n|e| |t|h|e| |l|a|s|t| |o|n|e| | +0&#ffffff0@9 +|4|3| |4@1| |4|5| |4|6| |4|7| |4|8| |4|9| |5|0| |5|1| |5|2| >5|3| |5|4| |5@1| |5|6| |5|7| |5|8| |5|9| |6|0| |6|1| |6|2| +@60 +@60 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|1|5|0| @8|A|l@1| diff --git a/src/testdir/dumps/Test_text_after_nowrap_4.dump b/src/testdir/dumps/Test_text_after_nowrap_4.dump new file mode 100644 index 0000000..ffe1c76 --- /dev/null +++ b/src/testdir/dumps/Test_text_after_nowrap_4.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@59 +|9| |7|0| |7|1| |7|2| |7|3| |7|4| |7|5| |7|6| |7@1| |7|8| |7>9| @28 +@60 +@60 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +| +0#0000000&@41|2|,|2@1|9| @8|A|l@1| diff --git a/src/testdir/dumps/Test_text_after_nowrap_5.dump b/src/testdir/dumps/Test_text_after_nowrap_5.dump new file mode 100644 index 0000000..ffd5708 --- /dev/null +++ b/src/testdir/dumps/Test_text_after_nowrap_5.dump @@ -0,0 +1,8 @@ +|f+0&#ffffff0|i|r|s|t| |l|i|n|e|$+0#4040ff13&| +0#0000000&@1|j+0&#ffd7ff255|u|s|t| |a|f|t|e|r| |t|x|t| |j|u|s|t| |a|f|t|e|r| |t|x|t| |j|u|s|t| |a|f|t|e|r| |t|x|t| | +0&#ffffff0|i+0&#ffd7ff255 +>0+0&#ffffff0| |1| |2| |3| |4| |5| |6| |7| |8| |9| |1|0| |1@1| |1|2| |1|3| |1|4| |1|5| |1|6| |1|7| |1|8| |1|9| |2|0| |2|1| |2@1| |2 +|t|h|i|r|d|$+0#4040ff13&| +0#0000000&@53 +|f|o|u|r|t|h|$+0#4040ff13&| +0#0000000&@52 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|:+0#0000000&|c|a|l@1| |C|h|a|n|g|e|T|e|x|t|(|)| @23|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_text_after_nowrap_list_1.dump b/src/testdir/dumps/Test_text_after_nowrap_list_1.dump new file mode 100644 index 0000000..bbbbe28 --- /dev/null +++ b/src/testdir/dumps/Test_text_after_nowrap_list_1.dump @@ -0,0 +1,6 @@ +|s+0&#ffffff0|o|m|e| |t|e|x|t| |h|e|r|e|$+0#4040ff13&| +0#0000000&@1|T+0&#ffd7ff255|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s|.| +0&#ffffff0@1|■+0&#ffd7ff255| |T|h|e| |f|o|x| |j|u|m|p|>+0#4040ff13#ffffff0 +|$| +0#0000000&@58 +|l|a|s|t| |l|i|n>e|$+0#4040ff13&| +0#0000000&@49 +|~+0#4040ff13&| @58 +|~| @58 +| +0#0000000&@41|3|,|9| @10|A|l@1| diff --git a/src/testdir/dumps/Test_text_below_nowrap_1.dump b/src/testdir/dumps/Test_text_below_nowrap_1.dump new file mode 100644 index 0000000..3325411 --- /dev/null +++ b/src/testdir/dumps/Test_text_below_nowrap_1.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| |f+0#0000000&|i|r|s|t| |l|i|n|e| @45 +| +0#af5f00255&@3| +0#0000000&@1|o+0&#ffd7ff255|n|e| |b|e|l|o|w| |t|h|e| |t|e|x|t| |o|n|e| |b|e|l|o|w| |t|h|e| |t|e|x|t| |o|n|e| |b|e|l|o|w| |t|h|e| |t|e +| +0#af5f00255#ffffff0@3| +0#0000000&@1|t+0&#ffd7ff255|w|o| |b|e|l|o|w| |t|h|e| |t|e|x|t| |t|w|o| |b|e|l|o|w| |t|h|e| |t|e|x|t| |t|w|o| |b|e|l|o|w| |t|h|e| |t|e +| +0#af5f00255#ffffff0@1|2| |s+0#0000000&|e|c|o|n|d| >l|i|n|e| |s|e|c|o|n|d| |l|i|n|e| |s|e|c|o|n|d| |l|i|n|e| |s|e|c|o|n|d| |l|i|n|e| |s|e|c|o|n|d| |l +| +0#af5f00255&@1|3| |t+0#0000000&|h|i|r|d| @50 +| +0#af5f00255&@1|4| |f+0#0000000&|o|u|r|t|h| @49 +|~+0#4040ff13&| @58 +| +0#0000000&@41|2|,|8| @10|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_01.dump b/src/testdir/dumps/Test_textprop_01.dump new file mode 100644 index 0000000..b8a50be --- /dev/null +++ b/src/testdir/dumps/Test_textprop_01.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffffff0@1|1| |O+0#0000000&|n|e| +0&#ffff4012|t|w|o| +0&#ffffff0@63 +| +0#af5f00255&@1|2| |N+0#0000000#ffff4012|u|m|b|é|r| |1+0#4040ff13&|2|3| +0#0000000&|ä|n|d| |t|h|œ|n| |4+0#4040ff13&|¾|7|.+0#0000000&| +0&#ffffff0@46 +| +8#af5f00255&@1|3| >-+8#0000000#ffff4012|x+8&#ffffff0|a+8#4040ff13&@1|x+8#0000000&|-@1|x+8#4040ff13&|b@1|x+8#0000000&|-@1|x|c+8#4040ff13&@1|x|-+8#0000000&@1|x+8#4040ff13&|d@1|x|-+8#0000000&@1| @45 +| +0#af5f00255&@1|4| |/+0#40ff4011&@1| |c|o|m+0#0000000#e0e0e08@1|e|n+0#40ff4011#ffffff0|t| |w+0&#e0e0e08|i|t|h| |e+8&&|r@1|o|r| +0&#ffffff0|i|n| |i|t| +0#0000000&@43 +| +0#af5f00255&@1|5| |f+0#0000000&|i|r|s|t| |l+0&#ffff4012|i|n|e| @1|s|e|c|o|n|d| +0&#ffffff0|l|i|n|e| @1|t|h|i|r|d| |l|i|n|e| +0&#ffff4012|f+0&#ffffff0|o|u|r|t|h| |l+0&#ffff4012|i|n|e| +0&#ffffff0@23 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|3|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_hl_override_1.dump b/src/testdir/dumps/Test_textprop_hl_override_1.dump new file mode 100644 index 0000000..ce447e7 --- /dev/null +++ b/src/testdir/dumps/Test_textprop_hl_override_1.dump @@ -0,0 +1,8 @@ +|O+0&#ffffff0|n|e| |o+0#4040ff13#ffff4012|n|e| |o+0#0000000#ffffff0|n|e| |o+0#4040ff13#ffff4012|n|e| |o+0#0000000#ffffff0|n|e| @55 +>T+10#ff404010#40ff4011|w|o| |t|w|o| |t|w|o| |t+10#4040ff13#ffff4012|w|o| |t+10#ff404010#40ff4011|w|o| @55 +|T+0#0000000#ffffff0|h|r|e|e+0#4040ff13#ffff4012| |t|h|r+0#0000000#ffffff0|e@1| |t+0#4040ff13#ffff4012|h|r|e|e+0#0000000#ffffff0| |t|h|r|e@1| @51 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_hl_override_2.dump b/src/testdir/dumps/Test_textprop_hl_override_2.dump new file mode 100644 index 0000000..187233d --- /dev/null +++ b/src/testdir/dumps/Test_textprop_hl_override_2.dump @@ -0,0 +1,8 @@ +|O+0&#ffffff0|n|e| |o+0#4040ff13#ffff4012|n|e| |o+0#0000000#ffffff0|n|e| |o+0#4040ff13#ffff4012|n|e| |o+0#0000000#ffffff0|n|e| @55 +|T|w|o| |t+0#4040ff13#ffff4012|w|o| |t+0#0000000#ffffff0|w|o| |t+0#4040ff13#ffff4012|w|o| |t+0#0000000#ffffff0|w|o| @55 +|T|h|r+0&#e0e0e08|e|e+0#4040ff13&| |t|h|r+0#0000000&|e@1| |t+0#4040ff13#ffff4012|h|r|e|e+0#0000000#e0e0e08| |t|h|r>e+0&#ffffff0@1| @51 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@34|2|0| @7|3|,|2@1| @9|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_nesting.dump b/src/testdir/dumps/Test_textprop_nesting.dump new file mode 100644 index 0000000..e02cc54 --- /dev/null +++ b/src/testdir/dumps/Test_textprop_nesting.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|c|o|n|s|t| |f|u|n|c|:| |f|u|n|c|.|I|F|u|n|c|t|i|o|n| |=| |(|{+0#ffffff16#e000002|t|e|x|t| |l|o|n|g| |e|n|o|u|g|h| |t|o| |w|r|a|p| |l|i|n|e|,| |t|e|x|t| |l|o|n|g| |e|n|… +| @3|s|e|t|L|o|a|d|i|n|g| +0#0000000#ffffff0@60 +| +0#ffffff16#e000002| +0#0000000#ffffff0|}|)| |=|>| |{| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_nowrap_01.dump b/src/testdir/dumps/Test_textprop_nowrap_01.dump new file mode 100644 index 0000000..f0fe7db --- /dev/null +++ b/src/testdir/dumps/Test_textprop_nowrap_01.dump @@ -0,0 +1,6 @@ +>a+0&#ffffff0|l@1|e|r| |t|h|a|n| |4+0#ffffff16#e000002|5|6|7|.+0#0000000#ffffff0|X@58 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|2|1| @9|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_nowrap_02.dump b/src/testdir/dumps/Test_textprop_nowrap_02.dump new file mode 100644 index 0000000..104c674 --- /dev/null +++ b/src/testdir/dumps/Test_textprop_nowrap_02.dump @@ -0,0 +1,6 @@ +|X+0&#ffffff0@36>X| @36 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1@2| @8|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_syn_1.dump b/src/testdir/dumps/Test_textprop_syn_1.dump new file mode 100644 index 0000000..6f5aff5 --- /dev/null +++ b/src/testdir/dumps/Test_textprop_syn_1.dump @@ -0,0 +1,6 @@ +>(+0(ffff15|a+0#e000e06#ffffff0|b|c|)+0#0000000#40ffff15| +0&#ffffff0@69 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_tab.dump b/src/testdir/dumps/Test_textprop_tab.dump new file mode 100644 index 0000000..a1b7705 --- /dev/null +++ b/src/testdir/dumps/Test_textprop_tab.dump @@ -0,0 +1,6 @@ +| +0&#ffffff0@6> |x+0&#ffff4012@2| +0&#ffffff0@63 +|x| @6|x+0&#ffff4012@2| +0&#ffffff0@63 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1|-|8| @8|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_vis_01.dump b/src/testdir/dumps/Test_textprop_vis_01.dump new file mode 100644 index 0000000..f411d30 --- /dev/null +++ b/src/testdir/dumps/Test_textprop_vis_01.dump @@ -0,0 +1,12 @@ +|x+0&#ffffff0@4>x@1| |1+0&#ffff4012|2|3| +0&#ffffff0|x| @61 +|x@5| |1+0&#ffff4012|2|3| +0&#ffffff0|x| @62 +|x@4| |1+0&#ffff4012|2|3| +0&#ffffff0|x| @63 +|x@4|1+0&#ffff4012|2|3| +0&#ffffff0|x| @64 +|x@4|2+0&#ffff4012|3| +0&#ffffff0|x| @65 +|x@3| |3+0&#ffff4012| +0&#ffffff0|x@1| @65 +|x@2| |1+0&#ffff4012| +0&#ffffff0|x@2| @65 +|x@1| |1+0&#ffff4012|2|x+0&#ffffff0@3| @65 +|x| |1+0&#ffff4012|2|3|x+0&#ffffff0@3| @65 +@1|1+0&#ffff4012|2|3| +0&#ffffff0|x@3| @65 +|~+0#4040ff13&| @73 +| +0#0000000&@56|1|,|6| @10|A|l@1| diff --git a/src/testdir/dumps/Test_textprop_vis_02.dump b/src/testdir/dumps/Test_textprop_vis_02.dump new file mode 100644 index 0000000..d999ae1 --- /dev/null +++ b/src/testdir/dumps/Test_textprop_vis_02.dump @@ -0,0 +1,12 @@ +|x+0&#ffffff0@4> |1+0&#ffff4012|2|3| +0&#ffffff0|x| @63 +|x@4|1+0&#ffff4012|2|3| +0&#ffffff0|x| @64 +|x@4|2+0&#ffff4012|3| +0&#ffffff0|x| @65 +|x@4|3+0&#ffff4012| +0&#ffffff0|x| @66 +|x@4| |x| @67 +|x@3| |x@1| @67 +|x@2| |1+0&#ffff4012|x+0&#ffffff0@1| @67 +|x@1| |1+0&#ffff4012|2|x+0&#ffffff0@1| @67 +|x| |1+0&#ffff4012|2|3|x+0&#ffffff0@1| @67 +@1|1+0&#ffff4012|2|3| +0&#ffffff0|x@1| @67 +|~+0#4040ff13&| @73 +| +0#0000000&@56|1|,|6| @10|A|l@1| diff --git a/src/testdir/dumps/Test_tselect_1.dump b/src/testdir/dumps/Test_tselect_1.dump new file mode 100644 index 0000000..9090122 --- /dev/null +++ b/src/testdir/dumps/Test_tselect_1.dump @@ -0,0 +1,10 @@ +>i+0#00e0003#ffffff0|n|t| +0#0000000&|m|a|i|n|(|)| @39 +|v+0#00e0003&|o|i|d| +0#0000000&|t|e|s|t|(|)| @38 +|~+0#4040ff13&| @48 +|~| @48 +|~| @48 +|~| @48 +|~| @48 +|~| @48 +|~| @48 +|"+0#0000000&|X|t|e|s|t|.|c|"| |2|L|,| |2|3|B| @14|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_undo_after_write_1.dump b/src/testdir/dumps/Test_undo_after_write_1.dump new file mode 100644 index 0000000..92410d4 --- /dev/null +++ b/src/testdir/dumps/Test_undo_after_write_1.dump @@ -0,0 +1,6 @@ +|t+0&#ffffff0|e|s>t| @70 +@75 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|1+0#0000000&| |l|i|n|e| |l|e|s@1|;| |b|e|f|o|r|e| |#|2| @1|0| |s|e|c|o|n|d|s| |a|g|o| @19|1|,|4| @10|A|l@1| diff --git a/src/testdir/dumps/Test_undo_after_write_2.dump b/src/testdir/dumps/Test_undo_after_write_2.dump new file mode 100644 index 0000000..029e324 --- /dev/null +++ b/src/testdir/dumps/Test_undo_after_write_2.dump @@ -0,0 +1,6 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|2+0#0000000&| |f|e|w|e|r| |l|i|n|e|s|;| |b|e|f|o|r|e| |#|1| @1|1| |s|e|c|o|n|d| |a|g|o| @18|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_undo_after_write_2.vim b/src/testdir/dumps/Test_undo_after_write_2.vim new file mode 100644 index 0000000..d1d3c3d --- /dev/null +++ b/src/testdir/dumps/Test_undo_after_write_2.vim @@ -0,0 +1,2 @@ +" Filter that changes the "1 second ago" message to "0 seconds ago". +6s+|1| |s|e|c|o|n|d| |a|g|o| @18|+|0| |s|e|c|o|n|d|s| |a|g|o| @17|+e diff --git a/src/testdir/dumps/Test_verbose_option_1.dump b/src/testdir/dumps/Test_verbose_option_1.dump new file mode 100644 index 0000000..192d102 --- /dev/null +++ b/src/testdir/dumps/Test_verbose_option_1.dump @@ -0,0 +1,12 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|E+0#0000000&|x|e|c|u|t|i|n|g|:| |D|o|S|o|m|e|t|h|i|n|g| @52 +|E|x|e|c|u|t|i|n|g|:| |e|c|h|o| |'|h|e|l@1|o|'| |||s|e|t| |t|s|=|4| |||l|e|t| |v| |=| |'|1|2|3|'| |||e|c|h|o| |v| @18 +|h|e|l@1|o| @69 +|E|x|e|c|u|t|i|n|g|:| |s|e|t| |t|s|=|4| |||l|e|t| |v| |=| |'|1|2|3|'| |||e|c|h|o| |v| @32 +|E|x|e|c|u|t|i|n|g|:| |l|e|t| |v| |=| |'|1|2|3|'| |||e|c|h|o| |v| @42 +|E|x|e|c|u|t|i|n|g|:| |e|c|h|o| |v| @57 +|1|2|3| @71 +|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@35 diff --git a/src/testdir/dumps/Test_verbose_system_1.dump b/src/testdir/dumps/Test_verbose_system_1.dump new file mode 100644 index 0000000..6723b54 --- /dev/null +++ b/src/testdir/dumps/Test_verbose_system_1.dump @@ -0,0 +1,10 @@ +|C+0&#ffffff0|a|l@1|i|n|g| |s|h|e|l@1| |t|o| |e|x|e|c|u|t|e|:| |"|(|s|e|q| |2|0|)|>|/|t|m|p|/|v|W|4|d|k|0|a|/|0| |2|>|&|1|"| @18 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|-+0#00e0003&@1| |M|o|r|e| |-@1> +0#0000000&@64 diff --git a/src/testdir/dumps/Test_verbose_system_1.vim b/src/testdir/dumps/Test_verbose_system_1.vim new file mode 100644 index 0000000..65e9c8a --- /dev/null +++ b/src/testdir/dumps/Test_verbose_system_1.vim @@ -0,0 +1,5 @@ +" Filter that removes the ever changing temp directory name from the screendump +" that shows the system() command executed. +" This should be on the first line, but if it isn't there ignore the error, +" the screendump will then show the problem. +1s+|t|m|p|/|.|.|.*| |+|t|m|p|/|x|x|x|x|x|x|x|/|1| |+e diff --git a/src/testdir/dumps/Test_verbose_system_2.dump b/src/testdir/dumps/Test_verbose_system_2.dump new file mode 100644 index 0000000..ed65719 --- /dev/null +++ b/src/testdir/dumps/Test_verbose_system_2.dump @@ -0,0 +1,10 @@ +|C+0&#ffffff0|a|l@1|i|n|g| |s|h|e|l@1| |t|o| |e|x|e|c|u|t|e|:| |"|(|s|e|q| |2|0|)|>|/|t|m|p|/|v|V|v|w|c|g|V|/|1| |2|>|&|1|"| @18 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|5| @73 +|6| @73 +|7| @73 +|8| @73 +|-+0#00e0003&@1| |M|o|r|e| |-@1> +0#0000000&@64 diff --git a/src/testdir/dumps/Test_verbose_system_2.vim b/src/testdir/dumps/Test_verbose_system_2.vim new file mode 100644 index 0000000..65e9c8a --- /dev/null +++ b/src/testdir/dumps/Test_verbose_system_2.vim @@ -0,0 +1,5 @@ +" Filter that removes the ever changing temp directory name from the screendump +" that shows the system() command executed. +" This should be on the first line, but if it isn't there ignore the error, +" the screendump will then show the problem. +1s+|t|m|p|/|.|.|.*| |+|t|m|p|/|x|x|x|x|x|x|x|/|1| |+e diff --git a/src/testdir/dumps/Test_vim9_closure_fails.dump b/src/testdir/dumps/Test_vim9_closure_fails.dump new file mode 100644 index 0000000..dd0103c --- /dev/null +++ b/src/testdir/dumps/Test_vim9_closure_fails.dump @@ -0,0 +1,6 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|0+0#0000000&| @55|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_vim9_no_redraw.dump b/src/testdir/dumps/Test_vim9_no_redraw.dump new file mode 100644 index 0000000..1d77a08 --- /dev/null +++ b/src/testdir/dumps/Test_vim9_no_redraw.dump @@ -0,0 +1,6 @@ +|s+0&#ffffff0|o+0&#e0e0e08|m|e| |t|e|x|t| | +0&#ffffff0@64 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|'|<|,|'|>> @68 diff --git a/src/testdir/dumps/Test_vim9_reject_declaration_1.dump b/src/testdir/dumps/Test_vim9_reject_declaration_1.dump new file mode 100644 index 0000000..e4f5623 --- /dev/null +++ b/src/testdir/dumps/Test_vim9_reject_declaration_1.dump @@ -0,0 +1,6 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|E+0#ffffff16#e000002|1|0|7|9|:| |C|a|n@1|o|t| |d|e|c|l|a|r|e| |a| |v|a|r|i|a|b|l|e| |o|n| |t|h|e| |c|o|m@1|a|n|d| |l|i|n|e| +0#0000000#ffffff0@22 +|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@35 diff --git a/src/testdir/dumps/Test_vim9_reject_declaration_2.dump b/src/testdir/dumps/Test_vim9_reject_declaration_2.dump new file mode 100644 index 0000000..a6d516c --- /dev/null +++ b/src/testdir/dumps/Test_vim9_reject_declaration_2.dump @@ -0,0 +1,6 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|1+0#0000000&|2|3| @53|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_vim9_silent_echo.dump b/src/testdir/dumps/Test_vim9_silent_echo.dump new file mode 100644 index 0000000..f5f7927 --- /dev/null +++ b/src/testdir/dumps/Test_vim9_silent_echo.dump @@ -0,0 +1,6 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|a|b|c> @70 diff --git a/src/testdir/dumps/Test_virtual_text_in_popup_highlight_1.dump b/src/testdir/dumps/Test_virtual_text_in_popup_highlight_1.dump new file mode 100644 index 0000000..b8c5b14 --- /dev/null +++ b/src/testdir/dumps/Test_virtual_text_in_popup_highlight_1.dump @@ -0,0 +1,8 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @17| +0#0000001#ffd7ff255@16| +0#4040ff13#ffffff0@38 +|~| @17| +0#0000001#ffd7ff255| +0#0000e05&|+| |S+0#0000001&|o|m|e| | +0#4040ff13#afffff255|x| |t+0#0000001#ffd7ff255|e|x|t| | +0#4040ff13#ffffff0@38 +|~| @17| +0#0000001#ffd7ff255@16| +0#4040ff13#ffffff0@38 +|~| @73 +|~| @73 +| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_visual_block_with_virtualedit.dump b/src/testdir/dumps/Test_visual_block_with_virtualedit.dump new file mode 100644 index 0000000..2991a63 --- /dev/null +++ b/src/testdir/dumps/Test_visual_block_with_virtualedit.dump @@ -0,0 +1,8 @@ +|a+0&#e0e0e08@5> +0&#ffffff0@43 +|b+0&#e0e0e08@3| @2| +0&#ffffff0@42 +|c+0&#e0e0e08@1| @4| +0&#ffffff0@42 +|~+0#4040ff13&| @48 +|~| @48 +|~| @48 +|~| @48 +|-+2#0000000&@1| |V|I|S|U|A|L| |B|L|O|C|K| |-@1| +0&&@3|3|x|7| @6|1|,|7| @10|A|l@1| diff --git a/src/testdir/dumps/Test_visual_block_with_virtualedit2.dump b/src/testdir/dumps/Test_visual_block_with_virtualedit2.dump new file mode 100644 index 0000000..3c62156 --- /dev/null +++ b/src/testdir/dumps/Test_visual_block_with_virtualedit2.dump @@ -0,0 +1,8 @@ +|a+0&#e0e0e08@5| | +0&#ffffff0@42 +|b+0&#e0e0e08@3| @2| +0&#ffffff0@42 +|c+0&#e0e0e08@1> +0&#ffffff0| +0&#e0e0e08@3| +0&#ffffff0@42 +|~+0#4040ff13&| @48 +|~| @48 +|~| @48 +|~| @48 +|-+2#0000000&@1| |V|I|S|U|A|L| |B|L|O|C|K| |-@1| +0&&@3|3|x|3| @6|3|,|3| @10|A|l@1| diff --git a/src/testdir/dumps/Test_wildmenu_1.dump b/src/testdir/dumps/Test_wildmenu_1.dump new file mode 100644 index 0000000..76b930d --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_1.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|v+0#0000001#ffff4012|i|m|9|c|m|d| +3#0000000#ffffff0@1|v|i|m|9|s|c|r|i|p|t| @1|v|i|m|g|r|e|p| @1|v|i|m|g|r|e|p|a|d@1| @34 +|:+0&&|v|i|m|9|c|m|d> @66 diff --git a/src/testdir/dumps/Test_wildmenu_2.dump b/src/testdir/dumps/Test_wildmenu_2.dump new file mode 100644 index 0000000..17b6b02 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_2.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|v+3#0000000&|i|m|9|c|m|d| @1|v+0#0000001#ffff4012|i|m|9|s|c|r|i|p|t| +3#0000000#ffffff0@1|v|i|m|g|r|e|p| @1|v|i|m|g|r|e|p|a|d@1| @34 +|:+0&&|v|i|m|9|s|c|r|i|p|t> @63 diff --git a/src/testdir/dumps/Test_wildmenu_3.dump b/src/testdir/dumps/Test_wildmenu_3.dump new file mode 100644 index 0000000..578c8f0 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_3.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|v+3#0000000&|i|m|9|c|m|d| @1|v|i|m|9|s|c|r|i|p|t| @1|v+0#0000001#ffff4012|i|m|g|r|e|p| +3#0000000#ffffff0@1|v|i|m|g|r|e|p|a|d@1| @34 +|:+0&&|v|i|m|g|r|e|p> @66 diff --git a/src/testdir/dumps/Test_wildmenu_4.dump b/src/testdir/dumps/Test_wildmenu_4.dump new file mode 100644 index 0000000..4b16a37 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_4.dump @@ -0,0 +1,8 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|v+3#0000000&|i|m|9|c|m|d| @1|v|i|m|9|s|c|r|i|p|t| @1|v|i|m|g|r|e|p| @1|v|i|m|g|r|e|p|a|d@1| @34 +|:+0&&|v|i|m> @70 diff --git a/src/testdir/dumps/Test_wildmenu_pum_01.dump b/src/testdir/dumps/Test_wildmenu_pum_01.dump new file mode 100644 index 0000000..8c48229 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_01.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#e0e0e08|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e> @62 diff --git a/src/testdir/dumps/Test_wildmenu_pum_02.dump b/src/testdir/dumps/Test_wildmenu_pum_02.dump new file mode 100644 index 0000000..f118df7 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_02.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |l|i|s|t> @64 diff --git a/src/testdir/dumps/Test_wildmenu_pum_03.dump b/src/testdir/dumps/Test_wildmenu_pum_03.dump new file mode 100644 index 0000000..c3276ab --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_03.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |p|l|a|c|e> @63 diff --git a/src/testdir/dumps/Test_wildmenu_pum_04.dump b/src/testdir/dumps/Test_wildmenu_pum_04.dump new file mode 100644 index 0000000..f118df7 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_04.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |l|i|s|t> @64 diff --git a/src/testdir/dumps/Test_wildmenu_pum_05.dump b/src/testdir/dumps/Test_wildmenu_pum_05.dump new file mode 100644 index 0000000..1c3a2e8 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_05.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |j|u|m|p> @64 diff --git a/src/testdir/dumps/Test_wildmenu_pum_06.dump b/src/testdir/dumps/Test_wildmenu_pum_06.dump new file mode 100644 index 0000000..4b60c57 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_06.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| > @68 diff --git a/src/testdir/dumps/Test_wildmenu_pum_07.dump b/src/testdir/dumps/Test_wildmenu_pum_07.dump new file mode 100644 index 0000000..20a39ab --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_07.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |u|n|p|l|a|c|e> @61 diff --git a/src/testdir/dumps/Test_wildmenu_pum_08.dump b/src/testdir/dumps/Test_wildmenu_pum_08.dump new file mode 100644 index 0000000..7354738 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_08.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |u|n> @66 diff --git a/src/testdir/dumps/Test_wildmenu_pum_09.dump b/src/testdir/dumps/Test_wildmenu_pum_09.dump new file mode 100644 index 0000000..2e8a0a1 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_09.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @3| +0#0000001#e0e0e08|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |u|n|d|e|f|i|n|e> @60 diff --git a/src/testdir/dumps/Test_wildmenu_pum_10.dump b/src/testdir/dumps/Test_wildmenu_pum_10.dump new file mode 100644 index 0000000..9851b7c --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_10.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |u|n|p|l|a|c|e> @61 diff --git a/src/testdir/dumps/Test_wildmenu_pum_11.dump b/src/testdir/dumps/Test_wildmenu_pum_11.dump new file mode 100644 index 0000000..4697c8a --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_11.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @10| +0#0000001#e0e0e08|c|u|l|h|l|=| @8| +0#4040ff13#ffffff0@46 +|~| @10| +0#0000001#ffd7ff255|i|c|o|n|=| @9| +0#4040ff13#ffffff0@46 +|~| @10| +0#0000001#ffd7ff255|l|i|n|e|h|l|=| @7| +0#4040ff13#ffffff0@46 +|~| @10| +0#0000001#ffd7ff255|n|u|m|h|l|=| @8| +0#4040ff13#ffffff0@46 +|~| @10| +0#0000001#ffd7ff255|t|e|x|t|=| @9| +0#4040ff13#ffffff0@46 +|~| @10| +0#0000001#ffd7ff255|t|e|x|t|h|l|=| @7| +0#4040ff13#ffffff0@46 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e| |c|u|l|h|l|=> @55 diff --git a/src/testdir/dumps/Test_wildmenu_pum_12.dump b/src/testdir/dumps/Test_wildmenu_pum_12.dump new file mode 100644 index 0000000..d93631d --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_12.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @17| +0#0000001#e0e0e08|c|u|l|h|l|=| @8| +0#4040ff13#ffffff0@39 +|~| @17| +0#0000001#ffd7ff255|i|c|o|n|=| @9| +0#4040ff13#ffffff0@39 +|~| @17| +0#0000001#ffd7ff255|l|i|n|e|h|l|=| @7| +0#4040ff13#ffffff0@39 +|~| @17| +0#0000001#ffd7ff255|n|u|m|h|l|=| @8| +0#4040ff13#ffffff0@39 +|~| @17| +0#0000001#ffd7ff255|t|e|x|t|=| @9| +0#4040ff13#ffffff0@39 +|~| @17| +0#0000001#ffd7ff255|t|e|x|t|h|l|=| @7| +0#4040ff13#ffffff0@39 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e| |c|u|l|h|l|=| |c|u|l|h|l|=> @48 diff --git a/src/testdir/dumps/Test_wildmenu_pum_13.dump b/src/testdir/dumps/Test_wildmenu_pum_13.dump new file mode 100644 index 0000000..b2b1424 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_13.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @24| +0#0000001#e0e0e08|c|u|l|h|l|=| @8| +0#4040ff13#ffffff0@32 +|~| @24| +0#0000001#ffd7ff255|i|c|o|n|=| @9| +0#4040ff13#ffffff0@32 +|~| @24| +0#0000001#ffd7ff255|l|i|n|e|h|l|=| @7| +0#4040ff13#ffffff0@32 +|~| @24| +0#0000001#ffd7ff255|n|u|m|h|l|=| @8| +0#4040ff13#ffffff0@32 +|~| @24| +0#0000001#ffd7ff255|t|e|x|t|=| @9| +0#4040ff13#ffffff0@32 +|~| @24| +0#0000001#ffd7ff255|t|e|x|t|h|l|=| @7| +0#4040ff13#ffffff0@32 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e| |c|u|l|h|l|=| |c|u|l|h|l|=| |c|u|l|h|l|=> @41 diff --git a/src/testdir/dumps/Test_wildmenu_pum_14.dump b/src/testdir/dumps/Test_wildmenu_pum_14.dump new file mode 100644 index 0000000..7f5546b --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_14.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @9| +0#0000001#e0e0e08|X|d|i|r|A|/| @8| +0#4040ff13#ffffff0@47 +|~| @9| +0#0000001#ffd7ff255|X|f|i|l|e|A| @8| +0#4040ff13#ffffff0@47 +|:+0#0000000&|e| |X|n|a|m|e|d|i|r|/|X|d|i|r|A|/> @56 diff --git a/src/testdir/dumps/Test_wildmenu_pum_15.dump b/src/testdir/dumps/Test_wildmenu_pum_15.dump new file mode 100644 index 0000000..59f1fc5 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_15.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @15| +0#0000001#e0e0e08|X|d|i|r|B|/| @8| +0#4040ff13#ffffff0@41 +|~| @15| +0#0000001#ffd7ff255|X|f|i|l|e|B| @8| +0#4040ff13#ffffff0@41 +|:+0#0000000&|e| |X|n|a|m|e|d|i|r|/|X|d|i|r|A|/|X|d|i|r|B|/> @50 diff --git a/src/testdir/dumps/Test_wildmenu_pum_16.dump b/src/testdir/dumps/Test_wildmenu_pum_16.dump new file mode 100644 index 0000000..7f5546b --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_16.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @9| +0#0000001#e0e0e08|X|d|i|r|A|/| @8| +0#4040ff13#ffffff0@47 +|~| @9| +0#0000001#ffd7ff255|X|f|i|l|e|A| @8| +0#4040ff13#ffffff0@47 +|:+0#0000000&|e| |X|n|a|m|e|d|i|r|/|X|d|i|r|A|/> @56 diff --git a/src/testdir/dumps/Test_wildmenu_pum_17.dump b/src/testdir/dumps/Test_wildmenu_pum_17.dump new file mode 100644 index 0000000..5eef94d --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_17.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e| |j|u|m|p| |l|i|s|t| |p|l|a|c|e| |u|n|d|e|f|i|n|e| |u|n|p|l|a|c|e> @29 diff --git a/src/testdir/dumps/Test_wildmenu_pum_18.dump b/src/testdir/dumps/Test_wildmenu_pum_18.dump new file mode 100644 index 0000000..09b0b3e --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_18.dump @@ -0,0 +1,10 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e| @62 +|d|e|f|i|n|e| @68 +|:|s|i|g|n| |d|e|f|i|n|e> @62 diff --git a/src/testdir/dumps/Test_wildmenu_pum_19.dump b/src/testdir/dumps/Test_wildmenu_pum_19.dump new file mode 100644 index 0000000..fa51c76 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_19.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |u|n|d|e|f|i|n|e> @60 diff --git a/src/testdir/dumps/Test_wildmenu_pum_20.dump b/src/testdir/dumps/Test_wildmenu_pum_20.dump new file mode 100644 index 0000000..99c2900 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_20.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@74 diff --git a/src/testdir/dumps/Test_wildmenu_pum_21.dump b/src/testdir/dumps/Test_wildmenu_pum_21.dump new file mode 100644 index 0000000..ca37931 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_21.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e|x> @61 diff --git a/src/testdir/dumps/Test_wildmenu_pum_22.dump b/src/testdir/dumps/Test_wildmenu_pum_22.dump new file mode 100644 index 0000000..3fd00ad --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_22.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|[+1&&|N|o| |N|a|m|e|]| @65 +|:+0#4040ff13&|s+0#af5f00255&|e|t| +0#0000000&|w+0#e000e06&|i|l|d|m|o|d|e|=+0#0000000&|l|o|n|g|e|s|t|,+0#af5f00255&|f+0#0000000&|u|l@1| @48 +|:+0#4040ff13&|s+0#af5f00255&|e|t| +0#0000000&|w+0#e000e06&|i|l|d|m|o|d|e|=+0#0000000&|f|u|l@1| @56 +|:+0#4040ff13&|s+0#af5f00255&|i|g|n| +0#0000000&|d|e|f|i|n|e| @62 +|:+0#4040ff13&|s+0#af5f00255&|i|g|n| +0#0000000&|d|e|f|i|n|e> @62 +|~+0#4040ff13&| @73 +|~| @73 +|[+3#0000000&|C|o|m@1|a|n|d| |L|i|n|e|]| @60 +|Y+0#0000001#ffff4012|o|u| |d|i|s|c|o|v|e|r|e|d| |t|h|e| |c|o|m@1|a|n|d|-|l|i|n|e| |w|i|n|d|o|w|!| |Y|o|u| |c|a|n| |c|l|o|s|e| |i|t| |w|i|t|h| |"|:|q|"|.| +0#0000000#ffffff0@7 diff --git a/src/testdir/dumps/Test_wildmenu_pum_23.dump b/src/testdir/dumps/Test_wildmenu_pum_23.dump new file mode 100644 index 0000000..0bd6243 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_23.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |u> @67 diff --git a/src/testdir/dumps/Test_wildmenu_pum_24.dump b/src/testdir/dumps/Test_wildmenu_pum_24.dump new file mode 100644 index 0000000..f5767f7 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_24.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000001#e0e0e08|b|u|f|d|o| @9| +0#4040ff13#ffffff0@58 +| +0#0000001#ffd7ff255|b|u|f@1|e|r| @8| +0#4040ff13#ffffff0@58 +| +0#0000001#ffd7ff255|b|u|f@1|e|r|s| @7| +0#4040ff13#ffffff0@58 +| +0#0000001#ffd7ff255|b|u|n|l|o|a|d| @7| +0#4040ff13#ffffff0@58 +|:+0#0000000&|b|u|f|d|o> @68 diff --git a/src/testdir/dumps/Test_wildmenu_pum_25.dump b/src/testdir/dumps/Test_wildmenu_pum_25.dump new file mode 100644 index 0000000..b7d117d --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_25.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|b|u|f|d>o| @68 diff --git a/src/testdir/dumps/Test_wildmenu_pum_26.dump b/src/testdir/dumps/Test_wildmenu_pum_26.dump new file mode 100644 index 0000000..30786c9 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_26.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n> @63 diff --git a/src/testdir/dumps/Test_wildmenu_pum_27.dump b/src/testdir/dumps/Test_wildmenu_pum_27.dump new file mode 100644 index 0000000..4b60c57 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_27.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| > @68 diff --git a/src/testdir/dumps/Test_wildmenu_pum_28.dump b/src/testdir/dumps/Test_wildmenu_pum_28.dump new file mode 100644 index 0000000..910e224 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_28.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&> @73 diff --git a/src/testdir/dumps/Test_wildmenu_pum_29.dump b/src/testdir/dumps/Test_wildmenu_pum_29.dump new file mode 100644 index 0000000..7a82fce --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_29.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |x|y|z> @65 diff --git a/src/testdir/dumps/Test_wildmenu_pum_30.dump b/src/testdir/dumps/Test_wildmenu_pum_30.dump new file mode 100644 index 0000000..76e4780 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_30.dump @@ -0,0 +1,10 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|c|n| @71 +|c|n|e|w|e|r| @6|c|n|f|i|l|e| @6|c|n|o|r|e|m|a|p| @40 +|c|n|e|x|t| @7|c|n|o|r|e|a|b@1|r|e|v| @1|c|n|o|r|e|m|e|n|u| @39 +|:|c|n> @71 diff --git a/src/testdir/dumps/Test_wildmenu_pum_31.dump b/src/testdir/dumps/Test_wildmenu_pum_31.dump new file mode 100644 index 0000000..157f16c --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_31.dump @@ -0,0 +1,10 @@ +|~+0#4040ff13#ffffff0| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|c|n| @71 +|c|n|e|w|e|r| @6|c|n|f|i|l|e| @6|c|n|o|r|e|m|a|p| @40 +|c|n|e|x|t| @7|c|n|o|r|e|a|b@1|r|e|v| @1|c|n|o|r|e|m|e|n|u| @39 +|:|c|n|s> @70 diff --git a/src/testdir/dumps/Test_wildmenu_pum_32.dump b/src/testdir/dumps/Test_wildmenu_pum_32.dump new file mode 100644 index 0000000..9bff1a5 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_32.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @16| +0#0000001#e0e0e08|1|2|3| @11| +0#4040ff13#ffffff0@40 +|~| @16| +0#0000001#ffd7ff255|a|b|c| @11| +0#4040ff13#ffffff0@40 +|~| @16| +0#0000001#ffd7ff255|x|y|z| @11| +0#4040ff13#ffffff0@40 +|:+0#0000000&|e| |X|n|a|m|e|d|i|r|/|あ*&|い|う|/+&|1|2|3> @52 diff --git a/src/testdir/dumps/Test_wildmenu_pum_33.dump b/src/testdir/dumps/Test_wildmenu_pum_33.dump new file mode 100644 index 0000000..3955edb --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_33.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e| |j|u|m|p| |l|i|s|t| |p|l|a|c|e| |u|n|d|e|f|i|n|e| |u|n|p|l|a|c|e|x> @28 diff --git a/src/testdir/dumps/Test_wildmenu_pum_34.dump b/src/testdir/dumps/Test_wildmenu_pum_34.dump new file mode 100644 index 0000000..e28b913 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_34.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e| |j|u|m|p| |l|i|s|t| |p|l|a|c|e| |u|n|d|e|f|i|n|e| |u|n|p|l|a|c>e| @29 diff --git a/src/testdir/dumps/Test_wildmenu_pum_35.dump b/src/testdir/dumps/Test_wildmenu_pum_35.dump new file mode 100644 index 0000000..3fbd30a --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_35.dump @@ -0,0 +1,10 @@ +|~+0#4040ff13#ffffff0| @73 +|:+0#0000000&|T|c|m|d| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3 +| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3 +| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3 +| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3 +| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3 +| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3 +| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3 +| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3| |a@3 +| |a@1>a@1| @69 diff --git a/src/testdir/dumps/Test_wildmenu_pum_36.dump b/src/testdir/dumps/Test_wildmenu_pum_36.dump new file mode 100644 index 0000000..9d7b6b0 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_36.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|e| |X|d|i|r|B|/| |X|f|i|l|e|B> @58 diff --git a/src/testdir/dumps/Test_wildmenu_pum_37.dump b/src/testdir/dumps/Test_wildmenu_pum_37.dump new file mode 100644 index 0000000..5eef94d --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_37.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e| |j|u|m|p| |l|i|s|t| |p|l|a|c|e| |u|n|d|e|f|i|n|e| |u|n|p|l|a|c|e> @29 diff --git a/src/testdir/dumps/Test_wildmenu_pum_38.dump b/src/testdir/dumps/Test_wildmenu_pum_38.dump new file mode 100644 index 0000000..44c66ed --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_38.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|:+0#0000000&|c|o|m|c|l|e|a|r| > @64 diff --git a/src/testdir/dumps/Test_wildmenu_pum_39.dump b/src/testdir/dumps/Test_wildmenu_pum_39.dump new file mode 100644 index 0000000..27be763 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_39.dump @@ -0,0 +1,10 @@ +> +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|s+3#0000000&|t|a|t|u|s| @68 +| +0&&@74 diff --git a/src/testdir/dumps/Test_wildmenu_pum_40.dump b/src/testdir/dumps/Test_wildmenu_pum_40.dump new file mode 100644 index 0000000..75aa01a --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_40.dump @@ -0,0 +1,10 @@ +|m+1&#ffffff0|y| |t|a|b| |l|i|n|e| @63 +> +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|b+3#0000000&|a|r| @71 +| +0&&@74 diff --git a/src/testdir/dumps/Test_wildmenu_pum_41.dump b/src/testdir/dumps/Test_wildmenu_pum_41.dump new file mode 100644 index 0000000..6f23d92 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_41.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000001#e0e0e08|a|b@1|r|e|v|i|a|t|e| @4| +0#4040ff13#ffffff0@58 +| +0#0000001#ffd7ff255|a|b|c|l|e|a|r| @7| +0#4040ff13#ffffff0@58 +| +0#0000001#ffd7ff255|a|b|o|v|e|l|e|f|t| @5| +0#4040ff13#ffffff0@58 +| +0#0000001#ffd7ff255|a|b|s|t|r|a|c|t| @6| +0#4040ff13#ffffff0@58 +|:+0#0000000&|a|b@1|r|e|v|i|a|t|e> @63 diff --git a/src/testdir/dumps/Test_wildmenu_pum_42.dump b/src/testdir/dumps/Test_wildmenu_pum_42.dump new file mode 100644 index 0000000..fa51c76 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_42.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |u|n|d|e|f|i|n|e> @60 diff --git a/src/testdir/dumps/Test_wildmenu_pum_43.dump b/src/testdir/dumps/Test_wildmenu_pum_43.dump new file mode 100644 index 0000000..372fc8e --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_43.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |u|n|p|l|a|c|e> @61 diff --git a/src/testdir/dumps/Test_wildmenu_pum_44.dump b/src/testdir/dumps/Test_wildmenu_pum_44.dump new file mode 100644 index 0000000..7b99b47 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_44.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| > @68 diff --git a/src/testdir/dumps/Test_wildmenu_pum_45.dump b/src/testdir/dumps/Test_wildmenu_pum_45.dump new file mode 100644 index 0000000..8c48229 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_45.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#e0e0e08|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e> @62 diff --git a/src/testdir/dumps/Test_wildmenu_pum_46.dump b/src/testdir/dumps/Test_wildmenu_pum_46.dump new file mode 100644 index 0000000..372fc8e --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_46.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |u|n|p|l|a|c|e> @61 diff --git a/src/testdir/dumps/Test_wildmenu_pum_47.dump b/src/testdir/dumps/Test_wildmenu_pum_47.dump new file mode 100644 index 0000000..7b99b47 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_47.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| > @68 diff --git a/src/testdir/dumps/Test_wildmenu_pum_48.dump b/src/testdir/dumps/Test_wildmenu_pum_48.dump new file mode 100644 index 0000000..372fc8e --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_48.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |u|n|p|l|a|c|e> @61 diff --git a/src/testdir/dumps/Test_wildmenu_pum_49.dump b/src/testdir/dumps/Test_wildmenu_pum_49.dump new file mode 100644 index 0000000..1c3a2e8 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_49.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#ffd7ff255|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#e0e0e08|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |j|u|m|p> @64 diff --git a/src/testdir/dumps/Test_wildmenu_pum_50.dump b/src/testdir/dumps/Test_wildmenu_pum_50.dump new file mode 100644 index 0000000..8c48229 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_50.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @3| +0#0000001#e0e0e08|d|e|f|i|n|e| @8| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|j|u|m|p| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +0#4040ff13#ffffff0@53 +|:+0#0000000&|s|i|g|n| |d|e|f|i|n|e> @62 diff --git a/src/testdir/dumps/Test_wildmenu_pum_clear_entries_1.dump b/src/testdir/dumps/Test_wildmenu_pum_clear_entries_1.dump new file mode 100644 index 0000000..b5825eb --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_clear_entries_1.dump @@ -0,0 +1,10 @@ +| +0#0000001#e0e0e08|!| @14| +0#0000000#0000001| +0&#ffffff0@56 +| +0#0000001#ffd7ff255|#| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@56 +| +0#0000001#ffd7ff255|&| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@56 +| +0#0000001#ffd7ff255|*| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@56 +| +0#0000001#ffd7ff255|+@1| @13| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@56 +| +0#0000001#ffd7ff255|-@1| @13| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@56 +| +0#0000001#ffd7ff255|<| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@56 +| +0#0000001#ffd7ff255|=| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@56 +| +0#0000001#ffd7ff255|>| @14| +0#0000000#a8a8a8255| +0#4040ff13#ffffff0@56 +|:+0#0000000&|!> @72 diff --git a/src/testdir/dumps/Test_wildmenu_pum_term_01.dump b/src/testdir/dumps/Test_wildmenu_pum_term_01.dump new file mode 100644 index 0000000..b619875 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_pum_term_01.dump @@ -0,0 +1,10 @@ +| +0&#ffffff0@74 +@75 +@75 +@5| +0#0000001#e0e0e08|d|e|f|i|n|e| @8| +0#0000000#ffffff0@53 +|<+2#ffffff16#00e0003|o|r|t| | +0#0000001#ffd7ff255|j|u|m|p| @10|w+2#ffffff16#00e0003|r|i|t|e|(|s|y|s|.|s|t|d|i|n|.|r|e|a|d|(|)@1|"| |[|r|u|n@1|i|n|g|]| @1|0|,|0|-|1| @9|A|l@1 +| +0#0000000#ffffff0@4| +0#0000001#ffd7ff255|l|i|s|t| @10| +0#0000000#ffffff0@53 +|~+0#4040ff13&| @3| +0#0000001#ffd7ff255|p|l|a|c|e| @9| +0#4040ff13#ffffff0@53 +|~| @3| +0#0000001#ffd7ff255|u|n|d|e|f|i|n|e| @6| +0#4040ff13#ffffff0@53 +|[+1#0000000&|N|o| |N| +0#0000001#ffd7ff255|u|n|p|l|a|c|e| @7| +1#0000000#ffffff0@35|0|,|0|-|1| @9|A|l@1 +|:+0&&|s|i|g|n| |d|e|f|i|n|e> @62 diff --git a/src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_1.dump b/src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_1.dump new file mode 100644 index 0000000..ad57067 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_1.dump @@ -0,0 +1,10 @@ +|f+0#0000e05#a8a8a8255|o@1|-@71 +|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| @60 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000001#e0e0e08|s|e|t| @11| +0#4040ff13#ffffff0@58 +| +0#0000001#ffd7ff255|s|e|t|f|i|l|e|t|y|p|e| @3| +0#4040ff13#ffffff0@58 +| +0#0000001#ffd7ff255|s|e|t|g|l|o|b|a|l| @5| +0#4040ff13#ffffff0@58 +| +0#0000001#ffd7ff255|s|e|t|l|o|c|a|l| @6| +0#4040ff13#ffffff0@58 +|:+0#0000000&|s|e|t> @70 diff --git a/src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_2.dump b/src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_2.dump new file mode 100644 index 0000000..93270a5 --- /dev/null +++ b/src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_2.dump @@ -0,0 +1,10 @@ +>f+0#0000e05#a8a8a8255|o@1|-@71 +|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t| @60 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|1|,|1| @10|A|l@1| diff --git a/src/testdir/dumps/Test_win_gotoid_1.dump b/src/testdir/dumps/Test_win_gotoid_1.dump new file mode 100644 index 0000000..0faf579 --- /dev/null +++ b/src/testdir/dumps/Test_win_gotoid_1.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|[+1&&|N|o| |N|a|m|e|]| @47|1|,|1| @11|T|o|p +>2+0&&|1| @72 +|2@1| @72 +|2|3| @72 +|2|4| @72 +|2|5| @72 +|2|6| @72 +|[+3&&|N|o| |N|a|m|e|]| @47|1|,|1| @11|T|o|p +|r+0&&|e|g| |=| |"|f|o@1|"| @63 +@75 diff --git a/src/testdir/dumps/Test_win_gotoid_2.dump b/src/testdir/dumps/Test_win_gotoid_2.dump new file mode 100644 index 0000000..7a778f5 --- /dev/null +++ b/src/testdir/dumps/Test_win_gotoid_2.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +|2| @73 +|3| @73 +|4| @73 +|[+1&&|N|o| |N|a|m|e|]| @47|1|,|1| @11|T|o|p +|2+0&&|1| @72 +|2@1| @72 +|2+0&#e0e0e08>3+0&#ffffff0| @72 +|2|4| @72 +|2|5| @72 +|2|6| @72 +|[+3&&|N|o| |N|a|m|e|]| @47|3|,|2| @11|T|o|p +|r+0&&|e|g| |=| |"|2|3|"| @64 +|-+2&&@1| |V|I|S|U|A|L| |-@1| +0&&@51|2| @9 diff --git a/src/testdir/dumps/Test_win_gotoid_3.dump b/src/testdir/dumps/Test_win_gotoid_3.dump new file mode 100644 index 0000000..2de7346 --- /dev/null +++ b/src/testdir/dumps/Test_win_gotoid_3.dump @@ -0,0 +1,15 @@ +|0+0&#ffffff0| @73 +|1| @73 +>2| @73 +|3| @73 +|4| @73 +|[+3&&|N|o| |N|a|m|e|]| @47|3|,|1| @11|T|o|p +|2+0&&|1| @72 +|2@1| @72 +|2|3| @72 +|2|4| @72 +|2|5| @72 +|2|6| @72 +|[+1&&|N|o| |N|a|m|e|]| @47|3|,|1| @11|T|o|p +|r+0&&|e|g| |=| |"|2|3|"| @64 +@75 diff --git a/src/testdir/dumps/Test_winbar_not_visible.dump b/src/testdir/dumps/Test_winbar_not_visible.dump new file mode 100644 index 0000000..894ac21 --- /dev/null +++ b/src/testdir/dumps/Test_winbar_not_visible.dump @@ -0,0 +1,10 @@ +|[+1&#ffffff0|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +> +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump b/src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump new file mode 100644 index 0000000..9eff5ba --- /dev/null +++ b/src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump @@ -0,0 +1,10 @@ +|a+1&#ffffff0|b|c|d|e| @69 +> +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|a+3#0000000&|b|c|d|e| @69 +| +0&&@74 diff --git a/src/testdir/dumps/Test_wincolor_01.dump b/src/testdir/dumps/Test_wincolor_01.dump new file mode 100644 index 0000000..5a5ccf5 --- /dev/null +++ b/src/testdir/dumps/Test_wincolor_01.dump @@ -0,0 +1,8 @@ +| +0#af5f00255#ffd7ff255@1|2| | +0#0000001&@4| +0&#e0e0e08| +0&#ffd7ff255@64 +| +0#af5f00255&@1|1| |1+0#0000001&@4|1+0&#e0e0e08@4| | +0&#ffd7ff255@59 +| +8#af5f00255&@1|0| |2+0#0000001#e0e0e08@4>2+0&#ffd7ff255@5| +8&&@59 +| +0#af5f00255&@1|1| |3+0#0000001&| |h|e|r|e+0&#e0e0e08| +0&#ffd7ff255|3| @62 +| +0#af5f00255&@1|2| | +0#0000001&@4| +0&#e0e0e08| +0&#ffd7ff255@64 +| +0#af5f00255&@1|3| |t+0#40ff4011&|h|e| |c|a+0&#e0e0e08|t+0&#ffd7ff255| |i|s| |o+1&&|u|t| +0&&|o|f| |t|h|e| |b|a|g| +0#0000001&@45 +|~+0#4040ff13&| @73 +|-+2#0000000#ffffff0@1| |V|I|S|U|A|L| |-@1| +0&&@34|2| @8|3|,|6| @10|A|l@1| diff --git a/src/testdir/dumps/Test_wincolor_lcs.dump b/src/testdir/dumps/Test_wincolor_lcs.dump new file mode 100644 index 0000000..1e146b2 --- /dev/null +++ b/src/testdir/dumps/Test_wincolor_lcs.dump @@ -0,0 +1,8 @@ +|<+0#4040ff13#ffff4012| +0#0000001&@73 +|-+0#0000e05&@2|>|-@6>s+0#0000001&|o|m|e|.+0#0000e05&|r+0#0000001&|a|n|d|o|m|.+0#0000e05&|*+0#e0e0e08#6c6c6c255|.+0#0000e05#ffff4012|e+0#0000001&|n|o|u|g|h|.+0#0000e05&|l+0#0000001&|o|n|g|.+0#0000e05&|t+0#0000001&|o|.+0#0000e05&|s+0#0000001&|h|o|w|.+0#0000e05&|'+0#0000001&|e|x|t|e|n|d|s|'|.+0#0000e05&|a+0#0000001&|n|d|.+0#0000e05&|'+0#0000001&|p|r|e|c|e|d|e|s|'|.+0#0000e05&|i+0#0000001&|n|c|l|>+0#4040ff13& +|<| +0#0000001&@73 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000#ffffff0@56|2|,|3|-|1|7| @7|A|l@1| diff --git a/src/testdir/dumps/Test_winline_rnu.dump b/src/testdir/dumps/Test_winline_rnu.dump new file mode 100644 index 0000000..31d579e --- /dev/null +++ b/src/testdir/dumps/Test_winline_rnu.dump @@ -0,0 +1,5 @@ +|1+8#5fafaf255#303030255| @2> +0#0000000#ffffff0@45 +| +0#af5f00255&@1|1| |a+0#0000000&@45 +| +0#af5f00255&@3|a+0#0000000&@45 +| +0#af5f00255&@3|a+0#0000000&@17| @27 +@32|1|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/dumps/Test_winscrolled_not_when_defined_1.dump b/src/testdir/dumps/Test_winscrolled_not_when_defined_1.dump new file mode 100644 index 0000000..ef42464 --- /dev/null +++ b/src/testdir/dumps/Test_winscrolled_not_when_defined_1.dump @@ -0,0 +1,10 @@ +>a+0&#ffffff0@2| @56 +|b@2| @56 +|~+0#4040ff13&| @58 +|~| @58 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @28|1|,|1| @11|A|l@1 +|a+0&&@2| @56 +|b@2| @56 +|~+0#4040ff13&| @58 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @28|1|,|1| @11|A|l@1 +|:+0&&|a|u| |W|i|n|S|c|r|o|l@1|e|d| |*| |c|a|l@1| |t|i|m|e|r|_|s|t|a|r|t|(|1|0@1|,| |'|S|h|o|w|T|r|i|g@1|e|r|e|d|'|)| @3 diff --git a/src/testdir/dumps/Test_winscrolled_not_when_defined_2.dump b/src/testdir/dumps/Test_winscrolled_not_when_defined_2.dump new file mode 100644 index 0000000..b5cbca4 --- /dev/null +++ b/src/testdir/dumps/Test_winscrolled_not_when_defined_2.dump @@ -0,0 +1,10 @@ +>b+0&#ffffff0@2| @56 +|~+0#4040ff13&| @58 +|~| @58 +|~| @58 +|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @28|2|,|1| @11|B|o|t +|a+0&&@2| @56 +|b@2| @56 +|~+0#4040ff13&| @58 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @28|1|,|1| @11|A|l@1 +|t+0&&|r|i|g@1|e|r|e|d| @50 diff --git a/src/testdir/dumps/Test_winscrolled_once_only_1.dump b/src/testdir/dumps/Test_winscrolled_once_only_1.dump new file mode 100644 index 0000000..56d6401 --- /dev/null +++ b/src/testdir/dumps/Test_winscrolled_once_only_1.dump @@ -0,0 +1,10 @@ +|a+0&#ffffff0@2| @26||+1&&>b+0&&@2| @25 +|b@2| @26||+1&&|~+0#4040ff13&| @27 +|~| @28||+1#0000000&|~+0#4040ff13&| @27 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1| @8|A|l@1|||~+0#4040ff13&| @27 +|a+0#0000000&@2| @26||+1&&|~+0#4040ff13&| @27 +|b+0#0000000&@2| @26||+1&&|~+0#4040ff13&| @27 +|~| @28||+1#0000000&|~+0#4040ff13&| @27 +|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1| @8|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @1|2|,|1| @7|B|o|t +|1+0&&| |1|0@2| |[|'|r|o|w|'|,| |[@1|'|c|o|l|'|,| |[@1|'|l|e|a|f|'|,| |1|0@1|2|]|,| |[|'|l|e|a|f|'|,| |1|0@1|1|]@2|,| |[ +|'|l|e|a|f|'|,| |1|0@2|]@2| @44 diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim new file mode 100644 index 0000000..f205d43 --- /dev/null +++ b/src/testdir/gen_opt_test.vim @@ -0,0 +1,241 @@ +" Script to generate testdir/opt_test.vim from option.c + +set cpo=&vim + +" Only do this when build with the +eval feature. +if 1 + +set nomore + +" The terminal size is restored at the end. +" Clear out t_WS, we don't want to resize the actual terminal. +let script = [ + \ '" DO NOT EDIT: Generated with gen_opt_test.vim', + \ '" Used by test_options.vim.', + \ '', + \ 'let save_columns = &columns', + \ 'let save_lines = &lines', + \ 'set t_WS=', + \ ] + +/#define p_term +let end = line('.') + +" font name that works everywhere (hopefully) +let fontname = has('win32') ? 'fixedsys' : 'fixed' + +" Two lists with values: values that work and values that fail. +" When not listed, "othernum" or "otherstring" is used. +let test_values = { + \ 'cmdheight': [[1, 2, 10], [-1, 0]], + \ 'cmdwinheight': [[1, 2, 10], [-1, 0]], + \ 'columns': [[12, 80], [-1, 0, 10]], + \ 'conceallevel': [[0, 1, 2, 3], [-1, 4, 99]], + \ 'foldcolumn': [[0, 1, 4, 12], [-1, 13, 999]], + \ 'helpheight': [[0, 10, 100], [-1]], + \ 'history': [[0, 1, 100], [-1, 10001]], + \ 'iminsert': [[0, 1], [-1, 3, 999]], + \ 'imsearch': [[-1, 0, 1], [-2, 3, 999]], + \ 'imstyle': [[0, 1], [-1, 2, 999]], + \ 'lines': [[2, 24], [-1, 0, 1]], + \ 'linespace': [[0, 2, 4], ['']], + \ 'numberwidth': [[1, 4, 8, 10, 11, 20], [-1, 0, 21]], + \ 'regexpengine': [[0, 1, 2], [-1, 3, 999]], + \ 'report': [[0, 1, 2, 9999], [-1]], + \ 'scroll': [[0, 1, 2, 20], [-1]], + \ 'scrolljump': [[-50, -1, 0, 1, 2, 20], [999]], + \ 'scrolloff': [[0, 1, 2, 20], [-1]], + \ 'shiftwidth': [[0, 1, 8, 999], [-1]], + \ 'sidescroll': [[0, 1, 8, 999], [-1]], + \ 'sidescrolloff': [[0, 1, 8, 999], [-1]], + \ 'tabstop': [[1, 4, 8, 12], [-1, 0]], + \ 'textwidth': [[0, 1, 8, 99], [-1]], + \ 'timeoutlen': [[0, 8, 99999], [-1]], + \ 'titlelen': [[0, 1, 8, 9999], [-1]], + \ 'updatecount': [[0, 1, 8, 9999], [-1]], + \ 'updatetime': [[0, 1, 8, 9999], [-1]], + \ 'verbose': [[-1, 0, 1, 8, 9999], []], + \ 'wildcharm': [[-1, 0, 100], []], + \ 'winheight': [[1, 10, 999], [-1, 0]], + \ 'winminheight': [[0, 1], [-1]], + \ 'winminwidth': [[0, 1, 10], [-1]], + \ 'winwidth': [[1, 10, 999], [-1, 0]], + \ + \ 'ambiwidth': [['', 'single'], ['xxx']], + \ 'background': [['', 'light', 'dark'], ['xxx']], + \ 'backspace': [[0, 2, 3, '', 'eol', 'eol,start', 'indent,eol,nostop'], ['4', 'xxx']], + \ 'backupcopy': [['yes', 'auto'], ['', 'xxx', 'yes,no']], + \ 'backupext': [['xxx'], ['']], + \ 'belloff': [['', 'all', 'copy,error'], ['xxx']], + \ 'breakindentopt': [['', 'min:3', 'sbr'], ['xxx', 'min', 'min:x']], + \ 'browsedir': [['', 'last', '/'], ['xxx']], + \ 'bufhidden': [['', 'hide', 'wipe'], ['xxx', 'hide,wipe']], + \ 'buftype': [['', 'help', 'nofile'], ['xxx', 'help,nofile']], + \ 'casemap': [['', 'internal'], ['xxx']], + \ 'cedit': [['', '\'], ['xxx', 'f']], + \ 'clipboard': [['', 'unnamed', 'autoselect,unnamed', 'html', 'exclude:vimdisplay'], ['xxx', '\ze*', 'exclude:\\%(']], + \ 'colorcolumn': [['', '8', '+2'], ['xxx']], + \ 'comments': [['', 'b:#'], ['xxx']], + \ 'commentstring': [['', '/*%s*/'], ['xxx']], + \ 'complete': [['', 'w,b'], ['xxx']], + \ 'concealcursor': [['', 'n', 'nvic'], ['xxx']], + \ 'completeopt': [['', 'menu', 'menu,longest'], ['xxx', 'menu,,,longest,']], + \ 'completepopup': [['', 'height:13', 'highlight:That', 'width:10,height:234,highlight:Mine'], ['height:yes', 'width:no', 'xxx', 'xxx:99', 'border:maybe', 'border:1']], + \ 'completeslash': [['', 'slash', 'backslash'], ['xxx']], + \ 'cryptmethod': [['', 'zip'], ['xxx']], + \ 'cscopequickfix': [['', 's-', 's-,c+,e0'], ['xxx', 's,g,d']], + \ 'cursorlineopt': [['both', 'line', 'number', 'screenline', 'line,number'], ['', 'xxx', 'line,screenline']], + \ 'debug': [['', 'msg', 'msg', 'beep'], ['xxx']], + \ 'diffopt': [['', 'filler', 'icase,iwhite'], ['xxx', 'algorithm:xxx', 'algorithm:']], + \ 'display': [['', 'lastline', 'lastline,uhex'], ['xxx']], + \ 'eadirection': [['', 'both', 'ver'], ['xxx', 'ver,hor']], + \ 'encoding': [['latin1'], ['xxx', '']], + \ 'eventignore': [['', 'WinEnter', 'WinLeave,winenter', 'all,WinEnter'], ['xxx']], + \ 'fileencoding': [['', 'latin1', 'xxx'], []], + \ 'fileformat': [['', 'dos', 'unix'], ['xxx']], + \ 'fileformats': [['', 'dos', 'dos,unix'], ['xxx']], + \ 'fillchars': [['', 'vert:x'], ['xxx']], + \ 'foldclose': [['', 'all'], ['xxx']], + \ 'foldmethod': [['manual', 'indent'], ['', 'xxx', 'expr,diff']], + \ 'foldopen': [['', 'all', 'hor,jump'], ['xxx']], + \ 'foldmarker': [['((,))'], ['', 'xxx']], + \ 'formatoptions': [['', 'vt', 'v,t'], ['xxx']], + \ 'guicursor': [['', 'n:block-Cursor'], ['xxx']], + \ 'guifont': [['', fontname], []], + \ 'guifontwide': [['', fontname], []], + \ 'guifontset': [['', fontname], []], + \ 'guioptions': [['', 'a'], ['Q']], + \ 'helplang': [['', 'de', 'de,it'], ['xxx']], + \ 'highlight': [['', 'e:Error'], ['xxx']], + \ 'imactivatekey': [['', 'S-space'], ['xxx']], + \ 'isfname': [['', '@', '@,48-52'], ['xxx', '@48']], + \ 'isident': [['', '@', '@,48-52'], ['xxx', '@48']], + \ 'iskeyword': [['', '@', '@,48-52'], ['xxx', '@48']], + \ 'isprint': [['', '@', '@,48-52'], ['xxx', '@48']], + \ 'keymap': [['', 'accents'], ['xxx']], + \ 'keymodel': [['', 'startsel', 'startsel,stopsel'], ['xxx']], + \ 'keyprotocol': [['', 'xxx:none', 'yyy:mok2', 'zzz:kitty'], + \ [':none', 'xxx:', 'x:non', 'y:mok3', 'z:kittty']], + \ 'langmap': [['', 'xX', 'aA,bB'], ['xxx']], + \ 'lispoptions': [['', 'expr:0', 'expr:1'], ['xxx']], + \ 'listchars': [['', 'eol:x', 'eol:x,space:y'], ['xxx']], + \ 'matchpairs': [['', '(:)', '(:),<:>'], ['xxx']], + \ 'mkspellmem': [['10000,100,12'], ['', 'xxx']], + \ 'mouse': [['', 'a', 'nvi'], ['xxx', 'n,v,i']], + \ 'mousemodel': [['', 'popup'], ['xxx']], + \ 'mouseshape': [['', 'n:arrow'], ['xxx']], + \ 'nrformats': [['', 'alpha', 'alpha,hex,bin'], ['xxx']], + \ 'previewpopup': [['', 'height:13', 'width:10,height:234'], ['height:yes', 'xxx', 'xxx:99']], + \ 'printmbfont': [['', 'r:some', 'b:Bold,c:yes'], ['xxx']], + \ 'printoptions': [['', 'header:0', 'left:10pc,top:5pc'], ['xxx']], + \ 'scrollopt': [['', 'ver', 'ver,hor'], ['xxx']], + \ 'renderoptions': [[''], ['xxx']], + \ 'rightleftcmd': [['search'], ['xxx']], + \ 'selection': [['old', 'inclusive'], ['', 'xxx']], + \ 'selectmode': [['', 'mouse', 'key,cmd'], ['xxx']], + \ 'sessionoptions': [['', 'blank', 'help,options,slash'], ['xxx']], + \ 'showcmdloc': [['last', 'statusline', 'tabline'], ['xxx']], + \ 'signcolumn': [['', 'auto', 'no'], ['xxx', 'no,yes']], + \ 'spellfile': [['', 'file.en.add', '/tmp/dir\ with\ space/en.utf-8.add'], ['xxx', '/tmp/file']], + \ 'spelllang': [['', 'xxx', 'sr@latin'], ['not&lang', "that\\\rthere"]], + \ 'spelloptions': [['', 'camel'], ['xxx']], + \ 'spellsuggest': [['', 'best', 'double,33'], ['xxx']], + \ 'splitkeep': [['cursor', 'screen', 'topline'], ['xxx']], + \ 'swapsync': [['', 'sync', 'fsync'], ['xxx']], + \ 'switchbuf': [['', 'useopen', 'split,newtab'], ['xxx']], + \ 'tagcase': [['smart', 'match'], ['', 'xxx', 'smart,match']], + \ 'term': [[], []], + \ 'termguicolors': [[], []], + \ 'termencoding': [has('gui_gtk') ? [] : ['', 'utf-8'], ['xxx']], + \ 'termwinsize': [['', '24x80', '0x80', '32x0', '0x0'], ['xxx', '80', '8ax9', '24x80b']], + \ 'termwintype': [['', 'winpty', 'conpty'], ['xxx']], + \ 'toolbar': [['', 'icons', 'text'], ['xxx']], + \ 'toolbariconsize': [['', 'tiny', 'huge'], ['xxx']], + \ 'ttymouse': [['', 'xterm'], ['xxx']], + \ 'ttytype': [[], []], + \ 'varsofttabstop': [['8', '4,8,16,32'], ['xxx', '-1', '4,-1,20']], + \ 'vartabstop': [['8', '4,8,16,32'], ['xxx', '-1', '4,-1,20']], + \ 'viewoptions': [['', 'cursor', 'unix,slash'], ['xxx']], + \ 'viminfo': [['', '''50', '"30'], ['xxx']], + \ 'virtualedit': [['', 'all', 'all,block'], ['xxx']], + \ 'whichwrap': [['', 'b,s', 'bs'], ['xxx']], + \ 'wildmode': [['', 'full', 'list:full', 'full,longest'], ['xxx', 'a4', 'full,full,full,full,full']], + \ 'wildoptions': [['', 'tagfile', 'pum', 'fuzzy'], ['xxx']], + \ 'winaltkeys': [['menu', 'no'], ['', 'xxx']], + \ + \ 'luadll': [[], []], + \ 'perldll': [[], []], + \ 'pythondll': [[], []], + \ 'pythonthreedll': [[], []], + \ 'pyxversion': [[], []], + \ 'rubydll': [[], []], + \ 'tcldll': [[], []], + \ + \ 'othernum': [[-1, 0, 100], ['']], + \ 'otherstring': [['', 'xxx'], []], + \} + +1 +/struct vimoption options +while 1 + /{" + if line('.') > end + break + endif + let line = getline('.') + let name = substitute(line, '.*{"\([^"]*\)".*', '\1', '') + let shortname = substitute(line, '.*"\([^"]*\)".*', '\1', '') + + if has_key(test_values, name) + let a = test_values[name] + elseif line =~ 'P_NUM' + let a = test_values['othernum'] + else + let a = test_values['otherstring'] + endif + if len(a[0]) > 0 || len(a[1]) > 0 + if line =~ 'P_BOOL' + call add(script, 'set ' . name) + call add(script, 'set ' . shortname) + call add(script, 'set no' . name) + call add(script, 'set no' . shortname) + else + for val in a[0] + call add(script, 'set ' . name . '=' . val) + call add(script, 'set ' . shortname . '=' . val) + endfor + + " setting an option can only fail when it's implemented. + call add(script, "if exists('+" . name . "')") + for val in a[1] + call add(script, "silent! call assert_fails('set " . name . "=" . val . "')") + call add(script, "silent! call assert_fails('set " . shortname . "=" . val . "')") + endfor + call add(script, "endif") + endif + + " cannot change 'termencoding' in GTK + if name != 'termencoding' || !has('gui_gtk') + call add(script, 'set ' . name . '&') + call add(script, 'set ' . shortname . '&') + endif + if name == 'verbosefile' + call add(script, 'call delete("xxx")') + endif + + if name == 'more' + call add(script, 'set nomore') + elseif name == 'lines' + call add(script, 'let &lines = save_lines') + endif + endif +endwhile + +call add(script, 'let &columns = save_columns') +call add(script, 'let &lines = save_lines') + +call writefile(script, 'opt_test.vim') + +endif + +qa! diff --git a/src/testdir/gui_init.vim b/src/testdir/gui_init.vim new file mode 100644 index 0000000..4fa6cbc --- /dev/null +++ b/src/testdir/gui_init.vim @@ -0,0 +1,6 @@ +" gvimrc for test_gui_init.vim + +if has('gui_motif') || has('gui_gtk2') || has('gui_gtk3') + set guiheadroom=0 + set guioptions+=p +endif diff --git a/src/testdir/gui_preinit.vim b/src/testdir/gui_preinit.vim new file mode 100644 index 0000000..c351b72 --- /dev/null +++ b/src/testdir/gui_preinit.vim @@ -0,0 +1,7 @@ +" vimrc for test_gui_init.vim + +" Note that this flag must be added in the .vimrc file, before switching on +" syntax or filetype recognition (when the |gvimrc| file is sourced the system +" menu has already been loaded; the ":syntax on" and ":filetype on" commands +" load the menu too). +set guioptions+=M diff --git a/src/testdir/keycode_check.json b/src/testdir/keycode_check.json new file mode 100644 index 0000000..b06e3c5 --- /dev/null +++ b/src/testdir/keycode_check.json @@ -0,0 +1 @@ +{"31kitty":{"Space":"20","modkeys":"","version":"1b5b3e313b343030303b323163","C-Tab":"","A-Esc":"1b5b32373b313175","C-Space":"1b5b33323b3575","S-C-I":"1b5b3130353b3675","C-I":"1b5b3130353b3575","S-Tab":"1b5b393b3275","Tab":"09","resource":"","A-Tab":"1b5b393b313175","S-Space":"20","C-Esc":"1b5b32373b3575","kitty":"1b5b3f3175","protocol":"kitty","A-Space":"1b5b33323b313175","S-Esc":"1b5b32373b3275","Esc":"1b5b323775"},"32libvterm":{"Space":"20","modkeys":"","version":"1b5b3e303b3130303b3063","C-Tab":"","A-Esc":"1b5b32373b3375","C-Space":"1b5b33323b3575","S-C-I":"1b5b3130353b3675","C-I":"1b5b3130353b3575","S-Tab":"1b5b393b3275","Tab":"09","resource":"","A-Tab":"1b5b393b3375","S-Space":"20","C-Esc":"1b5b32373b3575","kitty":"1b5b3f3175","protocol":"kitty","A-Space":"1b5b33323b3375","S-Esc":"1b5b32373b3275","Esc":"1b5b323775"},"22libvterm":{"Space":"20","modkeys":"\u001b[>4;2m","version":"1b5b3e303b3130303b3063","C-Tab":"1b5b32373b353b397e","A-Esc":"1b5b32373b333b32377e","C-Space":"1b5b32373b353b33327e","S-C-I":"1b5b32373b363b37337e","C-I":"1b5b32373b353b3130357e","S-Tab":"1b5b5a","Tab":"09","resource":"","A-Tab":"1b5b32373b333b397e","S-Space":"1b5b32373b323b33327e","C-Esc":"1b5b32373b353b32377e","kitty":"","protocol":"mok2","A-Space":"1b5b32373b333b33327e","S-Esc":"1b5b32373b323b32377e","Esc":"1b"},"13kitty":{"Space":"20","modkeys":"","version":"1b5b3e313b343030303b323163","C-Tab":"","A-Esc":"1b1b","S-C-I":"1b5b3130353b3675","C-I":"09","S-Tab":"1b5b5a","Tab":"09","S-Space":"20","A-Tab":"1b09","resource":"","C-Esc":"1b","kitty":"1b5b3f3075","protocol":"none","A-Space":"1b5b33323b313175","S-Esc":"1b","Esc":"1b"},"21xterm":{"Space":"20","modkeys":"\u001b[>4;2m","version":"1b5b3e34313b3337373b3063","C-Tab":"1b5b32373b353b397e","A-Esc":"1b5b32373b333b32377e","C-Space":"1b5b32373b353b33327e","S-C-I":"1b5b32373b363b37337e","C-I":"1b5b32373b353b3130357e","S-Tab":"1b5b5a","Tab":"09","resource":"=30","A-Tab":"1b5b32373b333b397e","S-Space":"1b5b32373b323b33327e","C-Esc":"1b5b32373b353b32377e","kitty":"","protocol":"mok2","A-Space":"1b5b32373b333b33327e","S-Esc":"1b5b32373b323b32377e","Esc":"1b"},"12libvterm":{"Space":"20","modkeys":"\u001b[>4;0m","version":"1b5b3e303b3130303b3063","C-Tab":"1b5b393b3575","A-Esc":"9b00","S-C-I":"1b5b5a","C-I":"09","S-Tab":"1b5b5a","Tab":"09","resource":"","A-Tab":"8900","S-Space":"1b5b33323b3275","C-Esc":"1b5b32373b3575","kitty":"1b5b3f3075","protocol":"none","A-Space":"a000","S-Esc":"1b5b32373b3275","Esc":"1b"},"11xterm":{"Space":"20","modkeys":"\u001b[>4;0m","version":"1b5b3e34313b3337373b3063","C-Tab":"09","A-Esc":"9b00","S-C-I":"09","C-I":"09","S-Tab":"1b5b5a","Tab":"09","S-Space":"20","A-Tab":"8900","resource":"","C-Esc":"1b","kitty":"","protocol":"none","A-Space":"a000","S-Esc":"1b","Esc":"1b"}} diff --git a/src/testdir/keycode_check.vim b/src/testdir/keycode_check.vim new file mode 100644 index 0000000..8320341 --- /dev/null +++ b/src/testdir/keycode_check.vim @@ -0,0 +1,470 @@ +vim9script + +# Script to get various codes that keys send, depending on the protocol used. +# +# Usage: vim -u NONE -S keycode_check.vim +# +# Author: Bram Moolenaar +# Last Update: 2022 Nov 15 +# +# The codes are stored in the file "keycode_check.json", so that you can +# compare the results of various terminals. +# +# You can select what protocol to enable: +# - None +# - modifyOtherKeys level 2 +# - kitty keyboard protocol + +# Change directory to where this script is, so that the json file is found +# there. +exe 'cd ' .. expand(':h') +echo 'working in directory: ' .. getcwd() + +const filename = 'keycode_check.json' + +# Dictionary of dictionaries with the results in the form: +# {'xterm': {protocol: 'none', 'Tab': '09', 'S-Tab': '09'}, +# 'xterm2': {protocol: 'mok2', 'Tab': '09', 'S-Tab': '09'}, +# 'kitty': {protocol: 'kitty', 'Tab': '09', 'S-Tab': '09'}, +# } +# The values are in hex form. +var keycodes = {} + +if filereadable(filename) + keycodes = readfile(filename)->join()->json_decode() +else + # Use some dummy entries to try out with + keycodes = { + 'xterm': {protocol: 'none', 'Tab': '09', 'S-Tab': '09'}, + 'kitty': {protocol: 'kitty', 'Tab': '09', 'S-Tab': '1b5b393b3275'}, + } +endif +var orig_keycodes = deepcopy(keycodes) # used to detect something changed + +# Write the "keycodes" variable in JSON form to "filename". +def WriteKeycodes() + # If the file already exists move it to become the backup file. + if filereadable(filename) + if rename(filename, filename .. '~') + echoerr $'Renaming {filename} to {filename}~ failed!' + return + endif + endif + + if writefile([json_encode(keycodes)], filename) != 0 + echoerr $'Writing {filename} failed!' + endif +enddef + +# The key entries that we want to list, in this order. +# The first item is displayed in the prompt, the second is the key in +# the keycodes dictionary. +var key_entries = [ + ['Tab', 'Tab'], + ['Shift-Tab', 'S-Tab'], + ['Ctrl-Tab', 'C-Tab'], + ['Alt-Tab', 'A-Tab'], + ['Ctrl-I', 'C-I'], + ['Shift-Ctrl-I', 'S-C-I'], + ['Esc', 'Esc'], + ['Shift-Esc', 'S-Esc'], + ['Ctrl-Esc', 'C-Esc'], + ['Alt-Esc', 'A-Esc'], + ['Space', 'Space'], + ['Shift-Space', 'S-Space'], + ['Ctrl-Space', 'C-Space'], + ['Alt-Space', 'A-Space'], + ] + +# Given a terminal name and a item name, return the text to display. +def GetItemDisplay(term: string, item: string): string + var val = get(keycodes[term], item, '') + + # see if we can pretty-print this one + var pretty = val + if val[0 : 1] == '1b' + pretty = 'ESC' + var idx = 2 + + if val[0 : 3] == '1b5b' + pretty = 'CSI' + idx = 4 + endif + + var digits = false + while idx < len(val) + var cc = val[idx : idx + 1] + var nr = str2nr('0x' .. cc, 16) + idx += 2 + if nr >= char2nr('0') && nr <= char2nr('9') + if !digits + pretty ..= ' ' + endif + digits = true + pretty ..= cc[1] + else + if nr == char2nr(';') && digits + # don't use space between semicolon and digits to keep it short + pretty ..= ';' + else + digits = false + if nr >= char2nr(' ') && nr <= char2nr('~') + # printable character + pretty ..= ' ' .. printf('%c', nr) + else + # non-printable, use hex code + pretty = val + break + endif + endif + endif + endwhile + endif + + return pretty +enddef + + +# Action: list the information in "keycodes" in a more or less nice way. +def ActionList() + var terms = keys(keycodes) + if len(terms) == 0 + echo 'No terminal results yet' + return + endif + sort(terms) + + var items = ['protocol', 'version', 'kitty', 'modkeys'] + + key_entries->copy()->map((_, v) => v[1]) + + # For each terminal compute the needed width, add two. + # You may need to increase the terminal width to avoid wrapping. + var widths = [] + for [idx, term] in items(terms) + widths[idx] = len(term) + 2 + endfor + + for item in items + for [idx, term] in items(terms) + var l = len(GetItemDisplay(term, item)) + if widths[idx] < l + 2 + widths[idx] = l + 2 + endif + endfor + endfor + + # Use one column of width 10 for the item name. + echo "\n" + echon ' ' + for [idx, term] in items(terms) + echon printf('%-' .. widths[idx] .. 's', term) + endfor + echo "\n" + + for item in items + echon printf('%8s ', item) + for [idx, term] in items(terms) + echon printf('%-' .. widths[idx] .. 's', GetItemDisplay(term, item)) + endfor + echo '' + endfor + echo "\n" +enddef + +# Convert the literal string after "raw key input" into hex form. +def Literal2hex(code: string): string + var hex = '' + for i in range(len(code)) + hex ..= printf('%02x', char2nr(code[i])) + endfor + return hex +enddef + +def GetTermName(): string + var name = input('Enter the name of the terminal: ') + return name +enddef + +# Gather key codes for terminal "name". +def DoTerm(name: string) + var proto = inputlist([$'What protocol to enable for {name}:', + '1. None', + '2. modifyOtherKeys level 2', + '3. kitty', + ]) + echo "\n" + &t_TE = "\[>4;m" + var proto_name = 'unknown' + if proto == 1 + # Request the XTQMODKEYS value and request the kitty keyboard protocol status. + &t_TI = "\[?4m" .. "\[?u" + proto_name = 'none' + elseif proto == 2 + # Enable modifyOtherKeys level 2 and request the XTQMODKEYS value. + &t_TI = "\[>4;2m" .. "\[?4m" + proto_name = 'mok2' + elseif proto == 3 + # Enable Kitty keyboard protocol and request the status. + &t_TI = "\[>1u" .. "\[?u" + proto_name = 'kitty' + else + echoerr 'invalid protocol choice' + return + endif + + # Append the request for the version response, this is used to check we have + # the results. + &t_TI ..= "\[>c" + + # Pattern that matches the line with the version response. + const version_pattern = "\\\[>\\d\\+;\\d\\+;\\d*c" + + # Pattern that matches the XTQMODKEYS response: + # CSI > 4;Pv m + # where Pv indicates the modifyOtherKeys level + const modkeys_pattern = "\\\[>4;\\dm" + + # Pattern that matches the line with the status. Currently what terminals + # return for the Kitty keyboard protocol. + const kitty_status_pattern = "\\\[?\\d\\+u" + + ch_logfile('keylog', 'w') + + # executing a dummy shell command will output t_TI + !echo >/dev/null + + # Wait until the log file has the version response. + var startTime = reltime() + var seenVersion = false + while !seenVersion + var log = readfile('keylog') + if len(log) > 2 + for line in log + if line =~ 'raw key input' + var code = substitute(line, '.*raw key input: "\([^"]*\).*', '\1', '') + if code =~ version_pattern + seenVersion = true + echo 'Found the version response' + break + endif + endif + endfor + endif + if reltime(startTime)->reltimefloat() > 3 + # break out after three seconds + break + endif + endwhile + + echo 'seenVersion: ' seenVersion + + # Prepare the terminal entry, set protocol and clear status and version. + if !has_key(keycodes, name) + keycodes[name] = {} + endif + keycodes[name]['protocol'] = proto_name + keycodes[name]['version'] = '' + keycodes[name]['kitty'] = '' + keycodes[name]['modkeys'] = '' + + # Check the log file for a status and the version response + ch_logfile('', '') + var log = readfile('keylog') + delete('keylog') + + for line in log + if line =~ 'raw key input' + var code = substitute(line, '.*raw key input: "\([^"]*\).*', '\1', '') + + # Check for the XTQMODKEYS response. + if code =~ modkeys_pattern + var modkeys = substitute(code, '.*\(' .. modkeys_pattern .. '\).*', '\1', '') + # We could get the level out of the response, but showing the response + # itself provides more information. + # modkeys = substitute(modkeys, '.*4;\(\d\)m', '\1', '') + + if keycodes[name]['modkeys'] != '' + echomsg 'Another modkeys found after ' .. keycodes[name]['modkeys'] + endif + keycodes[name]['modkeys'] = modkeys + endif + + # Check for kitty keyboard protocol status + if code =~ kitty_status_pattern + var status = substitute(code, '.*\(' .. kitty_status_pattern .. '\).*', '\1', '') + # use the response itself as the status + status = Literal2hex(status) + + if keycodes[name]['kitty'] != '' + echomsg 'Another status found after ' .. keycodes[name]['kitty'] + endif + keycodes[name]['kitty'] = status + endif + + if code =~ version_pattern + var version = substitute(code, '.*\(' .. version_pattern .. '\).*', '\1', '') + keycodes[name]['version'] = Literal2hex(version) + break + endif + endif + endfor + + echo "For Alt to work you may need to press the Windows/Super key as well" + echo "When a key press doesn't get to Vim (e.g. when using Alt) press x" + + # The log of ignored typeahead is left around for debugging, start with an + # empty file here. + delete('keylog-ignore') + + for entry in key_entries + # Consume any typeahead. Wait a bit for any responses to arrive. + ch_logfile('keylog-ignore', 'a') + while 1 + sleep 100m + if getchar(1) == 0 + break + endif + while getchar(1) != 0 + getchar() + endwhile + endwhile + ch_logfile('', '') + + ch_logfile('keylog', 'w') + echo $'Press the {entry[0]} key (q to quit):' + var r = getcharstr() + ch_logfile('', '') + if r == 'q' + break + endif + + log = readfile('keylog') + delete('keylog') + if len(log) < 2 + echoerr 'failed to read result' + return + endif + var done = false + for line in log + if line =~ 'raw key input' + var code = substitute(line, '.*raw key input: "\([^"]*\).*', '\1', '') + + # Remove any version termresponse + code = substitute(code, version_pattern, '', 'g') + + # Remove any XTGETTCAP replies. + const cappat = "\P[01]+\\k\\+=\\x*\\\\\" + code = substitute(code, cappat, '', 'g') + + # Remove any kitty status reply + code = substitute(code, kitty_status_pattern, '', 'g') + if code == '' + continue + endif + + # Convert the literal bytes into hex. If 'x' was pressed then clear + # the entry. + var hex = '' + if code != 'x' + hex = Literal2hex(code) + endif + + keycodes[name][entry[1]] = hex + done = true + break + endif + endfor + if !done + echo 'Code not found in log' + endif + endfor +enddef + +# Action: Add key codes for a new terminal. +def ActionAdd() + var name = input('Enter name of the terminal: ') + echo "\n" + if index(keys(keycodes), name) >= 0 + echoerr $'Terminal {name} already exists' + return + endif + + DoTerm(name) +enddef + +# Action: Replace key codes for an already known terminal. +def ActionReplace() + var terms = keys(keycodes) + if len(terms) == 0 + echo 'No terminal results yet' + return + endif + + var choice = inputlist(['Select:'] + terms->copy()->map((idx, arg) => (idx + 1) .. ': ' .. arg)) + echo "\n" + if choice > 0 && choice <= len(terms) + DoTerm(terms[choice - 1]) + else + echo 'invalid index' + endif +enddef + +# Action: Clear key codes for an already known terminal. +def ActionClear() + var terms = keys(keycodes) + if len(terms) == 0 + echo 'No terminal results yet' + return + endif + + var choice = inputlist(['Select:'] + terms->copy()->map((idx, arg) => (idx + 1) .. ': ' .. arg)) + echo "\n" + if choice > 0 && choice <= len(terms) + remove(keycodes, terms[choice - 1]) + else + echo 'invalid index' + endif +enddef + +# Action: Quit, possibly after saving the results first. +def ActionQuit() + # If nothing was changed just quit + if keycodes == orig_keycodes + quit + endif + + while true + var res = input("Save the changed key codes (y/n)? ") + if res == 'n' + quit + endif + if res == 'y' + WriteKeycodes() + quit + endif + echo 'invalid reply' + endwhile +enddef + +# The main loop +while true + var action = inputlist(['Select operation:', + '1. List results', + '2. Add results for a new terminal', + '3. Replace results', + '4. Clear results', + '5. Quit', + ]) + echo "\n" + if action == 1 + ActionList() + elseif action == 2 + ActionAdd() + elseif action == 3 + ActionReplace() + elseif action == 4 + ActionClear() + elseif action == 5 + ActionQuit() + endif +endwhile diff --git a/src/testdir/lsan-suppress.txt b/src/testdir/lsan-suppress.txt new file mode 100644 index 0000000..8e1451e --- /dev/null +++ b/src/testdir/lsan-suppress.txt @@ -0,0 +1,13 @@ +# Suppress leaks from X libraries on Ubuntu focal. +leak:libX11.so.6 +leak:libXt.so.6 +leak:libcairo.so.2 +leak:libfontconfig.so.1 +leak:libglib-2.0.so.0 +# Matches leaks from libtinfo.so.5 and .6 +leak:libtinfo.so +# Suppress leaks from other language libraries. +leak:libperl.so.* +leak:libpython*.so.* +leak:libruby*.so.* +leak:libxcb*.so.* diff --git a/src/testdir/mouse.vim b/src/testdir/mouse.vim new file mode 100644 index 0000000..e2979b7 --- /dev/null +++ b/src/testdir/mouse.vim @@ -0,0 +1,372 @@ +" Helper functions for generating mouse events + +" xterm2 and sgr always work, urxvt is optional. +let g:Ttymouse_values = ['xterm2', 'sgr'] +if has('mouse_urxvt') + call add(g:Ttymouse_values, 'urxvt') +endif + +" dec doesn't support all the functionality +if has('mouse_dec') + let g:Ttymouse_dec = ['dec'] +else + let g:Ttymouse_dec = [] +endif + +" netterm only supports left click +if has('mouse_netterm') + let g:Ttymouse_netterm = ['netterm'] +else + let g:Ttymouse_netterm = [] +endif + +" Vim Mouse Codes. +" Used by the GUI and by MS-Windows Consoles. +" Keep these in sync with vim.h +let s:MOUSE_CODE = { + \ 'BTN_LEFT' : 0x00, + \ 'BTN_MIDDLE' : 0x01, + \ 'BTN_RIGHT' : 0x02, + \ 'BTN_RELEASE' : 0x03, + \ 'BTN_X1' : 0x300, + \ 'BTN_X2' : 0x400, + \ 'SCRL_DOWN' : 0x100, + \ 'SCRL_UP' : 0x200, + \ 'SCRL_LEFT' : 0x500, + \ 'SCRL_RIGHT' : 0x600, + \ 'MOVE' : 0x700, + \ 'MOD_SHIFT' : 0x04, + \ 'MOD_ALT' : 0x08, + \ 'MOD_CTRL' : 0x10, + \ } + + +" Helper function to emit a terminal escape code. +func TerminalEscapeCode(code, row, col, m) + if &ttymouse ==# 'xterm2' + " need to use byte encoding here. + let str = list2str([a:code + 0x20, a:col + 0x20, a:row + 0x20]) + if has('iconv') + let bytes = str->iconv('utf-8', 'latin1') + else + " Hopefully the numbers are not too big. + let bytes = str + endif + return "\[M" .. bytes + elseif &ttymouse ==# 'sgr' + return printf("\[<%d;%d;%d%s", a:code, a:col, a:row, a:m) + elseif &ttymouse ==# 'urxvt' + return printf("\[%d;%d;%dM", a:code + 0x20, a:col, a:row) + endif +endfunc + +func DecEscapeCode(code, down, row, col) + return printf("\[%d;%d;%d;%d&w", a:code, a:down, a:row, a:col) +endfunc + +func NettermEscapeCode(row, col) + return printf("\}%d,%d\r", a:row, a:col) +endfunc + +" Send low level mouse event to MS-Windows consoles or GUI +func MSWinMouseEvent(button, row, col, move, multiclick, modifiers) + let args = { } + let args.button = a:button + " Scroll directions are inverted in the GUI, no idea why. + if has('gui_running') + if a:button == s:MOUSE_CODE.SCRL_UP + let args.button = s:MOUSE_CODE.SCRL_DOWN + elseif a:button == s:MOUSE_CODE.SCRL_DOWN + let args.button = s:MOUSE_CODE.SCRL_UP + elseif a:button == s:MOUSE_CODE.SCRL_LEFT + let args.button = s:MOUSE_CODE.SCRL_RIGHT + elseif a:button == s:MOUSE_CODE.SCRL_RIGHT + let args.button = s:MOUSE_CODE.SCRL_LEFT + endif + endif + let args.row = a:row + let args.col = a:col + let args.move = a:move + let args.multiclick = a:multiclick + let args.modifiers = a:modifiers + call test_mswin_event("mouse", args) + unlet args +endfunc + +func MouseLeftClickCode(row, col) + if &ttymouse ==# 'dec' + return DecEscapeCode(2, 4, a:row, a:col) + elseif &ttymouse ==# 'netterm' + return NettermEscapeCode(a:row, a:col) + else + return TerminalEscapeCode(0, a:row, a:col, 'M') + endif +endfunc + +func MouseLeftClick(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_LEFT, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseLeftClickCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseMiddleClickCode(row, col) + if &ttymouse ==# 'dec' + return DecEscapeCode(4, 2, a:row, a:col) + else + return TerminalEscapeCode(1, a:row, a:col, 'M') + endif +endfunc + +func MouseMiddleClick(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_MIDDLE, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseMiddleClickCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseRightClickCode(row, col) + if &ttymouse ==# 'dec' + return DecEscapeCode(6, 1, a:row, a:col) + else + return TerminalEscapeCode(2, a:row, a:col, 'M') + endif +endfunc + +func MouseRightClick(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_RIGHT, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseRightClickCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseCtrlLeftClickCode(row, col) + let ctrl = 0x10 + return TerminalEscapeCode(0 + ctrl, a:row, a:col, 'M') +endfunc + +func MouseCtrlLeftClick(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_LEFT, a:row, a:col, 0, 0, + \ s:MOUSE_CODE.MOD_CTRL) + else + call feedkeys(MouseCtrlLeftClickCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseCtrlRightClickCode(row, col) + let ctrl = 0x10 + return TerminalEscapeCode(2 + ctrl, a:row, a:col, 'M') +endfunc + +func MouseCtrlRightClick(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_RIGHT, a:row, a:col, 0, 0, + \ s:MOUSE_CODE.MOD_CTRL) + else + call feedkeys(MouseCtrlRightClickCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseAltLeftClickCode(row, col) + let alt = 0x8 + return TerminalEscapeCode(0 + alt, a:row, a:col, 'M') +endfunc + +func MouseAltLeftClick(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_LEFT, a:row, a:col, 0, 0, + \ s:MOUSE_CODE.MOD_ALT) + else + call feedkeys(MouseAltLeftClickCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseAltRightClickCode(row, col) + let alt = 0x8 + return TerminalEscapeCode(2 + alt, a:row, a:col, 'M') +endfunc + +func MouseAltRightClick(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_RIGHT, a:row, a:col, 0, 0, + \ s:MOUSE_CODE.MOD_ALT) + else + call feedkeys(MouseAltRightClickCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseLeftReleaseCode(row, col) + if &ttymouse ==# 'dec' + return DecEscapeCode(3, 0, a:row, a:col) + elseif &ttymouse ==# 'netterm' + return '' + else + return TerminalEscapeCode(3, a:row, a:col, 'm') + endif +endfunc + +func MouseLeftRelease(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_RELEASE, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseLeftReleaseCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseMiddleReleaseCode(row, col) + if &ttymouse ==# 'dec' + return DecEscapeCode(5, 0, a:row, a:col) + else + return TerminalEscapeCode(3, a:row, a:col, 'm') + endif +endfunc + +func MouseMiddleRelease(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_RELEASE, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseMiddleReleaseCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseRightReleaseCode(row, col) + if &ttymouse ==# 'dec' + return DecEscapeCode(7, 0, a:row, a:col) + else + return TerminalEscapeCode(3, a:row, a:col, 'm') + endif +endfunc + +func MouseRightRelease(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_RELEASE, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseRightReleaseCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseLeftDragCode(row, col) + if &ttymouse ==# 'dec' + return DecEscapeCode(1, 4, a:row, a:col) + else + return TerminalEscapeCode(0x20, a:row, a:col, 'M') + endif +endfunc + +func MouseLeftDrag(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.BTN_LEFT, a:row, a:col, 1, 0, 0) + else + call feedkeys(MouseLeftDragCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseWheelUpCode(row, col) + return TerminalEscapeCode(0x40, a:row, a:col, 'M') +endfunc + +func MouseWheelUp(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.SCRL_UP, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseWheelUpCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseWheelDownCode(row, col) + return TerminalEscapeCode(0x41, a:row, a:col, 'M') +endfunc + +func MouseWheelDown(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.SCRL_DOWN, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseWheelDownCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseWheelLeftCode(row, col) + return TerminalEscapeCode(0x42, a:row, a:col, 'M') +endfunc + +func MouseWheelLeft(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.SCRL_LEFT, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseWheelLeftCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseWheelRightCode(row, col) + return TerminalEscapeCode(0x43, a:row, a:col, 'M') +endfunc + +func MouseWheelRight(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.SCRL_RIGHT, a:row, a:col, 0, 0, 0) + else + call feedkeys(MouseWheelRightCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseShiftWheelUpCode(row, col) + " todo feed shift mod. + return TerminalEscapeCode(0x40, a:row, a:col, 'M') +endfunc + +func MouseShiftWheelUp(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.SCRL_UP, a:row, a:col, 0, 0, + \ s:MOUSE_CODE.MOD_SHIFT) + else + call feedkeys(MouseShiftWheelUpCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseShiftWheelDownCode(row, col) + " todo feed shift mod. + return TerminalEscapeCode(0x41, a:row, a:col, 'M') +endfunc + +func MouseShiftWheelDown(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.SCRL_DOWN, a:row, a:col, 0, 0, + \ s:MOUSE_CODE.MOD_SHIFT) + else + call feedkeys(MouseShiftWheelDownCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseShiftWheelLeftCode(row, col) + " todo feed shift mod. + return TerminalEscapeCode(0x42, a:row, a:col, 'M') +endfunc + +func MouseShiftWheelLeft(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.SCRL_LEFT, a:row, a:col, 0, 0, + \ s:MOUSE_CODE.MOD_SHIFT) + else + call feedkeys(MouseShiftWheelLeftCode(a:row, a:col), 'Lx!') + endif +endfunc + +func MouseShiftWheelRightCode(row, col) + " todo feed shift mod. + return TerminalEscapeCode(0x43, a:row, a:col, 'M') +endfunc + +func MouseShiftWheelRight(row, col) + if has('win32') + call MSWinMouseEvent(s:MOUSE_CODE.SCRL_RIGHT, a:row, a:col, 0, 0, + \ s:MOUSE_CODE.MOD_SHIFT) + else + call feedkeys(MouseShiftWheelRightCode(a:row, a:col), 'Lx!') + endif +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/popupbounce.vim b/src/testdir/popupbounce.vim new file mode 100644 index 0000000..b9f7bd1 --- /dev/null +++ b/src/testdir/popupbounce.vim @@ -0,0 +1,80 @@ +" Use this script to measure the redrawing performance when a popup is being +" displayed. Usage with gcc: +" cd src +" # Edit Makefile to uncomment PROFILE_CFLAGS and PROFILE_LIBS +" make reconfig +" ./vim --clean -S testdir/popupbounce.vim main.c +" gprof vim gmon.out | vim - + +" using line continuation +set nocp + +" don't switch screens when quitting, so we can read the frames/sec +set t_te= + +let winid = popup_create(['line1', 'line2', 'line3', 'line4'], { + \ 'line' : 1, + \ 'col' : 1, + \ 'zindex' : 101, + \ }) +redraw + +let start = reltime() +let framecount = 0 + +let line = 1.0 +let col = 1 +let downwards = 1 +let col_inc = 1 +let initial_speed = 0.2 +let speed = initial_speed +let accel = 1.1 +let time = 0.1 + +let countdown = 0 + +while 1 + if downwards + let speed += time * accel + let line += speed + else + let speed -= time * accel + let line -= speed + endif + + if line + 3 >= &lines + let downwards = 0 + let speed = speed * 0.8 + let line = &lines - 3 + endif + if !downwards && speed < 1.0 + let downwards = 1 + let speed = initial_speed + if line + 4 > &lines && countdown == 0 + let countdown = 50 + endif + endif + + let col += col_inc + if col + 4 >= &columns + let col_inc = -1 + elseif col <= 1 + let col_inc = 1 + endif + + call popup_move(winid, {'line': float2nr(line), 'col': col}) + redraw + let framecount += 1 + if countdown > 0 + let countdown -= 1 + if countdown == 0 + break + endif + endif + +endwhile + +let elapsed = reltimefloat(reltime(start)) +echomsg framecount .. ' frames in ' .. string(elapsed) .. ' seconds, ' .. string(framecount / elapsed) .. ' frames/sec' + +qa diff --git a/src/testdir/python2/module.py b/src/testdir/python2/module.py new file mode 100644 index 0000000..e90106a --- /dev/null +++ b/src/testdir/python2/module.py @@ -0,0 +1,2 @@ +import before_1 +dir = '2' diff --git a/src/testdir/python3/module.py b/src/testdir/python3/module.py new file mode 100644 index 0000000..24bd036 --- /dev/null +++ b/src/testdir/python3/module.py @@ -0,0 +1,2 @@ +import before_1 +dir = '3' diff --git a/src/testdir/python_after/after.py b/src/testdir/python_after/after.py new file mode 100644 index 0000000..5cf8fa4 --- /dev/null +++ b/src/testdir/python_after/after.py @@ -0,0 +1,2 @@ +import before_2 +dir = "after" diff --git a/src/testdir/python_before/before.py b/src/testdir/python_before/before.py new file mode 100644 index 0000000..531e81a --- /dev/null +++ b/src/testdir/python_before/before.py @@ -0,0 +1 @@ +dir = "before" diff --git a/src/testdir/python_before/before_1.py b/src/testdir/python_before/before_1.py new file mode 100644 index 0000000..fa81ada --- /dev/null +++ b/src/testdir/python_before/before_1.py @@ -0,0 +1 @@ +# empty file diff --git a/src/testdir/python_before/before_2.py b/src/testdir/python_before/before_2.py new file mode 100644 index 0000000..fa81ada --- /dev/null +++ b/src/testdir/python_before/before_2.py @@ -0,0 +1 @@ +# empty file diff --git a/src/testdir/pythonx/failing.py b/src/testdir/pythonx/failing.py new file mode 100644 index 0000000..30e73a0 --- /dev/null +++ b/src/testdir/pythonx/failing.py @@ -0,0 +1 @@ +raise NotImplementedError diff --git a/src/testdir/pythonx/failing_import.py b/src/testdir/pythonx/failing_import.py new file mode 100644 index 0000000..511cae7 --- /dev/null +++ b/src/testdir/pythonx/failing_import.py @@ -0,0 +1 @@ +raise ImportError diff --git a/src/testdir/pythonx/module.py b/src/testdir/pythonx/module.py new file mode 100644 index 0000000..6bf5a64 --- /dev/null +++ b/src/testdir/pythonx/module.py @@ -0,0 +1 @@ +dir = 'x' diff --git a/src/testdir/pythonx/modulex.py b/src/testdir/pythonx/modulex.py new file mode 100644 index 0000000..ec6a706 --- /dev/null +++ b/src/testdir/pythonx/modulex.py @@ -0,0 +1 @@ +ddir = 'xx' diff --git a/src/testdir/pythonx/topmodule/__init__.py b/src/testdir/pythonx/topmodule/__init__.py new file mode 100644 index 0000000..792d600 --- /dev/null +++ b/src/testdir/pythonx/topmodule/__init__.py @@ -0,0 +1 @@ +# diff --git a/src/testdir/pythonx/topmodule/submodule/__init__.py b/src/testdir/pythonx/topmodule/submodule/__init__.py new file mode 100644 index 0000000..792d600 --- /dev/null +++ b/src/testdir/pythonx/topmodule/submodule/__init__.py @@ -0,0 +1 @@ +# diff --git a/src/testdir/pythonx/topmodule/submodule/subsubmodule/__init__.py b/src/testdir/pythonx/topmodule/submodule/subsubmodule/__init__.py new file mode 100644 index 0000000..792d600 --- /dev/null +++ b/src/testdir/pythonx/topmodule/submodule/subsubmodule/__init__.py @@ -0,0 +1 @@ +# diff --git a/src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py b/src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py new file mode 100644 index 0000000..792d600 --- /dev/null +++ b/src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py @@ -0,0 +1 @@ +# diff --git a/src/testdir/pyxfile/py2_magic.py b/src/testdir/pyxfile/py2_magic.py new file mode 100644 index 0000000..819892f --- /dev/null +++ b/src/testdir/pyxfile/py2_magic.py @@ -0,0 +1,4 @@ +# requires python 2.x + +import sys +print(sys.version) diff --git a/src/testdir/pyxfile/py2_shebang.py b/src/testdir/pyxfile/py2_shebang.py new file mode 100644 index 0000000..13bfc49 --- /dev/null +++ b/src/testdir/pyxfile/py2_shebang.py @@ -0,0 +1,4 @@ +#!/usr/bin/python2 + +import sys +print(sys.version) diff --git a/src/testdir/pyxfile/py3_magic.py b/src/testdir/pyxfile/py3_magic.py new file mode 100644 index 0000000..d4b7ee0 --- /dev/null +++ b/src/testdir/pyxfile/py3_magic.py @@ -0,0 +1,4 @@ +# requires python 3.x + +import sys +print(sys.version) diff --git a/src/testdir/pyxfile/py3_shebang.py b/src/testdir/pyxfile/py3_shebang.py new file mode 100644 index 0000000..ec05808 --- /dev/null +++ b/src/testdir/pyxfile/py3_shebang.py @@ -0,0 +1,4 @@ +#!/usr/bin/python3 + +import sys +print(sys.version) diff --git a/src/testdir/pyxfile/pyx.py b/src/testdir/pyxfile/pyx.py new file mode 100644 index 0000000..261a651 --- /dev/null +++ b/src/testdir/pyxfile/pyx.py @@ -0,0 +1,2 @@ +import sys +print(sys.version) diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim new file mode 100644 index 0000000..1cdeeef --- /dev/null +++ b/src/testdir/runtest.vim @@ -0,0 +1,618 @@ +" This script is sourced while editing the .vim file with the tests. +" When the script is successful the .res file will be created. +" Errors are appended to the test.log file. +" +" To execute only specific test functions, add a second argument. It will be +" matched against the names of the Test_ function. E.g.: +" ../vim -u NONE -S runtest.vim test_channel.vim open_delay +" The output can be found in the "messages" file. +" +" If the environment variable $TEST_FILTER is set then only test functions +" matching this pattern are executed. E.g. for sh/bash: +" export TEST_FILTER=Test_channel +" For csh: +" setenv TEST_FILTER Test_channel +" +" If the environment variable $TEST_SKIP_PAT is set then test functions +" matching this pattern will be skipped. It's the opposite of $TEST_FILTER. +" +" While working on a test you can make $TEST_NO_RETRY non-empty to not retry: +" export TEST_NO_RETRY=yes +" +" To ignore failure for tests that are known to fail in a certain environment, +" set $TEST_MAY_FAIL to a comma separated list of function names. E.g. for +" sh/bash: +" export TEST_MAY_FAIL=Test_channel_one,Test_channel_other +" The failure report will then not be included in the test.log file and +" "make test" will not fail. +" +" The test script may contain anything, only functions that start with +" "Test_" are special. These will be invoked and should contain assert +" functions. See test_assert.vim for an example. +" +" It is possible to source other files that contain "Test_" functions. This +" can speed up testing, since Vim does not need to restart. But be careful +" that the tests do not interfere with each other. +" +" If an error cannot be detected properly with an assert function add the +" error to the v:errors list: +" call add(v:errors, 'test foo failed: Cannot find xyz') +" +" If preparation for each Test_ function is needed, define a SetUp function. +" It will be called before each Test_ function. +" +" If cleanup after each Test_ function is needed, define a TearDown function. +" It will be called after each Test_ function. +" +" When debugging a test it can be useful to add messages to v:errors: +" call add(v:errors, "this happened") + + +" Without the +eval feature we can't run these tests, bail out. +silent! while 0 + qa! +silent! endwhile + +" In the GUI we can always change the screen size. +if has('gui_running') + set columns=80 lines=25 +endif + +" Check that the screen size is at least 24 x 80 characters. +if &lines < 24 || &columns < 80 + let error = 'Screen size too small! Tests require at least 24 lines with 80 characters, got ' .. &lines .. ' lines with ' .. &columns .. ' characters' + echoerr error + split test.log + $put =error + write + split messages + call append(line('$'), '') + call append(line('$'), 'From ' . expand('%') . ':') + call append(line('$'), error) + write + qa! +endif + +if has('reltime') + let s:run_start_time = reltime() + + if !filereadable('starttime') + " first test, store the overall test starting time + let s:test_start_time = localtime() + call writefile([string(s:test_start_time)], 'starttime') + else + " second or later test, read the overall test starting time + let s:test_start_time = readfile('starttime')[0]->str2nr() + endif +endif + +" Always use forward slashes. +set shellslash + +" Common with all tests on all systems. +source setup.vim + +" For consistency run all tests with 'nocompatible' set. +" This also enables use of line continuation. +set nocp viminfo+=nviminfo + +" Use utf-8 by default, instead of whatever the system default happens to be. +" Individual tests can overrule this at the top of the file and use +" g:orig_encoding if needed. +let g:orig_encoding = &encoding +set encoding=utf-8 + +" REDIR_TEST_TO_NULL has a very permissive SwapExists autocommand which is for +" the test_name.vim file itself. Replace it here with a more restrictive one, +" so we still catch mistakes. +if has("win32") + " replace any '/' directory separators by '\\' + let s:test_script_fname = substitute(expand('%'), '/', '\\', 'g') +else + let s:test_script_fname = expand('%') +endif +au! SwapExists * call HandleSwapExists() +func HandleSwapExists() + if exists('g:ignoreSwapExists') + return + endif + " Ignore finding a swap file for the test script (the user might be + " editing it and do ":make test_name") and the output file. + " Report finding another swap file and chose 'q' to avoid getting stuck. + if expand('') == 'messages' || expand('') =~ s:test_script_fname + let v:swapchoice = 'e' + else + call assert_report('Unexpected swap file: ' .. v:swapname) + let v:swapchoice = 'q' + endif +endfunc + +" Avoid stopping at the "hit enter" prompt +set nomore + +" Output all messages in English. +lang mess C + +" suppress menu translation +if has('gui_running') && exists('did_install_default_menus') + source $VIMRUNTIME/delmenu.vim + set langmenu=none + source $VIMRUNTIME/menu.vim +endif + +let s:srcdir = expand('%:p:h:h') + +if has('win32') + " avoid prompt that is long or contains a line break + let $PROMPT = '$P$G' + " On MS-Windows t_md and t_me are Vim specific escape sequences. + let s:t_bold = "\x1b[1m" + let s:t_normal = "\x1b[m" +else + let s:t_bold = &t_md + let s:t_normal = &t_me +endif + +if has('mac') + " In macOS, when starting a shell in a terminal, a bash deprecation warning + " message is displayed. This breaks the terminal test. Disable the warning + " message. + let $BASH_SILENCE_DEPRECATION_WARNING = 1 +endif + + +" Prepare for calling test_garbagecollect_now(). +let v:testing = 1 + +" By default, copy each buffer line into allocated memory, so that valgrind can +" detect accessing memory before and after it. +call test_override('alloc_lines', 1) + +" Support function: get the alloc ID by name. +function GetAllocId(name) + exe 'split ' . s:srcdir . '/alloc.h' + let top = search('typedef enum') + if top == 0 + call add(v:errors, 'typedef not found in alloc.h') + endif + let lnum = search('aid_' . a:name . ',') + if lnum == 0 + call add(v:errors, 'Alloc ID ' . a:name . ' not defined') + endif + close + return lnum - top - 1 +endfunc + +if has('reltime') + let g:func_start = reltime() +endif + +" Get the list of swap files in the current directory. +func s:GetSwapFileList() + let save_dir = &directory + let &directory = '.' + let files = swapfilelist() + let &directory = save_dir + + " remove a match with runtest.vim + let idx = indexof(files, 'v:val =~ "runtest.vim."') + if idx >= 0 + call remove(files, idx) + endif + + return files +endfunc + +" A previous (failed) test run may have left swap files behind. Delete them +" before running tests again, they might interfere. +for name in s:GetSwapFileList() + call delete(name) +endfor +unlet name + + +" Invoked when a test takes too much time. +func TestTimeout(id) + split test.log + call append(line('$'), '') + call append(line('$'), 'Test timed out: ' .. g:testfunc) + write + call add(v:errors, 'Test timed out: ' . g:testfunc) + + cquit! 42 +endfunc + +func RunTheTest(test) + let prefix = '' + if has('reltime') + let prefix = strftime('%M:%S', localtime() - s:test_start_time) .. ' ' + let g:func_start = reltime() + endif + echoconsole prefix .. 'Executing ' .. a:test + + if has('timers') + " No test should take longer than 30 seconds. If it takes longer we + " assume we are stuck and need to break out. + let test_timeout_timer = timer_start(30000, 'TestTimeout') + endif + + " Avoid stopping at the "hit enter" prompt + set nomore + + " Avoid a three second wait when a message is about to be overwritten by the + " mode message. + set noshowmode + + " Clear any overrides, except "alloc_lines". + call test_override('ALL', 0) + + " Some tests wipe out buffers. To be consistent, always wipe out all + " buffers. + %bwipe! + + " The test may change the current directory. Save and restore the + " directory after executing the test. + let save_cwd = getcwd() + + if exists("*SetUp") + try + call SetUp() + catch + call add(v:errors, 'Caught exception in SetUp() before ' . a:test . ': ' . v:exception . ' @ ' . v:throwpoint) + endtry + endif + + au VimLeavePre * call EarlyExit(g:testfunc) + if a:test =~ 'Test_nocatch_' + " Function handles errors itself. This avoids skipping commands after the + " error. + let g:skipped_reason = '' + exe 'call ' . a:test + if g:skipped_reason != '' + call add(s:messages, ' Skipped') + call add(s:skipped, 'SKIPPED ' . a:test . ': ' . g:skipped_reason) + endif + else + try + exe 'call ' . a:test + catch /^\cskipped/ + call add(s:messages, ' Skipped') + call add(s:skipped, 'SKIPPED ' . a:test . ': ' . substitute(v:exception, '^\S*\s\+', '', '')) + catch + call add(v:errors, 'Caught exception in ' . a:test . ': ' . v:exception . ' @ ' . v:throwpoint) + endtry + endif + au! VimLeavePre + + if a:test =~ '_terminal_' + " Terminal tests sometimes hang, give extra information + echoconsole 'After executing ' .. a:test + endif + + " In case 'insertmode' was set and something went wrong, make sure it is + " reset to avoid trouble with anything else. + set noinsertmode + + if exists("*TearDown") + try + call TearDown() + catch + call add(v:errors, 'Caught exception in TearDown() after ' . a:test . ': ' . v:exception . ' @ ' . v:throwpoint) + endtry + endif + + if has('timers') + call timer_stop(test_timeout_timer) + endif + + " Clear any autocommands and put back the catch-all for SwapExists. + au! + au SwapExists * call HandleSwapExists() + + " Check for and close any stray popup windows. + if has('popupwin') + call assert_equal([], popup_list(), 'Popup is still present') + call popup_clear(1) + endif + + if filereadable('guidialogfile') + call add(v:errors, "Unexpected dialog: " .. readfile('guidialogfile')->join('')) + call delete('guidialogfile') + endif + + " Close any extra tab pages and windows and make the current one not modified. + while tabpagenr('$') > 1 + let winid = win_getid() + quit! + if winid == win_getid() + echoerr 'Could not quit window' + break + endif + endwhile + + while 1 + let wincount = winnr('$') + if wincount == 1 + break + endif + bwipe! + if wincount == winnr('$') + " Did not manage to close a window. + only! + break + endif + endwhile + + exe 'cd ' . save_cwd + + if a:test =~ '_terminal_' + " Terminal tests sometimes hang, give extra information + echoconsole 'Finished ' . a:test + endif + + let message = 'Executed ' . a:test + if has('reltime') + let message ..= repeat(' ', 50 - len(message)) + let time = reltime(g:func_start) + if reltimefloat(time) > 0.1 + let message = s:t_bold .. message + endif + let message ..= ' in ' .. reltimestr(time) .. ' seconds' + if reltimefloat(time) > 0.1 + let message ..= s:t_normal + endif + endif + call add(s:messages, message) + let s:done += 1 + + " close any split windows + while winnr('$') > 1 + bwipe! + endwhile + + " May be editing some buffer, wipe it out. Then we may end up in another + " buffer, continue until we end up in an empty no-name buffer without a swap + " file. + while bufname() != '' || execute('swapname') !~ 'No swap file' + let bn = bufnr() + + noswapfile bwipe! + + if bn == bufnr() + " avoid getting stuck in the same buffer + break + endif + endwhile + + " Check if the test has left any swap files behind. Delete them before + " running tests again, they might interfere. + let swapfiles = s:GetSwapFileList() + if len(swapfiles) > 0 + call add(s:messages, "Found swap files: " .. string(swapfiles)) + for name in swapfiles + call delete(name) + endfor + endif +endfunc + +func AfterTheTest(func_name) + if len(v:errors) > 0 + if match(s:may_fail_list, '^' .. a:func_name) >= 0 + let s:fail_expected += 1 + call add(s:errors_expected, 'Found errors in ' . g:testfunc . ':') + call extend(s:errors_expected, v:errors) + else + let s:fail += 1 + call add(s:errors, 'Found errors in ' . g:testfunc . ':') + call extend(s:errors, v:errors) + endif + let v:errors = [] + endif +endfunc + +func EarlyExit(test) + " It's OK for the test we use to test the quit detection. + if a:test != 'Test_zz_quit_detected()' + call add(v:errors, v:errmsg) + call add(v:errors, 'Test caused Vim to exit: ' . a:test) + endif + + call FinishTesting() +endfunc + +" This function can be called by a test if it wants to abort testing. +func FinishTesting() + call AfterTheTest('') + + " Don't write viminfo on exit. + set viminfo= + + " Clean up files created by setup.vim + call delete('XfakeHOME', 'rf') + + if s:fail == 0 && s:fail_expected == 0 + " Success, create the .res file so that make knows it's done. + exe 'split ' . fnamemodify(g:testname, ':r') . '.res' + write + endif + + if len(s:errors) > 0 + " Append errors to test.log + split test.log + call append(line('$'), '') + call append(line('$'), 'From ' . g:testname . ':') + call append(line('$'), s:errors) + write + endif + + if s:done == 0 + if s:filtered > 0 + if $TEST_FILTER != '' + let message = "NO tests match $TEST_FILTER: '" .. $TEST_FILTER .. "'" + else + let message = "ALL tests match $TEST_SKIP_PAT: '" .. $TEST_SKIP_PAT .. "'" + endif + else + let message = 'NO tests executed' + endif + else + if s:filtered > 0 + call add(s:messages, "Filtered " .. s:filtered .. " tests with $TEST_FILTER and $TEST_SKIP_PAT") + endif + let message = 'Executed ' . s:done . (s:done > 1 ? ' tests' : ' test') + endif + if s:done > 0 && has('reltime') + let message = s:t_bold .. message .. repeat(' ', 40 - len(message)) + let message ..= ' in ' .. reltimestr(reltime(s:run_start_time)) .. ' seconds' + let message ..= s:t_normal + endif + echo message + call add(s:messages, message) + if s:fail > 0 + let message = s:fail . ' FAILED:' + echo message + call add(s:messages, message) + call extend(s:messages, s:errors) + endif + if s:fail_expected > 0 + let message = s:fail_expected . ' FAILED (matching $TEST_MAY_FAIL):' + echo message + call add(s:messages, message) + call extend(s:messages, s:errors_expected) + endif + + " Add SKIPPED messages + call extend(s:messages, s:skipped) + + " Append messages to the file "messages" + split messages + call append(line('$'), '') + call append(line('$'), 'From ' . g:testname . ':') + call append(line('$'), s:messages) + write + + qall! +endfunc + +" Source the test script. First grab the file name, in case the script +" navigates away. g:testname can be used by the tests. +let g:testname = expand('%') +let s:done = 0 +let s:fail = 0 +let s:fail_expected = 0 +let s:errors = [] +let s:errors_expected = [] +let s:messages = [] +let s:skipped = [] +if expand('%') =~ 'test_vimscript.vim' + " this test has intentional errors, don't use try/catch. + source % +else + try + source % + catch /^\cskipped/ + call add(s:messages, ' Skipped') + call add(s:skipped, 'SKIPPED ' . expand('%') . ': ' . substitute(v:exception, '^\S*\s\+', '', '')) + catch + let s:fail += 1 + call add(s:errors, 'Caught exception: ' . v:exception . ' @ ' . v:throwpoint) + endtry +endif + +" Delete the .res file, it may change behavior for completion +call delete(fnamemodify(g:testname, ':r') .. '.res') + +" Locate Test_ functions and execute them. +redir @q +silent function /^Test_ +redir END +let s:tests = split(substitute(@q, '\(function\|def\) \(\k*()\)', '\2', 'g')) + +" If there is an extra argument filter the function names against it. +if argc() > 1 + let s:tests = filter(s:tests, 'v:val =~ argv(1)') +endif + +" If the environment variable $TEST_FILTER is set then filter the function +" names against it. +let s:filtered = 0 +if $TEST_FILTER != '' + let s:filtered = len(s:tests) + let s:tests = filter(s:tests, 'v:val =~ $TEST_FILTER') + let s:filtered -= len(s:tests) +endif + +let s:may_fail_list = [] +if $TEST_MAY_FAIL != '' + " Split the list at commas and add () to make it match g:testfunc. + let s:may_fail_list = split($TEST_MAY_FAIL, ',')->map({i, v -> v .. '()'}) +endif + +" Execute the tests in alphabetical order. +for g:testfunc in sort(s:tests) + if $TEST_SKIP_PAT != '' && g:testfunc =~ $TEST_SKIP_PAT + call add(s:messages, g:testfunc .. ' matches $TEST_SKIP_PAT') + let s:filtered += 1 + continue + endif + + " Silence, please! + set belloff=all + let prev_error = '' + let total_errors = [] + let g:run_nr = 1 + + " A test can set g:test_is_flaky to retry running the test. + let g:test_is_flaky = 0 + + let starttime = strftime("%H:%M:%S") + call RunTheTest(g:testfunc) + + " Repeat a flaky test. Give up when: + " - $TEST_NO_RETRY is not empty + " - it fails again with the same message + " - it fails five times (with a different message) + if len(v:errors) > 0 + \ && $TEST_NO_RETRY == '' + \ && g:test_is_flaky + while 1 + call add(s:messages, 'Found errors in ' .. g:testfunc .. ':') + call extend(s:messages, v:errors) + + let endtime = strftime("%H:%M:%S") + call add(total_errors, $'Run {g:run_nr}, {starttime} - {endtime}:') + call extend(total_errors, v:errors) + + if g:run_nr >= 5 || prev_error == v:errors[0] + call add(total_errors, 'Flaky test failed too often, giving up') + let v:errors = total_errors + break + endif + + call add(s:messages, 'Flaky test failed, running it again') + + " Flakiness is often caused by the system being very busy. Sleep a + " couple of seconds to have a higher chance of succeeding the second + " time. + sleep 2 + + let prev_error = v:errors[0] + let v:errors = [] + let g:run_nr += 1 + + let starttime = strftime("%H:%M:%S") + call RunTheTest(g:testfunc) + + if len(v:errors) == 0 + " Test passed on rerun. + break + endif + endwhile + endif + + call AfterTheTest(g:testfunc) +endfor + +call FinishTesting() + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/samples/crypt_sodium_invalid.txt b/src/testdir/samples/crypt_sodium_invalid.txt new file mode 100644 index 0000000..35e31b5 Binary files /dev/null and b/src/testdir/samples/crypt_sodium_invalid.txt differ diff --git a/src/testdir/samples/quickfix.txt b/src/testdir/samples/quickfix.txt new file mode 100644 index 0000000..2de3835 --- /dev/null +++ b/src/testdir/samples/quickfix.txt @@ -0,0 +1,4 @@ +samples/quickfix.txt:1:1:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +samples/quickfix.txt:2:1:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb +samples/quickfix.txt:3:1:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc +samples/quickfix.txt:4:1:dddddddddd diff --git a/src/testdir/samples/re.freeze.txt b/src/testdir/samples/re.freeze.txt new file mode 100644 index 0000000..d768c23 --- /dev/null +++ b/src/testdir/samples/re.freeze.txt @@ -0,0 +1,6 @@ +:set re=0 or 2 +Search for the pattern: /\s\+\%#\@55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 + diff --git a/src/testdir/samples/test000 b/src/testdir/samples/test000 new file mode 100644 index 0000000..af8abe9 Binary files /dev/null and b/src/testdir/samples/test000 differ diff --git a/src/testdir/sautest/autoload/Test104.vim b/src/testdir/sautest/autoload/Test104.vim new file mode 100644 index 0000000..d1e0e17 --- /dev/null +++ b/src/testdir/sautest/autoload/Test104.vim @@ -0,0 +1 @@ +let Test104#numvar = 123 diff --git a/src/testdir/sautest/autoload/auto9.vim b/src/testdir/sautest/autoload/auto9.vim new file mode 100644 index 0000000..fad1fa7 --- /dev/null +++ b/src/testdir/sautest/autoload/auto9.vim @@ -0,0 +1,9 @@ +vim9script + +export func Getsome() + return 'some' +endfunc + +export def Add42(count: number): number + return count + 42 +enddef diff --git a/src/testdir/sautest/autoload/foo.vim b/src/testdir/sautest/autoload/foo.vim new file mode 100644 index 0000000..21d33a0 --- /dev/null +++ b/src/testdir/sautest/autoload/foo.vim @@ -0,0 +1,15 @@ +let g:loaded_foo_vim += 1 + +let foo#bar = {} + +func foo#bar.echo() + let g:called_foo_bar_echo += 1 +endfunc + +func foo#addFoo(head) + return a:head .. 'foo' +endfunc + +func foo#() + return 'empty' +endfunc diff --git a/src/testdir/sautest/autoload/footest.vim b/src/testdir/sautest/autoload/footest.vim new file mode 100644 index 0000000..1e78963 --- /dev/null +++ b/src/testdir/sautest/autoload/footest.vim @@ -0,0 +1,5 @@ +" Autoload script used by test_listdict.vim, test_exists.vim and test_let.vim +let footest#x = 1 +func footest#F() + return 0 +endfunc diff --git a/src/testdir/sautest/autoload/globone.vim b/src/testdir/sautest/autoload/globone.vim new file mode 100644 index 0000000..98c9a10 --- /dev/null +++ b/src/testdir/sautest/autoload/globone.vim @@ -0,0 +1 @@ +" used by Test_globpath() diff --git a/src/testdir/sautest/autoload/globtwo.vim b/src/testdir/sautest/autoload/globtwo.vim new file mode 100644 index 0000000..98c9a10 --- /dev/null +++ b/src/testdir/sautest/autoload/globtwo.vim @@ -0,0 +1 @@ +" used by Test_globpath() diff --git a/src/testdir/sautest/autoload/sourced.vim b/src/testdir/sautest/autoload/sourced.vim new file mode 100644 index 0000000..aac96b1 --- /dev/null +++ b/src/testdir/sautest/autoload/sourced.vim @@ -0,0 +1,4 @@ +let g:loaded_sourced_vim += 1 +func sourced#something() +endfunc +call sourced#something() diff --git a/src/testdir/screendump.vim b/src/testdir/screendump.vim new file mode 100644 index 0000000..a2a54f4 --- /dev/null +++ b/src/testdir/screendump.vim @@ -0,0 +1,123 @@ +" Functions shared by tests making screen dumps. + +" Only load this script once. +if exists('*VerifyScreenDump') + finish +endif + +source shared.vim +source term_util.vim + +" Skip the rest if there is no terminal feature at all. +if !has('terminal') + finish +endif + +" Read a dump file "fname" and if "filter" exists apply it to the text. +def ReadAndFilter(fname: string, filter: string): list + var contents = readfile(fname) + + if filereadable(filter) + # do this in the bottom window so that the terminal window is unaffected + wincmd j + enew + setline(1, contents) + exe "source " .. filter + contents = getline(1, '$') + enew! + wincmd k + redraw + endif + + return contents +enddef + + +" Verify that Vim running in terminal buffer "buf" matches the screen dump. +" "options" is passed to term_dumpwrite(). +" Additionally, the "wait" entry can specify the maximum time to wait for the +" screen dump to match in msec (default 1000 msec). +" The file name used is "dumps/{filename}.dump". +" +" To ignore part of the dump, provide a "dumps/{filename}.vim" file with +" Vim commands to be applied to both the reference and the current dump, so +" that parts that are irrelevant are not used for the comparison. The result +" is NOT written, thus "term_dumpdiff()" shows the difference anyway. +" +" Optionally an extra argument can be passed which is prepended to the error +" message. Use this when using the same dump file with different options. +" Returns non-zero when verification fails. +func VerifyScreenDump(buf, filename, options, ...) + let reference = 'dumps/' . a:filename . '.dump' + let filter = 'dumps/' . a:filename . '.vim' + let testfile = 'failed/' . a:filename . '.dump' + + let max_loops = get(a:options, 'wait', 1000) / 10 + + " Starting a terminal to make a screendump is always considered flaky. + let g:test_is_flaky = 1 + + " wait for the pending updates to be handled. + call TermWait(a:buf) + + " Redraw to execute the code that updates the screen. Otherwise we get the + " text and attributes only from the internal buffer. + redraw + + if filereadable(reference) + let refdump = ReadAndFilter(reference, filter) + else + " Must be a new screendump, always fail + let refdump = [] + endif + + let did_mkdir = 0 + if !isdirectory('failed') + let did_mkdir = 1 + call mkdir('failed') + endif + + let i = 0 + while 1 + " leave some time for updating the original window + sleep 10m + call delete(testfile) + call term_dumpwrite(a:buf, testfile, a:options) + let testdump = ReadAndFilter(testfile, filter) + if refdump == testdump + call delete(testfile) + if did_mkdir + call delete('failed', 'd') + endif + break + endif + if i == max_loops + " Leave the failed dump around for inspection. + if filereadable(reference) + let msg = 'See dump file difference: call term_dumpdiff("testdir/' .. testfile .. '", "testdir/' .. reference .. '")' + if a:0 == 1 + let msg = a:1 . ': ' . msg + endif + if len(testdump) != len(refdump) + let msg = msg . '; line count is ' . len(testdump) . ' instead of ' . len(refdump) + endif + else + let msg = 'See new dump file: call term_dumpload("testdir/' .. testfile .. '")' + " no point in retrying + let g:run_nr = 10 + endif + for i in range(len(refdump)) + if i >= len(testdump) + break + endif + if testdump[i] != refdump[i] + let msg = msg . '; difference in line ' . (i + 1) . ': "' . testdump[i] . '"' + endif + endfor + call assert_report(msg) + return 1 + endif + let i += 1 + endwhile + return 0 +endfunc diff --git a/src/testdir/script_util.vim b/src/testdir/script_util.vim new file mode 100644 index 0000000..28d6a62 --- /dev/null +++ b/src/testdir/script_util.vim @@ -0,0 +1,69 @@ +" Functions shared by the tests for Vim Script + +" Commands to track the execution path of a script +com! XpathINIT let g:Xpath = '' +com! -nargs=1 -bar Xpath let g:Xpath ..= +com! XloopINIT let g:Xloop = 1 +com! -nargs=1 -bar Xloop let g:Xpath ..= .. g:Xloop +com! XloopNEXT let g:Xloop += 1 + +" MakeScript() - Make a script file from a function. {{{2 +" +" Create a script that consists of the body of the function a:funcname. +" Replace any ":return" by a ":finish", any argument variable by a global +" variable, and every ":call" by a ":source" for the next following argument +" in the variable argument list. This function is useful if similar tests are +" to be made for a ":return" from a function call or a ":finish" in a script +" file. +func MakeScript(funcname, ...) + let script = tempname() + execute "redir! >" . script + execute "function" a:funcname + redir END + execute "edit" script + " Delete the "function" and the "endfunction" lines. Do not include the + " word "function" in the pattern since it might be translated if LANG is + " set. When MakeScript() is being debugged, this deletes also the debugging + " output of its line 3 and 4. + exec '1,/.*' . a:funcname . '(.*)/d' + /^\d*\s*endfunction\>/,$d + %s/^\d*//e + %s/return/finish/e + %s/\ 0 + let cnt = cnt + 1 + s/\) + diff --git a/src/testdir/setup.vim b/src/testdir/setup.vim new file mode 100644 index 0000000..ca94bae --- /dev/null +++ b/src/testdir/setup.vim @@ -0,0 +1,39 @@ +" Common preparations for running tests. + +" Only load this once. +if 1 + + " When using xterm version 377 the response to the modifyOtherKeys status + " interferes with some tests. Remove the request from the t_TI termcap + " entry. + let &t_TI = substitute(&t_TI, "\\\[?4m", '', '') + + if exists('s:did_load') + finish + endif + let s:did_load = 1 +endif + +" Make sure 'runtimepath' and 'packpath' does not include $HOME. +set rtp=$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after +if has('packages') + let &packpath = &rtp +endif + +" Only when the +eval feature is present. +if 1 + " Make sure the .Xauthority file can be found after changing $HOME. + if $XAUTHORITY == '' + let $XAUTHORITY = $HOME . '/.Xauthority' + endif + + " Avoid storing shell history. + let $HISTFILE = "" + + " Make sure $HOME does not get read or written. + " It must exist, gnome tries to create $HOME/.gnome2 + let $HOME = getcwd() . '/XfakeHOME' + if !isdirectory($HOME) + call mkdir($HOME) + endif +endif diff --git a/src/testdir/setup_gui.vim b/src/testdir/setup_gui.vim new file mode 100644 index 0000000..2e5e777 --- /dev/null +++ b/src/testdir/setup_gui.vim @@ -0,0 +1,31 @@ +" Common preparations for running GUI tests. + +let g:x11_based_gui = has('gui_motif') + \ || has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3') + +" Reasons for 'skipped'. +let g:not_supported = "Skipped: Feature/Option not supported by this GUI: " +let g:not_hosted = "Skipped: Test not hosted by the system/environment" + +" For KDE set a font, empty 'guifont' may cause a hang. +func GUISetUpCommon() + if has("gui_kde") + set guifont=Courier\ 10\ Pitch/8/-1/5/50/0/0/0/0/0 + endif + + " Gnome insists on creating $HOME/.gnome2/, set $HOME to avoid changing the + " actual home directory. But avoid triggering fontconfig by setting the + " cache directory. Only needed for Unix. + if $XDG_CACHE_HOME == '' && exists('g:tester_HOME') + let $XDG_CACHE_HOME = g:tester_HOME . '/.cache' + endif + call mkdir('Xhome') + let $HOME = fnamemodify('Xhome', ':p') +endfunc + +func GUITearDownCommon() + call delete('Xhome', 'rf') +endfunc + +" Ignore the "failed to create input context" error. +call test_ignore_error('E285') diff --git a/src/testdir/shared.vim b/src/testdir/shared.vim new file mode 100644 index 0000000..d373a6e --- /dev/null +++ b/src/testdir/shared.vim @@ -0,0 +1,411 @@ +" Functions shared by several tests. + +" Only load this script once. +if exists('*PythonProg') + finish +endif + +source view_util.vim + +" When 'term' is changed some status requests may be sent. The responses may +" interfere with what is being tested. A short sleep is used to process any of +" those responses first. +func WaitForResponses() + sleep 50m +endfunc + +" Get the name of the Python executable. +" Also keeps it in s:python. +func PythonProg() + " This test requires the Python command to run the test server. + " This most likely only works on Unix and Windows. + if has('unix') + " We also need the job feature or the pkill command to make sure the server + " can be stopped. + if !(has('job') || executable('pkill')) + return '' + endif + if executable('python') + let s:python = 'python' + elseif executable('python3') + let s:python = 'python3' + else + return '' + end + elseif has('win32') + " Use Python Launcher for Windows (py.exe) if available. + " NOTE: if you get a "Python was not found" error, disable the Python + " shortcuts in "Windows menu / Settings / Manage App Execution Aliases". + if executable('py.exe') + let s:python = 'py.exe' + elseif executable('python.exe') + let s:python = 'python.exe' + else + return '' + endif + else + return '' + endif + return s:python +endfunc + +" Run "cmd". Returns the job if using a job. +func RunCommand(cmd) + " Running an external command can occasionally be slow or fail. + let g:test_is_flaky = 1 + + let job = 0 + if has('job') + let job = job_start(a:cmd, {"stoponexit": "hup"}) + call job_setoptions(job, {"stoponexit": "kill"}) + elseif has('win32') + exe 'silent !start cmd /c start "test_channel" ' . a:cmd + else + exe 'silent !' . a:cmd . '&' + endif + return job +endfunc + +" Read the port number from the Xportnr file. +func GetPort() + let l = [] + " with 200 it sometimes failed, with 400 is rarily failed + for i in range(600) + try + let l = readfile("Xportnr") + catch + endtry + if len(l) >= 1 + break + endif + sleep 10m + endfor + call delete("Xportnr") + + if len(l) == 0 + " Can't make the connection, give up. + return 0 + endif + return l[0] +endfunc + +" Run a Python server for "cmd" and call "testfunc". +" Always kills the server before returning. +func RunServer(cmd, testfunc, args) + " The Python program writes the port number in Xportnr. + call delete("Xportnr") + + if len(a:args) == 1 + let arg = ' ' . a:args[0] + else + let arg = '' + endif + let pycmd = s:python . " " . a:cmd . arg + + try + let g:currentJob = RunCommand(pycmd) + + " Wait for some time for the port number to be there. + let port = GetPort() + if port == 0 + call assert_report(strftime("%H:%M:%S") .. " Can't start " .. a:cmd) + return + endif + + call call(function(a:testfunc), [port]) + catch + call assert_report('Caught exception: "' . v:exception . '" in ' . v:throwpoint) + finally + call s:kill_server(a:cmd) + endtry +endfunc + +func s:kill_server(cmd) + if has('job') + if exists('g:currentJob') + call job_stop(g:currentJob) + unlet g:currentJob + endif + elseif has('win32') + let cmd = substitute(a:cmd, ".py", '', '') + call system('taskkill /IM ' . s:python . ' /T /F /FI "WINDOWTITLE eq ' . cmd . '"') + else + call system("pkill -f " . a:cmd) + endif +endfunc + +" Wait for up to five seconds for "expr" to become true. "expr" can be a +" stringified expression to evaluate, or a funcref without arguments. +" Using a lambda works best. Example: +" call WaitFor({-> status == "ok"}) +" +" A second argument can be used to specify a different timeout in msec. +" +" When successful the time slept is returned. +" When running into the timeout an exception is thrown, thus the function does +" not return. +func WaitFor(expr, ...) + let timeout = get(a:000, 0, 5000) + let slept = s:WaitForCommon(a:expr, v:null, timeout) + if slept < 0 + throw 'WaitFor() timed out after ' . timeout . ' msec' + endif + return slept +endfunc + +" Wait for up to five seconds for "assert" to return zero. "assert" must be a +" (lambda) function containing one assert function. Example: +" call WaitForAssert({-> assert_equal("dead", job_status(job)}) +" +" A second argument can be used to specify a different timeout in msec. +" +" Return zero for success, one for failure (like the assert function). +func WaitForAssert(assert, ...) + let timeout = get(a:000, 0, 5000) + if s:WaitForCommon(v:null, a:assert, timeout) < 0 + return 1 + endif + return 0 +endfunc + +" Common implementation of WaitFor() and WaitForAssert(). +" Either "expr" or "assert" is not v:null +" Return the waiting time for success, -1 for failure. +func s:WaitForCommon(expr, assert, timeout) + " using reltime() is more accurate, but not always available + let slept = 0 + if exists('*reltimefloat') + let start = reltime() + endif + + while 1 + if type(a:expr) == v:t_func + let success = a:expr() + elseif type(a:assert) == v:t_func + let success = a:assert() == 0 + else + let success = eval(a:expr) + endif + if success + return slept + endif + + if slept >= a:timeout + break + endif + if type(a:assert) == v:t_func + " Remove the error added by the assert function. + call remove(v:errors, -1) + endif + + sleep 10m + if exists('*reltimefloat') + let slept = float2nr(reltimefloat(reltime(start)) * 1000) + else + let slept += 10 + endif + endwhile + + return -1 " timed out +endfunc + + +" Wait for up to a given milliseconds. +" With the +timers feature this waits for key-input by getchar(), Resume() +" feeds key-input and resumes process. Return time waited in milliseconds. +" Without +timers it uses simply :sleep. +func Standby(msec) + if has('timers') && exists('*reltimefloat') + let start = reltime() + let g:_standby_timer = timer_start(a:msec, function('s:feedkeys')) + call getchar() + return float2nr(reltimefloat(reltime(start)) * 1000) + else + execute 'sleep ' a:msec . 'm' + return a:msec + endif +endfunc + +func Resume() + if exists('g:_standby_timer') + call timer_stop(g:_standby_timer) + call s:feedkeys(0) + unlet g:_standby_timer + endif +endfunc + +func s:feedkeys(timer) + call feedkeys('x', 'nt') +endfunc + +" Get the name of the Vim executable that we expect has been build in the src +" directory. +func s:GetJustBuildVimExe() + if has("win32") + if !filereadable('..\vim.exe') && filereadable('..\vimd.exe') + " looks like the debug executable was intentionally build, so use it + return '..\vimd.exe' + endif + return '..\vim.exe' + endif + return '../vim' +endfunc + +" Get $VIMPROG to run the Vim executable. +" The Makefile writes it as the first line in the "vimcmd" file. +" Falls back to the Vim executable in the src directory. +func GetVimProg() + if filereadable('vimcmd') + return readfile('vimcmd')[0] + endif + echo 'Cannot read the "vimcmd" file, falling back to ../vim.' + + " Probably the script was sourced instead of running "make". + " We assume Vim was just build in the src directory then. + return s:GetJustBuildVimExe() +endfunc + +let g:valgrind_cnt = 1 + +" Get the command to run Vim, with -u NONE and --not-a-term arguments. +" If there is an argument use it instead of "NONE". +func GetVimCommand(...) + if filereadable('vimcmd') + let lines = readfile('vimcmd') + else + echo 'Cannot read the "vimcmd" file, falling back to ../vim.' + let lines = [s:GetJustBuildVimExe()] + endif + + if a:0 == 0 + let name = 'NONE' + else + let name = a:1 + endif + " For Unix Makefile writes the command to use in the second line of the + " "vimcmd" file, including environment options. + " Other Makefiles just write the executable in the first line, so fall back + " to that if there is no second line or it is empty. + if len(lines) > 1 && lines[1] != '' + let cmd = lines[1] + else + let cmd = lines[0] + endif + + let cmd = substitute(cmd, '-u \f\+', '-u ' . name, '') + if cmd !~ '-u '. name + let cmd = cmd . ' -u ' . name + endif + let cmd .= ' --not-a-term' + let cmd .= ' --gui-dialog-file guidialogfile' + let cmd = substitute(cmd, 'VIMRUNTIME=\S\+', '', '') + + " If using valgrind, make sure every run uses a different log file. + if cmd =~ 'valgrind.*--log-file=' + let cmd = substitute(cmd, '--log-file=\(\S*\)', '--log-file=\1.' . g:valgrind_cnt, '') + let g:valgrind_cnt += 1 + endif + + return cmd +endfunc + +" Return one when it looks like the tests are run with valgrind, which means +" that everything is much slower. +func RunningWithValgrind() + return GetVimCommand() =~ '\' +endfunc + +" Get the command to run Vim, with --clean instead of "-u NONE". +func GetVimCommandClean() + let cmd = GetVimCommand() + let cmd = substitute(cmd, '-u NONE', '--clean', '') + let cmd = substitute(cmd, '--not-a-term', '', '') + + " Force using utf-8, Vim may pick up something else from the environment. + let cmd ..= ' --cmd "set enc=utf8" ' + + " Optionally run Vim under valgrind + " let cmd = 'valgrind --tool=memcheck --leak-check=yes --num-callers=25 --log-file=valgrind ' . cmd + + return cmd +endfunc + +" Get the command to run Vim, with --clean, and force to run in terminal so it +" won't start a new GUI. +func GetVimCommandCleanTerm() + " Add -v to have gvim run in the terminal (if possible) + return GetVimCommandClean() .. ' -v ' +endfunc + +" Run Vim, using the "vimcmd" file and "-u NORC". +" "before" is a list of Vim commands to be executed before loading plugins. +" "after" is a list of Vim commands to be executed after loading plugins. +" Plugins are not loaded, unless 'loadplugins' is set in "before". +" Return 1 if Vim could be executed. +func RunVim(before, after, arguments) + return RunVimPiped(a:before, a:after, a:arguments, '') +endfunc + +func RunVimPiped(before, after, arguments, pipecmd) + let cmd = GetVimCommand() + let args = '' + if len(a:before) > 0 + call writefile(a:before, 'Xbefore.vim') + let args .= ' --cmd "so Xbefore.vim"' + endif + if len(a:after) > 0 + call writefile(a:after, 'Xafter.vim') + let args .= ' -S Xafter.vim' + endif + + " Optionally run Vim under valgrind + " let cmd = 'valgrind --tool=memcheck --leak-check=yes --num-callers=25 --log-file=valgrind ' . cmd + + exe "silent !" . a:pipecmd . cmd . args . ' ' . a:arguments + + if len(a:before) > 0 + call delete('Xbefore.vim') + endif + if len(a:after) > 0 + call delete('Xafter.vim') + endif + return 1 +endfunc + +func IsRoot() + if !has('unix') + return v:false + elseif $USER == 'root' || system('id -un') =~ '\' + return v:true + endif + return v:false +endfunc + +" Get all messages but drop the maintainer entry. +func GetMessages() + redir => result + redraw | messages + redir END + let msg_list = split(result, "\n") + if msg_list->len() > 0 && msg_list[0] =~ 'Messages maintainer:' + return msg_list[1:] + endif + return msg_list +endfunc + +" Run the list of commands in 'cmds' and look for 'errstr' in exception. +" Note that assert_fails() cannot be used in some places and this function +" can be used. +func AssertException(cmds, errstr) + let save_exception = '' + try + for cmd in a:cmds + exe cmd + endfor + catch + let save_exception = v:exception + endtry + call assert_match(a:errstr, save_exception) +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/silent.wav b/src/testdir/silent.wav new file mode 100644 index 0000000..4631a7e Binary files /dev/null and b/src/testdir/silent.wav differ diff --git a/src/testdir/summarize.vim b/src/testdir/summarize.vim new file mode 100644 index 0000000..d0d4e00 --- /dev/null +++ b/src/testdir/summarize.vim @@ -0,0 +1,62 @@ +set cpo&vim +if 1 + " This is executed only with the eval feature + set nocompatible + set viminfo= + func Count(match, type) + if a:type ==# 'executed' + let g:executed += (a:match+0) + elseif a:type ==# 'failed' + let g:failed += a:match+0 + elseif a:type ==# 'skipped' + let g:skipped += 1 + call extend(g:skipped_output, ["\t" .. a:match]) + endif + endfunc + + let g:executed = 0 + let g:skipped = 0 + let g:failed = 0 + let g:skipped_output = [] + let g:failed_output = [] + let output = [""] + + if $TEST_FILTER != '' + call extend(g:skipped_output, ["\tAll tests not matching $TEST_FILTER: '" .. $TEST_FILTER .. "'"]) + endif + + try + " This uses the :s command to just fetch and process the output of the + " tests, it doesn't actually replace anything. + " And it uses "silent" to avoid reporting the number of matches. + silent %s/Executed\s\+\zs\d\+\ze\s\+tests\?/\=Count(submatch(0),'executed')/egn + silent %s/^SKIPPED \zs.*/\=Count(submatch(0), 'skipped')/egn + silent %s/^\(\d\+\)\s\+FAILED:/\=Count(submatch(1), 'failed')/egn + + call extend(output, ["Skipped:"]) + call extend(output, skipped_output) + + call extend(output, [ + \ "", + \ "-------------------------------", + \ printf("Executed: %5d Tests", g:executed), + \ printf(" Skipped: %5d Tests", g:skipped), + \ printf(" %s: %5d Tests", g:failed == 0 ? 'Failed' : 'FAILED', g:failed), + \ "", + \ ]) + if filereadable('test.log') + " outputs and indents the failed test result + call extend(output, ["", "Failures: "]) + let failed_output = filter(readfile('test.log'), { v,k -> !empty(k)}) + call extend(output, map(failed_output, { v,k -> "\t".k})) + " Add a final newline + call extend(output, [""]) + endif + + catch " Catch-all + finally + call writefile(output, 'test_result.log') " overwrites an existing file + endtry +endif + +q! diff --git a/src/testdir/term_util.vim b/src/testdir/term_util.vim new file mode 100644 index 0000000..0f03731 --- /dev/null +++ b/src/testdir/term_util.vim @@ -0,0 +1,196 @@ +" Functions about terminal shared by several tests + +" Only load this script once. +if exists('*CanRunVimInTerminal') + finish +endif + +source shared.vim + +" For most tests we need to be able to run terminal Vim with 256 colors. On +" MS-Windows the console only has 16 colors and the GUI can't run in a +" terminal. +func CanRunVimInTerminal() + return has('terminal') && !has('win32') +endfunc + +" Skip the rest if there is no terminal feature at all. +if !has('terminal') + finish +endif + +" Stops the shell running in terminal "buf". +func StopShellInTerminal(buf) + call term_sendkeys(a:buf, "exit\r") + let job = term_getjob(a:buf) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) + call TermWait(a:buf) +endfunc + +" Wrapper around term_wait() to allow more time for re-runs of flaky tests +" The second argument is the minimum time to wait in msec, 10 if omitted. +func TermWait(buf, ...) + let wait_time = a:0 ? a:1 : 10 + if exists('g:run_nr') + if g:run_nr == 2 + let wait_time *= 4 + elseif g:run_nr > 2 + let wait_time *= 10 + endif + endif + call term_wait(a:buf, wait_time) + + " In case it wasn't set yet. + let g:test_is_flaky = 1 +endfunc + +" Run Vim with "arguments" in a new terminal window. +" By default uses a size of 20 lines and 75 columns. +" Returns the buffer number of the terminal. +" +" Options is a dictionary, these items are recognized: +" "keep_t_u7" - when 1 do not make t_u7 empty (resetting t_u7 avoids clearing +" parts of line 2 and 3 on the display) +" "rows" - height of the terminal window (max. 20) +" "cols" - width of the terminal window (max. 78) +" "statusoff" - number of lines the status is offset from default +" "wait_for_ruler" - if zero then don't wait for ruler to show +func RunVimInTerminal(arguments, options) + " If Vim doesn't exit a swap file remains, causing other tests to fail. + " Remove it here. + call delete(".swp") + + if exists('$COLORFGBG') + " Clear $COLORFGBG to avoid 'background' being set to "dark", which will + " only be corrected if the response to t_RB is received, which may be too + " late. + let $COLORFGBG = '' + endif + + " Make a horizontal and vertical split, so that we can get exactly the right + " size terminal window. Works only when the current window is full width. + call assert_equal(&columns, winwidth(0)) + split + vsplit + + " Always do this with 256 colors and a light background. + set t_Co=256 background=light + hi Normal ctermfg=NONE ctermbg=NONE + + " Make the window 20 lines high and 75 columns, unless told otherwise or + " 'termwinsize' is set. + let rows = get(a:options, 'rows', 20) + let cols = get(a:options, 'cols', 75) + let statusoff = get(a:options, 'statusoff', 1) + + if get(a:options, 'keep_t_u7', 0) + let reset_u7 = '' + else + let reset_u7 = ' --cmd "set t_u7=" ' + endif + + let cmd = GetVimCommandCleanTerm() .. reset_u7 .. a:arguments + + let options = #{curwin: 1} + if &termwinsize == '' + let options.term_rows = rows + let options.term_cols = cols + endif + + " Accept other options whose name starts with 'term_'. + call extend(options, filter(copy(a:options), 'v:key =~# "^term_"')) + + let buf = term_start(cmd, options) + + if &termwinsize == '' + " in the GUI we may end up with a different size, try to set it. + if term_getsize(buf) != [rows, cols] + call term_setsize(buf, rows, cols) + endif + call assert_equal([rows, cols], term_getsize(buf)) + else + let rows = term_getsize(buf)[0] + let cols = term_getsize(buf)[1] + endif + + call TermWait(buf) + + if get(a:options, 'wait_for_ruler', 1) + " Wait for "All" or "Top" of the ruler to be shown in the last line or in + " the status line of the last window. This can be quite slow (e.g. when + " using valgrind). + " If it fails then show the terminal contents for debugging. + try + call WaitFor({-> len(term_getline(buf, rows)) >= cols - 1 || len(term_getline(buf, rows - statusoff)) >= cols - 1}) + catch /timed out after/ + let lines = map(range(1, rows), {key, val -> term_getline(buf, val)}) + call assert_report('RunVimInTerminal() failed, screen contents: ' . join(lines, "")) + endtry + endif + + " Starting a terminal to run Vim is always considered flaky. + let g:test_is_flaky = 1 + + return buf +endfunc + +" Stop a Vim running in terminal buffer "buf". +func StopVimInTerminal(buf, kill = 1) + " Using a terminal to run Vim is always considered flaky. + let g:test_is_flaky = 1 + + call assert_equal("running", term_getstatus(a:buf)) + + " Wait for all the pending updates to terminal to complete + call TermWait(a:buf) + + " CTRL-O : works both in Normal mode and Insert mode to start a command line. + " In Command-line it's inserted, the CTRL-U removes it again. + call term_sendkeys(a:buf, "\:\qa!\") + + " Wait for all the pending updates to terminal to complete + call TermWait(a:buf) + + " Wait for the terminal to end. + call WaitForAssert({-> assert_equal("finished", term_getstatus(a:buf))}) + + " If the buffer still exists forcefully wipe it. + if a:kill && bufexists(a:buf) + exe a:buf .. 'bwipe!' + endif +endfunc + +" Open a terminal with a shell, assign the job to g:job and return the buffer +" number. +func Run_shell_in_terminal(options) + if has('win32') + let buf = term_start([&shell, '/k'], a:options) + else + let buf = term_start(&shell, a:options) + endif + let g:test_is_flaky = 1 + + let termlist = term_list() + call assert_equal(1, len(termlist)) + call assert_equal(buf, termlist[0]) + + let g:job = term_getjob(buf) + call assert_equal(v:t_job, type(g:job)) + + let string = string({'job': buf->term_getjob()}) + call assert_match("{'job': 'process \\d\\+ run'}", string) + + " On slower systems it may take a bit of time before the shell is ready to + " accept keys. This mainly matters when using term_sendkeys() next. + call TermWait(buf) + + return buf +endfunc + +" Return concatenated lines in terminal. +func Term_getlines(buf, lines) + return join(map(a:lines, 'term_getline(a:buf, v:val)'), '') +endfunc + + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test10.in b/src/testdir/test10.in new file mode 100644 index 0000000..40f8e08 --- /dev/null +++ b/src/testdir/test10.in @@ -0,0 +1,21 @@ +Test that vim9script also works without the +eval feature. + +STARTTEST +:/^START/+1,/^END/-1:w! Xvim9 +:so Xvim9 +ENDTEST + +START +vim9script + +if 1 + echo 'this is skipped without +eval' +endif + +# colon required for a range +:$-1,$w! test.out +qa! +END + +first line +last line diff --git a/src/testdir/test10.ok b/src/testdir/test10.ok new file mode 100644 index 0000000..5776cea --- /dev/null +++ b/src/testdir/test10.ok @@ -0,0 +1,2 @@ +first line +last line diff --git a/src/testdir/test20.in b/src/testdir/test20.in new file mode 100644 index 0000000..1ffbed5 --- /dev/null +++ b/src/testdir/test20.in @@ -0,0 +1,27 @@ +Tests Blockwise Visual when there are TABs before the text. +First test for undo working properly when executing commands from a register. +Also test this in an empty buffer. + +STARTTEST +G0"ay$k@au +:new +@auY:quit! +GP +/start here$ +"by$jjlld +/456$ +jj"bP +:/56$/,$-1w! test.out +:qa! +ENDTEST + +123456 +234567 +345678 + +test text test tex start here + some text + test text +test text + +OxjAykdd diff --git a/src/testdir/test20.ok b/src/testdir/test20.ok new file mode 100644 index 0000000..7c50ea8 --- /dev/null +++ b/src/testdir/test20.ok @@ -0,0 +1,10 @@ +123start here56 +234start here67 +345start here78 + +test text test tex rt here + somext + tesext +test text + + diff --git a/src/testdir/test21.in b/src/testdir/test21.in new file mode 100644 index 0000000..f5cc046 --- /dev/null +++ b/src/testdir/test21.in @@ -0,0 +1,13 @@ +Tests for file with some lines ending in CTRL-M, some not + +STARTTEST +:set ta tx +:e! +:$-3,$w! test.out +:qa! +ENDTEST + +this lines ends in a +this one doesn't +this one does +and the last one doesn't diff --git a/src/testdir/test21.ok b/src/testdir/test21.ok new file mode 100644 index 0000000..38ff89e --- /dev/null +++ b/src/testdir/test21.ok @@ -0,0 +1,4 @@ +this lines ends in a +this one doesn't +this one does +and the last one doesn't diff --git a/src/testdir/test22.in b/src/testdir/test22.in new file mode 100644 index 0000000..0e0e605 --- /dev/null +++ b/src/testdir/test22.in @@ -0,0 +1,15 @@ +Tests for complicated + argument to :edit command + +STARTTEST +:$-1w! Xfile1 +:$w! Xfile2 +:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w +:w! test.out +:e Xfile1 +:w >> test.out +:qa! +ENDTEST + +The result should be in Xfile1: "fooPIPEbar", in Xfile2: "fooSLASHbar" +foo|bar +foo/bar diff --git a/src/testdir/test22.ok b/src/testdir/test22.ok new file mode 100644 index 0000000..f1930ab --- /dev/null +++ b/src/testdir/test22.ok @@ -0,0 +1,2 @@ +fooSLASHbar +fooPIPEbar diff --git a/src/testdir/test23.in b/src/testdir/test23.in new file mode 100644 index 0000000..7dfc1af Binary files /dev/null and b/src/testdir/test23.in differ diff --git a/src/testdir/test23.ok b/src/testdir/test23.ok new file mode 100644 index 0000000..cd61210 --- /dev/null +++ b/src/testdir/test23.ok @@ -0,0 +1,32 @@ +start +test text test text +test text test text +test text test text +test text test text +test text test text +test text test text +test text test text x61 +test text test text x60-x64 +test text test text x78 5 +test text test text o143 +test text test text o140-o144 +test text test text o41 7 +test text test text \%x42 +test text test text \%o103 +test text test text [\x00] +test text test text [\x00-\x10] +test text test text [\x-z] +test text test text [\u-z] +xx xx a +xx aaaaa xx a +xx aaaaa xx a +xx Aaa xx +xx Aaaa xx +xx Aaa xx +xx foobar xA xx +xx an A xx +XX 9; +YY 77; + xyz + bcd + BB diff --git a/src/testdir/test24.in b/src/testdir/test24.in new file mode 100644 index 0000000..5542c92 Binary files /dev/null and b/src/testdir/test24.in differ diff --git a/src/testdir/test24.ok b/src/testdir/test24.ok new file mode 100644 index 0000000..911d854 --- /dev/null +++ b/src/testdir/test24.ok @@ -0,0 +1,2 @@ +sd +map __2 asdsecondsdsd0map __5 asd0fifth diff --git a/src/testdir/test25.in b/src/testdir/test25.in new file mode 100644 index 0000000..5e8ce44 --- /dev/null +++ b/src/testdir/test25.in @@ -0,0 +1,108 @@ +Test character classes in regexp using regexpengine 0, 1, 2. + +STARTTEST +/^start-here/+1 +Y:s/\%#=0\d//g +p:s/\%#=1\d//g +p:s/\%#=2\d//g +p:s/\%#=0[0-9]//g +p:s/\%#=1[0-9]//g +p:s/\%#=2[0-9]//g +p:s/\%#=0\D//g +p:s/\%#=1\D//g +p:s/\%#=2\D//g +p:s/\%#=0[^0-9]//g +p:s/\%#=1[^0-9]//g +p:s/\%#=2[^0-9]//g +p:s/\%#=0\o//g +p:s/\%#=1\o//g +p:s/\%#=2\o//g +p:s/\%#=0[0-7]//g +p:s/\%#=1[0-7]//g +p:s/\%#=2[0-7]//g +p:s/\%#=0\O//g +p:s/\%#=1\O//g +p:s/\%#=2\O//g +p:s/\%#=0[^0-7]//g +p:s/\%#=1[^0-7]//g +p:s/\%#=2[^0-7]//g +p:s/\%#=0\x//g +p:s/\%#=1\x//g +p:s/\%#=2\x//g +p:s/\%#=0[0-9A-Fa-f]//g +p:s/\%#=1[0-9A-Fa-f]//g +p:s/\%#=2[0-9A-Fa-f]//g +p:s/\%#=0\X//g +p:s/\%#=1\X//g +p:s/\%#=2\X//g +p:s/\%#=0[^0-9A-Fa-f]//g +p:s/\%#=1[^0-9A-Fa-f]//g +p:s/\%#=2[^0-9A-Fa-f]//g +p:s/\%#=0\w//g +p:s/\%#=1\w//g +p:s/\%#=2\w//g +p:s/\%#=0[0-9A-Za-z_]//g +p:s/\%#=1[0-9A-Za-z_]//g +p:s/\%#=2[0-9A-Za-z_]//g +p:s/\%#=0\W//g +p:s/\%#=1\W//g +p:s/\%#=2\W//g +p:s/\%#=0[^0-9A-Za-z_]//g +p:s/\%#=1[^0-9A-Za-z_]//g +p:s/\%#=2[^0-9A-Za-z_]//g +p:s/\%#=0\h//g +p:s/\%#=1\h//g +p:s/\%#=2\h//g +p:s/\%#=0[A-Za-z_]//g +p:s/\%#=1[A-Za-z_]//g +p:s/\%#=2[A-Za-z_]//g +p:s/\%#=0\H//g +p:s/\%#=1\H//g +p:s/\%#=2\H//g +p:s/\%#=0[^A-Za-z_]//g +p:s/\%#=1[^A-Za-z_]//g +p:s/\%#=2[^A-Za-z_]//g +p:s/\%#=0\a//g +p:s/\%#=1\a//g +p:s/\%#=2\a//g +p:s/\%#=0[A-Za-z]//g +p:s/\%#=1[A-Za-z]//g +p:s/\%#=2[A-Za-z]//g +p:s/\%#=0\A//g +p:s/\%#=1\A//g +p:s/\%#=2\A//g +p:s/\%#=0[^A-Za-z]//g +p:s/\%#=1[^A-Za-z]//g +p:s/\%#=2[^A-Za-z]//g +p:s/\%#=0\l//g +p:s/\%#=1\l//g +p:s/\%#=2\l//g +p:s/\%#=0[a-z]//g +p:s/\%#=1[a-z]//g +p:s/\%#=2[a-z]//g +p:s/\%#=0\L//g +p:s/\%#=1\L//g +p:s/\%#=2\L//g +p:s/\%#=0[^a-z]//g +p:s/\%#=1[^a-z]//g +p:s/\%#=2[^a-z]//g +p:s/\%#=0\u//g +p:s/\%#=1\u//g +p:s/\%#=2\u//g +p:s/\%#=0[A-Z]//g +p:s/\%#=1[A-Z]//g +p:s/\%#=2[A-Z]//g +p:s/\%#=0\U//g +p:s/\%#=1\U//g +p:s/\%#=2\U//g +p:s/\%#=0[^A-Z]//g +p:s/\%#=1[^A-Z]//g +p:s/\%#=2[^A-Z]//g +p:s/\%#=0\%204l^\t...//g +p:s/\%#=1\%205l^\t...//g +p:s/\%#=2\%206l^\t...//g +:/^start-here/+1,$wq! test.out +ENDTEST + +start-here + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ diff --git a/src/testdir/test25.ok b/src/testdir/test25.ok new file mode 100644 index 0000000..df21ed1 --- /dev/null +++ b/src/testdir/test25.ok @@ -0,0 +1,99 @@ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ +0123456789 +0123456789 +0123456789 +0123456789 +0123456789 +0123456789 + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ +01234567 +01234567 +01234567 +01234567 +01234567 +01234567 + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ + !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~ +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef +0123456789ABCDEFabcdef + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./:;<=>?@[\]^`{|}~ +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz +0123456789ABCDEFGHIXYZ_abcdefghiwxyz + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~ +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz +ABCDEFGHIXYZ_abcdefghiwxyz + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~ +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz +ABCDEFGHIXYZabcdefghiwxyz + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~ +abcdefghiwxyz +abcdefghiwxyz +abcdefghiwxyz +abcdefghiwxyz +abcdefghiwxyz +abcdefghiwxyz + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ + !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +ABCDEFGHIXYZ +!"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ +!"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ +!"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~ diff --git a/src/testdir/test26.in b/src/testdir/test26.in new file mode 100644 index 0000000..2d294ca --- /dev/null +++ b/src/testdir/test26.in @@ -0,0 +1,24 @@ +Test for writing and reading a file of over 100 Kbyte + +1 line: "This is the start" +3001 lines: "This is the leader" +1 line: "This is the middle" +3001 lines: "This is the trailer" +1 line: "This is the end" + +STARTTEST +:%d +aThis is the start +This is the leader +This is the middle +This is the trailer +This is the endkY3000p2GY3000p +:w! Xtest +:%d +:e! Xtest +:.w! test.out +3003G:.w >>test.out +6005G:.w >>test.out +:qa! +ENDTEST + diff --git a/src/testdir/test26.ok b/src/testdir/test26.ok new file mode 100644 index 0000000..988e5f2 --- /dev/null +++ b/src/testdir/test26.ok @@ -0,0 +1,3 @@ +This is the start +This is the middle +This is the end diff --git a/src/testdir/test27.in b/src/testdir/test27.in new file mode 100644 index 0000000..c35569a Binary files /dev/null and b/src/testdir/test27.in differ diff --git a/src/testdir/test27.ok b/src/testdir/test27.ok new file mode 100644 index 0000000..183430d Binary files /dev/null and b/src/testdir/test27.ok differ diff --git a/src/testdir/test77a.com b/src/testdir/test77a.com new file mode 100644 index 0000000..ef74a4c --- /dev/null +++ b/src/testdir/test77a.com @@ -0,0 +1,8 @@ +$! test77a - help file creating checksum on VMS +$! Created by Zoltan Arpadffy +$ +$ IF P1 .NES. "" +$ THEN +$ checksum 'P1' +$ show symb CHECKSUM$CHECKSUM +$ ENDIF diff --git a/src/testdir/test77a.in b/src/testdir/test77a.in new file mode 100644 index 0000000..b4f38b5 --- /dev/null +++ b/src/testdir/test77a.in @@ -0,0 +1,35 @@ +Inserts 2 million lines with consecutive integers starting from 1 +(essentially, the output of GNU's seq 1 2000000), writes them to Xtest +and writes its cksum to test.out. + +We need 2 million lines to trigger a call to mf_hash_grow(). If it would mess +up the lines the checksum would differ. + +cksum is part of POSIX and so should be available on most Unixes. +If it isn't available then the test will be skipped. + +VMS does not have CKSUM but has a built in CHECKSUM - it should be used +STARTTEST +:silent! while 0 +: e! test.ok +: w! test.out +: qa! +:silent! endwhile +:if !has("vms") +: e! test.ok +: w! test.out +: qa! +:endif +:set fileformat=unix undolevels=-1 +ggdG +:let i = 1 +:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile +ggdd +:w! Xtest. +:r !@test77a.com Xtest. +:s/\s/ /g +:set fileformat& +:.w! test.out +:qa! +ENDTEST + diff --git a/src/testdir/test77a.ok b/src/testdir/test77a.ok new file mode 100644 index 0000000..41ec157 --- /dev/null +++ b/src/testdir/test77a.ok @@ -0,0 +1 @@ + CHECKSUM$CHECKSUM = "844110470" diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim new file mode 100644 index 0000000..592ca65 --- /dev/null +++ b/src/testdir/test_alot.vim @@ -0,0 +1,31 @@ +" A series of tests that can run in one Vim invocation. +" This makes testing go faster, since Vim doesn't need to restart. + +source test_backup.vim +source test_behave.vim +source test_compiler.vim +source test_ex_equal.vim +source test_ex_undo.vim +source test_ex_z.vim +source test_ex_mode.vim +source test_expand.vim +source test_expand_dllpath.vim +source test_expand_func.vim +source test_file_perm.vim +source test_fnamemodify.vim +source test_ga.vim +source test_glob2regpat.vim +source test_global.vim +source test_move.vim +source test_put.vim +source test_reltime.vim +source test_searchpos.vim +source test_set.vim +source test_shift.vim +source test_sha256.vim +source test_tabline.vim +source test_tagcase.vim +source test_tagfunc.vim +source test_unlet.vim +source test_version.vim +source test_wnext.vim diff --git a/src/testdir/test_alot_latin.vim b/src/testdir/test_alot_latin.vim new file mode 100644 index 0000000..23a404c --- /dev/null +++ b/src/testdir/test_alot_latin.vim @@ -0,0 +1,7 @@ +" A series of tests that can run in one Vim invocation. +" This makes testing go faster, since Vim doesn't need to restart. + +" These tests use latin1 'encoding'. Setting 'encoding' is in the individual +" files, so that they can be run by themselves. + +source test_regexp_latin.vim diff --git a/src/testdir/test_alot_utf8.vim b/src/testdir/test_alot_utf8.vim new file mode 100644 index 0000000..77f5ede --- /dev/null +++ b/src/testdir/test_alot_utf8.vim @@ -0,0 +1,14 @@ +" A series of tests that can run in one Vim invocation. +" This makes testing go faster, since Vim doesn't need to restart. + +" These tests use utf8 'encoding'. Setting 'encoding' is already done in +" runtest.vim. + +source test_charsearch_utf8.vim +source test_expr_utf8.vim +source test_mksession_utf8.vim +source test_regexp_utf8.vim +source test_source_utf8.vim +source test_startup_utf8.vim +source test_utf8.vim +source test_utf8_comparisons.vim diff --git a/src/testdir/test_arabic.vim b/src/testdir/test_arabic.vim new file mode 100644 index 0000000..73b85c4 --- /dev/null +++ b/src/testdir/test_arabic.vim @@ -0,0 +1,595 @@ +" Simplistic testing of Arabic mode. +" NOTE: This just checks if the code works. If you know Arabic please add +" functional tests that check the shaping works with real text. + +source check.vim +CheckFeature arabic + +source view_util.vim + +" Return list of Unicode characters at line lnum. +" Combining characters are treated as a single item. +func s:get_chars(lnum) + call cursor(a:lnum, 1) + let chars = [] + let numchars = strchars(getline('.'), 1) + for i in range(1, numchars) + exe 'norm ' i . '|' + let c = execute('ascii') + let c = substitute(c, '\n\?<.\{-}Hex\s*', 'U+', 'g') + let c = substitute(c, ',\s*Oct\(al\)\=\s\d*\(, Digr ..\)\=', '', 'g') + call add(chars, c) + endfor + return chars +endfunc + +func Test_arabic_toggle() + set arabic + call assert_equal(1, &rightleft) + call assert_equal(1, &arabicshape) + call assert_equal('arabic', &keymap) + call assert_equal(1, &delcombine) + + set iminsert=1 imsearch=1 + set arabic& + call assert_equal(0, &rightleft) + call assert_equal(1, &arabicshape) + call assert_equal('arabic', &keymap) + call assert_equal(1, &delcombine) + call assert_equal(0, &iminsert) + call assert_equal(-1, &imsearch) + + set arabicshape& keymap= delcombine& +endfunc + +func Test_arabic_input() + new + set arabic + " Typing sghl in Arabic insert mode should show the + " Arabic word 'Salaam' i.e. 'peace', spelled: + " SEEN, LAM, ALEF, MEEM. + " See: https://www.mediawiki.org/wiki/VisualEditor/Typing/Right-to-left + call feedkeys('isghl!', 'tx') + call assert_match("^ *!\uFEE1\uFEFC\uFEB3$", ScreenLines(1, &columns)[0]) + call assert_equal([ + \ 'U+0633', + \ 'U+0644 U+0627', + \ 'U+0645', + \ 'U+21'], s:get_chars(1)) + + " Without shaping, it should give individual Arabic letters. + set noarabicshape + call assert_match("^ *!\u0645\u0627\u0644\u0633$", ScreenLines(1, &columns)[0]) + call assert_equal([ + \ 'U+0633', + \ 'U+0644', + \ 'U+0627', + \ 'U+0645', + \ 'U+21'], s:get_chars(1)) + + set arabic& arabicshape& + bwipe! +endfunc + +func Test_arabic_toggle_keymap() + new + set arabic + call feedkeys("i12\12\12", 'tx') + call assert_match("^ *٢١21٢١$", ScreenLines(1, &columns)[0]) + call assert_equal('١٢12١٢', getline('.')) + set arabic& + bwipe! +endfunc + +func Test_delcombine() + new + set arabic + call feedkeys("isghl\\", 'tx') + call assert_match("^ *\uFEDE\uFEB3$", ScreenLines(1, &columns)[0]) + call assert_equal(['U+0633', 'U+0644'], s:get_chars(1)) + + " Now the same with 'nodelcombine' + set nodelcombine + %d + call feedkeys("isghl\\", 'tx') + call assert_match("^ *\uFEB1$", ScreenLines(1, &columns)[0]) + call assert_equal(['U+0633'], s:get_chars(1)) + set arabic& + bwipe! +endfunc + +" Values from src/arabic.h (not all used yet) +let s:a_COMMA = "\u060C" +let s:a_SEMICOLON = "\u061B" +let s:a_QUESTION = "\u061F" +let s:a_HAMZA = "\u0621" +let s:a_ALEF_MADDA = "\u0622" +let s:a_ALEF_HAMZA_ABOVE = "\u0623" +let s:a_WAW_HAMZA = "\u0624" +let s:a_ALEF_HAMZA_BELOW = "\u0625" +let s:a_YEH_HAMZA = "\u0626" +let s:a_ALEF = "\u0627" +let s:a_BEH = "\u0628" +let s:a_TEH_MARBUTA = "\u0629" +let s:a_TEH = "\u062a" +let s:a_THEH = "\u062b" +let s:a_JEEM = "\u062c" +let s:a_HAH = "\u062d" +let s:a_KHAH = "\u062e" +let s:a_DAL = "\u062f" +let s:a_THAL = "\u0630" +let s:a_REH = "\u0631" +let s:a_ZAIN = "\u0632" +let s:a_SEEN = "\u0633" +let s:a_SHEEN = "\u0634" +let s:a_SAD = "\u0635" +let s:a_DAD = "\u0636" +let s:a_TAH = "\u0637" +let s:a_ZAH = "\u0638" +let s:a_AIN = "\u0639" +let s:a_GHAIN = "\u063a" +let s:a_TATWEEL = "\u0640" +let s:a_FEH = "\u0641" +let s:a_QAF = "\u0642" +let s:a_KAF = "\u0643" +let s:a_LAM = "\u0644" +let s:a_MEEM = "\u0645" +let s:a_NOON = "\u0646" +let s:a_HEH = "\u0647" +let s:a_WAW = "\u0648" +let s:a_ALEF_MAKSURA = "\u0649" +let s:a_YEH = "\u064a" + +let s:a_FATHATAN = "\u064b" +let s:a_DAMMATAN = "\u064c" +let s:a_KASRATAN = "\u064d" +let s:a_FATHA = "\u064e" +let s:a_DAMMA = "\u064f" +let s:a_KASRA = "\u0650" +let s:a_SHADDA = "\u0651" +let s:a_SUKUN = "\u0652" + +let s:a_MADDA_ABOVE = "\u0653" +let s:a_HAMZA_ABOVE = "\u0654" +let s:a_HAMZA_BELOW = "\u0655" + +let s:a_ZERO = "\u0660" +let s:a_ONE = "\u0661" +let s:a_TWO = "\u0662" +let s:a_THREE = "\u0663" +let s:a_FOUR = "\u0664" +let s:a_FIVE = "\u0665" +let s:a_SIX = "\u0666" +let s:a_SEVEN = "\u0667" +let s:a_EIGHT = "\u0668" +let s:a_NINE = "\u0669" +let s:a_PERCENT = "\u066a" +let s:a_DECIMAL = "\u066b" +let s:a_THOUSANDS = "\u066c" +let s:a_STAR = "\u066d" +let s:a_MINI_ALEF = "\u0670" + +let s:a_s_FATHATAN = "\ufe70" +let s:a_m_TATWEEL_FATHATAN = "\ufe71" +let s:a_s_DAMMATAN = "\ufe72" + +let s:a_s_KASRATAN = "\ufe74" + +let s:a_s_FATHA = "\ufe76" +let s:a_m_FATHA = "\ufe77" +let s:a_s_DAMMA = "\ufe78" +let s:a_m_DAMMA = "\ufe79" +let s:a_s_KASRA = "\ufe7a" +let s:a_m_KASRA = "\ufe7b" +let s:a_s_SHADDA = "\ufe7c" +let s:a_m_SHADDA = "\ufe7d" +let s:a_s_SUKUN = "\ufe7e" +let s:a_m_SUKUN = "\ufe7f" + +let s:a_s_HAMZA = "\ufe80" +let s:a_s_ALEF_MADDA = "\ufe81" +let s:a_f_ALEF_MADDA = "\ufe82" +let s:a_s_ALEF_HAMZA_ABOVE = "\ufe83" +let s:a_f_ALEF_HAMZA_ABOVE = "\ufe84" +let s:a_s_WAW_HAMZA = "\ufe85" +let s:a_f_WAW_HAMZA = "\ufe86" +let s:a_s_ALEF_HAMZA_BELOW = "\ufe87" +let s:a_f_ALEF_HAMZA_BELOW = "\ufe88" +let s:a_s_YEH_HAMZA = "\ufe89" +let s:a_f_YEH_HAMZA = "\ufe8a" +let s:a_i_YEH_HAMZA = "\ufe8b" +let s:a_m_YEH_HAMZA = "\ufe8c" +let s:a_s_ALEF = "\ufe8d" +let s:a_f_ALEF = "\ufe8e" +let s:a_s_BEH = "\ufe8f" +let s:a_f_BEH = "\ufe90" +let s:a_i_BEH = "\ufe91" +let s:a_m_BEH = "\ufe92" +let s:a_s_TEH_MARBUTA = "\ufe93" +let s:a_f_TEH_MARBUTA = "\ufe94" +let s:a_s_TEH = "\ufe95" +let s:a_f_TEH = "\ufe96" +let s:a_i_TEH = "\ufe97" +let s:a_m_TEH = "\ufe98" +let s:a_s_THEH = "\ufe99" +let s:a_f_THEH = "\ufe9a" +let s:a_i_THEH = "\ufe9b" +let s:a_m_THEH = "\ufe9c" +let s:a_s_JEEM = "\ufe9d" +let s:a_f_JEEM = "\ufe9e" +let s:a_i_JEEM = "\ufe9f" +let s:a_m_JEEM = "\ufea0" +let s:a_s_HAH = "\ufea1" +let s:a_f_HAH = "\ufea2" +let s:a_i_HAH = "\ufea3" +let s:a_m_HAH = "\ufea4" +let s:a_s_KHAH = "\ufea5" +let s:a_f_KHAH = "\ufea6" +let s:a_i_KHAH = "\ufea7" +let s:a_m_KHAH = "\ufea8" +let s:a_s_DAL = "\ufea9" +let s:a_f_DAL = "\ufeaa" +let s:a_s_THAL = "\ufeab" +let s:a_f_THAL = "\ufeac" +let s:a_s_REH = "\ufead" +let s:a_f_REH = "\ufeae" +let s:a_s_ZAIN = "\ufeaf" +let s:a_f_ZAIN = "\ufeb0" +let s:a_s_SEEN = "\ufeb1" +let s:a_f_SEEN = "\ufeb2" +let s:a_i_SEEN = "\ufeb3" +let s:a_m_SEEN = "\ufeb4" +let s:a_s_SHEEN = "\ufeb5" +let s:a_f_SHEEN = "\ufeb6" +let s:a_i_SHEEN = "\ufeb7" +let s:a_m_SHEEN = "\ufeb8" +let s:a_s_SAD = "\ufeb9" +let s:a_f_SAD = "\ufeba" +let s:a_i_SAD = "\ufebb" +let s:a_m_SAD = "\ufebc" +let s:a_s_DAD = "\ufebd" +let s:a_f_DAD = "\ufebe" +let s:a_i_DAD = "\ufebf" +let s:a_m_DAD = "\ufec0" +let s:a_s_TAH = "\ufec1" +let s:a_f_TAH = "\ufec2" +let s:a_i_TAH = "\ufec3" +let s:a_m_TAH = "\ufec4" +let s:a_s_ZAH = "\ufec5" +let s:a_f_ZAH = "\ufec6" +let s:a_i_ZAH = "\ufec7" +let s:a_m_ZAH = "\ufec8" +let s:a_s_AIN = "\ufec9" +let s:a_f_AIN = "\ufeca" +let s:a_i_AIN = "\ufecb" +let s:a_m_AIN = "\ufecc" +let s:a_s_GHAIN = "\ufecd" +let s:a_f_GHAIN = "\ufece" +let s:a_i_GHAIN = "\ufecf" +let s:a_m_GHAIN = "\ufed0" +let s:a_s_FEH = "\ufed1" +let s:a_f_FEH = "\ufed2" +let s:a_i_FEH = "\ufed3" +let s:a_m_FEH = "\ufed4" +let s:a_s_QAF = "\ufed5" +let s:a_f_QAF = "\ufed6" +let s:a_i_QAF = "\ufed7" +let s:a_m_QAF = "\ufed8" +let s:a_s_KAF = "\ufed9" +let s:a_f_KAF = "\ufeda" +let s:a_i_KAF = "\ufedb" +let s:a_m_KAF = "\ufedc" +let s:a_s_LAM = "\ufedd" +let s:a_f_LAM = "\ufede" +let s:a_i_LAM = "\ufedf" +let s:a_m_LAM = "\ufee0" +let s:a_s_MEEM = "\ufee1" +let s:a_f_MEEM = "\ufee2" +let s:a_i_MEEM = "\ufee3" +let s:a_m_MEEM = "\ufee4" +let s:a_s_NOON = "\ufee5" +let s:a_f_NOON = "\ufee6" +let s:a_i_NOON = "\ufee7" +let s:a_m_NOON = "\ufee8" +let s:a_s_HEH = "\ufee9" +let s:a_f_HEH = "\ufeea" +let s:a_i_HEH = "\ufeeb" +let s:a_m_HEH = "\ufeec" +let s:a_s_WAW = "\ufeed" +let s:a_f_WAW = "\ufeee" +let s:a_s_ALEF_MAKSURA = "\ufeef" +let s:a_f_ALEF_MAKSURA = "\ufef0" +let s:a_s_YEH = "\ufef1" +let s:a_f_YEH = "\ufef2" +let s:a_i_YEH = "\ufef3" +let s:a_m_YEH = "\ufef4" +let s:a_s_LAM_ALEF_MADDA_ABOVE = "\ufef5" +let s:a_f_LAM_ALEF_MADDA_ABOVE = "\ufef6" +let s:a_s_LAM_ALEF_HAMZA_ABOVE = "\ufef7" +let s:a_f_LAM_ALEF_HAMZA_ABOVE = "\ufef8" +let s:a_s_LAM_ALEF_HAMZA_BELOW = "\ufef9" +let s:a_f_LAM_ALEF_HAMZA_BELOW = "\ufefa" +let s:a_s_LAM_ALEF = "\ufefb" +let s:a_f_LAM_ALEF = "\ufefc" + +let s:a_BYTE_ORDER_MARK = "\ufeff" + +func Test_shape_initial() + new + set arabicshape + + " Shaping arabic {testchar} non-arabic Tests chg_c_a2i(). + " pair[0] = testchar, pair[1] = next-result, pair[2] = current-result + for pair in [[s:a_YEH_HAMZA, s:a_f_GHAIN, s:a_i_YEH_HAMZA], + \ [s:a_HAMZA, s:a_s_GHAIN, s:a_s_HAMZA], + \ [s:a_ALEF_MADDA, s:a_s_GHAIN, s:a_s_ALEF_MADDA], + \ [s:a_ALEF_HAMZA_ABOVE, s:a_s_GHAIN, s:a_s_ALEF_HAMZA_ABOVE], + \ [s:a_WAW_HAMZA, s:a_s_GHAIN, s:a_s_WAW_HAMZA], + \ [s:a_ALEF_HAMZA_BELOW, s:a_s_GHAIN, s:a_s_ALEF_HAMZA_BELOW], + \ [s:a_ALEF, s:a_s_GHAIN, s:a_s_ALEF], + \ [s:a_TEH_MARBUTA, s:a_s_GHAIN, s:a_s_TEH_MARBUTA], + \ [s:a_DAL, s:a_s_GHAIN, s:a_s_DAL], + \ [s:a_THAL, s:a_s_GHAIN, s:a_s_THAL], + \ [s:a_REH, s:a_s_GHAIN, s:a_s_REH], + \ [s:a_ZAIN, s:a_s_GHAIN, s:a_s_ZAIN], + \ [s:a_TATWEEL, s:a_f_GHAIN, s:a_TATWEEL], + \ [s:a_WAW, s:a_s_GHAIN, s:a_s_WAW], + \ [s:a_ALEF_MAKSURA, s:a_s_GHAIN, s:a_s_ALEF_MAKSURA], + \ [s:a_BEH, s:a_f_GHAIN, s:a_i_BEH], + \ [s:a_TEH, s:a_f_GHAIN, s:a_i_TEH], + \ [s:a_THEH, s:a_f_GHAIN, s:a_i_THEH], + \ [s:a_JEEM, s:a_f_GHAIN, s:a_i_JEEM], + \ [s:a_HAH, s:a_f_GHAIN, s:a_i_HAH], + \ [s:a_KHAH, s:a_f_GHAIN, s:a_i_KHAH], + \ [s:a_SEEN, s:a_f_GHAIN, s:a_i_SEEN], + \ [s:a_SHEEN, s:a_f_GHAIN, s:a_i_SHEEN], + \ [s:a_SAD, s:a_f_GHAIN, s:a_i_SAD], + \ [s:a_DAD, s:a_f_GHAIN, s:a_i_DAD], + \ [s:a_TAH, s:a_f_GHAIN, s:a_i_TAH], + \ [s:a_ZAH, s:a_f_GHAIN, s:a_i_ZAH], + \ [s:a_AIN, s:a_f_GHAIN, s:a_i_AIN], + \ [s:a_GHAIN, s:a_f_GHAIN, s:a_i_GHAIN], + \ [s:a_FEH, s:a_f_GHAIN, s:a_i_FEH], + \ [s:a_QAF, s:a_f_GHAIN, s:a_i_QAF], + \ [s:a_KAF, s:a_f_GHAIN, s:a_i_KAF], + \ [s:a_LAM, s:a_f_GHAIN, s:a_i_LAM], + \ [s:a_MEEM, s:a_f_GHAIN, s:a_i_MEEM], + \ [s:a_NOON, s:a_f_GHAIN, s:a_i_NOON], + \ [s:a_HEH, s:a_f_GHAIN, s:a_i_HEH], + \ [s:a_YEH, s:a_f_GHAIN, s:a_i_YEH], + \ ] + call setline(1, s:a_GHAIN . pair[0] . ' ') + call assert_equal([pair[1] . pair[2] . ' '], ScreenLines(1, 3)) + endfor + + set arabicshape& + bwipe! +endfunc + +func Test_shape_isolated() + new + set arabicshape + + " Shaping non-arabic {testchar} non-arabic Tests chg_c_a2s(). + " pair[0] = testchar, pair[1] = current-result + for pair in [[s:a_HAMZA, s:a_s_HAMZA], + \ [s:a_ALEF_MADDA, s:a_s_ALEF_MADDA], + \ [s:a_ALEF_HAMZA_ABOVE, s:a_s_ALEF_HAMZA_ABOVE], + \ [s:a_WAW_HAMZA, s:a_s_WAW_HAMZA], + \ [s:a_ALEF_HAMZA_BELOW, s:a_s_ALEF_HAMZA_BELOW], + \ [s:a_YEH_HAMZA, s:a_s_YEH_HAMZA], + \ [s:a_ALEF, s:a_s_ALEF], + \ [s:a_TEH_MARBUTA, s:a_s_TEH_MARBUTA], + \ [s:a_DAL, s:a_s_DAL], + \ [s:a_THAL, s:a_s_THAL], + \ [s:a_REH, s:a_s_REH], + \ [s:a_ZAIN, s:a_s_ZAIN], + \ [s:a_TATWEEL, s:a_TATWEEL], + \ [s:a_WAW, s:a_s_WAW], + \ [s:a_ALEF_MAKSURA, s:a_s_ALEF_MAKSURA], + \ [s:a_BEH, s:a_s_BEH], + \ [s:a_TEH, s:a_s_TEH], + \ [s:a_THEH, s:a_s_THEH], + \ [s:a_JEEM, s:a_s_JEEM], + \ [s:a_HAH, s:a_s_HAH], + \ [s:a_KHAH, s:a_s_KHAH], + \ [s:a_SEEN, s:a_s_SEEN], + \ [s:a_SHEEN, s:a_s_SHEEN], + \ [s:a_SAD, s:a_s_SAD], + \ [s:a_DAD, s:a_s_DAD], + \ [s:a_TAH, s:a_s_TAH], + \ [s:a_ZAH, s:a_s_ZAH], + \ [s:a_AIN, s:a_s_AIN], + \ [s:a_GHAIN, s:a_s_GHAIN], + \ [s:a_FEH, s:a_s_FEH], + \ [s:a_QAF, s:a_s_QAF], + \ [s:a_KAF, s:a_s_KAF], + \ [s:a_LAM, s:a_s_LAM], + \ [s:a_MEEM, s:a_s_MEEM], + \ [s:a_NOON, s:a_s_NOON], + \ [s:a_HEH, s:a_s_HEH], + \ [s:a_YEH, s:a_s_YEH], + \ ] + call setline(1, ' ' . pair[0] . ' ') + call assert_equal([' ' . pair[1] . ' '], ScreenLines(1, 3)) + endfor + + set arabicshape& + bwipe! +endfunc + +func Test_shape_iso_to_medial() + new + set arabicshape + + " Shaping arabic {testchar} arabic Tests chg_c_a2m(). + " pair[0] = testchar, pair[1] = next-result, pair[2] = current-result, + " pair[3] = previous-result + for pair in [[s:a_HAMZA, s:a_s_GHAIN, s:a_s_HAMZA, s:a_s_BEH], + \[s:a_ALEF_MADDA, s:a_s_GHAIN, s:a_f_ALEF_MADDA, s:a_i_BEH], + \[s:a_ALEF_HAMZA_ABOVE, s:a_s_GHAIN, s:a_f_ALEF_HAMZA_ABOVE, s:a_i_BEH], + \[s:a_WAW_HAMZA, s:a_s_GHAIN, s:a_f_WAW_HAMZA, s:a_i_BEH], + \[s:a_ALEF_HAMZA_BELOW, s:a_s_GHAIN, s:a_f_ALEF_HAMZA_BELOW, s:a_i_BEH], + \[s:a_YEH_HAMZA, s:a_f_GHAIN, s:a_m_YEH_HAMZA, s:a_i_BEH], + \[s:a_ALEF, s:a_s_GHAIN, s:a_f_ALEF, s:a_i_BEH], + \[s:a_BEH, s:a_f_GHAIN, s:a_m_BEH, s:a_i_BEH], + \[s:a_TEH_MARBUTA, s:a_s_GHAIN, s:a_f_TEH_MARBUTA, s:a_i_BEH], + \[s:a_TEH, s:a_f_GHAIN, s:a_m_TEH, s:a_i_BEH], + \[s:a_THEH, s:a_f_GHAIN, s:a_m_THEH, s:a_i_BEH], + \[s:a_JEEM, s:a_f_GHAIN, s:a_m_JEEM, s:a_i_BEH], + \[s:a_HAH, s:a_f_GHAIN, s:a_m_HAH, s:a_i_BEH], + \[s:a_KHAH, s:a_f_GHAIN, s:a_m_KHAH, s:a_i_BEH], + \[s:a_DAL, s:a_s_GHAIN, s:a_f_DAL, s:a_i_BEH], + \[s:a_THAL, s:a_s_GHAIN, s:a_f_THAL, s:a_i_BEH], + \[s:a_REH, s:a_s_GHAIN, s:a_f_REH, s:a_i_BEH], + \[s:a_ZAIN, s:a_s_GHAIN, s:a_f_ZAIN, s:a_i_BEH], + \[s:a_SEEN, s:a_f_GHAIN, s:a_m_SEEN, s:a_i_BEH], + \[s:a_SHEEN, s:a_f_GHAIN, s:a_m_SHEEN, s:a_i_BEH], + \[s:a_SAD, s:a_f_GHAIN, s:a_m_SAD, s:a_i_BEH], + \[s:a_DAD, s:a_f_GHAIN, s:a_m_DAD, s:a_i_BEH], + \[s:a_TAH, s:a_f_GHAIN, s:a_m_TAH, s:a_i_BEH], + \[s:a_ZAH, s:a_f_GHAIN, s:a_m_ZAH, s:a_i_BEH], + \[s:a_AIN, s:a_f_GHAIN, s:a_m_AIN, s:a_i_BEH], + \[s:a_GHAIN, s:a_f_GHAIN, s:a_m_GHAIN, s:a_i_BEH], + \[s:a_TATWEEL, s:a_f_GHAIN, s:a_TATWEEL, s:a_i_BEH], + \[s:a_FEH, s:a_f_GHAIN, s:a_m_FEH, s:a_i_BEH], + \[s:a_QAF, s:a_f_GHAIN, s:a_m_QAF, s:a_i_BEH], + \[s:a_KAF, s:a_f_GHAIN, s:a_m_KAF, s:a_i_BEH], + \[s:a_LAM, s:a_f_GHAIN, s:a_m_LAM, s:a_i_BEH], + \[s:a_MEEM, s:a_f_GHAIN, s:a_m_MEEM, s:a_i_BEH], + \[s:a_NOON, s:a_f_GHAIN, s:a_m_NOON, s:a_i_BEH], + \[s:a_HEH, s:a_f_GHAIN, s:a_m_HEH, s:a_i_BEH], + \[s:a_WAW, s:a_s_GHAIN, s:a_f_WAW, s:a_i_BEH], + \[s:a_ALEF_MAKSURA, s:a_s_GHAIN, s:a_f_ALEF_MAKSURA, s:a_i_BEH], + \[s:a_YEH, s:a_f_GHAIN, s:a_m_YEH, s:a_i_BEH], + \ ] + call setline(1, s:a_GHAIN . pair[0] . s:a_BEH) + call assert_equal([pair[1] . pair[2] . pair[3]], ScreenLines(1, 3)) + endfor + + set arabicshape& + bwipe! +endfunc + +func Test_shape_final() + new + set arabicshape + + " Shaping arabic {testchar} arabic Tests chg_c_a2f(). + " pair[0] = testchar, pair[1] = current-result, pair[2] = previous-result + for pair in [[s:a_HAMZA, s:a_s_HAMZA, s:a_s_BEH], + \[s:a_ALEF_MADDA, s:a_f_ALEF_MADDA, s:a_i_BEH], + \[s:a_ALEF_HAMZA_ABOVE, s:a_f_ALEF_HAMZA_ABOVE, s:a_i_BEH], + \[s:a_WAW_HAMZA, s:a_f_WAW_HAMZA, s:a_i_BEH], + \[s:a_ALEF_HAMZA_BELOW, s:a_f_ALEF_HAMZA_BELOW, s:a_i_BEH], + \[s:a_YEH_HAMZA, s:a_f_YEH_HAMZA, s:a_i_BEH], + \[s:a_ALEF, s:a_f_ALEF, s:a_i_BEH], + \[s:a_BEH, s:a_f_BEH, s:a_i_BEH], + \[s:a_TEH_MARBUTA, s:a_f_TEH_MARBUTA, s:a_i_BEH], + \[s:a_TEH, s:a_f_TEH, s:a_i_BEH], + \[s:a_THEH, s:a_f_THEH, s:a_i_BEH], + \[s:a_JEEM, s:a_f_JEEM, s:a_i_BEH], + \[s:a_HAH, s:a_f_HAH, s:a_i_BEH], + \[s:a_KHAH, s:a_f_KHAH, s:a_i_BEH], + \[s:a_DAL, s:a_f_DAL, s:a_i_BEH], + \[s:a_THAL, s:a_f_THAL, s:a_i_BEH], + \[s:a_REH, s:a_f_REH, s:a_i_BEH], + \[s:a_ZAIN, s:a_f_ZAIN, s:a_i_BEH], + \[s:a_SEEN, s:a_f_SEEN, s:a_i_BEH], + \[s:a_SHEEN, s:a_f_SHEEN, s:a_i_BEH], + \[s:a_SAD, s:a_f_SAD, s:a_i_BEH], + \[s:a_DAD, s:a_f_DAD, s:a_i_BEH], + \[s:a_TAH, s:a_f_TAH, s:a_i_BEH], + \[s:a_ZAH, s:a_f_ZAH, s:a_i_BEH], + \[s:a_AIN, s:a_f_AIN, s:a_i_BEH], + \[s:a_GHAIN, s:a_f_GHAIN, s:a_i_BEH], + \[s:a_TATWEEL, s:a_TATWEEL, s:a_i_BEH], + \[s:a_FEH, s:a_f_FEH, s:a_i_BEH], + \[s:a_QAF, s:a_f_QAF, s:a_i_BEH], + \[s:a_KAF, s:a_f_KAF, s:a_i_BEH], + \[s:a_LAM, s:a_f_LAM, s:a_i_BEH], + \[s:a_MEEM, s:a_f_MEEM, s:a_i_BEH], + \[s:a_NOON, s:a_f_NOON, s:a_i_BEH], + \[s:a_HEH, s:a_f_HEH, s:a_i_BEH], + \[s:a_WAW, s:a_f_WAW, s:a_i_BEH], + \[s:a_ALEF_MAKSURA, s:a_f_ALEF_MAKSURA, s:a_i_BEH], + \[s:a_YEH, s:a_f_YEH, s:a_i_BEH], + \ ] + call setline(1, ' ' . pair[0] . s:a_BEH) + call assert_equal([' ' . pair[1] . pair[2]], ScreenLines(1, 3)) + endfor + + set arabicshape& + bwipe! +endfunc + +func Test_shape_combination_final() + new + set arabicshape + + " Shaping arabic {testchar} arabic Tests chg_c_laa2f(). + " pair[0] = testchar, pair[1] = current-result + for pair in [[s:a_ALEF_MADDA, s:a_f_LAM_ALEF_MADDA_ABOVE], + \ [s:a_ALEF_HAMZA_ABOVE, s:a_f_LAM_ALEF_HAMZA_ABOVE], + \ [s:a_ALEF_HAMZA_BELOW, s:a_f_LAM_ALEF_HAMZA_BELOW], + \ [s:a_ALEF, s:a_f_LAM_ALEF], + \ ] + " The test char is a composing char, put on s:a_LAM. + call setline(1, ' ' . s:a_LAM . pair[0] . s:a_BEH) + call assert_equal([' ' . pair[1] . s:a_i_BEH], ScreenLines(1, 3)) + endfor + + set arabicshape& + bwipe! +endfunc + +func Test_shape_combination_isolated() + new + set arabicshape + + " Shaping arabic {testchar} arabic Tests chg_c_laa2i(). + " pair[0] = testchar, pair[1] = current-result + for pair in [[s:a_ALEF_MADDA, s:a_s_LAM_ALEF_MADDA_ABOVE], + \ [s:a_ALEF_HAMZA_ABOVE, s:a_s_LAM_ALEF_HAMZA_ABOVE], + \ [s:a_ALEF_HAMZA_BELOW, s:a_s_LAM_ALEF_HAMZA_BELOW], + \ [s:a_ALEF, s:a_s_LAM_ALEF], + \ ] + " The test char is a composing char, put on s:a_LAM. + call setline(1, ' ' . s:a_LAM . pair[0] . ' ') + call assert_equal([' ' . pair[1] . ' '], ScreenLines(1, 3)) + endfor + + set arabicshape& + bwipe! +endfunc + +" Test for entering arabic character in a search command +func Test_arabic_chars_in_search_cmd() + new + set arabic + call feedkeys("i\nsghl!\vim\", 'tx') + call cursor(1, 1) + call feedkeys("/^sghl!\vim$\\", 'tx') + call assert_equal([2, 1], [line('.'), col('.')]) + + " Try searching in left-to-right mode + set rightleftcmd= + call cursor(1, 1) + call feedkeys("/^sghl!\vim$\", 'tx') + call assert_equal([2, 1], [line('.'), col('.')]) + + set rightleftcmd& + set rightleft& + set arabic& + bwipe! +endfunc + +func Test_W17_arabic_requires_utf8() + let save_enc = &encoding + set encoding=latin1 arabic + call assert_match('^W17:', GetMessages()[-1]) + set arabic& + let &encoding = save_enc +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_arglist.vim b/src/testdir/test_arglist.vim new file mode 100644 index 0000000..edc8b77 --- /dev/null +++ b/src/testdir/test_arglist.vim @@ -0,0 +1,747 @@ +" Test argument list commands + +source check.vim +source shared.vim +source term_util.vim + +func Reset_arglist() + args a | %argd +endfunc + +func Test_argidx() + args a b c + last + call assert_equal(2, argidx()) + %argdelete + call assert_equal(0, argidx()) + " doing it again doesn't result in an error + %argdelete + call assert_equal(0, argidx()) + call assert_fails('2argdelete', 'E16:') + + args a b c + call assert_equal(0, argidx()) + next + call assert_equal(1, argidx()) + next + call assert_equal(2, argidx()) + 1argdelete + call assert_equal(1, argidx()) + 1argdelete + call assert_equal(0, argidx()) + 1argdelete + call assert_equal(0, argidx()) +endfunc + +func Test_argadd() + call Reset_arglist() + + %argdelete + argadd a b c + call assert_equal(0, argidx()) + + %argdelete + argadd a + call assert_equal(0, argidx()) + argadd b c d + call assert_equal(0, argidx()) + + call Init_abc() + argadd x + call Assert_argc(['a', 'b', 'x', 'c']) + call assert_equal(1, argidx()) + + call Init_abc() + 0argadd x + call Assert_argc(['x', 'a', 'b', 'c']) + call assert_equal(2, argidx()) + + call Init_abc() + 1argadd x + call Assert_argc(['a', 'x', 'b', 'c']) + call assert_equal(2, argidx()) + + call Init_abc() + $argadd x + call Assert_argc(['a', 'b', 'c', 'x']) + call assert_equal(1, argidx()) + + call Init_abc() + $argadd x + +2argadd y + call Assert_argc(['a', 'b', 'c', 'x', 'y']) + call assert_equal(1, argidx()) + + %argd + edit d + arga + call assert_equal(1, len(argv())) + call assert_equal('d', get(argv(), 0, '')) + + %argd + edit some\ file + arga + call assert_equal(1, len(argv())) + call assert_equal('some file', get(argv(), 0, '')) + + %argd + new + arga + call assert_equal(0, len(argv())) + + if has('unix') + call assert_fails('argadd `Xdoes_not_exist`', 'E479:') + endif +endfunc + +func Test_argadd_empty_curbuf() + new + let curbuf = bufnr('%') + call writefile(['test', 'Xargadd'], 'Xargadd', 'D') + " must not re-use the current buffer. + argadd Xargadd + call assert_equal(curbuf, bufnr('%')) + call assert_equal('', bufname('%')) + call assert_equal(1, '$'->line()) + rew + call assert_notequal(curbuf, '%'->bufnr()) + call assert_equal('Xargadd', '%'->bufname()) + call assert_equal(2, line('$')) + + %argd + bwipe! +endfunc + +func Init_abc() + args a b c + next +endfunc + +func Assert_argc(l) + call assert_equal(len(a:l), argc()) + let i = 0 + while i < len(a:l) && i < argc() + call assert_equal(a:l[i], argv(i)) + let i += 1 + endwhile +endfunc + +" Test for [count]argument and [count]argdelete commands +" Ported from the test_argument_count.in test script +func Test_argument() + call Reset_arglist() + + let save_hidden = &hidden + set hidden + + let g:buffers = [] + augroup TEST + au BufEnter * call add(buffers, expand('%:t')) + augroup END + + argadd a b c d + $argu + $-argu + -argu + 1argu + +2argu + + augroup TEST + au! + augroup END + + call assert_equal(['d', 'c', 'b', 'a', 'c'], g:buffers) + + call assert_equal("\na b [c] d ", execute(':args')) + + .argd + call assert_equal(['a', 'b', 'd'], argv()) + + -argd + call assert_equal(['a', 'd'], argv()) + + $argd + call assert_equal(['a'], argv()) + + 1arga c + 1arga b + $argu + $arga x + call assert_equal(['a', 'b', 'c', 'x'], argv()) + + 0arga y + call assert_equal(['y', 'a', 'b', 'c', 'x'], argv()) + + %argd + call assert_equal([], argv()) + + arga a b c d e f + 2,$-argd + call assert_equal(['a', 'f'], argv()) + + let &hidden = save_hidden + + let save_columns = &columns + let &columns = 79 + try + exe 'args ' .. join(range(1, 81)) + call assert_equal(join([ + \ '', + \ '[1] 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 ', + \ '2 7 12 17 22 27 32 37 42 47 52 57 62 67 72 77 ', + \ '3 8 13 18 23 28 33 38 43 48 53 58 63 68 73 78 ', + \ '4 9 14 19 24 29 34 39 44 49 54 59 64 69 74 79 ', + \ '5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 ', + \ ], "\n"), + \ execute('args')) + + " No trailing newline with one item per row. + let long_arg = repeat('X', 81) + exe 'args ' .. long_arg + call assert_equal("\n[".long_arg.']', execute('args')) + finally + let &columns = save_columns + endtry + + " Setting argument list should fail when the current buffer has unsaved + " changes + %argd + enew! + set modified + call assert_fails('args x y z', 'E37:') + args! x y z + call assert_equal(['x', 'y', 'z'], argv()) + call assert_equal('x', expand('%:t')) + + last | enew | argu + call assert_equal('z', expand('%:t')) + + %argdelete + call assert_fails('argument', 'E163:') +endfunc + +func Test_list_arguments() + call Reset_arglist() + + " four args half the screen width makes two lines with two columns + let aarg = repeat('a', &columns / 2 - 4) + let barg = repeat('b', &columns / 2 - 4) + let carg = repeat('c', &columns / 2 - 4) + let darg = repeat('d', &columns / 2 - 4) + exe 'argadd ' aarg barg carg darg + + redir => result + args + redir END + call assert_match('\[' . aarg . '] \+' . carg . '\n' . barg . ' \+' . darg, trim(result)) + + " if one arg is longer than half the screen make one column + exe 'argdel' aarg + let aarg = repeat('a', &columns / 2 + 2) + exe '0argadd' aarg + redir => result + args + redir END + call assert_match(aarg . '\n\[' . barg . ']\n' . carg . '\n' . darg, trim(result)) + + %argdelete +endfunc + +func Test_args_with_quote() + " Only on Unix can a file name include a double quote. + CheckUnix + + args \"foobar + call assert_equal('"foobar', argv(0)) + %argdelete +endfunc + +" Test for 0argadd and 0argedit +" Ported from the test_argument_0count.in test script +func Test_zero_argadd() + call Reset_arglist() + + arga a b c d + 2argu + 0arga added + call assert_equal(['added', 'a', 'b', 'c', 'd'], argv()) + + 2argu + arga third + call assert_equal(['added', 'a', 'third', 'b', 'c', 'd'], argv()) + + %argd + arga a b c d + 2argu + 0arge edited + call assert_equal(['edited', 'a', 'b', 'c', 'd'], argv()) + + 2argu + arga third + call assert_equal(['edited', 'a', 'third', 'b', 'c', 'd'], argv()) + + 2argu + argedit file\ with\ spaces another file + call assert_equal(['edited', 'a', 'file with spaces', 'another', 'file', 'third', 'b', 'c', 'd'], argv()) + call assert_equal('file with spaces', expand('%')) +endfunc + +" Test for argc() +func Test_argc() + call Reset_arglist() + call assert_equal(0, argc()) + argadd a b + call assert_equal(2, argc()) +endfunc + +" Test for arglistid() +func Test_arglistid() + call Reset_arglist() + arga a b + call assert_equal(0, arglistid()) + split + arglocal + call assert_equal(1, arglistid()) + tabnew | tabfirst + call assert_equal(0, arglistid(2)) + call assert_equal(1, arglistid(1, 1)) + call assert_equal(0, arglistid(2, 1)) + call assert_equal(1, arglistid(1, 2)) + tabonly | only | enew! + argglobal + call assert_equal(0, arglistid()) +endfunc + +" Tests for argv() and argc() +func Test_argv() + call Reset_arglist() + call assert_equal([], argv()) + call assert_equal("", argv(2)) + call assert_equal(0, argc()) + argadd a b c d + call assert_equal(4, argc()) + call assert_equal('c', argv(2)) + + let w1_id = win_getid() + split + let w2_id = win_getid() + arglocal + args e f g + tabnew + let w3_id = win_getid() + split + let w4_id = win_getid() + argglobal + tabfirst + call assert_equal(4, argc(w1_id)) + call assert_equal('b', argv(1, w1_id)) + call assert_equal(['a', 'b', 'c', 'd'], argv(-1, w1_id)) + + call assert_equal(3, argc(w2_id)) + call assert_equal('f', argv(1, w2_id)) + call assert_equal(['e', 'f', 'g'], argv(-1, w2_id)) + + call assert_equal(3, argc(w3_id)) + call assert_equal('e', argv(0, w3_id)) + call assert_equal(['e', 'f', 'g'], argv(-1, w3_id)) + + call assert_equal(4, argc(w4_id)) + call assert_equal('c', argv(2, w4_id)) + call assert_equal(['a', 'b', 'c', 'd'], argv(-1, w4_id)) + + call assert_equal(4, argc(-1)) + call assert_equal(3, argc()) + call assert_equal('d', argv(3, -1)) + call assert_equal(['a', 'b', 'c', 'd'], argv(-1, -1)) + tabonly | only | enew! + " Negative test cases + call assert_equal(-1, argc(100)) + call assert_equal('', argv(1, 100)) + call assert_equal([], argv(-1, 100)) + call assert_equal('', argv(10, -1)) +endfunc + +" Test for the :argedit command +func Test_argedit() + call Reset_arglist() + argedit a + call assert_equal(['a'], argv()) + call assert_equal('a', expand('%:t')) + argedit b + call assert_equal(['a', 'b'], argv()) + call assert_equal('b', expand('%:t')) + argedit a + call assert_equal(['a', 'b', 'a'], argv()) + call assert_equal('a', expand('%:t')) + " When file name case is ignored, an existing buffer with only case + " difference is re-used. + argedit C D + call assert_equal('C', expand('%:t')) + call assert_equal(['a', 'b', 'a', 'C', 'D'], argv()) + argedit c + if has('fname_case') + call assert_equal(['a', 'b', 'a', 'C', 'c', 'D'], argv()) + else + call assert_equal(['a', 'b', 'a', 'C', 'C', 'D'], argv()) + endif + 0argedit x + if has('fname_case') + call assert_equal(['x', 'a', 'b', 'a', 'C', 'c', 'D'], argv()) + else + call assert_equal(['x', 'a', 'b', 'a', 'C', 'C', 'D'], argv()) + endif + enew! | set modified + call assert_fails('argedit y', 'E37:') + argedit! y + if has('fname_case') + call assert_equal(['x', 'y', 'y', 'a', 'b', 'a', 'C', 'c', 'D'], argv()) + else + call assert_equal(['x', 'y', 'y', 'a', 'b', 'a', 'C', 'C', 'D'], argv()) + endif + %argd + bwipe! C + bwipe! D + + " :argedit reuses the current buffer if it is empty + %argd + " make sure to use a new buffer number for x when it is loaded + bw! x + new + let a = bufnr() + argedit x + call assert_equal(a, bufnr()) + call assert_equal('x', bufname()) + %argd + bw! x +endfunc + +" Test for the :argdedupe command +func Test_argdedupe() + call Reset_arglist() + argdedupe + call assert_equal([], argv()) + + args a a a aa b b a b aa + argdedupe + call assert_equal(['a', 'aa', 'b'], argv()) + + args a b c + argdedupe + call assert_equal(['a', 'b', 'c'], argv()) + + args a + argdedupe + call assert_equal(['a'], argv()) + + args a A b B + argdedupe + if has('fname_case') + call assert_equal(['a', 'A', 'b', 'B'], argv()) + else + call assert_equal(['a', 'b'], argv()) + endif + + args a b a c a b + last + argdedupe + next + call assert_equal('c', expand('%:t')) + + args a ./a + argdedupe + call assert_equal(['a'], argv()) + + %argd +endfunc + +" Test for the :argdelete command +func Test_argdelete() + call Reset_arglist() + args aa a aaa b bb + argdelete a* + call assert_equal(['b', 'bb'], argv()) + call assert_equal('aa', expand('%:t')) + last + argdelete % + call assert_equal(['b'], argv()) + call assert_fails('argdelete', 'E610:') + call assert_fails('1,100argdelete', 'E16:') + call assert_fails('argdel /\)/', 'E55:') + call assert_fails('1argdel 1', 'E474:') + + call Reset_arglist() + args a b c d + next + argdel + call Assert_argc(['a', 'c', 'd']) + %argdel + + call assert_fails('argdel does_not_exist', 'E480:') +endfunc + +func Test_argdelete_completion() + args foo bar + + call feedkeys(":argdelete \\\"\", 'tx') + call assert_equal('"argdelete bar foo', @:) + + call feedkeys(":argdelete x \\\"\", 'tx') + call assert_equal('"argdelete x bar foo', @:) + + %argd +endfunc + +" Tests for the :next, :prev, :first, :last, :rewind commands +func Test_argpos() + call Reset_arglist() + args a b c d + last + call assert_equal(3, argidx()) + call assert_fails('next', 'E165:') + prev + call assert_equal(2, argidx()) + Next + call assert_equal(1, argidx()) + first + call assert_equal(0, argidx()) + call assert_fails('prev', 'E164:') + 3next + call assert_equal(3, argidx()) + rewind + call assert_equal(0, argidx()) + %argd +endfunc + +" Test for autocommand that redefines the argument list, when doing ":all". +func Test_arglist_autocmd() + autocmd BufReadPost Xxx2 next Xxx2 Xxx1 + call writefile(['test file Xxx1'], 'Xxx1', 'D') + call writefile(['test file Xxx2'], 'Xxx2', 'D') + call writefile(['test file Xxx3'], 'Xxx3', 'D') + + new + " redefine arglist; go to Xxx1 + next! Xxx1 Xxx2 Xxx3 + " open window for all args; Reading Xxx2 will try to change the arglist and + " that will fail + call assert_fails("all", "E1156:") + call assert_equal('test file Xxx1', getline(1)) + wincmd w + call assert_equal('test file Xxx2', getline(1)) + wincmd w + call assert_equal('test file Xxx3', getline(1)) + + autocmd! BufReadPost Xxx2 + enew! | only + argdelete Xxx* + bwipe! Xxx1 Xxx2 Xxx3 +endfunc + +func Test_arg_all_expand() + call writefile(['test file Xxx1'], 'Xx x', 'D') + next notexist Xx\ x runtest.vim + call assert_equal('notexist Xx\ x runtest.vim', expand('##')) +endfunc + +func Test_large_arg() + " Argument longer or equal to the number of columns used to cause + " access to invalid memory. + exe 'argadd ' .repeat('x', &columns) + args +endfunc + +func Test_argdo() + next! Xa.c Xb.c Xc.c + new + let l = [] + argdo call add(l, expand('%')) + call assert_equal(['Xa.c', 'Xb.c', 'Xc.c'], l) + bwipe Xa.c Xb.c Xc.c +endfunc + +" Test for quitting Vim with unedited files in the argument list +func Test_quit_with_arglist() + CheckRunVimInTerminal + + let buf = RunVimInTerminal('', {'rows': 6}) + call term_sendkeys(buf, ":set nomore\n") + call term_sendkeys(buf, ":args a b c\n") + call term_sendkeys(buf, ":quit\n") + call TermWait(buf) + call WaitForAssert({-> assert_match('^E173:', term_getline(buf, 6))}) + call StopVimInTerminal(buf) + + " Try :confirm quit with unedited files in arglist + let buf = RunVimInTerminal('', {'rows': 6}) + call term_sendkeys(buf, ":set nomore\n") + call term_sendkeys(buf, ":args a b c\n") + call term_sendkeys(buf, ":confirm quit\n") + call TermWait(buf) + call WaitForAssert({-> assert_match('^\[Y\]es, (N)o: *$', + \ term_getline(buf, 6))}) + call term_sendkeys(buf, "N") + call TermWait(buf) + call term_sendkeys(buf, ":confirm quit\n") + call WaitForAssert({-> assert_match('^\[Y\]es, (N)o: *$', + \ term_getline(buf, 6))}) + call term_sendkeys(buf, "Y") + call TermWait(buf) + call WaitForAssert({-> assert_equal("finished", term_getstatus(buf))}) + only! + " When this test fails, swap files are left behind which breaks subsequent + " tests + call delete('.a.swp') + call delete('.b.swp') + call delete('.c.swp') +endfunc + +" Test for ":all" not working when in the cmdline window +func Test_all_not_allowed_from_cmdwin() + au BufEnter * all + next x + " Use try/catch here, somehow assert_fails() doesn't work on MS-Windows + " console. + let caught = 'no' + try + exe ":norm! 7q?apat\" + catch /E11:/ + let caught = 'yes' + endtry + call assert_equal('yes', caught) + au! BufEnter +endfunc + +func Test_clear_arglist_in_all() + n 0 00 000 0000 00000 000000 + au WinNew 0 n 0 + call assert_fails("all", "E1156") + au! * +endfunc + +" Test for the :all command +func Test_all_command() + %argdelete + + " :all command should not close windows with files in the argument list, + " but can rearrange the windows. + args Xargnew1 Xargnew2 + %bw! + edit Xargold1 + split Xargnew1 + let Xargnew1_winid = win_getid() + split Xargold2 + split Xargnew2 + let Xargnew2_winid = win_getid() + split Xargold3 + all + call assert_equal(2, winnr('$')) + call assert_equal([Xargnew1_winid, Xargnew2_winid], + \ [win_getid(1), win_getid(2)]) + call assert_equal([bufnr('Xargnew1'), bufnr('Xargnew2')], + \ [winbufnr(1), winbufnr(2)]) + + " :all command should close windows for files which are not in the + " argument list in the current tab page. + %bw! + edit Xargold1 + split Xargold2 + tabedit Xargold3 + split Xargold4 + tabedit Xargold5 + tabfirst + all + call assert_equal(3, tabpagenr('$')) + call assert_equal([bufnr('Xargnew1'), bufnr('Xargnew2')], tabpagebuflist(1)) + call assert_equal([bufnr('Xargold4'), bufnr('Xargold3')], tabpagebuflist(2)) + call assert_equal([bufnr('Xargold5')], tabpagebuflist(3)) + + " :tab all command should close windows for files which are not in the + " argument list across all the tab pages. + %bw! + edit Xargold1 + split Xargold2 + tabedit Xargold3 + split Xargold4 + tabedit Xargold5 + tabfirst + args Xargnew1 Xargnew2 + tab all + call assert_equal(2, tabpagenr('$')) + call assert_equal([bufnr('Xargnew1')], tabpagebuflist(1)) + call assert_equal([bufnr('Xargnew2')], tabpagebuflist(2)) + + " If a count is specified, then :all should open only that many windows. + %bw! + args Xargnew1 Xargnew2 Xargnew3 Xargnew4 Xargnew5 + all 3 + call assert_equal(3, winnr('$')) + call assert_equal([bufnr('Xargnew1'), bufnr('Xargnew2'), bufnr('Xargnew3')], + \ [winbufnr(1), winbufnr(2), winbufnr(3)]) + + " The :all command should not open more than 'tabpagemax' tab pages. + " If there are more files, then they should be opened in the last tab page. + %bw! + set tabpagemax=3 + tab all + call assert_equal(3, tabpagenr('$')) + call assert_equal([bufnr('Xargnew1')], tabpagebuflist(1)) + call assert_equal([bufnr('Xargnew2')], tabpagebuflist(2)) + call assert_equal([bufnr('Xargnew3'), bufnr('Xargnew4'), bufnr('Xargnew5')], + \ tabpagebuflist(3)) + set tabpagemax& + + " Without the 'hidden' option, modified buffers should not be closed. + args Xargnew1 Xargnew2 + %bw! + edit Xargtemp1 + call setline(1, 'temp buffer 1') + split Xargtemp2 + call setline(1, 'temp buffer 2') + all + call assert_equal(4, winnr('$')) + call assert_equal([bufnr('Xargtemp2'), bufnr('Xargtemp1'), bufnr('Xargnew1'), + \ bufnr('Xargnew2')], + \ [winbufnr(1), winbufnr(2), winbufnr(3), winbufnr(4)]) + + " With the 'hidden' option set, both modified and unmodified buffers in + " closed windows should be hidden. + set hidden + all + call assert_equal(2, winnr('$')) + call assert_equal([bufnr('Xargnew1'), bufnr('Xargnew2')], + \ [winbufnr(1), winbufnr(2)]) + call assert_equal([1, 1, 0, 0], [getbufinfo('Xargtemp1')[0].hidden, + \ getbufinfo('Xargtemp2')[0].hidden, + \ getbufinfo('Xargnew1')[0].hidden, + \ getbufinfo('Xargnew2')[0].hidden]) + set nohidden + + " When 'winheight' is set to a large value, :all should open only one + " window. + args Xargnew1 Xargnew2 Xargnew3 Xargnew4 Xargnew5 + %bw! + set winheight=9999 + call assert_fails('all', 'E36:') + call assert_equal([1, bufnr('Xargnew1')], [winnr('$'), winbufnr(1)]) + set winheight& + + " When 'winwidth' is set to a large value, :vert all should open only one + " window. + %bw! + set winwidth=9999 + call assert_fails('vert all', 'E36:') + call assert_equal([1, bufnr('Xargnew1')], [winnr('$'), winbufnr(1)]) + set winwidth& + + " empty argument list tests + %bw! + %argdelete + call assert_equal('', execute('args')) + all + call assert_equal(1, winnr('$')) + + %argdelete + %bw! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim new file mode 100644 index 0000000..ecf5024 --- /dev/null +++ b/src/testdir/test_assert.vim @@ -0,0 +1,488 @@ +" Test that the methods used for testing work. + +source check.vim +source term_util.vim + +func Test_assert_false() + call assert_equal(0, assert_false(0)) + call assert_equal(0, assert_false(v:false)) + call assert_equal(0, v:false->assert_false()) + + call assert_equal(1, assert_false(123)) + call assert_match("Expected 'False' but got 123", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, 123->assert_false()) + call assert_match("Expected 'False' but got 123", v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_assert_true() + call assert_equal(0, assert_true(1)) + call assert_equal(0, assert_true(123)) + call assert_equal(0, assert_true(v:true)) + call assert_equal(0, v:true->assert_true()) + + call assert_equal(1, assert_true(0)) + call assert_match("Expected 'True' but got 0", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, 0->assert_true()) + call assert_match("Expected 'True' but got 0", v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_assert_equal() + let s = 'foo' + call assert_equal(0, assert_equal('foo', s)) + let n = 4 + call assert_equal(0, assert_equal(4, n)) + let l = [1, 2, 3] + call assert_equal(0, assert_equal([1, 2, 3], l)) + call assert_equal(test_null_list(), test_null_list()) + call assert_equal(test_null_list(), []) + call assert_equal([], test_null_list()) + + let s = 'foo' + call assert_equal(1, assert_equal('bar', s)) + call assert_match("Expected 'bar' but got 'foo'", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX') + call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0]) + call remove(v:errors, 0) + + " special characters are escaped + call assert_equal("\b\e\f\n\t\r\\\x01\x7f", 'x') + call assert_match('Expected ''\\b\\e\\f\\n\\t\\r\\\\\\x01\\x7f'' but got ''x''', v:errors[0]) + call remove(v:errors, 0) + + " many composing characters are handled properly + call setline(1, ' ') + norm 100gr݀ + call assert_equal(1, getline(1)) + call assert_match("Expected 1 but got '.* occurs 100 times]'", v:errors[0]) + call remove(v:errors, 0) + bwipe! +endfunc + +func Test_assert_equal_dict() + call assert_equal(0, assert_equal(#{one: 1, two: 2}, #{two: 2, one: 1})) + + call assert_equal(1, assert_equal(#{one: 1, two: 2}, #{two: 2, one: 3})) + call assert_match("Expected {'one': 1} but got {'one': 3} - 1 equal item omitted", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, assert_equal(#{one: 1, two: 2}, #{two: 22, one: 11})) + call assert_match("Expected {'one': 1, 'two': 2} but got {'one': 11, 'two': 22}", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, assert_equal(#{}, #{two: 2, one: 1})) + call assert_match("Expected {} but got {'one': 1, 'two': 2}", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, assert_equal(#{two: 2, one: 1}, #{})) + call assert_match("Expected {'one': 1, 'two': 2} but got {}", v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_assert_equalfile() + call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz')) + call assert_match("E485: Can't read file abcabc", v:errors[0]) + call remove(v:errors, 0) + + let goodtext = ["one", "two", "three"] + call writefile(goodtext, 'Xone', 'D') + call assert_equal(1, 'Xone'->assert_equalfile('xyzxyz')) + call assert_match("E485: Can't read file xyzxyz", v:errors[0]) + call remove(v:errors, 0) + + call writefile(goodtext, 'Xtwo', 'D') + call assert_equal(0, assert_equalfile('Xone', 'Xtwo')) + + call writefile([goodtext[0]], 'Xone') + call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) + call assert_match("first file is shorter", v:errors[0]) + call remove(v:errors, 0) + + call writefile(goodtext, 'Xone') + call writefile([goodtext[0]], 'Xtwo') + call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) + call assert_match("second file is shorter", v:errors[0]) + call remove(v:errors, 0) + + call writefile(['1234X89'], 'Xone') + call writefile(['1234Y89'], 'Xtwo') + call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) + call assert_match('difference at byte 4, line 1 after "1234X" vs "1234Y"', v:errors[0]) + call remove(v:errors, 0) + + call writefile([repeat('x', 234) .. 'X'], 'Xone') + call writefile([repeat('x', 234) .. 'Y'], 'Xtwo') + call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) + let xes = repeat('x', 134) + call assert_match('difference at byte 234, line 1 after "' .. xes .. 'X" vs "' .. xes .. 'Y"', v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, assert_equalfile('Xone', 'Xtwo', 'a message')) + call assert_match("a message: difference at byte 234, line 1 after", v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_assert_notequal() + let n = 4 + call assert_equal(0, assert_notequal('foo', n)) + let s = 'foo' + call assert_equal(0, assert_notequal([1, 2, 3], s)) + + call assert_equal(1, assert_notequal('foo', s)) + call assert_match("Expected not equal to 'foo'", v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_assert_report() + call assert_equal(1, assert_report('something is wrong')) + call assert_match('something is wrong', v:errors[0]) + call remove(v:errors, 0) + call assert_equal(1, 'also wrong'->assert_report()) + call assert_match('also wrong', v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_assert_exception() + try + nocommand + catch + call assert_equal(0, assert_exception('E492:')) + endtry + + try + nocommand + catch + call assert_equal(1, assert_exception('E12345:')) + endtry + call assert_match("Expected 'E12345:' but got 'Vim:E492: ", v:errors[0]) + call remove(v:errors, 0) + + try + nocommand + catch + try + " illegal argument, get NULL for error + call assert_equal(1, assert_exception([])) + catch + call assert_equal(0, assert_exception('E730:')) + endtry + endtry + + call assert_equal(1, assert_exception('E492:')) + call assert_match('v:exception is not set', v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_wrong_error_type() + let save_verrors = v:errors + let v:['errors'] = {'foo': 3} + call assert_equal('yes', 'no') + let verrors = v:errors + let v:errors = save_verrors + call assert_equal(type([]), type(verrors)) +endfunc + +func Test_compare_fail() + let s:v = {} + let s:x = {"a": s:v} + let s:v["b"] = s:x + let s:w = {"c": s:x, "d": ''} + try + call assert_equal(s:w, '') + catch + call assert_equal(0, assert_exception('E724:')) + call assert_match("Expected NULL but got ''", v:errors[0]) + call remove(v:errors, 0) + endtry +endfunc + +func Test_match() + call assert_equal(0, assert_match('^f.*b.*r$', 'foobar')) + + call assert_equal(1, assert_match('bar.*foo', 'foobar')) + call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong')) + call assert_match('wrong', v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong')) + call assert_match('wrong', v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_notmatch() + call assert_equal(0, assert_notmatch('foo', 'bar')) + call assert_equal(0, assert_notmatch('^foobar$', 'foobars')) + + call assert_equal(1, assert_notmatch('foo', 'foobar')) + call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, 'foobar'->assert_notmatch('foo')) + call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_assert_fail_fails() + call assert_equal(1, assert_fails('xxx', 'E12345')) + call assert_match("Expected 'E12345' but got 'E492:", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, assert_fails('xxx', 'E9876', 'stupid')) + call assert_match("stupid: Expected 'E9876' but got 'E492:", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, assert_fails('xxx', ['E9876'])) + call assert_match("Expected 'E9876' but got 'E492:", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, assert_fails('xxx', ['E492:', 'E9876'])) + call assert_match("Expected 'E9876' but got 'E492:", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, assert_fails('echo', '', 'echo command')) + call assert_match("command did not fail: echo command", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(1, 'echo'->assert_fails('', 'echo command')) + call assert_match("command did not fail: echo command", v:errors[0]) + call remove(v:errors, 0) + + try + call assert_equal(1, assert_fails('xxx', [])) + catch + let exp = v:exception + endtry + call assert_match("E856: \"assert_fails()\" second argument", exp) + + try + call assert_equal(1, assert_fails('xxx', ['1', '2', '3'])) + catch + let exp = v:exception + endtry + call assert_match("E856: \"assert_fails()\" second argument", exp) + + try + call assert_equal(1, assert_fails('xxx', test_null_list())) + catch + let exp = v:exception + endtry + call assert_match("E856: \"assert_fails()\" second argument", exp) + + try + call assert_equal(1, assert_fails('xxx', [])) + catch + let exp = v:exception + endtry + call assert_match("E856: \"assert_fails()\" second argument", exp) + + try + call assert_equal(1, assert_fails('xxx', #{one: 1})) + catch + let exp = v:exception + endtry + call assert_match("E1222: String or List required for argument 2", exp) + + try + call assert_equal(0, assert_fails('xxx', [#{one: 1}])) + catch + let exp = v:exception + endtry + call assert_match("E731: Using a Dictionary as a String", exp) + + let exp = '' + try + call assert_equal(0, assert_fails('xxx', ['E492', #{one: 1}])) + catch + let exp = v:exception + endtry + call assert_match("E731: Using a Dictionary as a String", exp) + + try + call assert_equal(1, assert_fails('xxx', 'E492', '', 'burp')) + catch + let exp = v:exception + endtry + call assert_match("E1210: Number required for argument 4", exp) + + try + call assert_equal(1, assert_fails('xxx', 'E492', '', 54, 123)) + catch + let exp = v:exception + endtry + call assert_match("E1174: String required for argument 5", exp) + + call assert_equal(1, assert_fails('c0', ['', '\(.\)\1'])) + call assert_match("Expected '\\\\\\\\(.\\\\\\\\)\\\\\\\\1' but got 'E939: Positive count required: c0': c0", v:errors[0]) + call remove(v:errors, 0) + + " Test for matching the line number and the script name in an error message + call writefile(['', 'call Xnonexisting()'], 'Xassertfails.vim', 'D') + call assert_fails('source Xassertfails.vim', 'E117:', '', 10) + call assert_match("Expected 10 but got 2", v:errors[0]) + call remove(v:errors, 0) + call assert_fails('source Xassertfails.vim', 'E117:', '', 2, 'Xabc') + call assert_match("Expected 'Xabc' but got .*Xassertfails.vim", v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_assert_fails_in_try_block() + try + call assert_equal(0, assert_fails('throw "error"')) + endtry +endfunc + +" Test that assert_fails() in a timer does not cause a hit-enter prompt. +" Requires using a terminal, in regular tests the hit-enter prompt won't be +" triggered. +func Test_assert_fails_in_timer() + CheckRunVimInTerminal + + let buf = RunVimInTerminal('', {'rows': 6}) + let cmd = ":call timer_start(0, {-> assert_fails('call', 'E471:')})" + call term_sendkeys(buf, cmd) + call WaitForAssert({-> assert_equal(cmd, term_getline(buf, 6))}) + call term_sendkeys(buf, "\") + call TermWait(buf, 100) + call assert_match('E471: Argument required', term_getline(buf, 6)) + + call StopVimInTerminal(buf) +endfunc + +func Test_assert_beeps() + new + call assert_equal(0, assert_beeps('normal h')) + + call assert_equal(1, assert_beeps('normal 0')) + call assert_match("command did not beep: normal 0", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(0, 'normal h'->assert_beeps()) + call assert_equal(1, 'normal 0'->assert_beeps()) + call assert_match("command did not beep: normal 0", v:errors[0]) + call remove(v:errors, 0) + + bwipe +endfunc + +func Test_assert_nobeep() + call assert_equal(1, assert_nobeep('normal! cr')) + call assert_match("command did beep: normal! cr", v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_assert_inrange() + call assert_equal(0, assert_inrange(7, 7, 7)) + call assert_equal(0, assert_inrange(5, 7, 5)) + call assert_equal(0, assert_inrange(5, 7, 6)) + call assert_equal(0, assert_inrange(5, 7, 7)) + + call assert_equal(1, assert_inrange(5, 7, 4)) + call assert_match("Expected range 5 - 7, but got 4", v:errors[0]) + call remove(v:errors, 0) + call assert_equal(1, assert_inrange(5, 7, 8)) + call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) + call remove(v:errors, 0) + + call assert_equal(0, 5->assert_inrange(5, 7)) + call assert_equal(0, 7->assert_inrange(5, 7)) + call assert_equal(1, 8->assert_inrange(5, 7)) + call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) + call remove(v:errors, 0) + + call assert_fails('call assert_inrange(1, 1)', 'E119:') + + call assert_equal(0, assert_inrange(7.0, 7, 7)) + call assert_equal(0, assert_inrange(7, 7.0, 7)) + call assert_equal(0, assert_inrange(7, 7, 7.0)) + call assert_equal(0, assert_inrange(5, 7, 5.0)) + call assert_equal(0, assert_inrange(5, 7, 6.0)) + call assert_equal(0, assert_inrange(5, 7, 7.0)) + + call assert_equal(1, assert_inrange(5, 7, 4.0)) + call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0]) + call remove(v:errors, 0) + call assert_equal(1, assert_inrange(5, 7, 8.0)) + call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0]) + call remove(v:errors, 0) + + " Use a custom message + call assert_equal(1, assert_inrange(5, 7, 8.0, "Higher")) + call assert_match("Higher", v:errors[0]) + call remove(v:errors, 0) + + " Invalid arguments + call assert_fails("call assert_inrange([], 2, 3)", 'E1219:') + call assert_fails("call assert_inrange(1, [], 3)", 'E1219:') + call assert_fails("call assert_inrange(1, 2, [])", 'E1219:') +endfunc + +func Test_assert_with_msg() + call assert_equal('foo', 'bar', 'testing') + call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0]) + call remove(v:errors, 0) +endfunc + +func Test_override() + call test_override('char_avail', 1) + eval 1->test_override('redraw') + call test_override('ALL', 0) + call assert_fails("call test_override('xxx', 1)", 'E475:') + call assert_fails("call test_override('redraw', 'yes')", 'E1210:') +endfunc + +func Test_mouse_position() + let save_mouse = &mouse + set mouse=a + new + call setline(1, ['line one', 'line two']) + call assert_equal([0, 1, 1, 0], getpos('.')) + call test_setmouse(1, 5) + call feedkeys("\", "xt") + call assert_equal([0, 1, 5, 0], getpos('.')) + call test_setmouse(2, 20) + call feedkeys("\", "xt") + call assert_equal([0, 2, 8, 0], getpos('.')) + call test_setmouse(5, 1) + call feedkeys("\", "xt") + call assert_equal([0, 2, 1, 0], getpos('.')) + call assert_fails('call test_setmouse("", 2)', 'E474:') + call assert_fails('call test_setmouse(1, "")', 'E474:') + bwipe! + let &mouse = save_mouse +endfunc + +func Test_user_is_happy() + smile + sleep 300m +endfunc + +" Test for the test_alloc_fail() function +func Test_test_alloc_fail() + call assert_fails('call test_alloc_fail([], 1, 1)', 'E474:') + call assert_fails('call test_alloc_fail(10, [], 1)', 'E474:') + call assert_fails('call test_alloc_fail(10, 1, [])', 'E474:') + call assert_fails('call test_alloc_fail(999999, 1, 1)', 'E474:') +endfunc + +" Test for the test_option_not_set() function +func Test_test_option_not_set() + call assert_fails('call test_option_not_set("Xinvalidopt")', 'E475:') +endfunc + +" Must be last. +func Test_zz_quit_detected() + " Verify that if a test function ends Vim the test script detects this. + quit +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_autochdir.vim b/src/testdir/test_autochdir.vim new file mode 100644 index 0000000..eb40253 --- /dev/null +++ b/src/testdir/test_autochdir.vim @@ -0,0 +1,121 @@ +" Test 'autochdir' behavior + +source check.vim +CheckOption autochdir + +func Test_set_filename() + let cwd = getcwd() + call test_autochdir() + set acd + + let s:li = [] + autocmd DirChanged auto call add(s:li, "autocd") + autocmd DirChanged auto call add(s:li, expand("")) + + new + w samples/Xtest + call assert_equal("Xtest", expand('%')) + call assert_equal("samples", substitute(getcwd(), '.*/\(\k*\)', '\1', '')) + call assert_equal(["autocd", getcwd()], s:li) + + bwipe! + au! DirChanged + set noacd + call chdir(cwd) + call delete('samples/Xtest') +endfunc + +func Test_set_filename_other_window() + let cwd = getcwd() + call test_autochdir() + call mkdir('Xa', 'R') + call mkdir('Xb', 'R') + call mkdir('Xc', 'R') + try + args Xa/aaa.txt Xb/bbb.txt + set acd + let winid = win_getid() + snext + call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', '')) + call win_execute(winid, 'file ' .. cwd .. '/Xc/ccc.txt') + call assert_equal('Xb', substitute(getcwd(), '.*/\([^/]*\)$', '\1', '')) + finally + set noacd + call chdir(cwd) + bwipe! aaa.txt + bwipe! bbb.txt + bwipe! ccc.txt + endtry +endfunc + +func Test_acd_win_execute() + let cwd = getcwd() + set acd + call test_autochdir() + + call mkdir('XacdDir', 'R') + let winid = win_getid() + new XacdDir/file + call assert_match('testdir.XacdDir$', getcwd()) + cd .. + call assert_match('testdir$', getcwd()) + call win_execute(winid, 'echo') + call assert_match('testdir$', getcwd()) + + bwipe! + set noacd + call chdir(cwd) +endfunc + +func Test_verbose_pwd() + let cwd = getcwd() + call test_autochdir() + + edit global.txt + call assert_match('\[global\].*testdir$', execute('verbose pwd')) + + call mkdir('Xautodir', 'R') + split Xautodir/local.txt + lcd Xautodir + call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd')) + + set acd + wincmd w + call assert_match('\[autochdir\].*testdir$', execute('verbose pwd')) + execute 'tcd' cwd + call assert_match('\[tabpage\].*testdir$', execute('verbose pwd')) + execute 'cd' cwd + call assert_match('\[global\].*testdir$', execute('verbose pwd')) + execute 'lcd' cwd + call assert_match('\[window\].*testdir$', execute('verbose pwd')) + edit + call assert_match('\[autochdir\].*testdir$', execute('verbose pwd')) + enew + wincmd w + call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) + wincmd w + call assert_match('\[window\].*testdir$', execute('verbose pwd')) + wincmd w + call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) + set noacd + call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) + wincmd w + call assert_match('\[window\].*testdir$', execute('verbose pwd')) + execute 'cd' cwd + call assert_match('\[global\].*testdir$', execute('verbose pwd')) + wincmd w + call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd')) + + bwipe! + call chdir(cwd) +endfunc + +func Test_multibyte() + " using an invalid character should not cause a crash + set wic + call assert_fails('tc *', has('win32') ? 'E480:' : 'E344:') + set nowic +endfunc + + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim new file mode 100644 index 0000000..f2a763a --- /dev/null +++ b/src/testdir/test_autocmd.vim @@ -0,0 +1,4270 @@ +" Tests for autocommands + +source shared.vim +source check.vim +source term_util.vim +source screendump.vim +import './vim9.vim' as v9 + +func s:cleanup_buffers() abort + for bnr in range(1, bufnr('$')) + if bufloaded(bnr) && bufnr('%') != bnr + execute 'bd! ' . bnr + endif + endfor +endfunc + +func Test_vim_did_enter() + call assert_false(v:vim_did_enter) + + " This script will never reach the main loop, can't check if v:vim_did_enter + " becomes one. +endfunc + +" Test for the CursorHold autocmd +func Test_CursorHold_autocmd() + CheckRunVimInTerminal + call writefile(['one', 'two', 'three'], 'XoneTwoThree', 'D') + let before =<< trim END + set updatetime=10 + au CursorHold * call writefile([line('.')], 'XCHoutput', 'a') + END + call writefile(before, 'XCHinit', 'D') + let buf = RunVimInTerminal('-S XCHinit XoneTwoThree', {}) + call term_sendkeys(buf, "G") + call term_wait(buf, 50) + call term_sendkeys(buf, "gg") + call term_wait(buf) + call WaitForAssert({-> assert_equal(['1'], readfile('XCHoutput')[-1:-1])}) + call term_sendkeys(buf, "j") + call term_wait(buf) + call WaitForAssert({-> assert_equal(['1', '2'], readfile('XCHoutput')[-2:-1])}) + call term_sendkeys(buf, "j") + call term_wait(buf) + call WaitForAssert({-> assert_equal(['1', '2', '3'], readfile('XCHoutput')[-3:-1])}) + call StopVimInTerminal(buf) + + call delete('XCHoutput') +endfunc + +if has('timers') + + func ExitInsertMode(id) + call feedkeys("\") + endfunc + + func Test_cursorhold_insert() + " Need to move the cursor. + call feedkeys("ggG", "xt") + + let g:triggered = 0 + au CursorHoldI * let g:triggered += 1 + set updatetime=20 + call timer_start(200, 'ExitInsertMode') + call feedkeys('a', 'x!') + sleep 30m + call assert_equal(1, g:triggered) + unlet g:triggered + au! CursorHoldI + set updatetime& + endfunc + + func Test_cursorhold_insert_with_timer_interrupt() + CheckFeature job + " Need to move the cursor. + call feedkeys("ggG", "xt") + + " Confirm the timer invoked in exit_cb of the job doesn't disturb + " CursorHoldI event. + let g:triggered = 0 + au CursorHoldI * let g:triggered += 1 + set updatetime=100 + call job_start(has('win32') ? 'cmd /c echo:' : 'echo', + \ {'exit_cb': {-> timer_start(200, 'ExitInsertMode')}}) + call feedkeys('a', 'x!') + call assert_equal(1, g:triggered) + unlet g:triggered + au! CursorHoldI + set updatetime& + endfunc + + func Test_cursorhold_insert_ctrl_x() + let g:triggered = 0 + au CursorHoldI * let g:triggered += 1 + set updatetime=20 + call timer_start(100, 'ExitInsertMode') + " CursorHoldI does not trigger after CTRL-X + call feedkeys("a\", 'x!') + call assert_equal(0, g:triggered) + unlet g:triggered + au! CursorHoldI + set updatetime& + endfunc + + func Test_cursorhold_insert_ctrl_g_U() + au CursorHoldI * : + set updatetime=20 + new + call timer_start(100, { -> feedkeys("\foo\", 't') }) + call feedkeys("i()\U", 'tx!') + sleep 200m + call assert_equal('(foo)', getline(1)) + undo + call assert_equal('', getline(1)) + + bwipe! + au! CursorHoldI + set updatetime& + endfunc + + func Test_OptionSet_modeline() + call test_override('starting', 1) + au! OptionSet + augroup set_tabstop + au OptionSet tabstop call timer_start(1, {-> execute("echo 'Handler called'", "")}) + augroup END + call writefile(['vim: set ts=7 sw=5 :', 'something'], 'XoptionsetModeline', 'D') + set modeline + let v:errmsg = '' + call assert_fails('split XoptionsetModeline', 'E12:') + call assert_equal(7, &ts) + call assert_equal('', v:errmsg) + + augroup set_tabstop + au! + augroup END + bwipe! + set ts& + call test_override('starting', 0) + endfunc + +endif "has('timers') + +func Test_bufunload() + augroup test_bufunload_group + autocmd! + autocmd BufUnload * call add(s:li, "bufunload") + autocmd BufDelete * call add(s:li, "bufdelete") + autocmd BufWipeout * call add(s:li, "bufwipeout") + augroup END + + let s:li = [] + new + setlocal bufhidden= + bunload + call assert_equal(["bufunload", "bufdelete"], s:li) + + let s:li = [] + new + setlocal bufhidden=delete + bunload + call assert_equal(["bufunload", "bufdelete"], s:li) + + let s:li = [] + new + setlocal bufhidden=unload + bwipeout + call assert_equal(["bufunload", "bufdelete", "bufwipeout"], s:li) + + au! test_bufunload_group + augroup! test_bufunload_group +endfunc + +" SEGV occurs in older versions. (At least 7.4.2005 or older) +func Test_autocmd_bufunload_with_tabnext() + tabedit + tabfirst + + augroup test_autocmd_bufunload_with_tabnext_group + autocmd! + autocmd BufUnload tabnext + augroup END + + quit + call assert_equal(2, tabpagenr('$')) + + autocmd! test_autocmd_bufunload_with_tabnext_group + augroup! test_autocmd_bufunload_with_tabnext_group + tablast + quit +endfunc + +func Test_argdelete_in_next() + au BufNew,BufEnter,BufLeave,BufWinEnter * argdel + call assert_fails('next a b', 'E1156:') + au! BufNew,BufEnter,BufLeave,BufWinEnter * +endfunc + +func Test_autocmd_bufwinleave_with_tabfirst() + tabedit + augroup sample + autocmd! + autocmd BufWinLeave tabfirst + augroup END + call setline(1, ['a', 'b', 'c']) + edit! a.txt + tabclose +endfunc + +" SEGV occurs in older versions. (At least 7.4.2321 or older) +func Test_autocmd_bufunload_avoiding_SEGV_01() + split aa.txt + let lastbuf = bufnr('$') + + augroup test_autocmd_bufunload + autocmd! + exe 'autocmd BufUnload ' . (lastbuf + 1) . 'bwipeout!' + augroup END + + call assert_fails('edit bb.txt', 'E937:') + + autocmd! test_autocmd_bufunload + augroup! test_autocmd_bufunload + bwipe! aa.txt + bwipe! bb.txt +endfunc + +" SEGV occurs in older versions. (At least 7.4.2321 or older) +func Test_autocmd_bufunload_avoiding_SEGV_02() + setlocal buftype=nowrite + let lastbuf = bufnr('$') + + augroup test_autocmd_bufunload + autocmd! + exe 'autocmd BufUnload ' . (lastbuf + 1) . 'bwipeout!' + augroup END + + normal! i1 + call assert_fails('edit a.txt', 'E517:') + + autocmd! test_autocmd_bufunload + augroup! test_autocmd_bufunload + bwipe! a.txt +endfunc + +func Test_autocmd_dummy_wipeout() + " prepare files + call writefile([''], 'Xdummywipetest1.txt', 'D') + call writefile([''], 'Xdummywipetest2.txt', 'D') + augroup test_bufunload_group + autocmd! + autocmd BufUnload * call add(s:li, "bufunload") + autocmd BufDelete * call add(s:li, "bufdelete") + autocmd BufWipeout * call add(s:li, "bufwipeout") + augroup END + + let s:li = [] + split Xdummywipetest1.txt + silent! vimgrep /notmatched/ Xdummywipetest* + call assert_equal(["bufunload", "bufwipeout"], s:li) + + bwipeout + au! test_bufunload_group + augroup! test_bufunload_group +endfunc + +func Test_win_tab_autocmd() + let g:record = [] + + augroup testing + au WinNew * call add(g:record, 'WinNew') + au WinClosed * call add(g:record, 'WinClosed') + au WinEnter * call add(g:record, 'WinEnter') + au WinLeave * call add(g:record, 'WinLeave') + au TabNew * call add(g:record, 'TabNew') + au TabClosed * call add(g:record, 'TabClosed') + au TabEnter * call add(g:record, 'TabEnter') + au TabLeave * call add(g:record, 'TabLeave') + augroup END + + split + tabnew + close + close + + call assert_equal([ + \ 'WinLeave', 'WinNew', 'WinEnter', + \ 'WinLeave', 'TabLeave', 'WinNew', 'WinEnter', 'TabNew', 'TabEnter', + \ 'WinLeave', 'TabLeave', 'WinClosed', 'TabClosed', 'WinEnter', 'TabEnter', + \ 'WinLeave', 'WinClosed', 'WinEnter' + \ ], g:record) + + let g:record = [] + tabnew somefile + tabnext + bwipe somefile + + call assert_equal([ + \ 'WinLeave', 'TabLeave', 'WinNew', 'WinEnter', 'TabNew', 'TabEnter', + \ 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', + \ 'WinClosed', 'TabClosed' + \ ], g:record) + + augroup testing + au! + augroup END + unlet g:record +endfunc + +func Test_WinResized() + CheckRunVimInTerminal + + let lines =<< trim END + set scrolloff=0 + call setline(1, ['111', '222']) + vnew + call setline(1, ['aaa', 'bbb']) + new + call setline(1, ['foo', 'bar']) + + let g:resized = 0 + au WinResized * let g:resized += 1 + + func WriteResizedEvent() + call writefile([json_encode(v:event)], 'XresizeEvent') + endfunc + au WinResized * call WriteResizedEvent() + END + call writefile(lines, 'Xtest_winresized', 'D') + let buf = RunVimInTerminal('-S Xtest_winresized', {'rows': 10}) + + " redraw now to avoid a redraw after the :echo command + call term_sendkeys(buf, ":redraw!\") + call TermWait(buf) + + call term_sendkeys(buf, ":echo g:resized\") + call WaitForAssert({-> assert_match('^0$', term_getline(buf, 10))}, 1000) + + " increase window height, two windows will be reported + call term_sendkeys(buf, "\+") + call TermWait(buf) + call term_sendkeys(buf, ":echo g:resized\") + call WaitForAssert({-> assert_match('^1$', term_getline(buf, 10))}, 1000) + + let event = readfile('XresizeEvent')[0]->json_decode() + call assert_equal({ + \ 'windows': [1002, 1001], + \ }, event) + + " increase window width, three windows will be reported + call term_sendkeys(buf, "\>") + call TermWait(buf) + call term_sendkeys(buf, ":echo g:resized\") + call WaitForAssert({-> assert_match('^2$', term_getline(buf, 10))}, 1000) + + let event = readfile('XresizeEvent')[0]->json_decode() + call assert_equal({ + \ 'windows': [1002, 1001, 1000], + \ }, event) + + call delete('XresizeEvent') + call StopVimInTerminal(buf) +endfunc + +func Test_WinScrolled() + CheckRunVimInTerminal + + let lines =<< trim END + set nowrap scrolloff=0 + for ii in range(1, 18) + call setline(ii, repeat(nr2char(96 + ii), ii * 2)) + endfor + let win_id = win_getid() + let g:matched = v:false + func WriteScrollEvent() + call writefile([json_encode(v:event)], 'XscrollEvent') + endfunc + execute 'au WinScrolled' win_id 'let g:matched = v:true' + let g:scrolled = 0 + au WinScrolled * let g:scrolled += 1 + au WinScrolled * let g:amatch = str2nr(expand('')) + au WinScrolled * let g:afile = str2nr(expand('')) + au WinScrolled * call WriteScrollEvent() + END + call writefile(lines, 'Xtest_winscrolled', 'D') + let buf = RunVimInTerminal('-S Xtest_winscrolled', {'rows': 6}) + + call term_sendkeys(buf, ":echo g:scrolled\") + call WaitForAssert({-> assert_match('^0 ', term_getline(buf, 6))}, 1000) + + " Scroll left/right in Normal mode. + call term_sendkeys(buf, "zlzh:echo g:scrolled\") + call WaitForAssert({-> assert_match('^2 ', term_getline(buf, 6))}, 1000) + + let event = readfile('XscrollEvent')[0]->json_decode() + call assert_equal({ + \ 'all': {'leftcol': 1, 'topline': 0, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1000': {'leftcol': -1, 'topline': 0, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0} + \ }, event) + + " Scroll up/down in Normal mode. + call term_sendkeys(buf, "\\:echo g:scrolled\") + call WaitForAssert({-> assert_match('^4 ', term_getline(buf, 6))}, 1000) + + let event = readfile('XscrollEvent')[0]->json_decode() + call assert_equal({ + \ 'all': {'leftcol': 0, 'topline': 1, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1000': {'leftcol': 0, 'topline': -1, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0} + \ }, event) + + " Scroll up/down in Insert mode. + call term_sendkeys(buf, "Mi\\\i\\\") + call term_sendkeys(buf, ":echo g:scrolled\") + call WaitForAssert({-> assert_match('^6 ', term_getline(buf, 6))}, 1000) + + let event = readfile('XscrollEvent')[0]->json_decode() + call assert_equal({ + \ 'all': {'leftcol': 0, 'topline': 1, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1000': {'leftcol': 0, 'topline': -1, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0} + \ }, event) + + " Scroll the window horizontally to focus the last letter of the third line + " containing only six characters. Moving to the previous and shorter lines + " should trigger another autocommand as Vim has to make them visible. + call term_sendkeys(buf, "5zl2k") + call term_sendkeys(buf, ":echo g:scrolled\") + call WaitForAssert({-> assert_match('^8 ', term_getline(buf, 6))}, 1000) + + let event = readfile('XscrollEvent')[0]->json_decode() + call assert_equal({ + \ 'all': {'leftcol': 5, 'topline': 0, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1000': {'leftcol': -5, 'topline': 0, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0} + \ }, event) + + " Ensure the command was triggered for the specified window ID. + call term_sendkeys(buf, ":echo g:matched\") + call WaitForAssert({-> assert_match('^v:true ', term_getline(buf, 6))}, 1000) + + " Ensure the expansion of and matches the window ID. + call term_sendkeys(buf, ":echo g:amatch == win_id && g:afile == win_id\") + call WaitForAssert({-> assert_match('^v:true ', term_getline(buf, 6))}, 1000) + + call delete('XscrollEvent') + call StopVimInTerminal(buf) +endfunc + +func Test_WinScrolled_mouse() + CheckRunVimInTerminal + + let lines =<< trim END + set nowrap scrolloff=0 + set mouse=a term=xterm ttymouse=sgr mousetime=200 clipboard= + call setline(1, ['foo']->repeat(32)) + split + let g:scrolled = 0 + au WinScrolled * let g:scrolled += 1 + END + call writefile(lines, 'Xtest_winscrolled_mouse', 'D') + let buf = RunVimInTerminal('-S Xtest_winscrolled_mouse', {'rows': 10}) + + " With the upper split focused, send a scroll-down event to the unfocused one. + call test_setmouse(7, 1) + call term_sendkeys(buf, "\") + call TermWait(buf) + call term_sendkeys(buf, ":echo g:scrolled\") + call WaitForAssert({-> assert_match('^1', term_getline(buf, 10))}, 1000) + + " Again, but this time while we're in insert mode. + call term_sendkeys(buf, "i\\") + call TermWait(buf) + call term_sendkeys(buf, ":echo g:scrolled\") + call WaitForAssert({-> assert_match('^2', term_getline(buf, 10))}, 1000) + + call StopVimInTerminal(buf) +endfunc + +func Test_WinScrolled_close_curwin() + CheckRunVimInTerminal + + let lines =<< trim END + set nowrap scrolloff=0 + call setline(1, ['aaa', 'bbb']) + vsplit + au WinScrolled * close + au VimLeave * call writefile(['123456'], 'Xtestout') + END + call writefile(lines, 'Xtest_winscrolled_close_curwin', 'D') + let buf = RunVimInTerminal('-S Xtest_winscrolled_close_curwin', {'rows': 6}) + + " This was using freed memory + call term_sendkeys(buf, "\") + call TermWait(buf) + call StopVimInTerminal(buf) + + " check the startup script finished to the end + call assert_equal(['123456'], readfile('Xtestout')) + call delete('Xtestout') +endfunc + +func Test_WinScrolled_once_only() + CheckRunVimInTerminal + + let lines =<< trim END + set cmdheight=2 + call setline(1, ['aaa', 'bbb']) + let trigger_count = 0 + func ShowInfo(id) + echo g:trigger_count g:winid winlayout() + endfunc + + vsplit + split + " use a timer to show the info after a redraw + au WinScrolled * let trigger_count += 1 | let winid = expand('') | call timer_start(100, 'ShowInfo') + wincmd j + wincmd l + END + call writefile(lines, 'Xtest_winscrolled_once', 'D') + let buf = RunVimInTerminal('-S Xtest_winscrolled_once', #{rows: 10, cols: 60, statusoff: 2}) + + call term_sendkeys(buf, "\") + call VerifyScreenDump(buf, 'Test_winscrolled_once_only_1', {}) + + call StopVimInTerminal(buf) +endfunc + +" Check that WinScrolled is not triggered immediately when defined and there +" are split windows. +func Test_WinScrolled_not_when_defined() + CheckRunVimInTerminal + + let lines =<< trim END + call setline(1, ['aaa', 'bbb']) + echo 'nothing happened' + func ShowTriggered(id) + echo 'triggered' + endfunc + END + call writefile(lines, 'Xtest_winscrolled_not', 'D') + let buf = RunVimInTerminal('-S Xtest_winscrolled_not', #{rows: 10, cols: 60, statusoff: 2}) + call term_sendkeys(buf, ":split\") + call TermWait(buf) + " use a timer to show the message after redrawing + call term_sendkeys(buf, ":au WinScrolled * call timer_start(100, 'ShowTriggered')\") + call VerifyScreenDump(buf, 'Test_winscrolled_not_when_defined_1', {}) + + call term_sendkeys(buf, "\") + call VerifyScreenDump(buf, 'Test_winscrolled_not_when_defined_2', {}) + + call StopVimInTerminal(buf) +endfunc + +func Test_WinScrolled_long_wrapped() + CheckRunVimInTerminal + + let lines =<< trim END + set scrolloff=0 + let height = winheight(0) + let width = winwidth(0) + let g:scrolled = 0 + au WinScrolled * let g:scrolled += 1 + call setline(1, repeat('foo', height * width)) + call cursor(1, height * width) + END + call writefile(lines, 'Xtest_winscrolled_long_wrapped', 'D') + let buf = RunVimInTerminal('-S Xtest_winscrolled_long_wrapped', {'rows': 6}) + + call term_sendkeys(buf, ":echo g:scrolled\") + call WaitForAssert({-> assert_match('^0 ', term_getline(buf, 6))}, 1000) + + call term_sendkeys(buf, 'gj') + call term_sendkeys(buf, ":echo g:scrolled\") + call WaitForAssert({-> assert_match('^1 ', term_getline(buf, 6))}, 1000) + + call term_sendkeys(buf, '0') + call term_sendkeys(buf, ":echo g:scrolled\") + call WaitForAssert({-> assert_match('^2 ', term_getline(buf, 6))}, 1000) + + call term_sendkeys(buf, '$') + call term_sendkeys(buf, ":echo g:scrolled\") + call WaitForAssert({-> assert_match('^3 ', term_getline(buf, 6))}, 1000) + + call StopVimInTerminal(buf) +endfunc + +func Test_WinScrolled_diff() + CheckRunVimInTerminal + + let lines =<< trim END + set diffopt+=foldcolumn:0 + call setline(1, ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']) + vnew + call setline(1, ['d', 'e', 'f', 'g', 'h', 'i']) + windo diffthis + func WriteScrollEvent() + call writefile([json_encode(v:event)], 'XscrollEvent') + endfunc + au WinScrolled * call WriteScrollEvent() + END + call writefile(lines, 'Xtest_winscrolled_diff', 'D') + let buf = RunVimInTerminal('-S Xtest_winscrolled_diff', {'rows': 8}) + + call term_sendkeys(buf, "\") + call WaitForAssert({-> assert_match('^d', term_getline(buf, 3))}, 1000) + + let event = readfile('XscrollEvent')[0]->json_decode() + call assert_equal({ + \ 'all': {'leftcol': 0, 'topline': 1, 'topfill': 1, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1000': {'leftcol': 0, 'topline': 1, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1001': {'leftcol': 0, 'topline': 0, 'topfill': -1, 'width': 0, 'height': 0, 'skipcol': 0} + \ }, event) + + call term_sendkeys(buf, "2\") + call WaitForAssert({-> assert_match('^f', term_getline(buf, 3))}, 1000) + + let event = readfile('XscrollEvent')[0]->json_decode() + call assert_equal({ + \ 'all': {'leftcol': 0, 'topline': 2, 'topfill': 2, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1000': {'leftcol': 0, 'topline': 2, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1001': {'leftcol': 0, 'topline': 0, 'topfill': -2, 'width': 0, 'height': 0, 'skipcol': 0} + \ }, event) + + call term_sendkeys(buf, "\") + call WaitForAssert({-> assert_match('^g', term_getline(buf, 3))}, 1000) + + let event = readfile('XscrollEvent')[0]->json_decode() + call assert_equal({ + \ 'all': {'leftcol': 0, 'topline': 2, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1000': {'leftcol': 0, 'topline': 1, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1001': {'leftcol': 0, 'topline': 1, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0} + \ }, event) + + call term_sendkeys(buf, "2\") + call WaitForAssert({-> assert_match('^e', term_getline(buf, 3))}, 1000) + + let event = readfile('XscrollEvent')[0]->json_decode() + call assert_equal({ + \ 'all': {'leftcol': 0, 'topline': 3, 'topfill': 1, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1000': {'leftcol': 0, 'topline': -2, 'topfill': 0, 'width': 0, 'height': 0, 'skipcol': 0}, + \ '1001': {'leftcol': 0, 'topline': -1, 'topfill': 1, 'width': 0, 'height': 0, 'skipcol': 0} + \ }, event) + + call StopVimInTerminal(buf) + call delete('XscrollEvent') +endfunc + +func Test_WinClosed() + " Test that the pattern is matched against the closed window's ID, and both + " and are set to it. + new + let winid = win_getid() + let g:matched = v:false + augroup test-WinClosed + autocmd! + execute 'autocmd WinClosed' winid 'let g:matched = v:true' + autocmd WinClosed * let g:amatch = str2nr(expand('')) + autocmd WinClosed * let g:afile = str2nr(expand('')) + augroup END + close + call assert_true(g:matched) + call assert_equal(winid, g:amatch) + call assert_equal(winid, g:afile) + + " Test that WinClosed is non-recursive. + new + new + call assert_equal(3, winnr('$')) + let g:triggered = 0 + augroup test-WinClosed + autocmd! + autocmd WinClosed * let g:triggered += 1 + autocmd WinClosed * 2 wincmd c + augroup END + close + call assert_equal(1, winnr('$')) + call assert_equal(1, g:triggered) + + autocmd! test-WinClosed + augroup! test-WinClosed + unlet g:matched + unlet g:amatch + unlet g:afile + unlet g:triggered +endfunc + +func Test_WinClosed_throws() + vnew + let bnr = bufnr() + call assert_equal(1, bufloaded(bnr)) + augroup test-WinClosed + autocmd WinClosed * throw 'foo' + augroup END + try + close + catch /.*/ + endtry + call assert_equal(0, bufloaded(bnr)) + + autocmd! test-WinClosed + augroup! test-WinClosed +endfunc + +func Test_WinClosed_throws_with_tabs() + tabnew + let bnr = bufnr() + call assert_equal(1, bufloaded(bnr)) + augroup test-WinClosed + autocmd WinClosed * throw 'foo' + augroup END + try + close + catch /.*/ + endtry + call assert_equal(0, bufloaded(bnr)) + + autocmd! test-WinClosed + augroup! test-WinClosed +endfunc + +" This used to trigger WinClosed twice for the same window, and the window's +" buffer was NULL in the second autocommand. +func Test_WinClosed_switch_tab() + edit Xa + split Xb + split Xc + tab split + new + augroup test-WinClosed + autocmd WinClosed * tabprev | bwipe! + augroup END + close + " Check that the tabline has been fully removed + call assert_equal([1, 1], win_screenpos(0)) + + autocmd! test-WinClosed + augroup! test-WinClosed + %bwipe! +endfunc + +func s:AddAnAutocmd() + augroup vimBarTest + au BufReadCmd * echo 'hello' + augroup END + call assert_equal(3, len(split(execute('au vimBarTest'), "\n"))) +endfunc + +func Test_early_bar() + " test that a bar is recognized before the {event} + call s:AddAnAutocmd() + augroup vimBarTest | au! | let done = 77 | augroup END + call assert_equal(1, len(split(execute('au vimBarTest'), "\n"))) + call assert_equal(77, done) + + call s:AddAnAutocmd() + augroup vimBarTest| au!| let done = 88 | augroup END + call assert_equal(1, len(split(execute('au vimBarTest'), "\n"))) + call assert_equal(88, done) + + " test that a bar is recognized after the {event} + call s:AddAnAutocmd() + augroup vimBarTest| au!BufReadCmd| let done = 99 | augroup END + call assert_equal(1, len(split(execute('au vimBarTest'), "\n"))) + call assert_equal(99, done) + + " test that a bar is recognized after the {group} + call s:AddAnAutocmd() + au! vimBarTest|echo 'hello' + call assert_equal(1, len(split(execute('au vimBarTest'), "\n"))) +endfunc + +func RemoveGroup() + autocmd! StartOK + augroup! StartOK +endfunc + +func Test_augroup_warning() + augroup TheWarning + au VimEnter * echo 'entering' + augroup END + call assert_match("TheWarning.*VimEnter", execute('au VimEnter')) + redir => res + augroup! TheWarning + redir END + call assert_match("W19:", res) + call assert_match("-Deleted-.*VimEnter", execute('au VimEnter')) + + " check "Another" does not take the pace of the deleted entry + augroup Another + augroup END + call assert_match("-Deleted-.*VimEnter", execute('au VimEnter')) + augroup! Another + + " no warning for postpone aucmd delete + augroup StartOK + au VimEnter * call RemoveGroup() + augroup END + call assert_match("StartOK.*VimEnter", execute('au VimEnter')) + redir => res + doautocmd VimEnter + redir END + call assert_notmatch("W19:", res) + au! VimEnter + + call assert_fails('augroup!', 'E471:') +endfunc + +func Test_BufReadCmdHelp() + " This used to cause access to free memory + au BufReadCmd * e +h + help + + au! BufReadCmd +endfunc + +func Test_BufReadCmdHelpJump() + " This used to cause access to free memory + au BufReadCmd * e +h{ + " } to fix highlighting + call assert_fails('help', 'E434:') + + au! BufReadCmd +endfunc + +" BufReadCmd is triggered for a "nofile" buffer. Check all values. +func Test_BufReadCmdNofile() + for val in ['nofile', + \ 'nowrite', + \ 'acwrite', + \ 'quickfix', + \ 'help', + \ 'terminal', + \ 'prompt', + \ 'popup', + \ ] + new somefile + exe 'set buftype=' .. val + au BufReadCmd somefile call setline(1, 'triggered') + edit + call assert_equal('triggered', getline(1)) + + au! BufReadCmd + bwipe! + endfor +endfunc + +func Test_augroup_deleted() + " This caused a crash before E936 was introduced + augroup x + call assert_fails('augroup! x', 'E936:') + au VimEnter * echo + augroup end + augroup! x + call assert_match("-Deleted-.*VimEnter", execute('au VimEnter')) + au! VimEnter +endfunc + +" Tests for autocommands on :close command. +" This used to be in test13. +func Test_three_windows() + " Clean up buffers, because in some cases this function fails. + call s:cleanup_buffers() + + " Write three files and open them, each in a window. + " Then go to next window, with autocommand that deletes the previous one. + " Do this twice, writing the file. + e! Xtestje1 + call setline(1, 'testje1') + w + sp Xtestje2 + call setline(1, 'testje2') + w + sp Xtestje3 + call setline(1, 'testje3') + w + wincmd w + au WinLeave Xtestje2 bwipe + wincmd w + call assert_equal('Xtestje1', expand('%')) + + au WinLeave Xtestje1 bwipe Xtestje3 + close + call assert_equal('Xtestje1', expand('%')) + + " Test deleting the buffer on a Unload event. If this goes wrong there + " will be the ATTENTION prompt. + e Xtestje1 + au! + au! BufUnload Xtestje1 bwipe + call assert_fails('e Xtestje3', 'E937:') + call assert_equal('Xtestje3', expand('%')) + + e Xtestje2 + sp Xtestje1 + call assert_fails('e', 'E937:') + call assert_equal('Xtestje1', expand('%')) + + " Test changing buffers in a BufWipeout autocommand. If this goes wrong + " there are ml_line errors and/or a Crash. + au! + only + e Xanother + e Xtestje1 + bwipe Xtestje2 + bwipe Xtestje3 + au BufWipeout Xtestje1 buf Xtestje1 + bwipe + call assert_equal('Xanother', expand('%')) + + only + help + wincmd w + 1quit + call assert_equal('Xanother', expand('%')) + + au! + enew + call delete('Xtestje1') + call delete('Xtestje2') + call delete('Xtestje3') +endfunc + +func Test_BufEnter() + au! BufEnter + au Bufenter * let val = val . '+' + let g:val = '' + split NewFile + call assert_equal('+', g:val) + bwipe! + call assert_equal('++', g:val) + + " Also get BufEnter when editing a directory + call mkdir('Xbufenterdir', 'D') + split Xbufenterdir + call assert_equal('+++', g:val) + + " On MS-Windows we can't edit the directory, make sure we wipe the right + " buffer. + bwipe! Xbufenterdir + au! BufEnter + + " Editing a "nofile" buffer doesn't read the file but does trigger BufEnter + " for historic reasons. Also test other 'buftype' values. + for val in ['nofile', + \ 'nowrite', + \ 'acwrite', + \ 'quickfix', + \ 'help', + \ 'terminal', + \ 'prompt', + \ 'popup', + \ ] + new somefile + exe 'set buftype=' .. val + au BufEnter somefile call setline(1, 'some text') + edit + call assert_equal('some text', getline(1)) + bwipe! + au! BufEnter + endfor + + new + new + autocmd BufEnter * ++once close + call assert_fails('close', 'E1312:') + + au! BufEnter + only +endfunc + +" Closing a window might cause an endless loop +" E814 for older Vims +func Test_autocmd_bufwipe_in_SessLoadPost() + edit Xtest + tabnew + file Xsomething + set noswapfile + mksession! + + let content =<< trim [CODE] + call test_override('ui_delay', 10) + set nocp noswapfile + let v:swapchoice = "e" + augroup test_autocmd_sessionload + autocmd! + autocmd SessionLoadPost * exe bufnr("Xsomething") . "bw!" + augroup END + + func WriteErrors() + call writefile([execute("messages")], "XerrorsBwipe") + endfunc + au VimLeave * call WriteErrors() + [CODE] + + call writefile(content, 'Xvimrc', 'D') + call system(GetVimCommand('Xvimrc') .. ' --not-a-term --noplugins -S Session.vim -c cq') + sleep 100m + let errors = join(readfile('XerrorsBwipe')) + call assert_match('E814:', errors) + + set swapfile + for file in ['Session.vim', 'XerrorsBwipe'] + call delete(file) + endfor +endfunc + +" Using :blast and :ball for many events caused a crash, because b_nwindows was +" not incremented correctly. +func Test_autocmd_blast_badd() + let content =<< trim [CODE] + au BufNew,BufAdd,BufWinEnter,BufEnter,BufLeave,BufWinLeave,BufUnload,VimEnter foo* blast + edit foo1 + au BufNew,BufAdd,BufWinEnter,BufEnter,BufLeave,BufWinLeave,BufUnload,VimEnter foo* ball + edit foo2 + call writefile(['OK'], 'XerrorsBlast') + qall + [CODE] + + call writefile(content, 'XblastBall', 'D') + call system(GetVimCommand() .. ' --clean -S XblastBall') + sleep 100m + call assert_match('OK', readfile('XerrorsBlast')->join()) + + call delete('XerrorsBlast') +endfunc + +" SEGV occurs in older versions. +func Test_autocmd_bufwipe_in_SessLoadPost2() + tabnew + set noswapfile + mksession! + + let content =<< trim [CODE] + set nocp noswapfile + function! DeleteInactiveBufs() + tabfirst + let tabblist = [] + for i in range(1, tabpagenr(''$'')) + call extend(tabblist, tabpagebuflist(i)) + endfor + for b in range(1, bufnr(''$'')) + if bufexists(b) && buflisted(b) && (index(tabblist, b) == -1 || bufname(b) =~# ''^$'') + exec ''bwipeout '' . b + endif + endfor + echomsg "SessionLoadPost DONE" + endfunction + au SessionLoadPost * call DeleteInactiveBufs() + + func WriteErrors() + call writefile([execute("messages")], "XerrorsPost") + endfunc + au VimLeave * call WriteErrors() + [CODE] + + call writefile(content, 'Xvimrc', 'D') + call system(GetVimCommand('Xvimrc') .. ' --not-a-term --noplugins -S Session.vim -c cq') + sleep 100m + let errors = join(readfile('XerrorsPost')) + " This probably only ever matches on unix. + call assert_notmatch('Caught deadly signal SEGV', errors) + call assert_match('SessionLoadPost DONE', errors) + + set swapfile + for file in ['Session.vim', 'XerrorsPost'] + call delete(file) + endfor +endfunc + +func Test_empty_doau() + doau \| +endfunc + +func s:AutoCommandOptionSet(match) + let template = "Option: <%s>, OldVal: <%s>, OldValLocal: <%s>, OldValGlobal: <%s>, NewVal: <%s>, Scope: <%s>, Command: <%s>\n" + let item = remove(g:options, 0) + let expected = printf(template, item[0], item[1], item[2], item[3], item[4], item[5], item[6]) + let actual = printf(template, a:match, v:option_old, v:option_oldlocal, v:option_oldglobal, v:option_new, v:option_type, v:option_command) + let g:opt = [expected, actual] + "call assert_equal(expected, actual) +endfunc + +func Test_OptionSet() + CheckOption autochdir + + badd test_autocmd.vim + + call test_override('starting', 1) + set nocp + au OptionSet * :call s:AutoCommandOptionSet(expand("")) + + " 1: Setting number option" + let g:options = [['number', 0, 0, 0, 1, 'global', 'set']] + set nu + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 2: Setting local number option" + let g:options = [['number', 1, 1, '', 0, 'local', 'setlocal']] + setlocal nonu + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 3: Setting global number option" + let g:options = [['number', 1, '', 1, 0, 'global', 'setglobal']] + setglobal nonu + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 4: Setting local autoindent option" + let g:options = [['autoindent', 0, 0, '', 1, 'local', 'setlocal']] + setlocal ai + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 5: Setting global autoindent option" + let g:options = [['autoindent', 0, '', 0, 1, 'global', 'setglobal']] + setglobal ai + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 6: Setting global autoindent option" + let g:options = [['autoindent', 1, 1, 1, 0, 'global', 'set']] + set ai! + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 6a: Setting global autoindent option" + let g:options = [['autoindent', 1, 1, 0, 0, 'global', 'set']] + noa setlocal ai + noa setglobal noai + set ai! + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " Should not print anything, use :noa + " 7: don't trigger OptionSet" + let g:options = [['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid']] + noa set nonu + call assert_equal([['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid']], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 8: Setting several global list and number option" + let g:options = [['list', 0, 0, 0, 1, 'global', 'set'], ['number', 0, 0, 0, 1, 'global', 'set']] + set list nu + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 9: don't trigger OptionSet" + let g:options = [['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid'], ['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid']] + noa set nolist nonu + call assert_equal([['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid'], ['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid', 'invalid']], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 10: Setting global acd" + let g:options = [['autochdir', 0, 0, '', 1, 'local', 'setlocal']] + setlocal acd + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 11: Setting global autoread (also sets local value)" + let g:options = [['autoread', 0, 0, 0, 1, 'global', 'set']] + set ar + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 12: Setting local autoread" + let g:options = [['autoread', 1, 1, '', 1, 'local', 'setlocal']] + setlocal ar + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 13: Setting global autoread" + let g:options = [['autoread', 1, '', 1, 0, 'global', 'setglobal']] + setglobal invar + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 14: Setting option backspace through :let" + let g:options = [['backspace', '', '', '', 'eol,indent,start', 'global', 'set']] + let &bs = "eol,indent,start" + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 15: Setting option backspace through setbufvar()" + let g:options = [['backup', 0, 0, '', 1, 'local', 'setlocal']] + " try twice, first time, shouldn't trigger because option name is invalid, + " second time, it should trigger + let bnum = bufnr('%') + call assert_fails("call setbufvar(bnum, '&l:bk', 1)", 'E355:') + " should trigger, use correct option name + call setbufvar(bnum, '&backup', 1) + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 16: Setting number option using setwinvar" + let g:options = [['number', 0, 0, '', 1, 'local', 'setlocal']] + call setwinvar(0, '&number', 1) + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 17: Setting key option, shouldn't trigger" + let g:options = [['key', 'invalid', 'invalid1', 'invalid2', 'invalid3', 'invalid4', 'invalid5']] + setlocal key=blah + setlocal key= + call assert_equal([['key', 'invalid', 'invalid1', 'invalid2', 'invalid3', 'invalid4', 'invalid5']], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 18a: Setting string global option" + let oldval = &backupext + let g:options = [['backupext', oldval, oldval, oldval, 'foo', 'global', 'set']] + set backupext=foo + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 18b: Resetting string global option" + let g:options = [['backupext', 'foo', 'foo', 'foo', oldval, 'global', 'set']] + set backupext& + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 18c: Setting global string global option" + let g:options = [['backupext', oldval, '', oldval, 'bar', 'global', 'setglobal']] + setglobal backupext=bar + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 18d: Setting local string global option" + " As this is a global option this sets the global value even though + " :setlocal is used! + noa set backupext& " Reset global and local value (without triggering autocmd) + let g:options = [['backupext', oldval, oldval, '', 'baz', 'local', 'setlocal']] + setlocal backupext=baz + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 18e: Setting again string global option" + noa setglobal backupext=ext_global " Reset global and local value (without triggering autocmd) + noa setlocal backupext=ext_local " Sets the global(!) value! + let g:options = [['backupext', 'ext_local', 'ext_local', 'ext_local', 'fuu', 'global', 'set']] + set backupext=fuu + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 19a: Setting string global-local (to buffer) option" + let oldval = &tags + let g:options = [['tags', oldval, oldval, oldval, 'tagpath', 'global', 'set']] + set tags=tagpath + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 19b: Resetting string global-local (to buffer) option" + let g:options = [['tags', 'tagpath', 'tagpath', 'tagpath', oldval, 'global', 'set']] + set tags& + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 19c: Setting global string global-local (to buffer) option " + let g:options = [['tags', oldval, '', oldval, 'tagpath1', 'global', 'setglobal']] + setglobal tags=tagpath1 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 19d: Setting local string global-local (to buffer) option" + let g:options = [['tags', 'tagpath1', 'tagpath1', '', 'tagpath2', 'local', 'setlocal']] + setlocal tags=tagpath2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 19e: Setting again string global-local (to buffer) option" + " Note: v:option_old is the old global value for global-local string options + " but the old local value for all other kinds of options. + noa setglobal tags=tag_global " Reset global and local value (without triggering autocmd) + noa setlocal tags=tag_local + let g:options = [['tags', 'tag_global', 'tag_local', 'tag_global', 'tagpath', 'global', 'set']] + set tags=tagpath + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 19f: Setting string global-local (to buffer) option to an empty string" + " Note: v:option_old is the old global value for global-local string options + " but the old local value for all other kinds of options. + noa set tags=tag_global " Reset global and local value (without triggering autocmd) + noa setlocal tags= " empty string + let g:options = [['tags', 'tag_global', '', 'tag_global', 'tagpath', 'global', 'set']] + set tags=tagpath + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 20a: Setting string local (to buffer) option" + let oldval = &spelllang + let g:options = [['spelllang', oldval, oldval, oldval, 'elvish,klingon', 'global', 'set']] + set spelllang=elvish,klingon + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 20b: Resetting string local (to buffer) option" + let g:options = [['spelllang', 'elvish,klingon', 'elvish,klingon', 'elvish,klingon', oldval, 'global', 'set']] + set spelllang& + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 20c: Setting global string local (to buffer) option" + let g:options = [['spelllang', oldval, '', oldval, 'elvish', 'global', 'setglobal']] + setglobal spelllang=elvish + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 20d: Setting local string local (to buffer) option" + noa set spelllang& " Reset global and local value (without triggering autocmd) + let g:options = [['spelllang', oldval, oldval, '', 'klingon', 'local', 'setlocal']] + setlocal spelllang=klingon + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 20e: Setting again string local (to buffer) option" + " Note: v:option_old is the old global value for global-local string options + " but the old local value for all other kinds of options. + noa setglobal spelllang=spellglobal " Reset global and local value (without triggering autocmd) + noa setlocal spelllang=spelllocal + let g:options = [['spelllang', 'spelllocal', 'spelllocal', 'spellglobal', 'foo', 'global', 'set']] + set spelllang=foo + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 21a: Setting string global-local (to window) option" + let oldval = &statusline + let g:options = [['statusline', oldval, oldval, oldval, 'foo', 'global', 'set']] + set statusline=foo + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 21b: Resetting string global-local (to window) option" + " Note: v:option_old is the old global value for global-local string options + " but the old local value for all other kinds of options. + let g:options = [['statusline', 'foo', 'foo', 'foo', oldval, 'global', 'set']] + set statusline& + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 21c: Setting global string global-local (to window) option" + let g:options = [['statusline', oldval, '', oldval, 'bar', 'global', 'setglobal']] + setglobal statusline=bar + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 21d: Setting local string global-local (to window) option" + noa set statusline& " Reset global and local value (without triggering autocmd) + let g:options = [['statusline', oldval, oldval, '', 'baz', 'local', 'setlocal']] + setlocal statusline=baz + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 21e: Setting again string global-local (to window) option" + " Note: v:option_old is the old global value for global-local string options + " but the old local value for all other kinds of options. + noa setglobal statusline=bar " Reset global and local value (without triggering autocmd) + noa setlocal statusline=baz + let g:options = [['statusline', 'bar', 'baz', 'bar', 'foo', 'global', 'set']] + set statusline=foo + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 22a: Setting string local (to window) option" + let oldval = &foldignore + let g:options = [['foldignore', oldval, oldval, oldval, 'fo', 'global', 'set']] + set foldignore=fo + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 22b: Resetting string local (to window) option" + let g:options = [['foldignore', 'fo', 'fo', 'fo', oldval, 'global', 'set']] + set foldignore& + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 22c: Setting global string local (to window) option" + let g:options = [['foldignore', oldval, '', oldval, 'bar', 'global', 'setglobal']] + setglobal foldignore=bar + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 22d: Setting local string local (to window) option" + noa set foldignore& " Reset global and local value (without triggering autocmd) + let g:options = [['foldignore', oldval, oldval, '', 'baz', 'local', 'setlocal']] + setlocal foldignore=baz + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 22e: Setting again string local (to window) option" + noa setglobal foldignore=glob " Reset global and local value (without triggering autocmd) + noa setlocal foldignore=loc + let g:options = [['foldignore', 'loc', 'loc', 'glob', 'fo', 'global', 'set']] + set foldignore=fo + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 23a: Setting global number global option" + noa setglobal cmdheight=8 " Reset global and local value (without triggering autocmd) + noa setlocal cmdheight=1 " Sets the global(!) value! + let g:options = [['cmdheight', '1', '', '1', '2', 'global', 'setglobal']] + setglobal cmdheight=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 23b: Setting local number global option" + noa setglobal cmdheight=8 " Reset global and local value (without triggering autocmd) + noa setlocal cmdheight=1 " Sets the global(!) value! + let g:options = [['cmdheight', '1', '1', '', '2', 'local', 'setlocal']] + setlocal cmdheight=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 23c: Setting again number global option" + noa setglobal cmdheight=8 " Reset global and local value (without triggering autocmd) + noa setlocal cmdheight=1 " Sets the global(!) value! + let g:options = [['cmdheight', '1', '1', '1', '2', 'global', 'set']] + set cmdheight=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 23d: Setting again number global option" + noa set cmdheight=8 " Reset global and local value (without triggering autocmd) + let g:options = [['cmdheight', '8', '8', '8', '2', 'global', 'set']] + set cmdheight=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 24a: Setting global number global-local (to buffer) option" + noa setglobal undolevels=8 " Reset global and local value (without triggering autocmd) + noa setlocal undolevels=1 + let g:options = [['undolevels', '8', '', '8', '2', 'global', 'setglobal']] + setglobal undolevels=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 24b: Setting local number global-local (to buffer) option" + noa setglobal undolevels=8 " Reset global and local value (without triggering autocmd) + noa setlocal undolevels=1 + let g:options = [['undolevels', '1', '1', '', '2', 'local', 'setlocal']] + setlocal undolevels=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 24c: Setting again number global-local (to buffer) option" + noa setglobal undolevels=8 " Reset global and local value (without triggering autocmd) + noa setlocal undolevels=1 + let g:options = [['undolevels', '1', '1', '8', '2', 'global', 'set']] + set undolevels=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 24d: Setting again global number global-local (to buffer) option" + noa set undolevels=8 " Reset global and local value (without triggering autocmd) + let g:options = [['undolevels', '8', '8', '8', '2', 'global', 'set']] + set undolevels=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 25a: Setting global number local (to buffer) option" + noa setglobal wrapmargin=8 " Reset global and local value (without triggering autocmd) + noa setlocal wrapmargin=1 + let g:options = [['wrapmargin', '8', '', '8', '2', 'global', 'setglobal']] + setglobal wrapmargin=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 25b: Setting local number local (to buffer) option" + noa setglobal wrapmargin=8 " Reset global and local value (without triggering autocmd) + noa setlocal wrapmargin=1 + let g:options = [['wrapmargin', '1', '1', '', '2', 'local', 'setlocal']] + setlocal wrapmargin=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 25c: Setting again number local (to buffer) option" + noa setglobal wrapmargin=8 " Reset global and local value (without triggering autocmd) + noa setlocal wrapmargin=1 + let g:options = [['wrapmargin', '1', '1', '8', '2', 'global', 'set']] + set wrapmargin=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 25d: Setting again global number local (to buffer) option" + noa set wrapmargin=8 " Reset global and local value (without triggering autocmd) + let g:options = [['wrapmargin', '8', '8', '8', '2', 'global', 'set']] + set wrapmargin=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 26: Setting number global-local (to window) option. + " Such option does currently not exist. + + + " 27a: Setting global number local (to window) option" + noa setglobal foldcolumn=8 " Reset global and local value (without triggering autocmd) + noa setlocal foldcolumn=1 + let g:options = [['foldcolumn', '8', '', '8', '2', 'global', 'setglobal']] + setglobal foldcolumn=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 27b: Setting local number local (to window) option" + noa setglobal foldcolumn=8 " Reset global and local value (without triggering autocmd) + noa setlocal foldcolumn=1 + let g:options = [['foldcolumn', '1', '1', '', '2', 'local', 'setlocal']] + setlocal foldcolumn=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 27c: Setting again number local (to window) option" + noa setglobal foldcolumn=8 " Reset global and local value (without triggering autocmd) + noa setlocal foldcolumn=1 + let g:options = [['foldcolumn', '1', '1', '8', '2', 'global', 'set']] + set foldcolumn=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 27d: Setting again global number local (to window) option" + noa set foldcolumn=8 " Reset global and local value (without triggering autocmd) + let g:options = [['foldcolumn', '8', '8', '8', '2', 'global', 'set']] + set foldcolumn=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 28a: Setting global boolean global option" + noa setglobal nowrapscan " Reset global and local value (without triggering autocmd) + noa setlocal wrapscan " Sets the global(!) value! + let g:options = [['wrapscan', '1', '', '1', '0', 'global', 'setglobal']] + setglobal nowrapscan + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 28b: Setting local boolean global option" + noa setglobal nowrapscan " Reset global and local value (without triggering autocmd) + noa setlocal wrapscan " Sets the global(!) value! + let g:options = [['wrapscan', '1', '1', '', '0', 'local', 'setlocal']] + setlocal nowrapscan + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 28c: Setting again boolean global option" + noa setglobal nowrapscan " Reset global and local value (without triggering autocmd) + noa setlocal wrapscan " Sets the global(!) value! + let g:options = [['wrapscan', '1', '1', '1', '0', 'global', 'set']] + set nowrapscan + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 28d: Setting again global boolean global option" + noa set nowrapscan " Reset global and local value (without triggering autocmd) + let g:options = [['wrapscan', '0', '0', '0', '1', 'global', 'set']] + set wrapscan + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 29a: Setting global boolean global-local (to buffer) option" + noa setglobal noautoread " Reset global and local value (without triggering autocmd) + noa setlocal autoread + let g:options = [['autoread', '0', '', '0', '1', 'global', 'setglobal']] + setglobal autoread + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 29b: Setting local boolean global-local (to buffer) option" + noa setglobal noautoread " Reset global and local value (without triggering autocmd) + noa setlocal autoread + let g:options = [['autoread', '1', '1', '', '0', 'local', 'setlocal']] + setlocal noautoread + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 29c: Setting again boolean global-local (to buffer) option" + noa setglobal noautoread " Reset global and local value (without triggering autocmd) + noa setlocal autoread + let g:options = [['autoread', '1', '1', '0', '1', 'global', 'set']] + set autoread + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 29d: Setting again global boolean global-local (to buffer) option" + noa set noautoread " Reset global and local value (without triggering autocmd) + let g:options = [['autoread', '0', '0', '0', '1', 'global', 'set']] + set autoread + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 30a: Setting global boolean local (to buffer) option" + noa setglobal nocindent " Reset global and local value (without triggering autocmd) + noa setlocal cindent + let g:options = [['cindent', '0', '', '0', '1', 'global', 'setglobal']] + setglobal cindent + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 30b: Setting local boolean local (to buffer) option" + noa setglobal nocindent " Reset global and local value (without triggering autocmd) + noa setlocal cindent + let g:options = [['cindent', '1', '1', '', '0', 'local', 'setlocal']] + setlocal nocindent + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 30c: Setting again boolean local (to buffer) option" + noa setglobal nocindent " Reset global and local value (without triggering autocmd) + noa setlocal cindent + let g:options = [['cindent', '1', '1', '0', '1', 'global', 'set']] + set cindent + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 30d: Setting again global boolean local (to buffer) option" + noa set nocindent " Reset global and local value (without triggering autocmd) + let g:options = [['cindent', '0', '0', '0', '1', 'global', 'set']] + set cindent + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 31: Setting boolean global-local (to window) option + " Currently no such option exists. + + + " 32a: Setting global boolean local (to window) option" + noa setglobal nocursorcolumn " Reset global and local value (without triggering autocmd) + noa setlocal cursorcolumn + let g:options = [['cursorcolumn', '0', '', '0', '1', 'global', 'setglobal']] + setglobal cursorcolumn + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 32b: Setting local boolean local (to window) option" + noa setglobal nocursorcolumn " Reset global and local value (without triggering autocmd) + noa setlocal cursorcolumn + let g:options = [['cursorcolumn', '1', '1', '', '0', 'local', 'setlocal']] + setlocal nocursorcolumn + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 32c: Setting again boolean local (to window) option" + noa setglobal nocursorcolumn " Reset global and local value (without triggering autocmd) + noa setlocal cursorcolumn + let g:options = [['cursorcolumn', '1', '1', '0', '1', 'global', 'set']] + set cursorcolumn + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + " 32d: Setting again global boolean local (to window) option" + noa set nocursorcolumn " Reset global and local value (without triggering autocmd) + let g:options = [['cursorcolumn', '0', '0', '0', '1', 'global', 'set']] + set cursorcolumn + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " 33: Test autocommands when an option value is converted internally. + noa set backspace=1 " Reset global and local value (without triggering autocmd) + let g:options = [['backspace', 'indent,eol', 'indent,eol', 'indent,eol', '2', 'global', 'set']] + set backspace=2 + call assert_equal([], g:options) + call assert_equal(g:opt[0], g:opt[1]) + + + " Cleanup + au! OptionSet + " set tags& + for opt in ['nu', 'ai', 'acd', 'ar', 'bs', 'backup', 'cul', 'cp', 'backupext', 'tags', 'spelllang', 'statusline', 'foldignore', 'cmdheight', 'undolevels', 'wrapmargin', 'foldcolumn', 'wrapscan', 'autoread', 'cindent', 'cursorcolumn'] + exe printf(":set %s&vim", opt) + endfor + call test_override('starting', 0) + delfunc! AutoCommandOptionSet +endfunc + +func Test_OptionSet_diffmode() + call test_override('starting', 1) + " 18: Changing an option when entering diff mode + new + au OptionSet diff :let &l:cul = v:option_new + + call setline(1, ['buffer 1', 'line2', 'line3', 'line4']) + call assert_equal(0, &l:cul) + diffthis + call assert_equal(1, &l:cul) + + vnew + call setline(1, ['buffer 2', 'line 2', 'line 3', 'line4']) + call assert_equal(0, &l:cul) + diffthis + call assert_equal(1, &l:cul) + + diffoff + call assert_equal(0, &l:cul) + call assert_equal(1, getwinvar(2, '&l:cul')) + bw! + + call assert_equal(1, &l:cul) + diffoff! + call assert_equal(0, &l:cul) + call assert_equal(0, getwinvar(1, '&l:cul')) + bw! + + " Cleanup + au! OptionSet + call test_override('starting', 0) +endfunc + +func Test_OptionSet_diffmode_close() + call test_override('starting', 1) + " 19: Try to close the current window when entering diff mode + " should not segfault + new + au OptionSet diff close + + call setline(1, ['buffer 1', 'line2', 'line3', 'line4']) + call assert_fails(':diffthis', 'E788:') + call assert_equal(1, &diff) + vnew + call setline(1, ['buffer 2', 'line 2', 'line 3', 'line4']) + call assert_fails(':diffthis', 'E788:') + call assert_equal(1, &diff) + set diffopt-=closeoff + bw! + call assert_fails(':diffoff!', 'E788:') + bw! + + " Cleanup + au! OptionSet + call test_override('starting', 0) + "delfunc! AutoCommandOptionSet +endfunc + +" Test for Bufleave autocommand that deletes the buffer we are about to edit. +func Test_BufleaveWithDelete() + new | edit XbufLeave1 + + augroup test_bufleavewithdelete + autocmd! + autocmd BufLeave XbufLeave1 bwipe XbufLeave2 + augroup END + + call assert_fails('edit XbufLeave2', 'E143:') + call assert_equal('XbufLeave1', bufname('%')) + + autocmd! test_bufleavewithdelete BufLeave XbufLeave1 + augroup! test_bufleavewithdelete + + new + bwipe! XbufLeave1 +endfunc + +" Test for autocommand that changes the buffer list, when doing ":ball". +func Test_Acmd_BufAll() + enew! + %bwipe! + call writefile(['Test file Xxx1'], 'Xxx1', 'D') + call writefile(['Test file Xxx2'], 'Xxx2', 'D') + call writefile(['Test file Xxx3'], 'Xxx3', 'D') + + " Add three files to the buffer list + split Xxx1 + close + split Xxx2 + close + split Xxx3 + close + + " Wipe the buffer when the buffer is opened + au BufReadPost Xxx2 bwipe + + call append(0, 'Test file Xxx4') + ball + + call assert_equal(2, winnr('$')) + call assert_equal('Xxx1', bufname(winbufnr(winnr('$')))) + wincmd t + + au! BufReadPost + %bwipe! + enew! | only +endfunc + +" Test for autocommand that changes current buffer on BufEnter event. +" Check if modelines are interpreted for the correct buffer. +func Test_Acmd_BufEnter() + %bwipe! + call writefile(['start of test file Xxx1', + \ "\this is a test", + \ 'end of test file Xxx1'], 'Xxx1', 'D') + call writefile(['start of test file Xxx2', + \ 'vim: set noai :', + \ "\this is a test", + \ 'end of test file Xxx2'], 'Xxx2', 'D') + + au BufEnter Xxx2 brew + set ai modeline modelines=3 + edit Xxx1 + " edit Xxx2, autocmd will do :brew + edit Xxx2 + exe "normal G?this is a\" + " Append text with autoindent to this file + normal othis should be auto-indented + call assert_equal("\this should be auto-indented", getline('.')) + call assert_equal(3, line('.')) + " Remove autocmd and edit Xxx2 again + au! BufEnter Xxx2 + buf! Xxx2 + exe "normal G?this is a\" + " append text without autoindent to Xxx + normal othis should be in column 1 + call assert_equal("this should be in column 1", getline('.')) + call assert_equal(4, line('.')) + + %bwipe! + set ai&vim modeline&vim modelines&vim +endfunc + +" Test for issue #57 +" do not move cursor on when autoindent is set +func Test_ai_CTRL_O() + enew! + set ai + let save_fo = &fo + set fo+=r + exe "normal o# abcdef\2hi\\d0\" + exe "normal o# abcdef\2hi\d0\" + call assert_equal(['# abc', 'def', 'def'], getline(2, 4)) + + set ai&vim + let &fo = save_fo + enew! +endfunc + +" Test for autocommand that deletes the current buffer on BufLeave event. +" Also test deleting the last buffer, should give a new, empty buffer. +func Test_BufLeave_Wipe() + %bwipe! + let content = ['start of test file Xxx', + \ 'this is a test', + \ 'end of test file Xxx'] + call writefile(content, 'Xxx1', 'D') + call writefile(content, 'Xxx2', 'D') + + au BufLeave Xxx2 bwipe + edit Xxx1 + split Xxx2 + " delete buffer Xxx2, we should be back to Xxx1 + bwipe + call assert_equal('Xxx1', bufname('%')) + call assert_equal(1, winnr('$')) + + " Create an alternate buffer + %write! test.out + call assert_equal('test.out', bufname('#')) + " delete alternate buffer + bwipe test.out + call assert_equal('Xxx1', bufname('%')) + call assert_equal('', bufname('#')) + + au BufLeave Xxx1 bwipe + " delete current buffer, get an empty one + bwipe! + call assert_equal(1, line('$')) + call assert_equal('', bufname('%')) + let g:bufinfo = getbufinfo() + call assert_equal(1, len(g:bufinfo)) + + call delete('test.out') + %bwipe + au! BufLeave + + " check that bufinfo doesn't contain a pointer to freed memory + call test_garbagecollect_now() +endfunc + +func Test_QuitPre() + edit Xfoo + let winid = win_getid(winnr()) + split Xbar + au! QuitPre * let g:afile = expand('') + " Close the other window, should be correct. + exe win_id2win(winid) . 'q' + call assert_equal('Xfoo', g:afile) + + unlet g:afile + bwipe Xfoo + bwipe Xbar +endfunc + +func Test_Cmdline() + au! CmdlineChanged : let g:text = getcmdline() + let g:text = 0 + call feedkeys(":echom 'hello'\", 'xt') + call assert_equal("echom 'hello'", g:text) + au! CmdlineChanged + + au! CmdlineChanged : let g:entered = expand('') + let g:entered = 0 + call feedkeys(":echom 'hello'\", 'xt') + call assert_equal(':', g:entered) + au! CmdlineChanged + + autocmd CmdlineChanged : let g:log += [getcmdline()] + + let g:log = [] + cnoremap call setcmdline('ls') + call feedkeys(":\", 'xt') + call assert_equal(['ls'], g:log) + cunmap + + let g:log = [] + call feedkeys(":sign \\\\\\\", 'xt') + call assert_equal([ + \ 's', + \ 'si', + \ 'sig', + \ 'sign', + \ 'sign ', + \ 'sign define', + \ 'sign jump', + \ 'sign list', + \ 'sign jump', + \ 'sign define', + \ 'sign ', + \ ], g:log) + let g:log = [] + set wildmenu wildoptions+=pum + call feedkeys(":sign \\\\\\", 'xt') + call assert_equal([ + \ 's', + \ 'si', + \ 'sig', + \ 'sign', + \ 'sign ', + \ 'sign unplace', + \ 'sign jump', + \ 'sign define', + \ 'sign undefine', + \ 'sign unplace', + \ ], g:log) + set wildmenu& wildoptions& + + let g:log = [] + let @r = 'abc' + call feedkeys(":0\r1\\r2\\r3\", 'xt') + call assert_equal([ + \ '0', + \ '0a', + \ '0ab', + \ '0abc', + \ '0abc1', + \ '0abc1abc', + \ '0abc1abc2', + \ '0abc1abc2abc', + \ '0abc1abc2abc3', + \ ], g:log) + + unlet g:log + au! CmdlineChanged + + au! CmdlineEnter : let g:entered = expand('') + au! CmdlineLeave : let g:left = expand('') + let g:entered = 0 + let g:left = 0 + call feedkeys(":echo 'hello'\", 'xt') + call assert_equal(':', g:entered) + call assert_equal(':', g:left) + au! CmdlineEnter + au! CmdlineLeave + + let save_shellslash = &shellslash + set noshellslash + au! CmdlineEnter / let g:entered = expand('') + au! CmdlineLeave / let g:left = expand('') + let g:entered = 0 + let g:left = 0 + new + call setline(1, 'hello') + call feedkeys("/hello\", 'xt') + call assert_equal('/', g:entered) + call assert_equal('/', g:left) + bwipe! + au! CmdlineEnter + au! CmdlineLeave + let &shellslash = save_shellslash +endfunc + +" Test for BufWritePre autocommand that deletes or unloads the buffer. +func Test_BufWritePre() + %bwipe + au BufWritePre Xxx1 bunload + au BufWritePre Xxx2 bwipe + + call writefile(['start of Xxx1', 'test', 'end of Xxx1'], 'Xxx1', 'D') + call writefile(['start of Xxx2', 'test', 'end of Xxx2'], 'Xxx2', 'D') + + edit Xtest + e! Xxx2 + bdel Xtest + e Xxx1 + " write it, will unload it and give an error msg + call assert_fails('w', 'E203:') + call assert_equal('Xxx2', bufname('%')) + edit Xtest + e! Xxx2 + bwipe Xtest + " write it, will delete the buffer and give an error msg + call assert_fails('w', 'E203:') + call assert_equal('Xxx1', bufname('%')) + au! BufWritePre +endfunc + +" Test for BufUnload autocommand that unloads all the other buffers +func Test_bufunload_all() + let g:test_is_flaky = 1 + call writefile(['Test file Xxx1'], 'Xxx1', 'D')" + call writefile(['Test file Xxx2'], 'Xxx2', 'D')" + + let content =<< trim [CODE] + func UnloadAllBufs() + let i = 1 + while i <= bufnr('$') + if i != bufnr('%') && bufloaded(i) + exe i . 'bunload' + endif + let i += 1 + endwhile + endfunc + au BufUnload * call UnloadAllBufs() + au VimLeave * call writefile(['Test Finished'], 'Xout') + edit Xxx1 + split Xxx2 + q + [CODE] + + call writefile(content, 'Xbunloadtest', 'D') + + call delete('Xout') + call system(GetVimCommandClean() .. ' -N --not-a-term -S Xbunloadtest') + call assert_true(filereadable('Xout')) + + call delete('Xout') +endfunc + +" Some tests for buffer-local autocommands +func Test_buflocal_autocmd() + let g:bname = '' + edit xx + au BufLeave let g:bname = expand("%") + " here, autocommand for xx should trigger. + " but autocommand shall not apply to buffer named . + edit somefile + call assert_equal('xx', g:bname) + let g:bname = '' + " here, autocommand shall be auto-deleted + bwipe xx + " autocmd should not trigger + edit xx + call assert_equal('', g:bname) + " autocmd should not trigger + edit somefile + call assert_equal('', g:bname) + enew + unlet g:bname +endfunc + +" Test for "*Cmd" autocommands +func Test_Cmd_Autocmds() + call writefile(['start of Xxx', "\tabc2", 'end of Xxx'], 'Xxx', 'D') + + enew! + au BufReadCmd XtestA 0r Xxx|$del + edit XtestA " will read text of Xxd instead + call assert_equal('start of Xxx', getline(1)) + + au BufWriteCmd XtestA call append(line("$"), "write") + write " will append a line to the file + call assert_equal('write', getline('$')) + call assert_fails('read XtestA', 'E484:') " should not read anything + call assert_equal('write', getline(4)) + + " now we have: + " 1 start of Xxx + " 2 abc2 + " 3 end of Xxx + " 4 write + + au FileReadCmd XtestB '[r Xxx + 2r XtestB " will read Xxx below line 2 instead + call assert_equal('start of Xxx', getline(3)) + + " now we have: + " 1 start of Xxx + " 2 abc2 + " 3 start of Xxx + " 4 abc2 + " 5 end of Xxx + " 6 end of Xxx + " 7 write + + au FileWriteCmd XtestC '[,']copy $ + normal 4GA1 + 4,5w XtestC " will copy lines 4 and 5 to the end + call assert_equal("\tabc21", getline(8)) + call assert_fails('r XtestC', 'E484:') " should not read anything + call assert_equal("end of Xxx", getline(9)) + + " now we have: + " 1 start of Xxx + " 2 abc2 + " 3 start of Xxx + " 4 abc21 + " 5 end of Xxx + " 6 end of Xxx + " 7 write + " 8 abc21 + " 9 end of Xxx + + let g:lines = [] + au FileAppendCmd XtestD call extend(g:lines, getline(line("'["), line("']"))) + w >>XtestD " will add lines to 'lines' + call assert_equal(9, len(g:lines)) + call assert_fails('$r XtestD', 'E484:') " should not read anything + call assert_equal(9, line('$')) + call assert_equal('end of Xxx', getline('$')) + + au BufReadCmd XtestE 0r Xxx|$del + sp XtestE " split window with test.out + call assert_equal('end of Xxx', getline(3)) + + let g:lines = [] + exe "normal 2Goasdf\\\" + au BufWriteCmd XtestE call extend(g:lines, getline(0, '$')) + wall " will write other window to 'lines' + call assert_equal(4, len(g:lines), g:lines) + call assert_equal('asdf', g:lines[2]) + + au! BufReadCmd + au! BufWriteCmd + au! FileReadCmd + au! FileWriteCmd + au! FileAppendCmd + %bwipe! + enew! +endfunc + +func s:ReadFile() + setl noswapfile nomodified + let filename = resolve(expand(":p")) + execute 'read' fnameescape(filename) + 1d_ + exe 'file' fnameescape(filename) + setl buftype=acwrite +endfunc + +func s:WriteFile() + let filename = resolve(expand(":p")) + setl buftype= + noautocmd execute 'write' fnameescape(filename) + setl buftype=acwrite + setl nomodified +endfunc + +func Test_BufReadCmd() + autocmd BufReadCmd *.test call s:ReadFile() + autocmd BufWriteCmd *.test call s:WriteFile() + + call writefile(['one', 'two', 'three'], 'Xcmd.test', 'D') + edit Xcmd.test + call assert_match('Xcmd.test" line 1 of 3', execute('file')) + normal! Gofour + write + call assert_equal(['one', 'two', 'three', 'four'], readfile('Xcmd.test')) + + bwipe! + au! BufReadCmd + au! BufWriteCmd +endfunc + +func Test_BufWriteCmd() + autocmd BufWriteCmd Xbufwritecmd let g:written = 1 + new + file Xbufwritecmd + set buftype=acwrite + call mkdir('Xbufwritecmd', 'D') + write + " BufWriteCmd should be triggered even if a directory has the same name + call assert_equal(1, g:written) + unlet g:written + au! BufWriteCmd + bwipe! +endfunc + +func SetChangeMarks(start, end) + exe a:start .. 'mark [' + exe a:end .. 'mark ]' +endfunc + +" Verify the effects of autocmds on '[ and '] +func Test_change_mark_in_autocmds() + edit! Xtest + call feedkeys("ia\b\c\d\u\", 'xtn') + + call SetChangeMarks(2, 3) + write + call assert_equal([1, 4], [line("'["), line("']")]) + + call SetChangeMarks(2, 3) + au BufWritePre * call assert_equal([1, 4], [line("'["), line("']")]) + write + au! BufWritePre + + if has('unix') + write XtestFilter + write >> XtestFilter + + call SetChangeMarks(2, 3) + " Marks are set to the entire range of the write + au FilterWritePre * call assert_equal([1, 4], [line("'["), line("']")]) + " '[ is adjusted to just before the line that will receive the filtered + " data + au FilterReadPre * call assert_equal([4, 4], [line("'["), line("']")]) + " The filtered data is read into the buffer, and the source lines are + " still present, so the range is after the source lines + au FilterReadPost * call assert_equal([5, 12], [line("'["), line("']")]) + %!cat XtestFilter + " After the filtered data is read, the original lines are deleted + call assert_equal([1, 8], [line("'["), line("']")]) + au! FilterWritePre,FilterReadPre,FilterReadPost + undo + + call SetChangeMarks(1, 4) + au FilterWritePre * call assert_equal([2, 3], [line("'["), line("']")]) + au FilterReadPre * call assert_equal([3, 3], [line("'["), line("']")]) + au FilterReadPost * call assert_equal([4, 11], [line("'["), line("']")]) + 2,3!cat XtestFilter + call assert_equal([2, 9], [line("'["), line("']")]) + au! FilterWritePre,FilterReadPre,FilterReadPost + undo + + call delete('XtestFilter') + endif + + call SetChangeMarks(1, 4) + au FileWritePre * call assert_equal([2, 3], [line("'["), line("']")]) + 2,3write Xtest2 + au! FileWritePre + + call SetChangeMarks(2, 3) + au FileAppendPre * call assert_equal([1, 4], [line("'["), line("']")]) + write >> Xtest2 + au! FileAppendPre + + call SetChangeMarks(1, 4) + au FileAppendPre * call assert_equal([2, 3], [line("'["), line("']")]) + 2,3write >> Xtest2 + au! FileAppendPre + + call SetChangeMarks(1, 1) + au FileReadPre * call assert_equal([3, 1], [line("'["), line("']")]) + au FileReadPost * call assert_equal([4, 11], [line("'["), line("']")]) + 3read Xtest2 + au! FileReadPre,FileReadPost + undo + + call SetChangeMarks(4, 4) + " When the line is 0, it's adjusted to 1 + au FileReadPre * call assert_equal([1, 4], [line("'["), line("']")]) + au FileReadPost * call assert_equal([1, 8], [line("'["), line("']")]) + 0read Xtest2 + au! FileReadPre,FileReadPost + undo + + call SetChangeMarks(4, 4) + " When the line is 0, it's adjusted to 1 + au FileReadPre * call assert_equal([1, 4], [line("'["), line("']")]) + au FileReadPost * call assert_equal([2, 9], [line("'["), line("']")]) + 1read Xtest2 + au! FileReadPre,FileReadPost + undo + + bwipe! + call delete('Xtest') + call delete('Xtest2') +endfunc + +func Test_Filter_noshelltemp() + CheckExecutable cat + + enew! + call setline(1, ['a', 'b', 'c', 'd']) + + let shelltemp = &shelltemp + set shelltemp + + let g:filter_au = 0 + au FilterWritePre * let g:filter_au += 1 + au FilterReadPre * let g:filter_au += 1 + au FilterReadPost * let g:filter_au += 1 + %!cat + call assert_equal(3, g:filter_au) + + if has('filterpipe') + set noshelltemp + + let g:filter_au = 0 + au FilterWritePre * let g:filter_au += 1 + au FilterReadPre * let g:filter_au += 1 + au FilterReadPost * let g:filter_au += 1 + %!cat + call assert_equal(0, g:filter_au) + endif + + au! FilterWritePre,FilterReadPre,FilterReadPost + let &shelltemp = shelltemp + bwipe! +endfunc + +func Test_TextYankPost() + enew! + call setline(1, ['foo']) + + let g:event = [] + au TextYankPost * let g:event = copy(v:event) + + call assert_equal({}, v:event) + call assert_fails('let v:event = {}', 'E46:') + call assert_fails('let v:event.mykey = 0', 'E742:') + + norm "ayiw + call assert_equal( + \ #{regcontents: ['foo'], regname: 'a', operator: 'y', + \ regtype: 'v', visual: v:false, inclusive: v:true}, + \ g:event) + norm y_ + call assert_equal( + \ #{regcontents: ['foo'], regname: '', operator: 'y', regtype: 'V', + \ visual: v:false, inclusive: v:false}, + \ g:event) + norm Vy + call assert_equal( + \ #{regcontents: ['foo'], regname: '', operator: 'y', regtype: 'V', + \ visual: v:true, inclusive: v:true}, + \ g:event) + call feedkeys("\y", 'x') + call assert_equal( + \ #{regcontents: ['f'], regname: '', operator: 'y', regtype: "\x161", + \ visual: v:true, inclusive: v:true}, + \ g:event) + norm "xciwbar + call assert_equal( + \ #{regcontents: ['foo'], regname: 'x', operator: 'c', regtype: 'v', + \ visual: v:false, inclusive: v:true}, + \ g:event) + norm "bdiw + call assert_equal( + \ #{regcontents: ['bar'], regname: 'b', operator: 'd', regtype: 'v', + \ visual: v:false, inclusive: v:true}, + \ g:event) + + call setline(1, 'foobar') + " exclusive motion + norm $"ay0 + call assert_equal( + \ #{regcontents: ['fooba'], regname: 'a', operator: 'y', regtype: 'v', + \ visual: v:false, inclusive: v:false}, + \ g:event) + " inclusive motion + norm 0"ay$ + call assert_equal( + \ #{regcontents: ['foobar'], regname: 'a', operator: 'y', regtype: 'v', + \ visual: v:false, inclusive: v:true}, + \ g:event) + + call assert_equal({}, v:event) + + if has('clipboard_working') && !has('gui_running') + " Test that when the visual selection is automatically copied to clipboard + " register a TextYankPost is emitted + call setline(1, ['foobar']) + + let @* = '' + set clipboard=autoselect + exe "norm! ggviw\" + call assert_equal( + \ #{regcontents: ['foobar'], regname: '*', operator: 'y', + \ regtype: 'v', visual: v:true, inclusive: v:false}, + \ g:event) + + let @+ = '' + set clipboard=autoselectplus + exe "norm! ggviw\" + call assert_equal( + \ #{regcontents: ['foobar'], regname: '+', operator: 'y', + \ regtype: 'v', visual: v:true, inclusive: v:false}, + \ g:event) + + set clipboard&vim + endif + + au! TextYankPost + unlet g:event + bwipe! +endfunc + +func Test_autocommand_all_events() + call assert_fails('au * * bwipe', 'E1155:') + call assert_fails('au * x bwipe', 'E1155:') + call assert_fails('au! * x bwipe', 'E1155:') +endfunc + +func Test_autocmd_user() + au User MyEvent let s:res = [expand(""), expand("")] + doautocmd User MyEvent + call assert_equal(['MyEvent', 'MyEvent'], s:res) + au! User + unlet s:res +endfunc + +func Test_autocmd_user_clear_group() + CheckRunVimInTerminal + + let lines =<< trim END + autocmd! User + for i in range(1, 999) + exe 'autocmd User ' .. 'Foo' .. i .. ' bar' + endfor + au CmdlineLeave : call timer_start(0, {-> execute('autocmd! User')}) + END + call writefile(lines, 'XautoUser', 'D') + let buf = RunVimInTerminal('-S XautoUser', {'rows': 10}) + + " this was using freed memory + call term_sendkeys(buf, ":autocmd User\") + call TermWait(buf, 50) + call term_sendkeys(buf, "G") + + call StopVimInTerminal(buf) +endfunc + +func Test_autocmd_CmdlineLeave_unlet() + CheckRunVimInTerminal + + let lines =<< trim END + for i in range(1, 999) + exe 'let g:var' .. i '=' i + endfor + au CmdlineLeave : call timer_start(0, {-> execute('unlet g:var990')}) + END + call writefile(lines, 'XleaveUnlet', 'D') + let buf = RunVimInTerminal('-S XleaveUnlet', {'rows': 10}) + + " this was using freed memory + call term_sendkeys(buf, ":let g:\") + call TermWait(buf, 50) + call term_sendkeys(buf, "G") + call TermWait(buf, 50) + call term_sendkeys(buf, "\") " for the hit-enter prompt + + call StopVimInTerminal(buf) +endfunc + +function s:Before_test_dirchanged() + augroup test_dirchanged + autocmd! + augroup END + let s:li = [] + let s:dir_this = getcwd() + let s:dir_foo = s:dir_this . '/Xfoo' + call mkdir(s:dir_foo) + let s:dir_bar = s:dir_this . '/Xbar' + call mkdir(s:dir_bar) +endfunc + +function s:After_test_dirchanged() + call chdir(s:dir_this) + call delete(s:dir_foo, 'd') + call delete(s:dir_bar, 'd') + augroup test_dirchanged + autocmd! + augroup END +endfunc + +function Test_dirchanged_global() + call s:Before_test_dirchanged() + autocmd test_dirchanged DirChangedPre global call add(s:li, expand("") .. " pre cd " .. v:event.directory) + autocmd test_dirchanged DirChanged global call add(s:li, "cd:") + autocmd test_dirchanged DirChanged global call add(s:li, expand("")) + call chdir(s:dir_foo) + let expected = ["global pre cd " .. s:dir_foo, "cd:", s:dir_foo] + call assert_equal(expected, s:li) + call chdir(s:dir_foo) + call assert_equal(expected, s:li) + exe 'lcd ' .. fnameescape(s:dir_bar) + call assert_equal(expected, s:li) + + exe 'cd ' .. s:dir_foo + exe 'cd ' .. s:dir_bar + autocmd! test_dirchanged DirChanged global let g:result = expand("") + cd - + call assert_equal(s:dir_foo, substitute(g:result, '\\', '/', 'g')) + + call s:After_test_dirchanged() +endfunc + +function Test_dirchanged_local() + call s:Before_test_dirchanged() + autocmd test_dirchanged DirChanged window call add(s:li, "lcd:") + autocmd test_dirchanged DirChanged window call add(s:li, expand("")) + call chdir(s:dir_foo) + call assert_equal([], s:li) + exe 'lcd ' .. fnameescape(s:dir_bar) + call assert_equal(["lcd:", s:dir_bar], s:li) + exe 'lcd ' .. fnameescape(s:dir_bar) + call assert_equal(["lcd:", s:dir_bar], s:li) + call s:After_test_dirchanged() +endfunc + +function Test_dirchanged_auto() + CheckOption autochdir + call s:Before_test_dirchanged() + call test_autochdir() + autocmd test_dirchanged DirChangedPre auto call add(s:li, "pre cd " .. v:event.directory) + autocmd test_dirchanged DirChanged auto call add(s:li, "auto:") + autocmd test_dirchanged DirChanged auto call add(s:li, expand("")) + set acd + cd .. + call assert_equal([], s:li) + exe 'edit ' . s:dir_foo . '/Xautofile' + call assert_equal(s:dir_foo, getcwd()) + let expected = ["pre cd " .. s:dir_foo, "auto:", s:dir_foo] + call assert_equal(expected, s:li) + set noacd + bwipe! + call s:After_test_dirchanged() +endfunc + +" Test TextChangedI and TextChangedP +func Test_ChangedP() + new + call setline(1, ['foo', 'bar', 'foobar']) + call test_override("char_avail", 1) + set complete=. completeopt=menuone + + func! TextChangedAutocmd(char) + let g:autocmd .= a:char + endfunc + + " TextChanged will not be triggered, only check that it isn't. + au! TextChanged :call TextChangedAutocmd('N') + au! TextChangedI :call TextChangedAutocmd('I') + au! TextChangedP :call TextChangedAutocmd('P') + + call cursor(3, 1) + let g:autocmd = '' + call feedkeys("o\", 'tnix') + call assert_equal('I', g:autocmd) + + let g:autocmd = '' + call feedkeys("Sf", 'tnix') + call assert_equal('II', g:autocmd) + + let g:autocmd = '' + call feedkeys("Sf\", 'tnix') + call assert_equal('IIP', g:autocmd) + + let g:autocmd = '' + call feedkeys("Sf\\", 'tnix') + call assert_equal('IIPP', g:autocmd) + + let g:autocmd = '' + call feedkeys("Sf\\\", 'tnix') + call assert_equal('IIPPP', g:autocmd) + + let g:autocmd = '' + call feedkeys("Sf\\\\", 'tnix') + call assert_equal('IIPPPP', g:autocmd) + + call assert_equal(['foo', 'bar', 'foobar', 'foo'], getline(1, '$')) + " TODO: how should it handle completeopt=noinsert,noselect? + + " CleanUp + call test_override("char_avail", 0) + au! TextChanged + au! TextChangedI + au! TextChangedP + delfu TextChangedAutocmd + unlet! g:autocmd + set complete&vim completeopt&vim + + bw! +endfunc + +let g:setline_handled = v:false +func SetLineOne() + if !g:setline_handled + call setline(1, "(x)") + let g:setline_handled = v:true + endif +endfunc + +func Test_TextChangedI_with_setline() + new + call test_override('char_avail', 1) + autocmd TextChangedI call SetLineOne() + call feedkeys("i(\\", 'tx') + call assert_equal('(', getline(1)) + call assert_equal('x)', getline(2)) + undo + call assert_equal('', getline(1)) + call assert_equal('', getline(2)) + + call test_override('char_avail', 0) + bwipe! +endfunc + +func Test_Changed_FirstTime() + CheckFeature terminal + CheckNotGui + " Starting a terminal to run Vim is always considered flaky. + let g:test_is_flaky = 1 + + " Prepare file for TextChanged event. + call writefile([''], 'Xchanged.txt', 'D') + let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile'], {'term_rows': 3}) + call assert_equal('running', term_getstatus(buf)) + " Wait for the ruler (in the status line) to be shown. + " In ConPTY, there is additional character which is drawn up to the width of + " the screen. + if has('conpty') + call WaitForAssert({-> assert_match('\ assert_match('\ call writefile(['No'], 'Xchanged.txt')\") + call term_sendkeys(buf, "\\:qa!\") + call WaitForAssert({-> assert_equal('finished', term_getstatus(buf))}) + call assert_equal([''], readfile('Xchanged.txt')) + + " clean up + bwipe! +endfunc + +func Test_autocmd_nested() + let g:did_nested = 0 + augroup Testing + au WinNew * edit somefile + au BufNew * let g:did_nested = 1 + augroup END + split + call assert_equal(0, g:did_nested) + close + bwipe! somefile + + " old nested argument still works + augroup Testing + au! + au WinNew * nested edit somefile + au BufNew * let g:did_nested = 1 + augroup END + split + call assert_equal(1, g:did_nested) + close + bwipe! somefile + + " New ++nested argument works + augroup Testing + au! + au WinNew * ++nested edit somefile + au BufNew * let g:did_nested = 1 + augroup END + split + call assert_equal(1, g:did_nested) + close + bwipe! somefile + + " nested without ++ does not work in Vim9 script + call assert_fails('vim9cmd au WinNew * nested echo fails', 'E1078:') + + augroup Testing + au! + augroup END + + call assert_fails('au WinNew * ++nested ++nested echo bad', 'E983:') + call assert_fails('au WinNew * nested nested echo bad', 'E983:') +endfunc + +func Test_autocmd_nested_cursor_invalid() + set laststatus=0 + copen + cclose + call setline(1, ['foo', 'bar', 'baz']) + 3 + augroup nested_inv + autocmd User foo ++nested copen + autocmd BufAdd * let &laststatus = 2 - &laststatus + augroup END + doautocmd User foo + + augroup nested_inv + au! + augroup END + set laststatus& + cclose + bwipe! +endfunc + +func Test_autocmd_nested_keeps_cursor_pos() + enew + call setline(1, 'foo') + autocmd User foo ++nested normal! $a + autocmd InsertLeave * : + doautocmd User foo + call assert_equal([0, 1, 3, 0], getpos('.')) + + bwipe! +endfunc + +func Test_autocmd_nested_switch_window() + " run this in a separate Vim so that SafeState works + CheckRunVimInTerminal + + let lines =<< trim END + vim9script + ['()']->writefile('Xautofile') + autocmd VimEnter * ++nested edit Xautofile | split + autocmd BufReadPost * autocmd SafeState * ++once foldclosed('.') + autocmd WinEnter * matchadd('ErrorMsg', 'pat') + END + call writefile(lines, 'Xautoscript', 'D') + let buf = RunVimInTerminal('-S Xautoscript', {'rows': 10}) + call VerifyScreenDump(buf, 'Test_autocmd_nested_switch', {}) + + call StopVimInTerminal(buf) + call delete('Xautofile') +endfunc + +func Test_autocmd_once() + " Without ++once WinNew triggers twice + let g:did_split = 0 + augroup Testing + au WinNew * let g:did_split += 1 + augroup END + split + split + call assert_equal(2, g:did_split) + call assert_true(exists('#WinNew')) + close + close + + " With ++once WinNew triggers once + let g:did_split = 0 + augroup Testing + au! + au WinNew * ++once let g:did_split += 1 + augroup END + split + split + call assert_equal(1, g:did_split) + call assert_false(exists('#WinNew')) + close + close + + call assert_fails('au WinNew * ++once ++once echo bad', 'E983:') +endfunc + +func Test_autocmd_bufreadpre() + new + let b:bufreadpre = 1 + call append(0, range(1000)) + w! XAutocmdBufReadPre.txt + autocmd BufReadPre :let b:bufreadpre += 1 + norm! 500gg + sp + norm! 1000gg + wincmd p + let g:wsv1 = winsaveview() + wincmd p + let g:wsv2 = winsaveview() + " triggers BufReadPre, should not move the cursor in either window + " The topline may change one line in a large window. + edit + call assert_inrange(g:wsv2.topline - 1, g:wsv2.topline + 1, winsaveview().topline) + call assert_equal(g:wsv2.lnum, winsaveview().lnum) + call assert_equal(2, b:bufreadpre) + wincmd p + call assert_equal(g:wsv1.topline, winsaveview().topline) + call assert_equal(g:wsv1.lnum, winsaveview().lnum) + call assert_equal(2, b:bufreadpre) + " Now set the cursor position in an BufReadPre autocommand + " (even though the position will be invalid, this should make Vim reset the + " cursor position in the other window. + wincmd p + set cpo+=g + " won't do anything, but try to set the cursor on an invalid lnum + autocmd BufReadPre :norm! 70gg + " triggers BufReadPre, should not move the cursor in either window + e + call assert_equal(1, winsaveview().topline) + call assert_equal(1, winsaveview().lnum) + call assert_equal(3, b:bufreadpre) + wincmd p + call assert_equal(g:wsv1.topline, winsaveview().topline) + call assert_equal(g:wsv1.lnum, winsaveview().lnum) + call assert_equal(3, b:bufreadpre) + close + close + call delete('XAutocmdBufReadPre.txt') + set cpo-=g +endfunc + +" FileChangedShell tested in test_filechanged.vim + +" Tests for the following autocommands: +" - FileWritePre writing a compressed file +" - FileReadPost reading a compressed file +" - BufNewFile reading a file template +" - BufReadPre decompressing the file to be read +" - FilterReadPre substituting characters in the temp file +" - FilterReadPost substituting characters after filtering +" - FileReadPre set options for decompression +" - FileReadPost decompress the file +func Test_ReadWrite_Autocmds() + " Run this test only on Unix-like systems and if gzip is available + CheckUnix + CheckExecutable gzip + + " Make $GZIP empty, "-v" would cause trouble. + let $GZIP = "" + + " Use a FileChangedShell autocommand to avoid a prompt for 'Xtestfile.gz' + " being modified outside of Vim (noticed on Solaris). + au FileChangedShell * echo 'caught FileChangedShell' + + " Test for the FileReadPost, FileWritePre and FileWritePost autocmds + augroup Test1 + au! + au FileWritePre *.gz '[,']!gzip + au FileWritePost *.gz undo + au FileReadPost *.gz '[,']!gzip -d + augroup END + + new + set bin + call append(0, [ + \ 'line 2 Abcdefghijklmnopqrstuvwxyz', + \ 'line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 4 Abcdefghijklmnopqrstuvwxyz', + \ 'line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 6 Abcdefghijklmnopqrstuvwxyz', + \ 'line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 8 Abcdefghijklmnopqrstuvwxyz', + \ 'line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 10 Abcdefghijklmnopqrstuvwxyz' + \ ]) + 1,9write! Xtestfile.gz + enew! | close + + new + " Read and decompress the testfile + 0read Xtestfile.gz + call assert_equal([ + \ 'line 2 Abcdefghijklmnopqrstuvwxyz', + \ 'line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 4 Abcdefghijklmnopqrstuvwxyz', + \ 'line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 6 Abcdefghijklmnopqrstuvwxyz', + \ 'line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 8 Abcdefghijklmnopqrstuvwxyz', + \ 'line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 10 Abcdefghijklmnopqrstuvwxyz' + \ ], getline(1, 9)) + enew! | close + + augroup Test1 + au! + augroup END + + " Test for the FileAppendPre and FileAppendPost autocmds + augroup Test2 + au! + au BufNewFile *.c read Xtest.c + au FileAppendPre *.out '[,']s/new/NEW/ + au FileAppendPost *.out !cat Xtest.c >> test.out + augroup END + + call writefile(['/*', ' * Here is a new .c file', ' */'], 'Xtest.c', 'D') + new foo.c " should load Xtest.c + call assert_equal(['/*', ' * Here is a new .c file', ' */'], getline(2, 4)) + w! >> test.out " append it to the output file + + let contents = readfile('test.out') + call assert_equal(' * Here is a NEW .c file', contents[2]) + call assert_equal(' * Here is a new .c file', contents[5]) + + call delete('test.out') + enew! | close + augroup Test2 + au! + augroup END + + " Test for the BufReadPre and BufReadPost autocmds + augroup Test3 + au! + " setup autocommands to decompress before reading and re-compress + " afterwards + au BufReadPre *.gz exe '!gzip -d ' . shellescape(expand("")) + au BufReadPre *.gz call rename(expand(":r"), expand("")) + au BufReadPost *.gz call rename(expand(""), expand(":r")) + au BufReadPost *.gz exe '!gzip ' . shellescape(expand(":r")) + augroup END + + e! Xtestfile.gz " Edit compressed file + call assert_equal([ + \ 'line 2 Abcdefghijklmnopqrstuvwxyz', + \ 'line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 4 Abcdefghijklmnopqrstuvwxyz', + \ 'line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 6 Abcdefghijklmnopqrstuvwxyz', + \ 'line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 8 Abcdefghijklmnopqrstuvwxyz', + \ 'line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 10 Abcdefghijklmnopqrstuvwxyz' + \ ], getline(1, 9)) + + w! >> test.out " Append it to the output file + + augroup Test3 + au! + augroup END + + " Test for the FilterReadPre and FilterReadPost autocmds. + set shelltemp " need temp files here + augroup Test4 + au! + au FilterReadPre *.out call rename(expand(""), expand("") . ".t") + au FilterReadPre *.out exe 'silent !sed s/e/E/ ' . shellescape(expand("")) . ".t >" . shellescape(expand("")) + au FilterReadPre *.out exe 'silent !rm ' . shellescape(expand("")) . '.t' + au FilterReadPost *.out '[,']s/x/X/g + augroup END + + e! test.out " Edit the output file + 1,$!cat + call assert_equal([ + \ 'linE 2 AbcdefghijklmnopqrstuvwXyz', + \ 'linE 3 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', + \ 'linE 4 AbcdefghijklmnopqrstuvwXyz', + \ 'linE 5 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', + \ 'linE 6 AbcdefghijklmnopqrstuvwXyz', + \ 'linE 7 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', + \ 'linE 8 AbcdefghijklmnopqrstuvwXyz', + \ 'linE 9 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', + \ 'linE 10 AbcdefghijklmnopqrstuvwXyz' + \ ], getline(1, 9)) + call assert_equal([ + \ 'line 2 Abcdefghijklmnopqrstuvwxyz', + \ 'line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 4 Abcdefghijklmnopqrstuvwxyz', + \ 'line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 6 Abcdefghijklmnopqrstuvwxyz', + \ 'line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 8 Abcdefghijklmnopqrstuvwxyz', + \ 'line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 10 Abcdefghijklmnopqrstuvwxyz' + \ ], readfile('test.out')) + + augroup Test4 + au! + augroup END + set shelltemp&vim + + " Test for the FileReadPre and FileReadPost autocmds. + augroup Test5 + au! + au FileReadPre *.gz exe 'silent !gzip -d ' . shellescape(expand("")) + au FileReadPre *.gz call rename(expand(":r"), expand("")) + au FileReadPost *.gz '[,']s/l/L/ + augroup END + + new + 0r Xtestfile.gz " Read compressed file + call assert_equal([ + \ 'Line 2 Abcdefghijklmnopqrstuvwxyz', + \ 'Line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'Line 4 Abcdefghijklmnopqrstuvwxyz', + \ 'Line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'Line 6 Abcdefghijklmnopqrstuvwxyz', + \ 'Line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'Line 8 Abcdefghijklmnopqrstuvwxyz', + \ 'Line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'Line 10 Abcdefghijklmnopqrstuvwxyz' + \ ], getline(1, 9)) + call assert_equal([ + \ 'line 2 Abcdefghijklmnopqrstuvwxyz', + \ 'line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 4 Abcdefghijklmnopqrstuvwxyz', + \ 'line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 6 Abcdefghijklmnopqrstuvwxyz', + \ 'line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 8 Abcdefghijklmnopqrstuvwxyz', + \ 'line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + \ 'line 10 Abcdefghijklmnopqrstuvwxyz' + \ ], readfile('Xtestfile.gz')) + + augroup Test5 + au! + augroup END + + au! FileChangedShell + call delete('Xtestfile.gz') + call delete('test.out') +endfunc + +func Test_throw_in_BufWritePre() + new + call setline(1, ['one', 'two', 'three']) + call assert_false(filereadable('Xthefile')) + augroup throwing + au BufWritePre X* throw 'do not write' + augroup END + try + w Xthefile + catch + let caught = 1 + endtry + call assert_equal(1, caught) + call assert_false(filereadable('Xthefile')) + + bwipe! + au! throwing +endfunc + +func Test_autocmd_in_try_block() + call mkdir('Xintrydir', 'R') + au BufEnter * let g:fname = expand('%') + try + edit Xintrydir/ + endtry + call assert_match('Xintrydir', g:fname) + + unlet g:fname + au! BufEnter +endfunc + +func Test_autocmd_SafeState() + CheckRunVimInTerminal + + let lines =<< trim END + let g:safe = 0 + let g:again = '' + au SafeState * let g:safe += 1 + au SafeStateAgain * let g:again ..= 'x' + func CallTimer() + call timer_start(10, {id -> execute('let g:again ..= "t"')}) + endfunc + END + call writefile(lines, 'XSafeState', 'D') + let buf = RunVimInTerminal('-S XSafeState', #{rows: 6}) + + " Sometimes we loop to handle a K_IGNORE, SafeState may be triggered once or + " more often. + call term_sendkeys(buf, ":echo g:safe\") + call WaitForAssert({-> assert_match('^\d ', term_getline(buf, 6))}, 1000) + + " SafeStateAgain should be invoked at least three times + call term_sendkeys(buf, ":echo g:again\") + call WaitForAssert({-> assert_match('^xxx', term_getline(buf, 6))}, 1000) + + call term_sendkeys(buf, ":let g:again = ''\:call CallTimer()\") + call TermWait(buf, 50) + call term_sendkeys(buf, ":\") + call TermWait(buf, 50) + call term_sendkeys(buf, ":echo g:again\") + call WaitForAssert({-> assert_match('xtx', term_getline(buf, 6))}, 1000) + + call StopVimInTerminal(buf) +endfunc + +func Test_autocmd_CmdWinEnter() + CheckRunVimInTerminal + + let lines =<< trim END + augroup vimHints | au! | augroup END + let b:dummy_var = 'This is a dummy' + autocmd CmdWinEnter * quit + let winnr = winnr('$') + END + let filename = 'XCmdWinEnter' + call writefile(lines, filename) + let buf = RunVimInTerminal('-S '.filename, #{rows: 6}) + + call term_sendkeys(buf, "q:") + call TermWait(buf) + call term_sendkeys(buf, ":echo b:dummy_var\") + call WaitForAssert({-> assert_match('^This is a dummy', term_getline(buf, 6))}, 2000) + call term_sendkeys(buf, ":echo &buftype\") + call WaitForAssert({-> assert_notmatch('^nofile', term_getline(buf, 6))}, 1000) + call term_sendkeys(buf, ":echo winnr\") + call WaitForAssert({-> assert_match('^1', term_getline(buf, 6))}, 1000) + + " clean up + call StopVimInTerminal(buf) + call delete(filename) +endfunc + +func Test_autocmd_was_using_freed_memory() + CheckFeature quickfix + + pedit xx + n x + augroup winenter + au WinEnter * if winnr('$') > 2 | quit | endif + augroup END + split + + augroup winenter + au! WinEnter + augroup END + + bwipe xx + bwipe x + pclose +endfunc + +func Test_BufWrite_lockmarks() + let g:test_is_flaky = 1 + edit! Xtest + call setline(1, ['a', 'b', 'c', 'd']) + + " :lockmarks preserves the marks + call SetChangeMarks(2, 3) + lockmarks write + call assert_equal([2, 3], [line("'["), line("']")]) + + " *WritePre autocmds get the correct line range, but lockmarks preserves the + " original values for the user + augroup lockmarks + au! + au BufWritePre,FilterWritePre * call assert_equal([1, 4], [line("'["), line("']")]) + au FileWritePre * call assert_equal([3, 4], [line("'["), line("']")]) + augroup END + + lockmarks write + call assert_equal([2, 3], [line("'["), line("']")]) + + if executable('cat') + lockmarks %!cat + call assert_equal([2, 3], [line("'["), line("']")]) + endif + + lockmarks 3,4write Xtest2 + call assert_equal([2, 3], [line("'["), line("']")]) + + au! lockmarks + augroup! lockmarks + call delete('Xtest') + call delete('Xtest2') +endfunc + +func Test_FileType_spell() + if !isdirectory('/tmp') + throw "Skipped: requires /tmp directory" + endif + + " this was crashing with an invalid free() + setglobal spellfile=/tmp/en.utf-8.add + augroup crash + autocmd! + autocmd BufNewFile,BufReadPost crashfile setf somefiletype + autocmd BufNewFile,BufReadPost crashfile set ft=anotherfiletype + autocmd FileType anotherfiletype setlocal spell + augroup END + func! NoCrash() abort + edit /tmp/crashfile + endfunc + call NoCrash() + + au! crash + setglobal spellfile= +endfunc + +" this was wiping out the current buffer and using freed memory +func Test_SpellFileMissing_bwipe() + next 0 + au SpellFileMissing 0 bwipe + call assert_fails('set spell spelllang=0', 'E937:') + + au! SpellFileMissing + set nospell spelllang=en + bwipe +endfunc + +" Test closing a window or editing another buffer from a FileChangedRO handler +" in a readonly buffer +func Test_FileChangedRO_winclose() + call test_override('ui_delay', 10) + + augroup FileChangedROTest + au! + autocmd FileChangedRO * quit + augroup END + new + set readonly + call assert_fails('normal i', 'E788:') + close + augroup! FileChangedROTest + + augroup FileChangedROTest + au! + autocmd FileChangedRO * edit Xrofile + augroup END + new + set readonly + call assert_fails('normal i', 'E788:') + close + augroup! FileChangedROTest + call test_override('ALL', 0) +endfunc + +func LogACmd() + call add(g:logged, line('$')) +endfunc + +func Test_TermChanged() + CheckNotGui + + enew! + tabnew + call setline(1, ['a', 'b', 'c', 'd']) + $ + au TermChanged * call LogACmd() + let g:logged = [] + let term_save = &term + set term=xterm + call assert_equal([1, 4], g:logged) + + au! TermChanged + let &term = term_save + bwipe! +endfunc + +" Test for FileReadCmd autocmd +func Test_autocmd_FileReadCmd() + func ReadFileCmd() + call append(line('$'), "v:cmdarg = " .. v:cmdarg) + endfunc + augroup FileReadCmdTest + au! + au FileReadCmd Xtest call ReadFileCmd() + augroup END + + new + read ++bin Xtest + read ++nobin Xtest + read ++edit Xtest + read ++bad=keep Xtest + read ++bad=drop Xtest + read ++bad=- Xtest + read ++ff=unix Xtest + read ++ff=dos Xtest + read ++ff=mac Xtest + read ++enc=utf-8 Xtest + + call assert_equal(['', + \ 'v:cmdarg = ++bin', + \ 'v:cmdarg = ++nobin', + \ 'v:cmdarg = ++edit', + \ 'v:cmdarg = ++bad=keep', + \ 'v:cmdarg = ++bad=drop', + \ 'v:cmdarg = ++bad=-', + \ 'v:cmdarg = ++ff=unix', + \ 'v:cmdarg = ++ff=dos', + \ 'v:cmdarg = ++ff=mac', + \ 'v:cmdarg = ++enc=utf-8'], getline(1, '$')) + + bwipe! + augroup FileReadCmdTest + au! + augroup END + delfunc ReadFileCmd +endfunc + +" Test for passing invalid arguments to autocmd +func Test_autocmd_invalid_args() + " Additional character after * for event + call assert_fails('autocmd *a Xinvfile set ff=unix', 'E215:') + augroup Test + augroup END + " Invalid autocmd event + call assert_fails('autocmd Bufabc Xinvfile set ft=vim', 'E216:') + " Invalid autocmd event in a autocmd group + call assert_fails('autocmd Test Bufabc Xinvfile set ft=vim', 'E216:') + augroup! Test + " Execute all autocmds + call assert_fails('doautocmd * BufEnter', 'E217:') + call assert_fails('augroup! x1a2b3', 'E367:') + call assert_fails('autocmd BufNew pwd', 'E680:') + call assert_fails('autocmd BufNew \) set ff=unix', 'E55:') +endfunc + +" Test for deep nesting of autocmds +func Test_autocmd_deep_nesting() + autocmd BufEnter Xdeepfile doautocmd BufEnter Xdeepfile + call assert_fails('doautocmd BufEnter Xdeepfile', 'E218:') + autocmd! BufEnter Xdeepfile +endfunc + +" Tests for SigUSR1 autocmd event, which is only available on posix systems. +func Test_autocmd_sigusr1() + CheckUnix + " FIXME: should this work on MacOS M1? + CheckNotMacM1 + CheckExecutable /bin/kill + + let g:sigusr1_passed = 0 + au SigUSR1 * let g:sigusr1_passed = 1 + call system('/bin/kill -s usr1 ' . getpid()) + call WaitForAssert({-> assert_true(g:sigusr1_passed)}) + + au! SigUSR1 + unlet g:sigusr1_passed +endfunc + +" Test for BufReadPre autocmd deleting the file +func Test_BufReadPre_delfile() + augroup TestAuCmd + au! + autocmd BufReadPre XbufreadPre call delete('XbufreadPre') + augroup END + call writefile([], 'XbufreadPre', 'D') + call assert_fails('new XbufreadPre', 'E200:') + call assert_equal('XbufreadPre', @%) + call assert_equal(1, &readonly) + + augroup TestAuCmd + au! + augroup END + close! +endfunc + +" Test for BufReadPre autocmd changing the current buffer +func Test_BufReadPre_changebuf() + augroup TestAuCmd + au! + autocmd BufReadPre Xchangebuf edit Xsomeotherfile + augroup END + call writefile([], 'Xchangebuf', 'D') + call assert_fails('new Xchangebuf', 'E201:') + call assert_equal('Xsomeotherfile', @%) + call assert_equal(1, &readonly) + + augroup TestAuCmd + au! + augroup END + close! +endfunc + +" Test for BufWipeouti autocmd changing the current buffer when reading a file +" in an empty buffer with 'f' flag in 'cpo' +func Test_BufDelete_changebuf() + new + augroup TestAuCmd + au! + autocmd BufWipeout * let bufnr = bufadd('somefile') | exe "b " .. bufnr + augroup END + let save_cpo = &cpo + set cpo+=f + call assert_fails('r Xchangebuf', ['E812:', 'E484:']) + call assert_equal('somefile', @%) + let &cpo = save_cpo + augroup TestAuCmd + au! + augroup END + close! +endfunc + +" Test for the temporary internal window used to execute autocmds +func Test_autocmd_window() + %bw! + edit one.txt + tabnew two.txt + vnew three.txt + tabnew four.txt + tabprevious + let g:blist = [] + augroup aucmd_win_test1 + au! + au BufEnter * call add(g:blist, [expand(''), + \ win_gettype(bufwinnr(expand('')))]) + augroup END + + doautoall BufEnter + call assert_equal([ + \ ['one.txt', 'autocmd'], + \ ['two.txt', ''], + \ ['four.txt', 'autocmd'], + \ ['three.txt', ''], + \ ], g:blist) + + augroup aucmd_win_test1 + au! + augroup END + augroup! aucmd_win_test1 + %bw! +endfunc + +" Test for trying to close the temporary window used for executing an autocmd +func Test_close_autocmd_window() + %bw! + edit one.txt + tabnew two.txt + augroup aucmd_win_test2 + au! + au BufEnter * if expand('') == 'one.txt' | 1close | endif + augroup END + + call assert_fails('doautoall BufEnter', 'E813:') + + augroup aucmd_win_test2 + au! + augroup END + augroup! aucmd_win_test2 + %bwipe! +endfunc + +" Test for trying to close the tab that has the temporary window for exeucing +" an autocmd. +func Test_close_autocmd_tab() + edit one.txt + tabnew two.txt + augroup aucmd_win_test + au! + au BufEnter * if expand('') == 'one.txt' | tabfirst | tabonly | endif + augroup END + + call assert_fails('doautoall BufEnter', 'E813:') + + tabonly + augroup aucmd_win_test + au! + augroup END + augroup! aucmd_win_test + %bwipe! +endfunc + +func Test_Visual_doautoall_redraw() + call setline(1, ['a', 'b']) + new + wincmd p + call feedkeys("G\", 'txn') + autocmd User Explode ++once redraw + doautoall User Explode + %bwipe! +endfunc + +" This was using freed memory. +func Test_BufNew_arglocal() + arglocal + au BufNew * arglocal + call assert_fails('drop xx', 'E1156:') + + au! BufNew +endfunc + +func Test_autocmd_closes_window() + au BufNew,BufWinLeave * e %e + file yyy + au BufNew,BufWinLeave * ball + n xxx + + %bwipe + au! BufNew + au! BufWinLeave +endfunc + +func Test_autocmd_quit_psearch() + sn aa bb + augroup aucmd_win_test + au! + au BufEnter,BufLeave,BufNew,WinEnter,WinLeave,WinNew * if winnr('$') > 1 | q | endif + augroup END + ps / + + augroup aucmd_win_test + au! + augroup END + new + pclose +endfunc + +" Fuzzer found some strange combination that caused a crash. +func Test_autocmd_normal_mess() + " For unknown reason this hangs on MS-Windows + CheckNotMSWindows + + augroup aucmd_normal_test + au BufLeave,BufWinLeave,BufHidden,BufUnload,BufDelete,BufWipeout * norm 7q/qc + augroup END + call assert_fails('o4', 'E1159') + silent! H + call assert_fails('e xx', 'E1159') + normal G + + augroup aucmd_normal_test + au! + augroup END +endfunc + +func Test_autocmd_closing_cmdwin() + " For unknown reason this hangs on MS-Windows + CheckNotMSWindows + + au BufWinLeave * nested q + call assert_fails("norm 7q?\n", 'E855:') + + au! BufWinLeave + new + only +endfunc + +func Test_autocmd_vimgrep() + augroup aucmd_vimgrep + au QuickfixCmdPre,BufNew,BufReadCmd * sb + au QuickfixCmdPre,BufNew,BufReadCmd * q9 + augroup END + call assert_fails('lv ?a? foo', 'E926:') + + augroup aucmd_vimgrep + au! + augroup END +endfunc + +func Test_autocmd_with_block() + augroup block_testing + au BufReadPost *.xml { + setlocal matchpairs+=<:> + / :call TextChangedAutocmdI('N') + au TextChangedI :call TextChangedAutocmdI('I') + augroup END + + call feedkeys("ifoo\", 'tnix') + " TODO: Test test does not seem to trigger TextChanged autocommand, this + " requires running Vim in a terminal window. + " call assert_equal('N3', g:autocmd_n) + call assert_equal('I3', g:autocmd_i) + + call feedkeys("yyp", 'tnix') + " TODO: Test test does not seem to trigger TextChanged autocommand. + " call assert_equal('N4', g:autocmd_n) + call assert_equal('I3', g:autocmd_i) + + " CleanUp + call test_override("char_avail", 0) + au! TextChanged + au! TextChangedI + augroup! Test_TextChanged + delfu TextChangedAutocmdI + unlet! g:autocmd_i g:autocmd_n + + bw! +endfunc + +func Test_closing_autocmd_window() + let lines =<< trim END + edit Xa.txt + tabnew Xb.txt + autocmd BufEnter Xa.txt unhide 1 + doautoall BufEnter + END + call v9.CheckScriptFailure(lines, 'E814:') + au! BufEnter + only! + bwipe Xa.txt + bwipe Xb.txt +endfunc + +func Test_bufwipeout_changes_window() + " This should not crash, but we don't have any expectations about what + " happens, changing window in BufWipeout has unpredictable results. + tabedit + let g:window_id = win_getid() + topleft new + setlocal bufhidden=wipe + autocmd BufWipeout call win_gotoid(g:window_id) + tabprevious + +tabclose + + unlet g:window_id + au! BufWipeout + %bwipe! +endfunc + +func Test_v_event_readonly() + autocmd CompleteChanged * let v:event.width = 0 + call assert_fails("normal! i\\", 'E46:') + au! CompleteChanged + + autocmd DirChangedPre * let v:event.directory = '' + call assert_fails('cd .', 'E46:') + au! DirChangedPre + + autocmd ModeChanged * let v:event.new_mode = '' + call assert_fails('normal! cc', 'E46:') + au! ModeChanged + + autocmd TextYankPost * let v:event.operator = '' + call assert_fails('normal! yy', 'E46:') + au! TextYankPost +endfunc + +" Test for ModeChanged pattern +func Test_mode_changes() + let g:index = 0 + let g:mode_seq = ['n', 'i', 'n', 'v', 'V', 'i', 'ix', 'i', 'ic', 'i', 'n', 'no', 'n', 'V', 'v', 's', 'n'] + func! TestMode() + call assert_equal(g:mode_seq[g:index], get(v:event, "old_mode")) + call assert_equal(g:mode_seq[g:index + 1], get(v:event, "new_mode")) + call assert_equal(mode(1), get(v:event, "new_mode")) + let g:index += 1 + endfunc + + au ModeChanged * :call TestMode() + let g:n_to_any = 0 + au ModeChanged n:* let g:n_to_any += 1 + call feedkeys("i\vVca\\\\ggdG", 'tnix') + + let g:V_to_v = 0 + au ModeChanged V:v let g:V_to_v += 1 + call feedkeys("Vv\\", 'tnix') + call assert_equal(len(filter(g:mode_seq[1:], {idx, val -> val == 'n'})), g:n_to_any) + call assert_equal(1, g:V_to_v) + call assert_equal(len(g:mode_seq) - 1, g:index) + + let g:n_to_i = 0 + au ModeChanged n:i let g:n_to_i += 1 + let g:n_to_niI = 0 + au ModeChanged i:niI let g:n_to_niI += 1 + let g:niI_to_i = 0 + au ModeChanged niI:i let g:niI_to_i += 1 + let g:nany_to_i = 0 + au ModeChanged n*:i let g:nany_to_i += 1 + let g:i_to_n = 0 + au ModeChanged i:n let g:i_to_n += 1 + let g:nori_to_any = 0 + au ModeChanged [ni]:* let g:nori_to_any += 1 + let g:i_to_any = 0 + au ModeChanged i:* let g:i_to_any += 1 + let g:index = 0 + let g:mode_seq = ['n', 'i', 'niI', 'i', 'n'] + call feedkeys("a\l\", 'tnix') + call assert_equal(len(g:mode_seq) - 1, g:index) + call assert_equal(1, g:n_to_i) + call assert_equal(1, g:n_to_niI) + call assert_equal(1, g:niI_to_i) + call assert_equal(2, g:nany_to_i) + call assert_equal(1, g:i_to_n) + call assert_equal(2, g:i_to_any) + call assert_equal(3, g:nori_to_any) + + if has('terminal') + let g:mode_seq += ['c', 'n', 't', 'nt', 'c', 'nt', 'n'] + call feedkeys(":term\\N:bd!\", 'tnix') + call assert_equal(len(g:mode_seq) - 1, g:index) + call assert_equal(1, g:n_to_i) + call assert_equal(1, g:n_to_niI) + call assert_equal(1, g:niI_to_i) + call assert_equal(2, g:nany_to_i) + call assert_equal(1, g:i_to_n) + call assert_equal(2, g:i_to_any) + call assert_equal(5, g:nori_to_any) + endif + + let g:n_to_c = 0 + au ModeChanged n:c let g:n_to_c += 1 + let g:c_to_n = 0 + au ModeChanged c:n let g:c_to_n += 1 + let g:mode_seq += ['c', 'n', 'c', 'n'] + call feedkeys("q:\\", 'tnix') + call assert_equal(len(g:mode_seq) - 1, g:index) + call assert_equal(2, g:n_to_c) + call assert_equal(2, g:c_to_n) + unlet g:n_to_c + unlet g:c_to_n + + let g:n_to_v = 0 + au ModeChanged n:v let g:n_to_v += 1 + let g:v_to_n = 0 + au ModeChanged v:n let g:v_to_n += 1 + let g:mode_seq += ['v', 'n'] + call feedkeys("v\", 'tnix') + call assert_equal(len(g:mode_seq) - 1, g:index) + call assert_equal(1, g:n_to_v) + call assert_equal(1, g:v_to_n) + unlet g:n_to_v + unlet g:v_to_n + + au! ModeChanged + delfunc TestMode + unlet! g:mode_seq + unlet! g:index + unlet! g:n_to_any + unlet! g:V_to_v + unlet! g:n_to_i + unlet! g:n_to_niI + unlet! g:niI_to_i + unlet! g:nany_to_i + unlet! g:i_to_n + unlet! g:nori_to_any + unlet! g:i_to_any +endfunc + +func Test_recursive_ModeChanged() + au! ModeChanged * norm 0u + sil! norm  + au! ModeChanged +endfunc + +func Test_ModeChanged_starts_visual() + " This was triggering ModeChanged before setting VIsual, causing a crash. + au! ModeChanged * norm 0u + sil! norm  + + au! ModeChanged +endfunc + +func Test_noname_autocmd() + augroup test_noname_autocmd_group + autocmd! + autocmd BufEnter * call add(s:li, ["BufEnter", expand("")]) + autocmd BufDelete * call add(s:li, ["BufDelete", expand("")]) + autocmd BufLeave * call add(s:li, ["BufLeave", expand("")]) + autocmd BufUnload * call add(s:li, ["BufUnload", expand("")]) + autocmd BufWipeout * call add(s:li, ["BufWipeout", expand("")]) + augroup END + + let s:li = [] + edit foo + call assert_equal([['BufUnload', ''], ['BufDelete', ''], ['BufWipeout', ''], ['BufEnter', 'foo']], s:li) + + au! test_noname_autocmd_group + augroup! test_noname_autocmd_group +endfunc + +" Test for the autocmd_get() function +func Test_autocmd_get() + augroup TestAutoCmdFns + au! + autocmd BufAdd *.vim echo "bufadd-vim" + autocmd BufAdd *.py echo "bufadd-py" + autocmd BufHidden *.vim echo "bufhidden" + augroup END + augroup TestAutoCmdFns2 + autocmd BufAdd *.vim echo "bufadd-vim-2" + autocmd BufRead *.a1b2c3 echo "bufadd-vim-2" + augroup END + + let l = autocmd_get() + call assert_true(l->len() > 0) + + " Test for getting all the autocmds in a group + let expected = [ + \ #{cmd: 'echo "bufadd-vim"', group: 'TestAutoCmdFns', + \ pattern: '*.vim', nested: v:false, once: v:false, + \ event: 'BufAdd'}, + \ #{cmd: 'echo "bufadd-py"', group: 'TestAutoCmdFns', + \ pattern: '*.py', nested: v:false, once: v:false, + \ event: 'BufAdd'}, + \ #{cmd: 'echo "bufhidden"', group: 'TestAutoCmdFns', + \ pattern: '*.vim', nested: v:false, + \ once: v:false, event: 'BufHidden'}] + call assert_equal(expected, autocmd_get(#{group: 'TestAutoCmdFns'})) + + " Test for getting autocmds for all the patterns in a group + call assert_equal(expected, autocmd_get(#{group: 'TestAutoCmdFns', + \ event: '*'})) + + " Test for getting autocmds for an event in a group + let expected = [ + \ #{cmd: 'echo "bufadd-vim"', group: 'TestAutoCmdFns', + \ pattern: '*.vim', nested: v:false, once: v:false, + \ event: 'BufAdd'}, + \ #{cmd: 'echo "bufadd-py"', group: 'TestAutoCmdFns', + \ pattern: '*.py', nested: v:false, once: v:false, + \ event: 'BufAdd'}] + call assert_equal(expected, autocmd_get(#{group: 'TestAutoCmdFns', + \ event: 'BufAdd'})) + + " Test for getting the autocmds for all the events in a group for particular + " pattern + call assert_equal([{'cmd': 'echo "bufadd-py"', 'group': 'TestAutoCmdFns', + \ 'pattern': '*.py', 'nested': v:false, 'once': v:false, + \ 'event': 'BufAdd'}], + \ autocmd_get(#{group: 'TestAutoCmdFns', event: '*', pattern: '*.py'})) + + " Test for getting the autocmds for an events in a group for particular + " pattern + let l = autocmd_get(#{group: 'TestAutoCmdFns', event: 'BufAdd', + \ pattern: '*.vim'}) + call assert_equal([ + \ #{cmd: 'echo "bufadd-vim"', group: 'TestAutoCmdFns', + \ pattern: '*.vim', nested: v:false, once: v:false, + \ event: 'BufAdd'}], l) + + " Test for getting the autocmds for a pattern in a group + let l = autocmd_get(#{group: 'TestAutoCmdFns', pattern: '*.vim'}) + call assert_equal([ + \ #{cmd: 'echo "bufadd-vim"', group: 'TestAutoCmdFns', + \ pattern: '*.vim', nested: v:false, once: v:false, + \ event: 'BufAdd'}, + \ #{cmd: 'echo "bufhidden"', group: 'TestAutoCmdFns', + \ pattern: '*.vim', nested: v:false, + \ once: v:false, event: 'BufHidden'}], l) + + " Test for getting the autocmds for a pattern in all the groups + let l = autocmd_get(#{pattern: '*.a1b2c3'}) + call assert_equal([{'cmd': 'echo "bufadd-vim-2"', 'group': 'TestAutoCmdFns2', + \ 'pattern': '*.a1b2c3', 'nested': v:false, 'once': v:false, + \ 'event': 'BufRead'}], l) + + " Test for getting autocmds for a pattern without any autocmds + call assert_equal([], autocmd_get(#{group: 'TestAutoCmdFns', + \ pattern: '*.abc'})) + call assert_equal([], autocmd_get(#{group: 'TestAutoCmdFns', + \ event: 'BufAdd', pattern: '*.abc'})) + call assert_equal([], autocmd_get(#{group: 'TestAutoCmdFns', + \ event: 'BufWipeout'})) + call assert_fails("call autocmd_get(#{group: 'abc', event: 'BufAdd'})", + \ 'E367:') + let cmd = "echo autocmd_get(#{group: 'TestAutoCmdFns', event: 'abc'})" + call assert_fails(cmd, 'E216:') + call assert_fails("call autocmd_get(#{group: 'abc'})", 'E367:') + call assert_fails("echo autocmd_get(#{event: 'abc'})", 'E216:') + + augroup TestAutoCmdFns + au! + augroup END + call assert_equal([], autocmd_get(#{group: 'TestAutoCmdFns'})) + + " Test for nested and once autocmds + augroup TestAutoCmdFns + au! + autocmd VimSuspend * ++nested echo "suspend" + autocmd VimResume * ++once echo "resume" + augroup END + + let expected = [ + \ {'cmd': 'echo "suspend"', 'group': 'TestAutoCmdFns', 'pattern': '*', + \ 'nested': v:true, 'once': v:false, 'event': 'VimSuspend'}, + \ {'cmd': 'echo "resume"', 'group': 'TestAutoCmdFns', 'pattern': '*', + \ 'nested': v:false, 'once': v:true, 'event': 'VimResume'}] + call assert_equal(expected, autocmd_get(#{group: 'TestAutoCmdFns'})) + + " Test for buffer-local autocmd + augroup TestAutoCmdFns + au! + autocmd TextYankPost echo "textyankpost" + augroup END + + let expected = [ + \ {'cmd': 'echo "textyankpost"', 'group': 'TestAutoCmdFns', + \ 'pattern': '', 'nested': v:false, + \ 'once': v:false, 'bufnr': bufnr(), 'event': 'TextYankPost'}] + call assert_equal(expected, autocmd_get(#{group: 'TestAutoCmdFns'})) + + augroup TestAutoCmdFns + au! + augroup END + augroup! TestAutoCmdFns + augroup TestAutoCmdFns2 + au! + augroup END + augroup! TestAutoCmdFns2 + + call assert_fails("echo autocmd_get(#{group: []})", 'E730:') + call assert_fails("echo autocmd_get(#{event: {}})", 'E731:') + call assert_fails("echo autocmd_get([])", 'E1206:') +endfunc + +" Test for the autocmd_add() function +func Test_autocmd_add() + " Define a single autocmd in a group + call autocmd_add([#{group: 'TestAcSet', event: 'BufAdd', pattern: '*.sh', + \ cmd: 'echo "bufadd"', once: v:true, nested: v:true}]) + call assert_equal([#{cmd: 'echo "bufadd"', group: 'TestAcSet', + \ pattern: '*.sh', nested: v:true, once: v:true, + \ event: 'BufAdd'}], autocmd_get(#{group: 'TestAcSet'})) + + " Define two autocmds in the same group + call autocmd_delete([#{group: 'TestAcSet'}]) + call autocmd_add([#{group: 'TestAcSet', event: 'BufAdd', pattern: '*.sh', + \ cmd: 'echo "bufadd"'}, + \ #{group: 'TestAcSet', event: 'BufEnter', pattern: '*.sh', + \ cmd: 'echo "bufenter"'}]) + call assert_equal([ + \ #{cmd: 'echo "bufadd"', group: 'TestAcSet', pattern: '*.sh', + \ nested: v:false, once: v:false, event: 'BufAdd'}, + \ #{cmd: 'echo "bufenter"', group: 'TestAcSet', pattern: '*.sh', + \ nested: v:false, once: v:false, event: 'BufEnter'}], + \ autocmd_get(#{group: 'TestAcSet'})) + + " Define a buffer-local autocmd + call autocmd_delete([#{group: 'TestAcSet'}]) + call autocmd_add([#{group: 'TestAcSet', event: 'CursorHold', + \ bufnr: bufnr(), cmd: 'echo "cursorhold"'}]) + call assert_equal([ + \ #{cmd: 'echo "cursorhold"', group: 'TestAcSet', + \ pattern: '', nested: v:false, + \ once: v:false, bufnr: bufnr(), event: 'CursorHold'}], + \ autocmd_get(#{group: 'TestAcSet'})) + + " Use an invalid buffer number + call autocmd_delete([#{group: 'TestAcSet'}]) + call autocmd_add([#{group: 'TestAcSet', event: 'BufEnter', + \ bufnr: -1, cmd: 'echo "bufenter"'}]) + let l = [#{group: 'TestAcSet', event: 'BufAdd', bufnr: 9999, + \ cmd: 'echo "bufadd"'}] + call assert_fails("echo autocmd_add(l)", 'E680:') + let l = [#{group: 'TestAcSet', event: 'BufAdd', bufnr: 9999, + \ pattern: '*.py', cmd: 'echo "bufadd"'}] + call assert_fails("echo autocmd_add(l)", 'E680:') + let l = [#{group: 'TestAcSet', event: 'BufAdd', bufnr: 9999, + \ pattern: ['*.py', '*.c'], cmd: 'echo "bufadd"'}] + call assert_fails("echo autocmd_add(l)", 'E680:') + let l = [#{group: 'TestAcSet', event: 'BufRead', bufnr: [], + \ cmd: 'echo "bufread"'}] + call assert_fails("echo autocmd_add(l)", 'E745:') + call assert_equal([], autocmd_get(#{group: 'TestAcSet'})) + + " Add two commands to the same group, event and pattern + call autocmd_delete([#{group: 'TestAcSet'}]) + call autocmd_add([#{group: 'TestAcSet', event: 'BufUnload', + \ pattern: 'abc', cmd: 'echo "cmd1"'}]) + call autocmd_add([#{group: 'TestAcSet', event: 'BufUnload', + \ pattern: 'abc', cmd: 'echo "cmd2"'}]) + call assert_equal([ + \ #{cmd: 'echo "cmd1"', group: 'TestAcSet', pattern: 'abc', + \ nested: v:false, once: v:false, event: 'BufUnload'}, + \ #{cmd: 'echo "cmd2"', group: 'TestAcSet', pattern: 'abc', + \ nested: v:false, once: v:false, event: 'BufUnload'}], + \ autocmd_get(#{group: 'TestAcSet'})) + + " When adding a new autocmd, if the autocmd 'group' is not specified, then + " the current autocmd group should be used. + call autocmd_delete([#{group: 'TestAcSet'}]) + augroup TestAcSet + call autocmd_add([#{event: 'BufHidden', pattern: 'abc', cmd: 'echo "abc"'}]) + augroup END + call assert_equal([ + \ #{cmd: 'echo "abc"', group: 'TestAcSet', pattern: 'abc', + \ nested: v:false, once: v:false, event: 'BufHidden'}], + \ autocmd_get(#{group: 'TestAcSet'})) + + " Test for replacing a cmd for an event in a group + call autocmd_delete([#{group: 'TestAcSet'}]) + call autocmd_add([#{replace: v:true, group: 'TestAcSet', event: 'BufEnter', + \ pattern: '*.py', cmd: 'echo "bufenter"'}]) + call autocmd_add([#{replace: v:true, group: 'TestAcSet', event: 'BufEnter', + \ pattern: '*.py', cmd: 'echo "bufenter"'}]) + call assert_equal([ + \ #{cmd: 'echo "bufenter"', group: 'TestAcSet', pattern: '*.py', + \ nested: v:false, once: v:false, event: 'BufEnter'}], + \ autocmd_get(#{group: 'TestAcSet'})) + + " Test for adding a command for an unsupported autocmd event + let l = [#{group: 'TestAcSet', event: 'abc', pattern: '*.sh', + \ cmd: 'echo "bufadd"'}] + call assert_fails('call autocmd_add(l)', 'E216:') + + " Test for using a list of events and patterns + call autocmd_delete([#{group: 'TestAcSet'}]) + let l = [#{group: 'TestAcSet', event: ['BufEnter', 'BufLeave'], + \ pattern: ['*.py', '*.sh'], cmd: 'echo "bufcmds"'}] + call autocmd_add(l) + call assert_equal([ + \ #{cmd: 'echo "bufcmds"', group: 'TestAcSet', pattern: '*.py', + \ nested: v:false, once: v:false, event: 'BufEnter'}, + \ #{cmd: 'echo "bufcmds"', group: 'TestAcSet', pattern: '*.sh', + \ nested: v:false, once: v:false, event: 'BufEnter'}, + \ #{cmd: 'echo "bufcmds"', group: 'TestAcSet', pattern: '*.py', + \ nested: v:false, once: v:false, event: 'BufLeave'}, + \ #{cmd: 'echo "bufcmds"', group: 'TestAcSet', pattern: '*.sh', + \ nested: v:false, once: v:false, event: 'BufLeave'}], + \ autocmd_get(#{group: 'TestAcSet'})) + + " Test for invalid values for 'event' item + call autocmd_delete([#{group: 'TestAcSet'}]) + let l = [#{group: 'TestAcSet', event: test_null_string(), + \ pattern: "*.py", cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E928:') + let l = [#{group: 'TestAcSet', event: test_null_list(), + \ pattern: "*.py", cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E714:') + let l = [#{group: 'TestAcSet', event: {}, + \ pattern: "*.py", cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E777:') + let l = [#{group: 'TestAcSet', event: [{}], + \ pattern: "*.py", cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E928:') + let l = [#{group: 'TestAcSet', event: [test_null_string()], + \ pattern: "*.py", cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E928:') + let l = [#{group: 'TestAcSet', event: 'BufEnter,BufLeave', + \ pattern: '*.py', cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E216:') + let l = [#{group: 'TestAcSet', event: [], + \ pattern: "*.py", cmd: 'echo "bufcmds"'}] + call autocmd_add(l) + let l = [#{group: 'TestAcSet', event: [""], + \ pattern: "*.py", cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E216:') + let l = [#{group: 'TestAcSet', event: "", + \ pattern: "*.py", cmd: 'echo "bufcmds"'}] + call autocmd_add(l) + call assert_equal([], autocmd_get(#{group: 'TestAcSet'})) + + " Test for invalid values for 'pattern' item + let l = [#{group: 'TestAcSet', event: "BufEnter", + \ pattern: test_null_string(), cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E928:') + let l = [#{group: 'TestAcSet', event: "BufEnter", + \ pattern: test_null_list(), cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E714:') + let l = [#{group: 'TestAcSet', event: "BufEnter", + \ pattern: {}, cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E777:') + let l = [#{group: 'TestAcSet', event: "BufEnter", + \ pattern: [{}], cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E928:') + let l = [#{group: 'TestAcSet', event: "BufEnter", + \ pattern: [test_null_string()], cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E928:') + let l = [#{group: 'TestAcSet', event: "BufEnter", + \ pattern: [], cmd: 'echo "bufcmds"'}] + call autocmd_add(l) + let l = [#{group: 'TestAcSet', event: "BufEnter", + \ pattern: [""], cmd: 'echo "bufcmds"'}] + call autocmd_add(l) + let l = [#{group: 'TestAcSet', event: "BufEnter", + \ pattern: "", cmd: 'echo "bufcmds"'}] + call autocmd_add(l) + call assert_equal([], autocmd_get(#{group: 'TestAcSet'})) + + let l = [#{group: 'TestAcSet', event: 'BufEnter,abc,BufLeave', + \ pattern: '*.py', cmd: 'echo "bufcmds"'}] + call assert_fails('call autocmd_add(l)', 'E216:') + + call assert_fails("call autocmd_add({})", 'E1211:') + call assert_equal(v:false, autocmd_add(test_null_list())) + call assert_true(autocmd_add([[]])) + call assert_true(autocmd_add([test_null_dict()])) + + augroup TestAcSet + au! + augroup END + + call autocmd_add([#{group: 'TestAcSet'}]) + call autocmd_add([#{group: 'TestAcSet', event: 'BufAdd'}]) + call autocmd_add([#{group: 'TestAcSet', pat: '*.sh'}]) + call autocmd_add([#{group: 'TestAcSet', cmd: 'echo "a"'}]) + call autocmd_add([#{group: 'TestAcSet', event: 'BufAdd', pat: '*.sh'}]) + call autocmd_add([#{group: 'TestAcSet', event: 'BufAdd', cmd: 'echo "a"'}]) + call autocmd_add([#{group: 'TestAcSet', pat: '*.sh', cmd: 'echo "a"'}]) + call assert_equal([], autocmd_get(#{group: 'TestAcSet'})) + + augroup! TestAcSet +endfunc + +" Test for deleting autocmd events and groups +func Test_autocmd_delete() + " Delete an event in an autocmd group + augroup TestAcSet + au! + au BufAdd *.sh echo "bufadd" + au BufEnter *.sh echo "bufenter" + augroup END + call autocmd_delete([#{group: 'TestAcSet', event: 'BufAdd'}]) + call assert_equal([#{cmd: 'echo "bufenter"', group: 'TestAcSet', + \ pattern: '*.sh', nested: v:false, once: v:false, + \ event: 'BufEnter'}], autocmd_get(#{group: 'TestAcSet'})) + + " Delete all the events in an autocmd group + augroup TestAcSet + au BufAdd *.sh echo "bufadd" + augroup END + call autocmd_delete([#{group: 'TestAcSet', event: '*'}]) + call assert_equal([], autocmd_get(#{group: 'TestAcSet'})) + + " Delete a non-existing autocmd group + call assert_fails("call autocmd_delete([#{group: 'abc'}])", 'E367:') + " Delete a non-existing autocmd event + let l = [#{group: 'TestAcSet', event: 'abc'}] + call assert_fails("call autocmd_delete(l)", 'E216:') + " Delete a non-existing autocmd pattern + let l = [#{group: 'TestAcSet', event: 'BufAdd', pat: 'abc'}] + call assert_true(autocmd_delete(l)) + " Delete an autocmd for a non-existing buffer + let l = [#{event: '*', bufnr: 9999, cmd: 'echo "x"'}] + call assert_fails('call autocmd_delete(l)', 'E680:') + + " Delete an autocmd group + augroup TestAcSet + au! + au BufAdd *.sh echo "bufadd" + au BufEnter *.sh echo "bufenter" + augroup END + call autocmd_delete([#{group: 'TestAcSet'}]) + call assert_fails("call autocmd_get(#{group: 'TestAcSet'})", 'E367:') + + call assert_true(autocmd_delete([[]])) + call assert_true(autocmd_delete([test_null_dict()])) +endfunc + +func Test_autocmd_split_dummy() + " Autocommand trying to split a window containing a dummy buffer. + auto BufReadPre * exe "sbuf " .. expand("") + " Avoid the "W11" prompt + au FileChangedShell * let v:fcs_choice = 'reload' + func Xautocmd_changelist() + cal writefile(['Xtestfile2:4:4'], 'Xerr') + edit Xerr + lex 'Xtestfile2:4:4' + endfunc + call Xautocmd_changelist() + " Should get E86, but it doesn't always happen (timing?) + silent! call Xautocmd_changelist() + + au! BufReadPre + au! FileChangedShell + delfunc Xautocmd_changelist + bwipe! Xerr + call delete('Xerr') +endfunc + +" This was crashing because there was only one window to execute autocommands +" in. +func Test_autocmd_nested_setbufvar() + CheckFeature python3 + + set hidden + edit Xaaa + edit Xbbb + call setline(1, 'bar') + enew + au BufWriteCmd Xbbb ++nested call setbufvar('Xaaa', '&ft', 'foo') | bw! Xaaa + au FileType foo call py3eval('vim.current.buffer.options["cindent"]') + wall + + au! BufWriteCmd + au! FileType foo + set nohidden + call delete('Xaaa') + call delete('Xbbb') + %bwipe! +endfunc + +func SetupVimTest_shm() + let g:bwe = [] + let g:brp = [] + set shortmess+=F + + let dirname='XVimTestSHM' + call mkdir(dirname, 'R') + call writefile(['test'], dirname .. '/1') + call writefile(['test'], dirname .. '/2') + call writefile(['test'], dirname .. '/3') + + augroup test + autocmd! + autocmd BufWinEnter * call add(g:bwe, $'BufWinEnter: {expand('')}') + autocmd BufReadPost * call add(g:brp, $'BufReadPost: {expand('')}') + augroup END + + call setqflist([ + \ {'filename': dirname .. '/1', 'lnum': 1, 'col': 1, 'text': 'test', 'vcol': 0}, + \ {'filename': dirname .. '/2', 'lnum': 1, 'col': 1, 'text': 'test', 'vcol': 0}, + \ {'filename': dirname .. '/3', 'lnum': 1, 'col': 1, 'text': 'test', 'vcol': 0} + \ ]) + cdo! substitute/test/TEST + + " clean up + noa enew! + set shortmess&vim + augroup test + autocmd! + augroup END + augroup! test +endfunc + +func Test_autocmd_shortmess() + CheckNotMSWindows + + call SetupVimTest_shm() + let output = execute(':mess')->split('\n') + + let info = copy(output)->filter({idx, val -> val =~# '\d of 3'} ) + let bytes = copy(output)->filter({idx, val -> val =~# 'bytes'} ) + + " We test the following here: + " BufReadPost should have been triggered 3 times, once per file + " BufWinEnter should have been triggered 3 times, once per file + " FileInfoMessage should have been shown 3 times, regardless of shm option + " "(x of 3)" message from :cnext has been shown 3 times + + call assert_equal(3, g:brp->len()) + call assert_equal(3, g:bwe->len()) + call assert_equal(3, info->len()) + call assert_equal(3, bytes->len()) + + delfunc SetupVimTest_shm +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_autoload.vim b/src/testdir/test_autoload.vim new file mode 100644 index 0000000..835b81e --- /dev/null +++ b/src/testdir/test_autoload.vim @@ -0,0 +1,30 @@ +" Tests for autoload + +set runtimepath=./sautest + +func Test_autoload_dict_func() + let g:loaded_foo_vim = 0 + let g:called_foo_bar_echo = 0 + call g:foo#bar.echo() + call assert_equal(1, g:loaded_foo_vim) + call assert_equal(1, g:called_foo_bar_echo) + + eval 'bar'->g:foo#addFoo()->assert_equal('barfoo') + + " empty name works in legacy script + call assert_equal('empty', foo#()) +endfunc + +func Test_source_autoload() + let g:loaded_sourced_vim = 0 + source sautest/autoload/sourced.vim + call assert_equal(1, g:loaded_sourced_vim) +endfunc + +func Test_autoload_vim9script() + call assert_equal('some', auto9#Getsome()) + call assert_equal(49, auto9#Add42(7)) +endfunc + + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_backspace_opt.vim b/src/testdir/test_backspace_opt.vim new file mode 100644 index 0000000..d70a6d0 --- /dev/null +++ b/src/testdir/test_backspace_opt.vim @@ -0,0 +1,141 @@ +" Tests for 'backspace' settings + +func Test_backspace_option() + set backspace= + call assert_equal('', &backspace) + set backspace=indent + call assert_equal('indent', &backspace) + set backspace=eol + call assert_equal('eol', &backspace) + set backspace=start + call assert_equal('start', &backspace) + set backspace=nostop + call assert_equal('nostop', &backspace) + " Add the value + set backspace= + set backspace=indent + call assert_equal('indent', &backspace) + set backspace+=eol + call assert_equal('indent,eol', &backspace) + set backspace+=start + call assert_equal('indent,eol,start', &backspace) + set backspace+=nostop + call assert_equal('indent,eol,start,nostop', &backspace) + " Delete the value + set backspace-=nostop + call assert_equal('indent,eol,start', &backspace) + set backspace-=indent + call assert_equal('eol,start', &backspace) + set backspace-=start + call assert_equal('eol', &backspace) + set backspace-=eol + call assert_equal('', &backspace) + " Check the error + call assert_fails('set backspace=ABC', 'E474:') + call assert_fails('set backspace+=def', 'E474:') + " NOTE: Vim doesn't check following error... + "call assert_fails('set backspace-=ghi', 'E474:') + + " Check backwards compatibility with version 5.4 and earlier + set backspace=0 + call assert_equal('0', &backspace) + set backspace=1 + call assert_equal('1', &backspace) + set backspace=2 + call assert_equal('2', &backspace) + set backspace=3 + call assert_equal('3', &backspace) + call assert_fails('set backspace=4', 'E474:') + call assert_fails('set backspace=10', 'E474:') + + " Cleared when 'compatible' is set + set compatible + call assert_equal('', &backspace) + set nocompatible viminfo+=nviminfo +endfunc + +" Test with backspace set to the non-compatible setting +func Test_backspace_ctrl_u() + new + call append(0, [ + \ "1 this shouldn't be deleted", + \ "2 this shouldn't be deleted", + \ "3 this shouldn't be deleted", + \ "4 this should be deleted", + \ "5 this shouldn't be deleted", + \ "6 this shouldn't be deleted", + \ "7 this shouldn't be deleted", + \ "8 this shouldn't be deleted (not touched yet)"]) + call cursor(2, 1) + + set compatible + set backspace=2 + + exe "normal Avim1\\\" + exe "normal Avim2\u\\\" + + set cpo-=< + inoremap + exe "normal Avim3\<*C-U>\\" + iunmap + exe "normal Avim4\\\\" + + " Test with backspace set to the compatible setting + set backspace= visualbell + exe "normal A vim5\A\\\\" + exe "normal A vim6\Azwei\u\\\" + + inoremap + exe "normal A vim7\<*C-U>\<*C-U>\\" + + call assert_equal([ + \ "1 this shouldn't be deleted", + \ "2 this shouldn't be deleted", + \ "3 this shouldn't be deleted", + \ "4 this should be deleted3", + \ "", + \ "6 this shouldn't be deleted vim5", + \ "7 this shouldn't be deleted vim6", + \ "8 this shouldn't be deleted (not touched yet) vim7", + \ ""], getline(1, '$')) + + " Reset values + set compatible&vim + set visualbell&vim + set backspace&vim + + " Test new nostop option + %d_ + let expected = "foo bar foobar" + call setline(1, expected) + call cursor(1, 8) + exe ":norm! ianotherone\" + call assert_equal(expected, getline(1)) + call cursor(1, 8) + exe ":norm! ianothertwo\" + call assert_equal(expected, getline(1)) + + let content = getline(1) + for value in ['indent,nostop', 'eol,nostop', 'indent,eol,nostop', 'indent,eol,start,nostop'] + exe ":set bs=".. value + %d _ + call setline(1, content) + let expected = " foobar" + call cursor(1, 8) + exe ":norm! ianotherone\" + call assert_equal(expected, getline(1), 'CTRL-U backspace value: '.. &bs) + let expected = "foo foobar" + call setline(1, content) + call cursor(1, 8) + exe ":norm! ianothertwo\" + call assert_equal(expected, getline(1), 'CTRL-W backspace value: '.. &bs) + endfor + + " Reset options + set compatible&vim + set visualbell&vim + set backspace&vim + close! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_backup.vim b/src/testdir/test_backup.vim new file mode 100644 index 0000000..68f2985 --- /dev/null +++ b/src/testdir/test_backup.vim @@ -0,0 +1,88 @@ +" Tests for the backup function + +source check.vim + +func Test_backup() + set backup backupdir=. backupskip= + new + call setline(1, ['line1', 'line2']) + :f Xbackup.txt + :w! Xbackup.txt + " backup file is only created after + " writing a second time (before overwriting) + :w! Xbackup.txt + let l = readfile('Xbackup.txt~') + call assert_equal(['line1', 'line2'], l) + bw! + set backup&vim backupdir&vim backupskip&vim + call delete('Xbackup.txt') + call delete('Xbackup.txt~') +endfunc + +func Test_backup_backupskip() + set backup backupdir=. backupskip=*.txt + new + call setline(1, ['line1', 'line2']) + :f Xbackup.txt + :w! Xbackup.txt + " backup file is only created after + " writing a second time (before overwriting) + :w! Xbackup.txt + call assert_false(filereadable('Xbackup.txt~')) + bw! + set backup&vim backupdir&vim backupskip&vim + call delete('Xbackup.txt') + call delete('Xbackup.txt~') +endfunc + +func Test_backup2() + set backup backupdir=.// backupskip= + new + call setline(1, ['line1', 'line2', 'line3']) + :f Xbackup.txt + :w! Xbackup.txt + " backup file is only created after + " writing a second time (before overwriting) + :w! Xbackup.txt + sp *Xbackup.txt~ + call assert_equal(['line1', 'line2', 'line3'], getline(1,'$')) + let f = expand('%') + call assert_match('%testdir%Xbackup.txt\~', f) + bw! + bw! + call delete('Xbackup.txt') + call delete(f) + set backup&vim backupdir&vim backupskip&vim +endfunc + +func Test_backup2_backupcopy() + set backup backupdir=.// backupcopy=yes backupskip= + new + call setline(1, ['line1', 'line2', 'line3']) + :f Xbackup.txt + :w! Xbackup.txt + " backup file is only created after + " writing a second time (before overwriting) + :w! Xbackup.txt + sp *Xbackup.txt~ + call assert_equal(['line1', 'line2', 'line3'], getline(1,'$')) + let f = expand('%') + call assert_match('%testdir%Xbackup.txt\~', f) + bw! + bw! + call delete('Xbackup.txt') + call delete(f) + set backup&vim backupdir&vim backupcopy&vim backupskip&vim +endfunc + +" Test for using a non-existing directory as a backup directory +func Test_non_existing_backupdir() + set backupdir=./non_existing_dir backupskip= + call writefile(['line1'], 'Xbackupdir', 'D') + new Xbackupdir + call assert_fails('write', 'E510:') + + set backupdir&vim backupskip&vim +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_balloon.vim b/src/testdir/test_balloon.vim new file mode 100644 index 0000000..5e84f9e --- /dev/null +++ b/src/testdir/test_balloon.vim @@ -0,0 +1,67 @@ +" Tests for 'balloonevalterm'. +" A few tests only work in the terminal. + +source check.vim +CheckNotGui +CheckFeature balloon_eval_term + +source screendump.vim +CheckScreendump + +let s:common_script =<< trim [CODE] + call setline(1, ["one one one", "two tXo two", "three three three"]) + set balloonevalterm balloonexpr=MyBalloonExpr()..s:trailing balloondelay=100 + let s:trailing = '<' " check that script context is set + func MyBalloonExpr() + return "line " .. v:beval_lnum .. " column " .. v:beval_col .. ":\n" .. v:beval_text + endfun + redraw +[CODE] + +func Test_balloon_eval_term() + " Use after to return from vgetc() without removing + " the balloon. + let xtra_lines =<< trim [CODE] + set updatetime=300 + au CursorHold * echo 'hold fired' + func Trigger() + call test_setmouse(2, 6) + call feedkeys("\\", "xt") + endfunc + [CODE] + call writefile(s:common_script + xtra_lines, 'XTest_beval', 'D') + + " Check that the balloon shows up after a mouse move + let buf = RunVimInTerminal('-S XTest_beval', {'rows': 10, 'cols': 50}) + call TermWait(buf, 50) + call term_sendkeys(buf, 'll') + call term_sendkeys(buf, ":call Trigger()\") + call VerifyScreenDump(buf, 'Test_balloon_eval_term_01', {}) + + " Make sure the balloon still shows after 'updatetime' passed and CursorHold + " was triggered. + call TermWait(buf, 150) + call VerifyScreenDump(buf, 'Test_balloon_eval_term_01a', {}) + + " clean up + call StopVimInTerminal(buf) +endfunc + +func Test_balloon_eval_term_visual() + " Use after to return from vgetc() without removing + " the balloon. + call writefile(s:common_script + [ + \ 'call test_setmouse(3, 6)', + \ 'call feedkeys("3Gevfr\\", "xt")', + \ ], 'XTest_beval_visual', 'D') + + " Check that the balloon shows up after a mouse move + let buf = RunVimInTerminal('-S XTest_beval_visual', {'rows': 10, 'cols': 50}) + call TermWait(buf, 50) + call VerifyScreenDump(buf, 'Test_balloon_eval_term_02', {}) + + " clean up + call StopVimInTerminal(buf) +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_balloon_gui.vim b/src/testdir/test_balloon_gui.vim new file mode 100644 index 0000000..d01114c --- /dev/null +++ b/src/testdir/test_balloon_gui.vim @@ -0,0 +1,21 @@ +" Tests for 'ballooneval' in the GUI. + +source check.vim +CheckGui +CheckFeature balloon_eval + +func Test_balloon_show_gui() + let msg = 'this this this this' + call balloon_show(msg) + call assert_equal(msg, balloon_gettext()) + sleep 10m + call balloon_show('') + + let msg = 'that that' + eval msg->balloon_show() + call assert_equal(msg, balloon_gettext()) + sleep 10m + call balloon_show('') +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_behave.vim b/src/testdir/test_behave.vim new file mode 100644 index 0000000..72411b4 --- /dev/null +++ b/src/testdir/test_behave.vim @@ -0,0 +1,31 @@ +" Test the :behave command + +func Test_behave() + behave mswin + call assert_equal('mouse,key', &selectmode) + call assert_equal('popup', &mousemodel) + call assert_equal('startsel,stopsel', &keymodel) + call assert_equal('exclusive', &selection) + + behave xterm + call assert_equal('', &selectmode) + call assert_equal('extend', &mousemodel) + call assert_equal('', &keymodel) + call assert_equal('inclusive', &selection) + + set selection& + set mousemodel& + set keymodel& + set selection& +endfunc + +func Test_behave_completion() + call feedkeys(":behave \\\"\", 'tx') + call assert_equal('"behave mswin xterm', @:) +endfunc + +func Test_behave_error() + call assert_fails('behave x', 'E475:') +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_bench_regexp.vim b/src/testdir/test_bench_regexp.vim new file mode 100644 index 0000000..eb9f5f8 --- /dev/null +++ b/src/testdir/test_bench_regexp.vim @@ -0,0 +1,24 @@ +" Test for benchmarking the RE engine + +source check.vim +CheckFeature reltime + +func Measure(file, pattern, arg) + for re in range(3) + let sstart = reltime() + let before = ['set re=' .. re] + let after = ['call search("' .. escape(a:pattern, '\\') .. '", "", "", 10000)'] + let after += ['quit!'] + let args = empty(a:arg) ? '' : a:arg .. ' ' .. a:file + call RunVim(before, after, args) + let s = 'file: ' .. a:file .. ', re: ' .. re .. + \ ', time: ' .. reltimestr(reltime(sstart)) + call writefile([s], 'benchmark.out', "a") + endfor +endfunc + +func Test_Regex_Benchmark() + call Measure('samples/re.freeze.txt', '\s\+\%#\@ b2 + END + call v9.CheckLegacyAndVim9Failure(lines, ['E978:', 'E1072:', 'E1072:']) + + let lines =<< trim END + VAR b1 = 0z0011 + VAR b2 = 0z1100 + VAR x = b1 < b2 + END + call v9.CheckLegacyAndVim9Failure(lines, ['E978:', 'E1072:', 'E1072:']) + + let lines =<< trim END + VAR b1 = 0z0011 + VAR b2 = 0z1100 + VAR x = b1 - b2 + END + call v9.CheckLegacyAndVim9Failure(lines, ['E974:', 'E1036:', 'E974:']) + + let lines =<< trim END + VAR b1 = 0z0011 + VAR b2 = 0z1100 + VAR x = b1 / b2 + END + call v9.CheckLegacyAndVim9Failure(lines, ['E974:', 'E1036:', 'E974:']) + + let lines =<< trim END + VAR b1 = 0z0011 + VAR b2 = 0z1100 + VAR x = b1 * b2 + END + call v9.CheckLegacyAndVim9Failure(lines, ['E974:', 'E1036:', 'E974:']) +endfunc + +func Test_blob_index_assign() + let lines =<< trim END + VAR b = 0z00 + LET b[1] = 0x11 + LET b[2] = 0x22 + LET b[0] = 0x33 + call assert_equal(0z331122, b) + END + call v9.CheckLegacyAndVim9Success(lines) + + let lines =<< trim END + VAR b = 0z00 + LET b[2] = 0x33 + END + call v9.CheckLegacyAndVim9Failure(lines, 'E979:') + + let lines =<< trim END + VAR b = 0z00 + LET b[-2] = 0x33 + END + call v9.CheckLegacyAndVim9Failure(lines, 'E979:') + + let lines =<< trim END + VAR b = 0z00010203 + LET b[0 : -1] = 0z33 + END + call v9.CheckLegacyAndVim9Failure(lines, 'E979:') + + let lines =<< trim END + VAR b = 0z00010203 + LET b[3 : 4] = 0z3344 + END + call v9.CheckLegacyAndVim9Failure(lines, 'E979:') +endfunc + +func Test_blob_for_loop() + let lines =<< trim END + VAR blob = 0z00010203 + VAR i = 0 + for byte in blob + call assert_equal(i, byte) + LET i += 1 + endfor + call assert_equal(4, i) + + LET blob = 0z00 + call remove(blob, 0) + call assert_equal(0, len(blob)) + for byte in blob + call assert_report('loop over empty blob') + endfor + + LET blob = 0z0001020304 + LET i = 0 + for byte in blob + call assert_equal(i, byte) + if i == 1 + call remove(blob, 0) + elseif i == 3 + call remove(blob, 3) + endif + LET i += 1 + endfor + call assert_equal(5, i) + END + call v9.CheckLegacyAndVim9Success(lines) +endfunc + +func Test_blob_concatenate() + let lines =<< trim END + VAR b = 0z0011 + LET b += 0z2233 + call assert_equal(0z00112233, b) + + LET b = 0zDEAD + 0zBEEF + call assert_equal(0zDEADBEEF, b) + END + call v9.CheckLegacyAndVim9Success(lines) + + let lines =<< trim END + VAR b = 0z0011 + LET b += "a" + END + call v9.CheckLegacyAndVim9Failure(lines, ['E734:', 'E1012:', 'E734:']) + + let lines =<< trim END + VAR b = 0z0011 + LET b += 88 + END + call v9.CheckLegacyAndVim9Failure(lines, ['E734:', 'E1012:', 'E734:']) +endfunc + +func Test_blob_add() + let lines =<< trim END + VAR b = 0z0011 + call add(b, 0x22) + call assert_equal(0z001122, b) + END + call v9.CheckLegacyAndVim9Success(lines) + + " Only works in legacy script + let b = 0z0011 + call add(b, '51') + call assert_equal(0z001133, b) + call assert_equal(1, add(test_null_blob(), 0x22)) + + let lines =<< trim END + VAR b = 0z0011 + call add(b, [9]) + END + call v9.CheckLegacyAndVim9Failure(lines, ['E745:', 'E1012:', 'E1210:']) + + let lines =<< trim END + VAR b = 0z0011 + call add("", 0x01) + END + call v9.CheckLegacyAndVim9Failure(lines, ['E897:', 'E1013:', 'E1226:']) + + let lines =<< trim END + add(test_null_blob(), 0x22) + END + call v9.CheckDefExecAndScriptFailure(lines, 'E1131:') + + let lines =<< trim END + let b = 0zDEADBEEF + lockvar b + call add(b, 0) + unlockvar b + END + call v9.CheckScriptFailure(lines, 'E741:') +endfunc + +func Test_blob_empty() + call assert_false(empty(0z001122)) + call assert_true(empty(0z)) + call assert_true(empty(test_null_blob())) +endfunc + +" Test removing items in blob +func Test_blob_func_remove() + let lines =<< trim END + #" Test removing 1 element + VAR b = 0zDEADBEEF + call assert_equal(0xDE, remove(b, 0)) + call assert_equal(0zADBEEF, b) + + LET b = 0zDEADBEEF + call assert_equal(0xEF, remove(b, -1)) + call assert_equal(0zDEADBE, b) + + LET b = 0zDEADBEEF + call assert_equal(0xAD, remove(b, 1)) + call assert_equal(0zDEBEEF, b) + + #" Test removing range of element(s) + LET b = 0zDEADBEEF + call assert_equal(0zBE, remove(b, 2, 2)) + call assert_equal(0zDEADEF, b) + + LET b = 0zDEADBEEF + call assert_equal(0zADBE, remove(b, 1, 2)) + call assert_equal(0zDEEF, b) + END + call v9.CheckLegacyAndVim9Success(lines) + + " Test invalid cases + let lines =<< trim END + VAR b = 0zDEADBEEF + call remove(b, 5) + END + call v9.CheckLegacyAndVim9Failure(lines, 'E979:') + + let lines =<< trim END + VAR b = 0zDEADBEEF + call remove(b, 1, 5) + END + call v9.CheckLegacyAndVim9Failure(lines, 'E979:') + + let lines =<< trim END + VAR b = 0zDEADBEEF + call remove(b, -10) + END + call v9.CheckLegacyAndVim9Failure(lines, 'E979:') + + let lines =<< trim END + VAR b = 0zDEADBEEF + call remove(b, 3, 2) + END + call v9.CheckLegacyAndVim9Failure(lines, 'E979:') + + let lines =<< trim END + VAR b = 0zDEADBEEF + call remove(test_null_blob(), 1, 2) + END + call v9.CheckLegacyAndVim9Failure(lines, 'E979:') + + let lines =<< trim END + let b = 0zDEADBEEF + lockvar b + call remove(b, 0) + unlockvar b + END + call v9.CheckScriptFailure(lines, 'E741:') + + " can only check at script level, not in a :def function + let lines =<< trim END + vim9script + var b = 0zDEADBEEF + lockvar b + remove(b, 0) + END + call v9.CheckScriptFailure(lines, 'E741:') + + call assert_fails('echo remove(0z1020, [])', 'E745:') + call assert_fails('echo remove(0z1020, 0, [])', 'E745:') +endfunc + +func Test_blob_read_write() + let lines =<< trim END + VAR b = 0zDEADBEEF + call writefile(b, 'Xblob') + VAR br = readfile('Xblob', 'B') + call assert_equal(b, br) + VAR br2 = readblob('Xblob') + call assert_equal(b, br2) + VAR br3 = readblob('Xblob', 1) + call assert_equal(b[1 :], br3) + VAR br4 = readblob('Xblob', 1, 2) + call assert_equal(b[1 : 2], br4) + VAR br5 = readblob('Xblob', -3) + call assert_equal(b[-3 :], br5) + VAR br6 = readblob('Xblob', -3, 2) + call assert_equal(b[-3 : -2], br6) + + #" reading past end of file, empty result + VAR br1e = readblob('Xblob', 10000) + call assert_equal(0z, br1e) + + #" reading too much, result is truncated + VAR blong = readblob('Xblob', -1000) + call assert_equal(b, blong) + LET blong = readblob('Xblob', -10, 8) + call assert_equal(b, blong) + LET blong = readblob('Xblob', 0, 10) + call assert_equal(b, blong) + + call delete('Xblob') + END + call v9.CheckLegacyAndVim9Success(lines) + + if filereadable('/dev/random') + let b = readblob('/dev/random', 0, 10) + call assert_equal(10, len(b)) + endif + + call assert_fails("call readblob('notexist')", 'E484:') + " TODO: How do we test for the E485 error? + + " This was crashing when calling readfile() with a directory. + call assert_fails("call readfile('.', 'B')", 'E17: "." is a directory') +endfunc + +" filter() item in blob +func Test_blob_filter() + let lines =<< trim END + call assert_equal(test_null_blob(), filter(test_null_blob(), '0')) + call assert_equal(0z, filter(0zDEADBEEF, '0')) + call assert_equal(0zADBEEF, filter(0zDEADBEEF, 'v:val != 0xDE')) + call assert_equal(0zDEADEF, filter(0zDEADBEEF, 'v:val != 0xBE')) + call assert_equal(0zDEADBE, filter(0zDEADBEEF, 'v:val != 0xEF')) + call assert_equal(0zDEADBEEF, filter(0zDEADBEEF, '1')) + call assert_equal(0z01030103, filter(0z010203010203, 'v:val != 0x02')) + call assert_equal(0zADEF, filter(0zDEADBEEF, 'v:key % 2')) + END + call v9.CheckLegacyAndVim9Success(lines) + call assert_fails('echo filter(0z10, "a10")', 'E121:') +endfunc + +" map() item in blob +func Test_blob_map() + let lines =<< trim END + call assert_equal(0zDFAEBFF0, map(0zDEADBEEF, 'v:val + 1')) + call assert_equal(0z00010203, map(0zDEADBEEF, 'v:key')) + call assert_equal(0zDEAEC0F2, map(0zDEADBEEF, 'v:key + v:val')) + END + call v9.CheckLegacyAndVim9Success(lines) + + let lines =<< trim END + call map(0z00, '[9]') + END + call v9.CheckLegacyAndVim9Failure(lines, 'E978:') + call assert_fails('echo map(0z10, "a10")', 'E121:') +endfunc + +func Test_blob_index() + let lines =<< trim END + call assert_equal(2, index(0zDEADBEEF, 0xBE)) + call assert_equal(-1, index(0zDEADBEEF, 0)) + call assert_equal(2, index(0z11111111, 0x11, 2)) + call assert_equal(3, 0z11110111->index(0x11, 2)) + call assert_equal(2, index(0z11111111, 0x11, -2)) + call assert_equal(3, index(0z11110111, 0x11, -2)) + call assert_equal(0, index(0z11110111, 0x11, -10)) + call assert_equal(-1, index(test_null_blob(), 1)) + END + call v9.CheckLegacyAndVim9Success(lines) +endfunc + +func Test_blob_insert() + let lines =<< trim END + VAR b = 0zDEADBEEF + call insert(b, 0x33) + call assert_equal(0z33DEADBEEF, b) + + LET b = 0zDEADBEEF + call insert(b, 0x33, 2) + call assert_equal(0zDEAD33BEEF, b) + END + call v9.CheckLegacyAndVim9Success(lines) + + " only works in legacy script + call assert_equal(0, insert(test_null_blob(), 0x33)) + + let lines =<< trim END + VAR b = 0zDEADBEEF + call insert(b, -1) + END + call v9.CheckLegacyAndVim9Failure(lines, 'E475:') + + let lines =<< trim END + VAR b = 0zDEADBEEF + call insert(b, 257) + END + call v9.CheckLegacyAndVim9Failure(lines, 'E475:') + + let lines =<< trim END + VAR b = 0zDEADBEEF + call insert(b, 0, [9]) + END + call v9.CheckLegacyAndVim9Failure(lines, ['E745:', 'E1013:', 'E1210:']) + + let lines =<< trim END + VAR b = 0zDEADBEEF + call insert(b, 0, -20) + END + call v9.CheckLegacyAndVim9Failure(lines, 'E475:') + + let lines =<< trim END + VAR b = 0zDEADBEEF + call insert(b, 0, 20) + END + call v9.CheckLegacyAndVim9Failure(lines, 'E475:') + + let lines =<< trim END + VAR b = 0zDEADBEEF + call insert(b, []) + END + call v9.CheckLegacyAndVim9Failure(lines, ['E745:', 'E1013:', 'E1210:']) + + let lines =<< trim END + insert(test_null_blob(), 0x33) + END + call v9.CheckDefExecAndScriptFailure(lines, 'E1131:') + + let lines =<< trim END + let b = 0zDEADBEEF + lockvar b + call insert(b, 3) + unlockvar b + END + call v9.CheckScriptFailure(lines, 'E741:') + + let lines =<< trim END + vim9script + var b = 0zDEADBEEF + lockvar b + insert(b, 3) + END + call v9.CheckScriptFailure(lines, 'E741:') +endfunc + +func Test_blob_reverse() + let lines =<< trim END + call assert_equal(0zEFBEADDE, reverse(0zDEADBEEF)) + call assert_equal(0zBEADDE, reverse(0zDEADBE)) + call assert_equal(0zADDE, reverse(0zDEAD)) + call assert_equal(0zDE, reverse(0zDE)) + call assert_equal(0z, reverse(test_null_blob())) + END + call v9.CheckLegacyAndVim9Success(lines) +endfunc + +func Test_blob_json_encode() + let lines =<< trim END + call assert_equal('[222,173,190,239]', json_encode(0zDEADBEEF)) + call assert_equal('[]', json_encode(0z)) + END + call v9.CheckLegacyAndVim9Success(lines) +endfunc + +func Test_blob_lock() + let lines =<< trim END + let b = 0z112233 + lockvar b + unlockvar b + let b = 0z44 + END + call v9.CheckScriptSuccess(lines) + + let lines =<< trim END + vim9script + var b = 0z112233 + lockvar b + unlockvar b + b = 0z44 + END + call v9.CheckScriptSuccess(lines) + + let lines =<< trim END + let b = 0z112233 + lockvar b + let b = 0z44 + END + call v9.CheckScriptFailure(lines, 'E741:') + + let lines =<< trim END + vim9script + var b = 0z112233 + lockvar b + b = 0z44 + END + call v9.CheckScriptFailure(lines, 'E741:') +endfunc + +func Test_blob_sort() + call v9.CheckLegacyAndVim9Failure(['call sort([1.0, 0z11], "f")'], 'E975:') + call v9.CheckLegacyAndVim9Failure(['call sort([11, 0z11], "N")'], 'E974:') +endfunc + +" Tests for the blob2list() function +func Test_blob2list() + call assert_fails('let v = blob2list(10)', 'E1238: Blob required for argument 1') + eval 0zFFFF->blob2list()->assert_equal([255, 255]) + let tests = [[0z0102, [1, 2]], + \ [0z00, [0]], + \ [0z, []], + \ [0z00000000, [0, 0, 0, 0]], + \ [0zAABB.CCDD, [170, 187, 204, 221]]] + for t in tests + call assert_equal(t[0]->blob2list(), t[1]) + endfor + exe 'let v = 0z' .. repeat('000102030405060708090A0B0C0D0E0F', 64) + call assert_equal(1024, blob2list(v)->len()) + call assert_equal([4, 8, 15], [v[100], v[1000], v[1023]]) + call assert_equal([], blob2list(test_null_blob())) +endfunc + +" Tests for the list2blob() function +func Test_list2blob() + call assert_fails('let b = list2blob(0z10)', 'E1211: List required for argument 1') + let tests = [[[1, 2], 0z0102], + \ [[0], 0z00], + \ [[], 0z], + \ [[0, 0, 0, 0], 0z00000000], + \ [[255, 255], 0zFFFF], + \ [[170, 187, 204, 221], 0zAABB.CCDD], + \ ] + for t in tests + call assert_equal(t[1], t[0]->list2blob()) + endfor + call assert_fails('let b = list2blob([1, []])', 'E745:') + call assert_fails('let b = list2blob([-1])', 'E1239:') + call assert_fails('let b = list2blob([256])', 'E1239:') + let b = range(16)->repeat(64)->list2blob() + call assert_equal(1024, b->len()) + call assert_equal([4, 8, 15], [b[100], b[1000], b[1023]]) + + call assert_equal(0z, list2blob(test_null_list())) + call assert_equal(0z00010203, list2blob(range(4))) +endfunc + +" The following used to cause an out-of-bounds memory access +func Test_blob2string() + let v = '0z' .. repeat('01010101.', 444) + let v ..= '01' + exe 'let b = ' .. v + call assert_equal(v, string(b)) +endfunc + +func Test_blob_repeat() + call assert_equal(0z, repeat(0z00, 0)) + call assert_equal(0z00, repeat(0z00, 1)) + call assert_equal(0z0000, repeat(0z00, 2)) + call assert_equal(0z00000000, repeat(0z0000, 2)) + + call assert_equal(0z, repeat(0z12, 0)) + call assert_equal(0z, repeat(0z1234, 0)) + call assert_equal(0z1234, repeat(0z1234, 1)) + call assert_equal(0z12341234, repeat(0z1234, 2)) +endfunc + +" Test for blob allocation failure +func Test_blob_alloc_failure() + " blob variable + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let v = 0z10', 'E342:') + + " blob slice + let v = 0z1020 + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = v[0:0]', 'E342:') + call assert_equal(0z1020, x) + + " blob remove() + let v = 0z10203040 + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = remove(v, 1, 2)', 'E342:') + call assert_equal(0, x) + + " list2blob() + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let a = list2blob([1, 2, 4])', 'E342:') + call assert_equal(0, a) + + " mapnew() + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = mapnew(0z1234, {_, v -> 1})', 'E342:') + call assert_equal(0, x) + + " copy() + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = copy(v)', 'E342:') + call assert_equal(0z, x) + + " readblob() + call test_alloc_fail(GetAllocId('blob_alloc'), 0, 0) + call assert_fails('let x = readblob("test_blob.vim")', 'E342:') + call assert_equal(0, x) +endfunc + +" Test for the indexof() function +func Test_indexof() + let b = 0zdeadbeef + call assert_equal(0, indexof(b, {i, v -> v == 0xde})) + call assert_equal(3, indexof(b, {i, v -> v == 0xef})) + call assert_equal(-1, indexof(b, {i, v -> v == 0x1})) + call assert_equal(1, indexof(b, "v:val == 0xad")) + call assert_equal(-1, indexof(b, "v:val == 0xff")) + call assert_equal(-1, indexof(b, {_, v -> "v == 0xad"})) + + call assert_equal(-1, indexof(0z, "v:val == 0x0")) + call assert_equal(-1, indexof(test_null_blob(), "v:val == 0xde")) + call assert_equal(-1, indexof(b, test_null_string())) + call assert_equal(-1, indexof(b, test_null_function())) + + let b = 0z01020102 + call assert_equal(1, indexof(b, "v:val == 0x02", #{startidx: 0})) + call assert_equal(2, indexof(b, "v:val == 0x01", #{startidx: -2})) + call assert_equal(-1, indexof(b, "v:val == 0x01", #{startidx: 5})) + call assert_equal(0, indexof(b, "v:val == 0x01", #{startidx: -5})) + call assert_equal(0, indexof(b, "v:val == 0x01", test_null_dict())) + + " failure cases + call assert_fails('let i = indexof(b, "val == 0xde")', 'E121:') + call assert_fails('let i = indexof(b, {})', 'E1256:') +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_blockedit.vim b/src/testdir/test_blockedit.vim new file mode 100644 index 0000000..71f687b --- /dev/null +++ b/src/testdir/test_blockedit.vim @@ -0,0 +1,134 @@ +" Test for block inserting + +func Test_blockinsert_indent() + new + filetype plugin indent on + setlocal sw=2 et ft=vim + call setline(1, ['let a=[', ' ''eins'',', ' ''zwei'',', ' ''drei'']']) + call cursor(2, 3) + exe "norm! \2jI\\ \" + call assert_equal(['let a=[', ' \ ''eins'',', ' \ ''zwei'',', ' \ ''drei'']'], + \ getline(1,'$')) + " reset to sane state + filetype off + bwipe! +endfunc + +func Test_blockinsert_autoindent() + new + let lines =<< trim END + vim9script + var d = { + a: () => 0, + b: () => 0, + c: () => 0, + } + END + call setline(1, lines) + filetype plugin indent on + setlocal sw=2 et ft=vim + setlocal indentkeys+=: + exe "norm! 3Gf)\2jA: asdf\" + let expected =<< trim END + vim9script + var d = { + a: (): asdf => 0, + b: (): asdf => 0, + c: (): asdf => 0, + } + END + call assert_equal(expected, getline(1, 6)) + + " insert on the next column should do exactly the same + :%dele + call setline(1, lines) + exe "norm! 3Gf)l\2jI: asdf\" + call assert_equal(expected, getline(1, 6)) + + :%dele + call setline(1, lines) + setlocal sw=8 noet + exe "norm! 3Gf)\2jA: asdf\" + let expected =<< trim END + vim9script + var d = { + a: (): asdf => 0, + b: (): asdf => 0, + c: (): asdf => 0, + } + END + call assert_equal(expected, getline(1, 6)) + + " insert on the next column should do exactly the same + :%dele + call setline(1, lines) + exe "norm! 3Gf)l\2jI: asdf\" + call assert_equal(expected, getline(1, 6)) + + filetype off + bwipe! +endfunc + +func Test_blockinsert_delete() + new + let _bs = &bs + set bs=2 + call setline(1, ['case Arg is ', ' when Name_Async,', ' when Name_Num_Gangs,', 'end if;']) + exe "norm! ggjVj\$o$A\\" + "call feedkeys("Vj\$o$A\\", 'ti') + call assert_equal(["case Arg is ", " when Name_Async", " when Name_Num_Gangs,", "end if;"], + \ getline(1,'$')) + " reset to sane state + let &bs = _bs + bwipe! +endfunc + +func Test_blockappend_eol_cursor() + new + " Test 1 Move 1 char left + call setline(1, ['aaa', 'bbb', 'ccc']) + exe "norm! gg$\2jA\x\" + call assert_equal(['aaxa', 'bbxb', 'ccxc'], getline(1, '$')) + " Test 2 Move 2 chars left + sil %d + call setline(1, ['aaa', 'bbb', 'ccc']) + exe "norm! gg$\2jA\\x\" + call assert_equal(['axaa', 'bxbb', 'cxcc'], getline(1, '$')) + " Test 3 Move 3 chars left (outside of the visual selection) + sil %d + call setline(1, ['aaa', 'bbb', 'ccc']) + exe "norm! ggl$\2jA\\\x\" + call assert_equal(['xaaa', 'bbb', 'ccc'], getline(1, '$')) + bw! +endfunc + +func Test_blockappend_eol_cursor2() + new + " Test 1 Move 1 char left + call setline(1, ['aaaaa', 'bbb', 'ccccc']) + exe "norm! gg\$2jA\x\" + call assert_equal(['aaaaxa', 'bbbx', 'ccccxc'], getline(1, '$')) + " Test 2 Move 2 chars left + sil %d + call setline(1, ['aaaaa', 'bbb', 'ccccc']) + exe "norm! gg\$2jA\\x\" + call assert_equal(['aaaxaa', 'bbbx', 'cccxcc'], getline(1, '$')) + " Test 3 Move 3 chars left (to the beginning of the visual selection) + sil %d + call setline(1, ['aaaaa', 'bbb', 'ccccc']) + exe "norm! gg\$2jA\\\x\" + call assert_equal(['aaxaaa', 'bbxb', 'ccxccc'], getline(1, '$')) + " Test 4 Move 3 chars left (outside of the visual selection) + sil %d + call setline(1, ['aaaaa', 'bbb', 'ccccc']) + exe "norm! ggl\$2jA\\\x\" + call assert_equal(['aaxaaa', 'bbxb', 'ccxccc'], getline(1, '$')) + " Test 5 Move 4 chars left (outside of the visual selection) + sil %d + call setline(1, ['aaaaa', 'bbb', 'ccccc']) + exe "norm! ggl\$2jA\\\\x\" + call assert_equal(['axaaaa', 'bxbb', 'cxcccc'], getline(1, '$')) + bw! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_breakindent.vim b/src/testdir/test_breakindent.vim new file mode 100644 index 0000000..27b1d98 --- /dev/null +++ b/src/testdir/test_breakindent.vim @@ -0,0 +1,1055 @@ +" Test for breakindent +" +" Note: if you get strange failures when adding new tests, it might be that +" while the test is run, the breakindent caching gets in its way. +" It helps to change the tabstop setting and force a redraw (e.g. see +" Test_breakindent08()) +source check.vim +CheckOption breakindent + +source view_util.vim +source screendump.vim + +func SetUp() + let s:input ="\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP" +endfunc + +func s:screen_lines(lnum, width) abort + return ScreenLines([a:lnum, a:lnum + 2], a:width) +endfunc + +func s:screen_lines2(lnums, lnume, width) abort + return ScreenLines([a:lnums, a:lnume], a:width) +endfunc + +func s:compare_lines(expect, actual) + call assert_equal(join(a:expect, "\n"), join(a:actual, "\n")) +endfunc + +func s:test_windows(...) + call NewWindow(10, 20) + setl ts=4 sw=4 sts=4 breakindent + put =s:input + exe get(a:000, 0, '') +endfunc + +func s:close_windows(...) + call CloseWindow() + exe get(a:000, 0, '') +endfunc + +func Test_breakindent01() + " simple breakindent test + call s:test_windows('setl briopt=min:0') + let lines = s:screen_lines(line('.'),8) + let expect = [ + \ " abcd", + \ " qrst", + \ " GHIJ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows() +endfunc + +func Test_breakindent01_vartabs() + " like 01 but with vartabs feature + CheckFeature vartabs + call s:test_windows('setl briopt=min:0 vts=4') + let lines = s:screen_lines(line('.'),8) + let expect = [ + \ " abcd", + \ " qrst", + \ " GHIJ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set vts&') +endfunc + +func Test_breakindent02() + " simple breakindent test with showbreak set + set sbr=>> + call s:test_windows('setl briopt=min:0 sbr=') + let lines = s:screen_lines(line('.'),8) + let expect = [ + \ " abcd", + \ " >>qr", + \ " >>EF", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr=') +endfunc + +func Test_breakindent02_vartabs() + CheckFeature vartabs + " simple breakindent test with showbreak set + call s:test_windows('setl briopt=min:0 sbr=>> vts=4') + let lines = s:screen_lines(line('.'), 8) + let expect = [ + \ " abcd", + \ " >>qr", + \ " >>EF", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr= vts&') +endfunc + +func Test_breakindent03() + " simple breakindent test with showbreak set and briopt including sbr + call s:test_windows('setl briopt=sbr,min:0 sbr=++') + let lines = s:screen_lines(line('.'), 8) + let expect = [ + \ " abcd", + \ "++ qrst", + \ "++ GHIJ", + \ ] + call s:compare_lines(expect, lines) + " clean up + call s:close_windows('set sbr=') +endfunc + +func Test_breakindent03_vartabs() + " simple breakindent test with showbreak set and briopt including sbr + CheckFeature vartabs + call s:test_windows('setl briopt=sbr,min:0 sbr=++ vts=4') + let lines = s:screen_lines(line('.'), 8) + let expect = [ + \ " abcd", + \ "++ qrst", + \ "++ GHIJ", + \ ] + call s:compare_lines(expect, lines) + " clean up + call s:close_windows('set sbr= vts&') +endfunc + +func Test_breakindent04() + " breakindent set with min width 18 + set sbr=<<< + call s:test_windows('setl sbr=NONE briopt=min:18') + let lines = s:screen_lines(line('.'), 8) + let expect = [ + \ " abcd", + \ " qrstuv", + \ " IJKLMN", + \ ] + call s:compare_lines(expect, lines) + " clean up + call s:close_windows('set sbr=') + set sbr= +endfunc + +func Test_breakindent04_vartabs() + " breakindent set with min width 18 + CheckFeature vartabs + call s:test_windows('setl sbr= briopt=min:18 vts=4') + let lines = s:screen_lines(line('.'), 8) + let expect = [ + \ " abcd", + \ " qrstuv", + \ " IJKLMN", + \ ] + call s:compare_lines(expect, lines) + " clean up + call s:close_windows('set sbr= vts&') +endfunc + +func Test_breakindent05() + " breakindent set and shift by 2 + call s:test_windows('setl briopt=shift:2,min:0') + let lines = s:screen_lines(line('.'),8) + let expect = [ + \ " abcd", + \ " qr", + \ " EF", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows() +endfunc + +func Test_breakindent05_vartabs() + " breakindent set and shift by 2 + CheckFeature vartabs + call s:test_windows('setl briopt=shift:2,min:0 vts=4') + let lines = s:screen_lines(line('.'),8) + let expect = [ + \ " abcd", + \ " qr", + \ " EF", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set vts&') +endfunc + +func Test_breakindent06() + " breakindent set and shift by -1 + call s:test_windows('setl briopt=shift:-1,min:0') + let lines = s:screen_lines(line('.'),8) + let expect = [ + \ " abcd", + \ " qrstu", + \ " HIJKL", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows() +endfunc + +func Test_breakindent06_vartabs() + " breakindent set and shift by -1 + CheckFeature vartabs + call s:test_windows('setl briopt=shift:-1,min:0 vts=4') + let lines = s:screen_lines(line('.'),8) + let expect = [ + \ " abcd", + \ " qrstu", + \ " HIJKL", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set vts&') +endfunc + +func Test_breakindent07() + " breakindent set and shift by 1, Number set sbr=? and briopt:sbr + call s:test_windows('setl briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 cpo+=n') + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ab", + \ "? m", + \ "? x", + \ ] + call s:compare_lines(expect, lines) + " clean up + call s:close_windows('set sbr= cpo-=n') +endfunc + +func Test_breakindent07_vartabs() + CheckFeature vartabs + " breakindent set and shift by 1, Number set sbr=? and briopt:sbr + call s:test_windows('setl briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 cpo+=n vts=4') + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ab", + \ "? m", + \ "? x", + \ ] + call s:compare_lines(expect, lines) + " clean up + call s:close_windows('set sbr= cpo-=n vts&') +endfunc + +func Test_breakindent07a() + " breakindent set and shift by 1, Number set sbr=? and briopt:sbr + call s:test_windows('setl briopt=shift:1,sbr,min:0 nu sbr=? nuw=4') + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ab", + \ " ? m", + \ " ? x", + \ ] + call s:compare_lines(expect, lines) + " clean up + call s:close_windows('set sbr=') +endfunc + +func Test_breakindent07a_vartabs() + CheckFeature vartabs + " breakindent set and shift by 1, Number set sbr=? and briopt:sbr + call s:test_windows('setl briopt=shift:1,sbr,min:0 nu sbr=? nuw=4 vts=4') + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ab", + \ " ? m", + \ " ? x", + \ ] + call s:compare_lines(expect, lines) + " clean up + call s:close_windows('set sbr= vts&') +endfunc + +func Test_breakindent08() + " breakindent set and shift by 1, Number and list set sbr=# and briopt:sbr + call s:test_windows('setl briopt=shift:1,sbr,min:0 nu nuw=4 sbr=# list cpo+=n ts=4') + " make sure, cache is invalidated! + set ts=8 + redraw! + set ts=4 + redraw! + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ^Iabcd", + \ "# opq", + \ "# BCD", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr= cpo-=n') +endfunc + +func Test_breakindent08_vartabs() + CheckFeature vartabs + " breakindent set and shift by 1, Number and list set sbr=# and briopt:sbr + call s:test_windows('setl briopt=shift:1,sbr,min:0 nu nuw=4 sbr=# list cpo+=n ts=4 vts=4') + " make sure, cache is invalidated! + set ts=8 + redraw! + set ts=4 + redraw! + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ^Iabcd", + \ "# opq", + \ "# BCD", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr= cpo-=n vts&') +endfunc + +func Test_breakindent08a() + " breakindent set and shift by 1, Number and list set sbr=# and briopt:sbr + call s:test_windows('setl briopt=shift:1,sbr,min:0 nu nuw=4 sbr=# list') + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ^Iabcd", + \ " # opq", + \ " # BCD", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr=') +endfunc + +func Test_breakindent08a_vartabs() + CheckFeature vartabs + " breakindent set and shift by 1, Number and list set sbr=# and briopt:sbr + call s:test_windows('setl briopt=shift:1,sbr,min:0 nu nuw=4 sbr=# list vts=4') + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ^Iabcd", + \ " # opq", + \ " # BCD", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr= vts&') +endfunc + +func Test_breakindent09() + " breakindent set and shift by 1, Number and list set sbr=# + call s:test_windows('setl briopt=shift:1,min:0 nu nuw=4 sbr=# list') + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ^Iabcd", + \ " #op", + \ " #AB", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr=') +endfunc + +func Test_breakindent09_vartabs() + CheckFeature vartabs + " breakindent set and shift by 1, Number and list set sbr=# + call s:test_windows('setl briopt=shift:1,min:0 nu nuw=4 sbr=# list vts=4') + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ^Iabcd", + \ " #op", + \ " #AB", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr= vts&') +endfunc + +func Test_breakindent10() + " breakindent set, Number set sbr=~ + call s:test_windows('setl cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0') + " make sure, cache is invalidated! + set ts=8 + redraw! + set ts=4 + redraw! + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ab", + \ "~ mn", + \ "~ yz", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr= cpo-=n') +endfunc + +func Test_breakindent10_vartabs() + CheckFeature vartabs + " breakindent set, Number set sbr=~ + call s:test_windows('setl cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0 vts=4') + " make sure, cache is invalidated! + set ts=8 + redraw! + set ts=4 + redraw! + let lines = s:screen_lines(line('.'),10) + let expect = [ + \ " 2 ab", + \ "~ mn", + \ "~ yz", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set sbr= cpo-=n vts&') +endfunc + +func Test_breakindent11() + " test strdisplaywidth() + call s:test_windows('setl cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4') + let text = getline(2) + let width = strlen(text[1:]) + indent(2) + strlen(&sbr) * 3 " text wraps 3 times + call assert_equal(width, strdisplaywidth(text)) + call s:close_windows('set sbr=') + call assert_equal(4, strdisplaywidth("\t", 4)) +endfunc + +func Test_breakindent11_vartabs() + CheckFeature vartabs + " test strdisplaywidth() + call s:test_windows('setl cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4 vts=4') + let text = getline(2) + let width = strlen(text[1:]) + 2->indent() + strlen(&sbr) * 3 " text wraps 3 times + call assert_equal(width, text->strdisplaywidth()) + call s:close_windows('set sbr= vts&') +endfunc + +func Test_breakindent12() + " test breakindent with long indent + let s:input = "\t\t\t\t\t{" + call s:test_windows('setl breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4 list listchars=tab:>-') + let lines = s:screen_lines(2,16) + let expect = [ + \ " 2 >--->--->--->", + \ " ---{ ", + \ "~ ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set nuw=4 listchars=') +endfunc + +func Test_breakindent12_vartabs() + CheckFeature vartabs + " test breakindent with long indent + let s:input = "\t\t\t\t\t{" + call s:test_windows('setl breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4 list listchars=tab:>- vts=4') + let lines = s:screen_lines(2,16) + let expect = [ + \ " 2 >--->--->--->", + \ " ---{ ", + \ "~ ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set nuw=4 listchars= vts&') +endfunc + +func Test_breakindent13() + let s:input = "" + call s:test_windows('setl breakindent briopt=min:10 ts=8') + vert resize 20 + call setline(1, [" a\tb\tc\td\te", " z y x w v"]) + 1 + norm! fbgj"ayl + 2 + norm! fygj"byl + call assert_equal('d', @a) + call assert_equal('w', @b) + call s:close_windows() +endfunc + +func Test_breakindent13_vartabs() + CheckFeature vartabs + let s:input = "" + call s:test_windows('setl breakindent briopt=min:10 ts=8 vts=8') + vert resize 20 + call setline(1, [" a\tb\tc\td\te", " z y x w v"]) + 1 + norm! fbgj"ayl + 2 + norm! fygj"byl + call assert_equal('d', @a) + call assert_equal('w', @b) + call s:close_windows('set vts&') +endfunc + +func Test_breakindent14() + let s:input = "" + call s:test_windows('setl breakindent briopt= ts=8') + vert resize 30 + norm! 3a1234567890 + norm! a abcde + exec "norm! 0\tex" + let lines = s:screen_lines(line('.'),8) + let expect = [ + \ "e ", + \ "~ ", + \ "~ ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows() +endfunc + +func Test_breakindent14_vartabs() + CheckFeature vartabs + let s:input = "" + call s:test_windows('setl breakindent briopt= ts=8 vts=8') + vert resize 30 + norm! 3a1234567890 + norm! a abcde + exec "norm! 0\tex" + let lines = s:screen_lines(line('.'),8) + let expect = [ + \ "e ", + \ "~ ", + \ "~ ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set vts&') +endfunc + +func Test_breakindent15() + let s:input = "" + call s:test_windows('setl breakindent briopt= ts=8 sw=8') + vert resize 30 + norm! 4a1234567890 + exe "normal! >>\3f0x" + let lines = s:screen_lines(line('.'),20) + let expect = [ + \ " 1234567890 ", + \ "~ ", + \ "~ ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows() +endfunc + +func Test_breakindent15_vartabs() + CheckFeature vartabs + let s:input = "" + call s:test_windows('setl breakindent briopt= ts=8 sw=8 vts=8') + vert resize 30 + norm! 4a1234567890 + exe "normal! >>\3f0x" + let lines = s:screen_lines(line('.'),20) + let expect = [ + \ " 1234567890 ", + \ "~ ", + \ "~ ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set vts&') +endfunc + +func Test_breakindent16() + " Check that overlong lines are indented correctly. + let s:input = "" + call s:test_windows('setl breakindent briopt=min:0 ts=4') + call setline(1, "\t".repeat("1234567890", 10)) + resize 6 + norm! 1gg$ + redraw! + let lines = s:screen_lines(1,10) + let expect = [ + \ "<<< 789012", + \ " 345678", + \ " 901234", + \ ] + call s:compare_lines(expect, lines) + let lines = s:screen_lines(4,10) + let expect = [ + \ " 567890", + \ " 123456", + \ " 7890 ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows() +endfunc + +func Test_breakindent16_vartabs() + CheckFeature vartabs + " Check that overlong lines are indented correctly. + let s:input = "" + call s:test_windows('setl breakindent briopt=min:0 ts=4 vts=4') + call setline(1, "\t".repeat("1234567890", 10)) + resize 6 + norm! 1gg$ + redraw! + let lines = s:screen_lines(1,10) + let expect = [ + \ "<<< 789012", + \ " 345678", + \ " 901234", + \ ] + call s:compare_lines(expect, lines) + let lines = s:screen_lines(4,10) + let expect = [ + \ " 567890", + \ " 123456", + \ " 7890 ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set vts&') +endfunc + +func Test_breakindent17_vartabs() + CheckFeature vartabs + let s:input = "" + call s:test_windows('setl breakindent list listchars=tab:<-> showbreak=+++') + call setline(1, "\t" . repeat('a', 63)) + vert resize 30 + norm! 1gg$ + redraw! + let lines = s:screen_lines(1, 30) + let expect = [ + \ "<-->aaaaaaaaaaaaaaaaaaaaaaaaaa", + \ " +++aaaaaaaaaaaaaaaaaaaaaaa", + \ " +++aaaaaaaaaaaaaa ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set breakindent& list& listchars& showbreak&') +endfunc + +func Test_breakindent18_vartabs() + CheckFeature vartabs + let s:input = "" + call s:test_windows('setl breakindent list listchars=tab:<->') + call setline(1, "\t" . repeat('a', 63)) + vert resize 30 + norm! 1gg$ + redraw! + let lines = s:screen_lines(1, 30) + let expect = [ + \ "<-->aaaaaaaaaaaaaaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaaaaaaaaaaaaaa", + \ " aaaaaaaaaaa ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set breakindent& list& listchars&') +endfunc + +func Test_breakindent19_sbr_nextpage() + let s:input = "" + call s:test_windows('setl breakindent briopt=shift:2,sbr,min:18 sbr=>') + call setline(1, repeat('a', 200)) + norm! 1gg + redraw! + let lines = s:screen_lines(1, 20) + let expect = [ + \ "aaaaaaaaaaaaaaaaaaaa", + \ "> aaaaaaaaaaaaaaaaaa", + \ "> aaaaaaaaaaaaaaaaaa", + \ ] + call s:compare_lines(expect, lines) + " Scroll down one screen line + setl scrolloff=5 + norm! 5gj + let lines = s:screen_lines(1, 20) + let expect = [ + \ "aaaaaaaaaaaaaaaaaaaa", + \ "> aaaaaaaaaaaaaaaaaa", + \ "> aaaaaaaaaaaaaaaaaa", + \ ] + call s:compare_lines(expect, lines) + redraw! + " moving the cursor doesn't change the text offset + norm! l + redraw! + let lines = s:screen_lines(1, 20) + call s:compare_lines(expect, lines) + + setl breakindent briopt=min:18 sbr=> + norm! 5gj + let lines = s:screen_lines(1, 20) + let expect = [ + \ ">aaaaaaaaaaaaaaaaaaa", + \ ">aaaaaaaaaaaaaaaaaaa", + \ ">aaaaaaaaaaaaaaaaaaa", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set breakindent& briopt& sbr&') +endfunc + +func Test_breakindent20_cpo_n_nextpage() + let s:input = "" + call s:test_windows('setl breakindent briopt=min:14 cpo+=n number') + call setline(1, repeat('abcdefghijklmnopqrst', 10)) + norm! 1gg + redraw! + let lines = s:screen_lines(1, 20) + let expect = [ + \ " 1 abcdefghijklmnop", + \ " qrstabcdefghijkl", + \ " mnopqrstabcdefgh", + \ ] + call s:compare_lines(expect, lines) + " Scroll down one screen line + setl scrolloff=5 + norm! 6gj + redraw! + let lines = s:screen_lines(1, 20) + let expect = [ + \ "<<< qrstabcdefghijkl", + \ " mnopqrstabcdefgh", + \ " ijklmnopqrstabcd", + \ ] + call s:compare_lines(expect, lines) + + setl briopt+=shift:2 + norm! 1gg + let lines = s:screen_lines(1, 20) + let expect = [ + \ " 1 abcdefghijklmnop", + \ " qrstabcdefghij", + \ " klmnopqrstabcd", + \ ] + call s:compare_lines(expect, lines) + " Scroll down one screen line + norm! 6gj + let lines = s:screen_lines(1, 20) + let expect = [ + \ "<<< qrstabcdefghij", + \ " klmnopqrstabcd", + \ " efghijklmnopqr", + \ ] + call s:compare_lines(expect, lines) + + call s:close_windows('set breakindent& briopt& cpo& number&') +endfunc + +func Test_breakindent20_list() + call s:test_windows('setl breakindent breakindentopt= linebreak') + " default: + call setline(1, [' 1. Congress shall make no law', + \ ' 2.) Congress shall make no law', + \ ' 3.] Congress shall make no law']) + norm! 1gg + redraw! + let lines = s:screen_lines2(1, 6, 20) + let expect = [ + \ " 1. Congress ", + \ "shall make no law ", + \ " 2.) Congress ", + \ "shall make no law ", + \ " 3.] Congress ", + \ "shall make no law ", + \ ] + call s:compare_lines(expect, lines) + " set minimum indent + setl briopt=min:5 + redraw! + let lines = s:screen_lines2(1, 6, 20) + let expect = [ + \ " 1. Congress ", + \ " shall make no law ", + \ " 2.) Congress ", + \ " shall make no law ", + \ " 3.] Congress ", + \ " shall make no law ", + \ ] + call s:compare_lines(expect, lines) + " set additional handing indent + setl briopt+=list:4 + redraw! + let expect = [ + \ " 1. Congress ", + \ " shall make no ", + \ " law ", + \ " 2.) Congress ", + \ " shall make no ", + \ " law ", + \ " 3.] Congress ", + \ " shall make no ", + \ " law ", + \ ] + let lines = s:screen_lines2(1, 9, 20) + call s:compare_lines(expect, lines) + + " reset linebreak option + " Note: it indents by one additional + " space, because of the leading space. + setl linebreak&vim list listchars=eol:$,space:_ + redraw! + let expect = [ + \ "__1.__Congress_shall", + \ " _make_no_law$ ", + \ "__2.)_Congress_shall", + \ " _make_no_law$ ", + \ "__3.]_Congress_shall", + \ " _make_no_law$ ", + \ ] + let lines = s:screen_lines2(1, 6, 20) + call s:compare_lines(expect, lines) + + " check formatlistpat indent + setl briopt=min:5,list:-1 + setl linebreak list&vim listchars&vim + let &l:flp = '^\s*\d\+\.\?[\]:)}\t ]\s*' + redraw! + let expect = [ + \ " 1. Congress ", + \ " shall make no ", + \ " law ", + \ " 2.) Congress ", + \ " shall make no ", + \ " law ", + \ " 3.] Congress ", + \ " shall make no ", + \ " law ", + \ ] + let lines = s:screen_lines2(1, 9, 20) + call s:compare_lines(expect, lines) + " check formatlistpat indent with different list levels + let &l:flp = '^\s*\*\+\s\+' + %delete _ + call setline(1, ['* Congress shall make no law', + \ '*** Congress shall make no law', + \ '**** Congress shall make no law']) + norm! 1gg + redraw! + let expect = [ + \ "* Congress shall ", + \ " make no law ", + \ "*** Congress shall ", + \ " make no law ", + \ "**** Congress shall ", + \ " make no law ", + \ ] + let lines = s:screen_lines2(1, 6, 20) + call s:compare_lines(expect, lines) + + " check formatlistpat indent with different list level + " showbreak and sbr + setl briopt=min:5,sbr,list:-1 + setl showbreak=> + redraw! + let expect = [ + \ "* Congress shall ", + \ "> make no law ", + \ "*** Congress shall ", + \ "> make no law ", + \ "**** Congress shall ", + \ "> make no law ", + \ ] + let lines = s:screen_lines2(1, 6, 20) + call s:compare_lines(expect, lines) + + " check formatlistpat indent with different list level + " showbreak sbr and shift + setl briopt=min:5,sbr,list:-1,shift:2 + setl showbreak=> + redraw! + let expect = [ + \ "* Congress shall ", + \ "> make no law ", + \ "*** Congress shall ", + \ "> make no law ", + \ "**** Congress shall ", + \ "> make no law ", + \ ] + let lines = s:screen_lines2(1, 6, 20) + call s:compare_lines(expect, lines) + + " check breakindent works if breakindentopt=list:-1 + " for a non list content + %delete _ + call setline(1, [' Congress shall make no law', + \ ' Congress shall make no law', + \ ' Congress shall make no law']) + norm! 1gg + setl briopt=min:5,list:-1 + setl showbreak= + redraw! + let expect = [ + \ " Congress shall ", + \ " make no law ", + \ " Congress shall ", + \ " make no law ", + \ " Congress shall ", + \ " make no law ", + \ ] + let lines = s:screen_lines2(1, 6, 20) + call s:compare_lines(expect, lines) + + call s:close_windows('set breakindent& briopt& linebreak& list& listchars& showbreak&') +endfunc + +" The following used to crash Vim. This is fixed by 8.2.3391. +" This is a regression introduced by 8.2.2903. +func Test_window_resize_with_linebreak() + new + 53vnew + setl linebreak + setl showbreak=>> + setl breakindent + setl breakindentopt=shift:4 + call setline(1, "\naaaaaaaaa\n\na\naaaaa\n¯aaaaaaaaaa\naaaaaaaaaaaa\naaa\n\"a:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - aaaaaaaa\"\naaaaaaaa\n\"a") + redraw! + call assert_equal([" >>aa^@\"a: "], ScreenLines(2, 14)) + vertical resize 52 + redraw! + call assert_equal([" >>aaa^@\"a:"], ScreenLines(2, 14)) + set linebreak& showbreak& breakindent& breakindentopt& + %bw! +endfunc + +func Test_cursor_position_with_showbreak() + CheckScreendump + + let lines =<< trim END + vim9script + &signcolumn = 'yes' + &showbreak = '+ ' + var leftcol: number = win_getid()->getwininfo()->get(0, {})->get('textoff') + repeat('x', &columns - leftcol - 1)->setline(1) + 'second line'->setline(2) + END + call writefile(lines, 'XscriptShowbreak', 'D') + let buf = RunVimInTerminal('-S XscriptShowbreak', #{rows: 6}) + + call term_sendkeys(buf, "AX") + call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak', {}) + + call StopVimInTerminal(buf) +endfunc + +func Test_no_spurious_match() + let s:input = printf('- y %s y %s', repeat('x', 50), repeat('x', 50)) + call s:test_windows('setl breakindent breakindentopt=list:-1 formatlistpat=^- hls') + let @/ = '\%>3v[y]' + redraw! + call searchcount().total->assert_equal(1) + + " cleanup + set hls&vim + bwipeout! +endfunc + +func Test_no_extra_indent() + call s:test_windows('setl breakindent breakindentopt=list:-1,min:10') + %d + let &l:formatlistpat='^\s*\d\+\.\s\+' + let text = 'word ' + let len = text->strcharlen() + let line1 = text->repeat((winwidth(0) / len) * 2) + let line2 = repeat(' ', 2) .. '1. ' .. line1 + call setline(1, [line2]) + redraw! + " 1) matches formatlist pattern, so indent + let expect = [ + \ " 1. word word word ", + \ " word word word ", + \ " word word ", + \ "~ ", + \ ] + let lines = s:screen_lines2(1, 4, 20) + call s:compare_lines(expect, lines) + " 2) change formatlist pattern + " -> indent adjusted + let &l:formatlistpat='^\s*\d\+\.' + let expect = [ + \ " 1. word word word ", + \ " word word word ", + \ " word word ", + \ "~ ", + \ ] + let lines = s:screen_lines2(1, 4, 20) + " 3) no local formatlist pattern, + " so use global one -> indent + let g_flp = &g:flp + let &g:formatlistpat='^\s*\d\+\.\s\+' + let &l:formatlistpat='' + let expect = [ + \ " 1. word word word ", + \ " word word word ", + \ " word word ", + \ "~ ", + \ ] + let lines = s:screen_lines2(1, 4, 20) + call s:compare_lines(expect, lines) + let &g:flp = g_flp + let &l:formatlistpat='^\s*\d\+\.' + " 4) add something in front, no additional indent + norm! gg0 + exe ":norm! 5iword \" + redraw! + let expect = [ + \ "word word word word ", + \ "word 1. word word ", + \ "word word word word ", + \ "word word ", + \ "~ ", + \ ] + let lines = s:screen_lines2(1, 5, 20) + call s:compare_lines(expect, lines) + bwipeout! +endfunc + +func Test_breakindent_column() + call s:test_windows('setl breakindent breakindentopt=column:10') + redraw! + " 1) default: does not indent, too wide :( + let expect = [ + \ " ", + \ " abcdefghijklmnop", + \ "qrstuvwxyzABCDEFGHIJ", + \ "KLMNOP " + \ ] + let lines = s:screen_lines2(1, 4, 20) + call s:compare_lines(expect, lines) + " 2) lower min value, so that breakindent works + setl breakindentopt+=min:5 + redraw! + let expect = [ + \ " ", + \ " abcdefghijklmnop", + \ " qrstuvwxyz", + \ " ABCDEFGHIJ", + \ " KLMNOP " + \ ] + let lines = s:screen_lines2(1, 5, 20) + " 3) set shift option -> no influence + setl breakindentopt+=shift:5 + redraw! + let expect = [ + \ " ", + \ " abcdefghijklmnop", + \ " qrstuvwxyz", + \ " ABCDEFGHIJ", + \ " KLMNOP " + \ ] + let lines = s:screen_lines2(1, 5, 20) + call s:compare_lines(expect, lines) + " 4) add showbreak value + setl showbreak=++ + redraw! + let expect = [ + \ " ", + \ " abcdefghijklmnop", + \ " ++qrstuvwx", + \ " ++yzABCDEF", + \ " ++GHIJKLMN", + \ " ++OP " + \ ] + let lines = s:screen_lines2(1, 6, 20) + call s:compare_lines(expect, lines) + bwipeout! +endfunc + +func Test_linebreak_list() + " This was setting wlv.c_extra to NUL while wlv.p_extra is NULL + filetype plugin on + syntax enable + edit! $VIMRUNTIME/doc/index.txt + /v_P + + setlocal list + setlocal listchars=tab:>- + setlocal linebreak + setlocal nowrap + setlocal filetype=help + redraw! + + bwipe! +endfunc + + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_buffer.vim b/src/testdir/test_buffer.vim new file mode 100644 index 0000000..bc29c21 --- /dev/null +++ b/src/testdir/test_buffer.vim @@ -0,0 +1,517 @@ +" Tests for Vim buffer + +source check.vim + +" Test for the :bunload command with an offset +func Test_bunload_with_offset() + %bwipe! + call writefile(['B1'], 'Xb1', 'D') + call writefile(['B2'], 'Xb2', 'D') + call writefile(['B3'], 'Xb3', 'D') + call writefile(['B4'], 'Xb4', 'D') + + " Load four buffers. Unload the second and third buffers and then + " execute .+3bunload to unload the last buffer. + edit Xb1 + new Xb2 + new Xb3 + new Xb4 + + bunload Xb2 + bunload Xb3 + exe bufwinnr('Xb1') . 'wincmd w' + .+3bunload + call assert_equal(0, getbufinfo('Xb4')[0].loaded) + call assert_equal('Xb1', + \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t')) + + " Load four buffers. Unload the third and fourth buffers. Execute .+3bunload + " and check whether the second buffer is unloaded. + ball + bunload Xb3 + bunload Xb4 + exe bufwinnr('Xb1') . 'wincmd w' + .+3bunload + call assert_equal(0, getbufinfo('Xb2')[0].loaded) + call assert_equal('Xb1', + \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t')) + + " Load four buffers. Unload the second and third buffers and from the last + " buffer execute .-3bunload to unload the first buffer. + ball + bunload Xb2 + bunload Xb3 + exe bufwinnr('Xb4') . 'wincmd w' + .-3bunload + call assert_equal(0, getbufinfo('Xb1')[0].loaded) + call assert_equal('Xb4', + \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t')) + + " Load four buffers. Unload the first and second buffers. Execute .-3bunload + " from the last buffer and check whether the third buffer is unloaded. + ball + bunload Xb1 + bunload Xb2 + exe bufwinnr('Xb4') . 'wincmd w' + .-3bunload + call assert_equal(0, getbufinfo('Xb3')[0].loaded) + call assert_equal('Xb4', + \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t')) + + %bwipe! + + call assert_fails('1,4bunload', 'E16:') + call assert_fails(',100bunload', 'E16:') + + call assert_fails('$bunload', 'E90:') +endfunc + +" Test for :buffer, :bnext, :bprevious, :brewind, :blast and :bmodified +" commands +func Test_buflist_browse() + %bwipe! + call assert_fails('buffer 1000', 'E86:') + + call writefile(['foo1', 'foo2', 'foo3', 'foo4'], 'Xbrowse1', 'D') + call writefile(['bar1', 'bar2', 'bar3', 'bar4'], 'Xbrowse2', 'D') + call writefile(['baz1', 'baz2', 'baz3', 'baz4'], 'Xbrowse3', 'D') + edit Xbrowse1 + let b1 = bufnr() + edit Xbrowse2 + let b2 = bufnr() + edit +/baz4 Xbrowse3 + let b3 = bufnr() + + call assert_fails('buffer ' .. b1 .. ' abc', 'E488:') + call assert_equal(b3, bufnr()) + call assert_equal(4, line('.')) + exe 'buffer +/bar2 ' .. b2 + call assert_equal(b2, bufnr()) + call assert_equal(2, line('.')) + exe 'buffer +/bar1' + call assert_equal(b2, bufnr()) + call assert_equal(1, line('.')) + + brewind + + call assert_equal(b1, bufnr()) + call assert_equal(4, line('.')) + + blast +/baz2 + call assert_equal(b3, bufnr()) + call assert_equal(2, line('.')) + + bprevious +/bar4 + call assert_equal(b2, bufnr()) + call assert_equal(4, line('.')) + + bnext +/baz3 + call assert_equal(b3, bufnr()) + call assert_equal(3, line('.')) + + call assert_fails('bmodified', 'E84:') + call setbufvar(b2, '&modified', 1) + exe 'bmodified +/bar3' + call assert_equal(b2, bufnr()) + call assert_equal(3, line('.')) + + " With no listed buffers in the list, :bnext and :bprev should fail + %bwipe! + set nobuflisted + call assert_fails('bnext', 'E85:') + call assert_fails('bprev', 'E85:') + set buflisted + + call assert_fails('sandbox bnext', 'E48:') + + %bwipe! +endfunc + +" Test for :bdelete +func Test_bdelete_cmd() + %bwipe! + call assert_fails('bdelete 5', 'E516:') + call assert_fails('1,1bdelete 1 2', 'E488:') + call assert_fails('bdelete \)', 'E55:') + + " Deleting a unlisted and unloaded buffer + edit Xbdelfile1 + let bnr = bufnr() + set nobuflisted + enew + call assert_fails('bdelete ' .. bnr, 'E516:') + + " Deleting more than one buffer + new Xbuf1 + new Xbuf2 + exe 'bdel ' .. bufnr('Xbuf2') .. ' ' .. bufnr('Xbuf1') + call assert_equal(1, winnr('$')) + call assert_equal(0, getbufinfo('Xbuf1')[0].loaded) + call assert_equal(0, getbufinfo('Xbuf2')[0].loaded) + + " Deleting more than one buffer and an invalid buffer + new Xbuf1 + new Xbuf2 + let cmd = "exe 'bdel ' .. bufnr('Xbuf2') .. ' xxx ' .. bufnr('Xbuf1')" + call assert_fails(cmd, 'E94:') + call assert_equal(2, winnr('$')) + call assert_equal(1, getbufinfo('Xbuf1')[0].loaded) + call assert_equal(0, getbufinfo('Xbuf2')[0].loaded) + + %bwipe! +endfunc + +func Test_buffer_error() + new foo1 + new foo2 + + call assert_fails('buffer foo', 'E93:') + call assert_fails('buffer bar', 'E94:') + call assert_fails('buffer 0', 'E939:') + + %bwipe +endfunc + +" Test for the status messages displayed when unloading, deleting or wiping +" out buffers +func Test_buffer_statusmsg() + CheckEnglish + set report=1 + new Xbuf1 + new Xbuf2 + let bnr = bufnr() + exe "normal 2\" + call assert_match('buf ' .. bnr .. ':', v:statusmsg) + bunload Xbuf1 Xbuf2 + call assert_equal('2 buffers unloaded', v:statusmsg) + bdel Xbuf1 Xbuf2 + call assert_equal('2 buffers deleted', v:statusmsg) + bwipe Xbuf1 Xbuf2 + call assert_equal('2 buffers wiped out', v:statusmsg) + set report& +endfunc + +" Test for quitting the 'swapfile exists' dialog with the split buffer +" command. +func Test_buffer_sbuf_cleanup() + call writefile([], 'XsplitCleanup', 'D') + " first open the file in a buffer + new XsplitCleanup + let bnr = bufnr() + close + " create the swap file + call writefile([], '.XsplitCleanup.swp', 'D') + " Remove the catch-all that runtest.vim adds + au! SwapExists + augroup BufTest + au! + autocmd SwapExists XsplitCleanup let v:swapchoice='q' + augroup END + exe 'sbuf ' . bnr + call assert_equal(1, winnr('$')) + call assert_equal(0, getbufinfo('XsplitCleanup')[0].loaded) + + " test for :sball + sball + call assert_equal(1, winnr('$')) + call assert_equal(0, getbufinfo('XsplitCleanup')[0].loaded) + + %bw! + set shortmess+=F + let v:statusmsg = '' + edit XsplitCleanup + call assert_equal('', v:statusmsg) + call assert_equal(1, winnr('$')) + call assert_equal(0, getbufinfo('XsplitCleanup')[0].loaded) + set shortmess& + + augroup BufTest + au! + augroup END + augroup! BufTest +endfunc + +" Test for deleting a modified buffer with :confirm +func Test_bdel_with_confirm() + CheckUnix + CheckNotGui + CheckFeature dialog_con + new + call setline(1, 'test') + call assert_fails('bdel', 'E89:') + call feedkeys('c', 'L') + confirm bdel + call assert_equal(2, winnr('$')) + call assert_equal(1, &modified) + call feedkeys('n', 'L') + confirm bdel + call assert_equal(1, winnr('$')) +endfunc + +" Test for editing another buffer from a modified buffer with :confirm +func Test_goto_buf_with_confirm() + CheckUnix + CheckNotGui + CheckFeature dialog_con + new XgotoConf + enew + call setline(1, 'test') + call assert_fails('b XgotoConf', 'E37:') + call feedkeys('c', 'L') + call assert_fails('confirm b XgotoConf', 'E37:') + call assert_equal(1, &modified) + call assert_equal('', @%) + call feedkeys('y', 'L') + call assert_fails('confirm b XgotoConf', ['', 'E37:']) + call assert_equal(1, &modified) + call assert_equal('', @%) + call feedkeys('n', 'L') + confirm b XgotoConf + call assert_equal('XgotoConf', @%) + close! +endfunc + +" Test for splitting buffer with 'switchbuf' +func Test_buffer_switchbuf() + new Xswitchbuf + wincmd w + set switchbuf=useopen + sbuf Xswitchbuf + call assert_equal(1, winnr()) + call assert_equal(2, winnr('$')) + set switchbuf=usetab + tabnew + sbuf Xswitchbuf + call assert_equal(1, tabpagenr()) + call assert_equal(2, tabpagenr('$')) + set switchbuf& + %bw +endfunc + +" Test for BufAdd autocommand wiping out the buffer +func Test_bufadd_autocmd_bwipe() + %bw! + augroup BufAdd_Wipe + au! + autocmd BufAdd Xbwipe %bw! + augroup END + edit Xbwipe + call assert_equal('', @%) + call assert_equal(0, bufexists('Xbwipe')) + augroup BufAdd_Wipe + au! + augroup END + augroup! BufAdd_Wipe +endfunc + +" Test for trying to load a buffer with text locked +" e in the command line is used to lock the text +func Test_load_buf_with_text_locked() + new Xlockfile1 + edit Xlockfile2 + let cmd = ":\eexecute(\"normal \\")\\" + call assert_fails("call feedkeys(cmd, 'xt')", 'E565:') + %bw! +endfunc + +" Test for using CTRL-^ to edit the alternative file keeping the cursor +" position with 'nostartofline'. Also test using the 'buf' command. +func Test_buffer_edit_altfile() + call writefile(repeat(['one two'], 50), 'Xaltfile1', 'D') + call writefile(repeat(['five six'], 50), 'Xaltfile2', 'D') + set nosol + edit Xaltfile1 + call cursor(25, 5) + edit Xaltfile2 + call cursor(30, 4) + exe "normal \" + call assert_equal([0, 25, 5, 0], getpos('.')) + exe "normal \" + call assert_equal([0, 30, 4, 0], getpos('.')) + buf Xaltfile1 + call assert_equal([0, 25, 5, 0], getpos('.')) + buf Xaltfile2 + call assert_equal([0, 30, 4, 0], getpos('.')) + set sol& +endfunc + +" Test for running the :sball command with a maximum window count and a +" modified buffer +func Test_sball_with_count() + %bw! + edit Xcountfile1 + call setline(1, ['abc']) + new Xcountfile2 + new Xcountfile3 + new Xcountfile4 + 2sball + call assert_equal(bufnr('Xcountfile4'), winbufnr(1)) + call assert_equal(bufnr('Xcountfile1'), winbufnr(2)) + call assert_equal(0, getbufinfo('Xcountfile2')[0].loaded) + call assert_equal(0, getbufinfo('Xcountfile3')[0].loaded) + %bw! +endfunc + +func Test_badd_options() + new SomeNewBuffer + setlocal numberwidth=3 + wincmd p + badd +1 SomeNewBuffer + new SomeNewBuffer + call assert_equal(3, &numberwidth) + close + close + bwipe! SomeNewBuffer + + badd +3 XbaddFile + call writefile(range(6), 'XbaddFile', 'D') + buf XbaddFile + call assert_equal([0, 3, 1, 0], getpos('.')) + + bwipe! XbaddFile +endfunc + +func Test_balt() + new SomeNewBuffer + balt +3 OtherBuffer + e # + call assert_equal('OtherBuffer', bufname()) +endfunc + +" Test for buffer match URL(scheme) check +" scheme is alpha and inner hyphen only. +func Test_buffer_scheme() + CheckMSWindows + + set noswapfile + set noshellslash + %bwipe! + let bufnames = [ + \ #{id: 'ssb0', name: 'test://xyz/foo/ssb0' , match: 1}, + \ #{id: 'ssb1', name: 'test+abc://xyz/foo/ssb1', match: 0}, + \ #{id: 'ssb2', name: 'test_abc://xyz/foo/ssb2', match: 0}, + \ #{id: 'ssb3', name: 'test-abc://xyz/foo/ssb3', match: 1}, + \ #{id: 'ssb4', name: '-test://xyz/foo/ssb4' , match: 0}, + \ #{id: 'ssb5', name: 'test-://xyz/foo/ssb5' , match: 0}, + \] + for buf in bufnames + new `=buf.name` + if buf.match + call assert_equal(buf.name, getbufinfo(buf.id)[0].name) + else + " slashes will have become backslashes + call assert_notequal(buf.name, getbufinfo(buf.id)[0].name) + endif + bwipe + endfor + + set shellslash& + set swapfile& +endfunc + +" this was using a NULL pointer after failing to use the pattern +func Test_buf_pattern_invalid() + vsplit 0000000 + silent! buf [0--]\&\zs*\zs*e + bwipe! + + vsplit 00000000000000000000000000 + silent! buf [0--]\&\zs*\zs*e + bwipe! + + " similar case with different code path + split 0 + edit ÿ + silent! buf [0--]\&\zs*\zs*0 + bwipe! +endfunc + +" Test for the 'maxmem' and 'maxmemtot' options +func Test_buffer_maxmem() + " use 1KB per buffer and 2KB for all the buffers + set maxmem=1 maxmemtot=2 + new + let v:errmsg = '' + " try opening some files + edit test_arglist.vim + call assert_equal('test_arglist.vim', bufname()) + edit test_eval_stuff.vim + call assert_equal('test_eval_stuff.vim', bufname()) + b test_arglist.vim + call assert_equal('test_arglist.vim', bufname()) + b test_eval_stuff.vim + call assert_equal('test_eval_stuff.vim', bufname()) + close + call assert_equal('', v:errmsg) + set maxmem& maxmemtot& +endfunc + +" Test for buffer allocation failure +func Test_buflist_alloc_failure() + %bw! + + edit XallocFail1 + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('edit XallocFail2', 'E342:') + + " test for bufadd() + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('call bufadd("Xbuffer")', 'E342:') + + " test for setting the arglist + edit XallocFail2 + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('next XallocFail3', 'E342:') + + " test for setting the alternate buffer name when writing a file + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('write Xother', 'E342:') + call delete('Xother') + + " test for creating a buffer using bufnr() + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails("call bufnr('Xnewbuf', v:true)", 'E342:') + + " test for renaming buffer using :file + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('file Xnewfile', 'E342:') + + " test for creating a buffer for a popup window + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('call popup_create("mypop", {})', 'E342:') + + if has('terminal') + " test for creating a buffer for a terminal window + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('call term_start(&shell)', 'E342:') + %bw! + endif + + " test for loading a new buffer after wiping out all the buffers + edit XallocFail4 + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('%bw!', 'E342:') + + " test for :checktime loading the buffer + call writefile(['one'], 'XallocFail5', 'D') + if has('unix') + edit XallocFail5 + " sleep for some time to make sure the timestamp is different + sleep 200m + call writefile(['two'], 'XallocFail5') + set autoread + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('checktime', 'E342:') + set autoread& + bw! + endif + + " test for :vimgrep loading a dummy buffer + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('vimgrep two XallocFail5', 'E342:') + + " test for quickfix command loading a buffer + call test_alloc_fail(GetAllocId('newbuf_bvars'), 0, 0) + call assert_fails('cexpr "XallocFail6:10:Line10"', 'E342:') +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_bufline.vim b/src/testdir/test_bufline.vim new file mode 100644 index 0000000..4ada241 --- /dev/null +++ b/src/testdir/test_bufline.vim @@ -0,0 +1,341 @@ +" Tests for setbufline(), getbufline(), appendbufline(), deletebufline() + +source shared.vim +source screendump.vim +source check.vim + +func Test_setbufline_getbufline() + " similar to Test_set_get_bufline() + new + let b = bufnr('%') + hide + call assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) + call assert_equal(['foo'], getbufline(b, 1)) + call assert_equal('foo', getbufoneline(b, 1)) + call assert_equal(['bar'], getbufline(b, '$')) + call assert_equal('bar', getbufoneline(b, '$')) + call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) + exe "bd!" b + call assert_equal([], getbufline(b, 1, 2)) + + split Xtest + call setline(1, ['a', 'b', 'c']) + let b = bufnr('%') + wincmd w + + call assert_equal(1, setbufline(b, 5, 'x')) + call assert_equal(1, setbufline(b, 5, ['x'])) + call assert_equal(0, setbufline(b, 5, [])) + call assert_equal(0, setbufline(b, 5, test_null_list())) + + call assert_equal(1, 'x'->setbufline(bufnr('$') + 1, 1)) + call assert_equal(1, ['x']->setbufline(bufnr('$') + 1, 1)) + call assert_equal(1, []->setbufline(bufnr('$') + 1, 1)) + call assert_equal(1, test_null_list()->setbufline(bufnr('$') + 1, 1)) + + call assert_equal(['a', 'b', 'c'], getbufline(b, 1, '$')) + + call assert_equal(0, setbufline(b, 4, ['d', 'e'])) + call assert_equal(['c'], b->getbufline(3)) + call assert_equal('c', b->getbufoneline(3)) + call assert_equal(['d'], getbufline(b, 4)) + call assert_equal('d', getbufoneline(b, 4)) + call assert_equal(['e'], getbufline(b, 5)) + call assert_equal('e', getbufoneline(b, 5)) + call assert_equal([], getbufline(b, 6)) + call assert_equal([], getbufline(b, 2, 1)) + + if has('job') + call setbufline(b, 2, [function('eval'), #{key: 123}, test_null_job()]) + call assert_equal(["function('eval')", + \ "{'key': 123}", + \ "no process"], + \ getbufline(b, 2, 4)) + endif + exe "bwipe! " . b +endfunc + +func Test_setbufline_getbufline_fold() + split Xtest + setlocal foldmethod=expr foldexpr=0 + let b = bufnr('%') + new + call assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) + call assert_equal(['foo'], getbufline(b, 1)) + call assert_equal(['bar'], getbufline(b, 2)) + call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) + exe "bwipe!" b + bwipe! +endfunc + +func Test_setbufline_getbufline_fold_tab() + split Xtest + setlocal foldmethod=expr foldexpr=0 + let b = bufnr('%') + tab new + call assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) + call assert_equal(['foo'], getbufline(b, 1)) + call assert_equal(['bar'], getbufline(b, 2)) + call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) + exe "bwipe!" b + bwipe! +endfunc + +func Test_setline_startup() + let cmd = GetVimCommand('Xscript') + if cmd == '' + return + endif + call writefile(['call setline(1, "Hello")', 'silent w Xtest', 'q!'], 'Xscript', 'D') + call system(cmd) + sleep 50m + call assert_equal(['Hello'], readfile('Xtest')) + + call assert_equal(0, setline(1, [])) + call assert_equal(0, setline(1, test_null_list())) + call assert_equal(0, setline(5, [])) + call assert_equal(0, setline(6, test_null_list())) + + call delete('Xtest') +endfunc + +func Test_appendbufline() + new + let b = bufnr('%') + hide + + new + call setline(1, ['line1', 'line2', 'line3']) + normal! 2gggg + call assert_equal(2, line("''")) + + call assert_equal(0, appendbufline(b, 0, ['foo', 'bar'])) + call assert_equal(['foo'], getbufline(b, 1)) + call assert_equal(['bar'], getbufline(b, 2)) + call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) + call assert_equal(0, appendbufline(b, 0, 'baz')) + call assert_equal(['baz', 'foo', 'bar'], getbufline(b, 1, 3)) + + " appendbufline() in a hidden buffer shouldn't move marks in current window. + call assert_equal(2, line("''")) + bwipe! + + exe "bd!" b + call assert_equal([], getbufline(b, 1, 3)) + + split Xtest + call setline(1, ['a', 'b', 'c']) + let b = bufnr('%') + wincmd w + + call assert_equal(1, appendbufline(b, -1, 'x')) + call assert_equal(1, appendbufline(b, -1, ['x'])) + call assert_equal(1, appendbufline(b, -1, [])) + call assert_equal(1, appendbufline(b, -1, test_null_list())) + + call assert_equal(1, appendbufline(b, 4, 'x')) + call assert_equal(1, appendbufline(b, 4, ['x'])) + call assert_equal(0, appendbufline(b, 4, [])) + call assert_equal(0, appendbufline(b, 4, test_null_list())) + + call assert_equal(1, appendbufline(1234, 1, 'x')) + call assert_equal(1, appendbufline(1234, 1, ['x'])) + call assert_equal(1, appendbufline(1234, 1, [])) + call assert_equal(1, appendbufline(1234, 1, test_null_list())) + + call assert_equal(0, appendbufline(b, 1, [])) + call assert_equal(0, appendbufline(b, 1, test_null_list())) + call assert_equal(0, appendbufline(b, 3, [])) + call assert_equal(0, appendbufline(b, 3, test_null_list())) + + call assert_equal(['a', 'b', 'c'], getbufline(b, 1, '$')) + + call assert_equal(0, appendbufline(b, 3, ['d', 'e'])) + call assert_equal(['c'], getbufline(b, 3)) + call assert_equal(['d'], getbufline(b, 4)) + call assert_equal(['e'], getbufline(b, 5)) + call assert_equal([], getbufline(b, 6)) + exe "bwipe! " . b +endfunc + +func Test_appendbufline_no_E315() + let after =<< trim [CODE] + set stl=%f ls=2 + new + let buf = bufnr("%") + quit + vsp + exec "buffer" buf + wincmd w + call appendbufline(buf, 0, "abc") + redraw + while getbufline(buf, 1)[0] =~ "^\\s*$" + sleep 10m + endwhile + au VimLeavePre * call writefile([v:errmsg], "Xerror") + au VimLeavePre * call writefile(["done"], "Xdone") + qall! + [CODE] + + if !RunVim([], after, '--clean') + return + endif + call assert_notmatch("^E315:", readfile("Xerror")[0]) + call assert_equal("done", readfile("Xdone")[0]) + call delete("Xerror") + call delete("Xdone") +endfunc + +func Test_deletebufline() + new + let b = bufnr('%') + call setline(1, ['aaa', 'bbb', 'ccc']) + hide + + new + call setline(1, ['line1', 'line2', 'line3']) + normal! 2gggg + call assert_equal(2, line("''")) + + call assert_equal(0, deletebufline(b, 2)) + call assert_equal(['aaa', 'ccc'], getbufline(b, 1, 2)) + call assert_equal(0, deletebufline(b, 2, 8)) + call assert_equal(['aaa'], getbufline(b, 1, 2)) + + " deletebufline() in a hidden buffer shouldn't move marks in current window. + call assert_equal(2, line("''")) + bwipe! + + exe "bd!" b + call assert_equal(1, b->deletebufline(1)) + + call assert_equal(1, deletebufline(-1, 1)) + + split Xtest + call setline(1, ['a', 'b', 'c']) + call cursor(line('$'), 1) + let b = bufnr('%') + wincmd w + call assert_equal(1, deletebufline(b, 4)) + call assert_equal(0, deletebufline(b, 1)) + call assert_equal(['b', 'c'], getbufline(b, 1, 2)) + exe "bwipe! " . b + + edit XbufOne + let one = bufnr() + call setline(1, ['a', 'b', 'c']) + setlocal nomodifiable + split XbufTwo + let two = bufnr() + call assert_fails('call deletebufline(one, 1)', 'E21:') + call assert_equal(two, bufnr()) + bwipe! XbufTwo + bwipe! XbufOne +endfunc + +func Test_appendbufline_redraw() + CheckScreendump + + let lines =<< trim END + new foo + let winnr = 'foo'->bufwinnr() + let buf = bufnr('foo') + wincmd p + call appendbufline(buf, '$', range(1,200)) + exe winnr .. 'wincmd w' + norm! G + wincmd p + call deletebufline(buf, 1, '$') + call appendbufline(buf, '$', 'Hello Vim world...') + END + call writefile(lines, 'XscriptMatchCommon', 'D') + let buf = RunVimInTerminal('-S XscriptMatchCommon', #{rows: 10}) + call VerifyScreenDump(buf, 'Test_appendbufline_1', {}) + + call StopVimInTerminal(buf) +endfunc + +func Test_setbufline_select_mode() + new + call setline(1, ['foo', 'bar']) + call feedkeys("j^v2l\", 'nx') + + let bufnr = bufadd('Xdummy') + call bufload(bufnr) + call setbufline(bufnr, 1, ['abc']) + + call feedkeys("x", 'nx') + call assert_equal(['foo', 'x'], getline(1, 2)) + + exe "bwipe! " .. bufnr + bwipe! +endfunc + +func Test_deletebufline_select_mode() + new + call setline(1, ['foo', 'bar']) + call feedkeys("j^v2l\", 'nx') + + let bufnr = bufadd('Xdummy') + call bufload(bufnr) + call setbufline(bufnr, 1, ['abc', 'def']) + call deletebufline(bufnr, 1) + + call feedkeys("x", 'nx') + call assert_equal(['foo', 'x'], getline(1, 2)) + + exe "bwipe! " .. bufnr + bwipe! +endfunc + +func Test_deletebufline_popup_window() + let popupID = popup_create('foo', {}) + let bufnr = winbufnr(popupID) + + " Check that deletebufline() brings us back to the same window. + new + let winid_before = win_getid() + call deletebufline(bufnr, 1, '$') + call assert_equal(winid_before, win_getid()) + bwipe + + call popup_close(popupID) +endfunc + +func Test_setbufline_startup_nofile() + let before =<< trim [CODE] + set shortmess+=F + file Xresult + set buftype=nofile + call setbufline('', 1, 'success') + [CODE] + let after =<< trim [CODE] + set buftype= + write + quit + [CODE] + + if !RunVim(before, after, '--clean') + return + endif + call assert_equal(['success'], readfile('Xresult')) + call delete('Xresult') +endfunc + +" Test that setbufline(), appendbufline() and deletebufline() should fail and +" return 1 when "textlock" is active. +func Test_change_bufline_with_textlock() + new + inoremap setbufline('', 1, '') + call assert_fails("normal a\", 'E565:') + call assert_equal('1', getline(1)) + inoremap appendbufline('', 1, '') + call assert_fails("normal a\", 'E565:') + call assert_equal('11', getline(1)) + inoremap deletebufline('', 1) + call assert_fails("normal a\", 'E565:') + call assert_equal('111', getline(1)) + bwipe! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_bufwintabinfo.vim b/src/testdir/test_bufwintabinfo.vim new file mode 100644 index 0000000..403b98a --- /dev/null +++ b/src/testdir/test_bufwintabinfo.vim @@ -0,0 +1,197 @@ +" Tests for the getbufinfo(), getwininfo() and gettabinfo() functions + +source check.vim + +func Test_getbufwintabinfo() + CheckFeature quickfix + + edit Xtestfile1 + edit Xtestfile2 + let buflist = getbufinfo() + call assert_equal(2, len(buflist)) + call assert_match('Xtestfile1', buflist[0].name) + call assert_match('Xtestfile2', getbufinfo('Xtestfile2')[0].name) + call assert_equal([], getbufinfo(2016)) + edit Xtestfile1 + hide edit Xtestfile2 + hide enew + call assert_equal(3, len(getbufinfo({'bufloaded':1}))) + + set tabstop&vim + let b:editor = 'vim' + let l = getbufinfo('%') + call assert_equal(bufnr('%'), l[0].bufnr) + call assert_equal('vim', l[0].variables.editor) + call assert_notequal(-1, index(l[0].windows, '%'->bufwinid())) + + let l = '%'->getbufinfo() + call assert_equal(bufnr('%'), l[0].bufnr) + + " Test for getbufinfo() with 'bufmodified' + call assert_equal(0, len(getbufinfo({'bufmodified' : 1}))) + call setbufline('Xtestfile1', 1, ["Line1"]) + let l = getbufinfo({'bufmodified' : 1}) + call assert_equal(1, len(l)) + call assert_equal(bufnr('Xtestfile1'), l[0].bufnr) + + if has('signs') + call append(0, ['Linux', 'Windows', 'Mac']) + sign define Mark text=>> texthl=Search + exe "sign place 2 line=3 name=Mark buffer=" . bufnr('%') + let l = getbufinfo('%') + call assert_equal(2, l[0].signs[0].id) + call assert_equal(3, l[0].signs[0].lnum) + call assert_equal('Mark', l[0].signs[0].name) + sign unplace * + sign undefine Mark + enew! + endif + call assert_notequal([], getbufinfo(test_null_dict())) + + only + let w1_id = win_getid() + setl foldcolumn=3 + new + let w2_id = win_getid() + tabnew | let w3_id = win_getid() + new | let w4_id = win_getid() + vert new | let w5_id = win_getid() + eval 'green'->setwinvar(0, 'signal') + tabfirst + let winlist = getwininfo() + call assert_equal(5, len(winlist)) + call assert_equal(winwidth(1), winlist[0].width) + call assert_equal(1, winlist[0].wincol) + " tabline adds one row in terminal, not in GUI + let tablineheight = winlist[0].winrow == 2 ? 1 : 0 + call assert_equal(tablineheight + 1, winlist[0].winrow) + + call assert_equal(winbufnr(2), winlist[1].bufnr) + call assert_equal(winheight(2), winlist[1].height) + call assert_equal(1, winlist[1].wincol) + call assert_equal(3, winlist[1].textoff) " foldcolumn + call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow) + + call assert_equal(1, winlist[2].winnr) + call assert_equal(tablineheight + 1, winlist[2].winrow) + call assert_equal(1, winlist[2].wincol) + + call assert_equal(winlist[2].width + 2, winlist[3].wincol) + call assert_equal(1, winlist[4].wincol) + + call assert_equal(1, winlist[0].tabnr) + call assert_equal(1, winlist[1].tabnr) + call assert_equal(2, winlist[2].tabnr) + call assert_equal(2, winlist[3].tabnr) + call assert_equal(2, winlist[4].tabnr) + + call assert_equal('green', winlist[2].variables.signal) + call assert_equal(w4_id, winlist[3].winid) + let winfo = w5_id->getwininfo()[0] + call assert_equal(2, winfo.tabnr) + call assert_equal([], getwininfo(3)) + + call settabvar(1, 'space', 'build') + let tablist = gettabinfo() + call assert_equal(2, len(tablist)) + call assert_equal(3, len(tablist[1].windows)) + call assert_equal(2, tablist[1].tabnr) + call assert_equal('build', tablist[0].variables.space) + call assert_equal(w2_id, tablist[0].windows[0]) + call assert_equal([], 3->gettabinfo()) + + tabonly | only + + lexpr '' + lopen + copen + let winlist = getwininfo() + call assert_false(winlist[0].quickfix) + call assert_false(winlist[0].loclist) + call assert_true(winlist[1].quickfix) + call assert_true(winlist[1].loclist) + call assert_true(winlist[2].quickfix) + call assert_false(winlist[2].loclist) + wincmd t | only +endfunc + +function Test_get_buf_options() + let opts = bufnr()->getbufvar('&') + call assert_equal(v:t_dict, type(opts)) + call assert_equal(8, opts.tabstop) +endfunc + +function Test_get_win_options() + if has('folding') + set foldlevel=999 + endif + set list + let opts = getwinvar(1, '&') + call assert_equal(v:t_dict, type(opts)) + call assert_equal(0, opts.linebreak) + call assert_equal(1, opts.list) + if has('folding') + call assert_equal(999, opts.foldlevel) + endif + if has('signs') + call assert_equal('auto', opts.signcolumn) + endif + + let opts = gettabwinvar(1, 1, '&') + call assert_equal(v:t_dict, type(opts)) + call assert_equal(0, opts.linebreak) + call assert_equal(1, opts.list) + if has('signs') + call assert_equal('auto', opts.signcolumn) + endif + set list& + if has('folding') + set foldlevel=0 + endif +endfunc + +function Test_getbufinfo_lastused() + call test_settime(1234567) + edit Xtestfile1 + enew + call test_settime(7654321) + edit Xtestfile2 + enew + call assert_equal(getbufinfo('Xtestfile1')[0].lastused, 1234567) + call assert_equal(getbufinfo('Xtestfile2')[0].lastused, 7654321) + call test_settime(0) +endfunc + +func Test_getbufinfo_lines() + new Xfoo + call setline(1, ['a', 'bc', 'd']) + let bn = bufnr('%') + hide + call assert_equal(3, getbufinfo(bn)[0]["linecount"]) + edit Xfoo + bw! +endfunc + +func Test_getwininfo_au() + enew + call setline(1, range(1, 16)) + + let g:info = #{} + augroup T1 + au! + au WinEnter * let g:info = getwininfo(win_getid())[0] + augroup END + + 4split + " Check that calling getwininfo() from WinEnter returns fresh values for + " topline and botline. + call assert_equal(1, g:info.topline) + call assert_equal(4, g:info.botline) + close + + unlet g:info + augroup! T1 + bwipe! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_cd.vim b/src/testdir/test_cd.vim new file mode 100644 index 0000000..9fb5958 --- /dev/null +++ b/src/testdir/test_cd.vim @@ -0,0 +1,247 @@ +" Test for :cd and chdir() + +source shared.vim +source check.vim + +func Test_cd_large_path() + " This used to crash with a heap write overflow. + call assert_fails('cd ' . repeat('x', 5000), 'E344:') +endfunc + +func Test_cd_up_and_down() + let path = getcwd() + cd .. + call assert_notequal(path, getcwd()) + exe 'cd ' .. fnameescape(path) + call assert_equal(path, getcwd()) +endfunc + +func Test_cd_no_arg() + if has('unix') + " Test that cd without argument goes to $HOME directory on Unix systems. + let path = getcwd() + cd + call assert_equal($HOME, getcwd()) + call assert_notequal(path, getcwd()) + exe 'cd ' .. fnameescape(path) + call assert_equal(path, getcwd()) + else + " Test that cd without argument echoes cwd on non-Unix systems. + call assert_match(getcwd(), execute('cd')) + endif +endfunc + +func Test_cd_minus() + " Test the :cd - goes back to the previous directory. + let path = getcwd() + cd .. + let path_dotdot = getcwd() + call assert_notequal(path, path_dotdot) + cd - + call assert_equal(path, getcwd()) + cd - + call assert_equal(path_dotdot, getcwd()) + cd - + call assert_equal(path, getcwd()) + + " Test for :cd - after a failed :cd + call assert_fails('cd /nonexistent', 'E344:') + call assert_equal(path, getcwd()) + cd - + call assert_equal(path_dotdot, getcwd()) + cd - + + " Test for :cd - without a previous directory + let lines =<< trim [SCRIPT] + call assert_fails('cd -', 'E186:') + call assert_fails('call chdir("-")', 'E186:') + call writefile(v:errors, 'Xresult') + qall! + [SCRIPT] + call writefile(lines, 'Xscript', 'D') + if RunVim([], [], '--clean -S Xscript') + call assert_equal([], readfile('Xresult')) + endif + call delete('Xresult') +endfunc + +" Test for chdir() +func Test_chdir_func() + let topdir = getcwd() + call mkdir('Xchdir/y/z', 'pR') + + " Create a few tabpages and windows with different directories + new + cd Xchdir + tabnew + tcd y + below new + below new + lcd z + + tabfirst + call assert_match('^\[global\] .*/Xchdir$', trim(execute('verbose pwd'))) + call chdir('..') + call assert_equal('y', fnamemodify(getcwd(1, 2), ':t')) + call assert_equal('z', fnamemodify(3->getcwd(2), ':t')) + tabnext | wincmd t + call assert_match('^\[tabpage\] .*/y$', trim(execute('verbose pwd'))) + eval '..'->chdir() + call assert_equal('Xchdir', fnamemodify(getcwd(1, 2), ':t')) + call assert_equal('Xchdir', fnamemodify(getcwd(2, 2), ':t')) + call assert_equal('z', fnamemodify(getcwd(3, 2), ':t')) + call assert_equal('testdir', fnamemodify(getcwd(1, 1), ':t')) + 3wincmd w + call assert_match('^\[window\] .*/z$', trim(execute('verbose pwd'))) + call chdir('..') + call assert_equal('Xchdir', fnamemodify(getcwd(1, 2), ':t')) + call assert_equal('Xchdir', fnamemodify(getcwd(2, 2), ':t')) + call assert_equal('y', fnamemodify(getcwd(3, 2), ':t')) + call assert_equal('testdir', fnamemodify(getcwd(1, 1), ':t')) + + " Error case + call assert_fails("call chdir('dir-abcd')", 'E344:') + silent! let d = chdir("dir_abcd") + call assert_equal("", d) + " Should not crash + call chdir(d) + call assert_equal('', chdir([])) + + only | tabonly + call chdir(topdir) +endfunc + +" Test for changing to the previous directory '-' +func Test_prev_dir() + let topdir = getcwd() + call mkdir('Xprevdir/a/b/c', 'pR') + + " Create a few tabpages and windows with different directories + new | only + tabnew | new + tabnew + tabfirst + cd Xprevdir + tabnext | wincmd t + tcd a + wincmd w + lcd b + tabnext + tcd a/b/c + + " Change to the previous directory twice in all the windows. + tabfirst + cd - | cd - + tabnext | wincmd t + tcd - | tcd - + wincmd w + lcd - | lcd - + tabnext + tcd - | tcd - + + " Check the directory of all the windows + tabfirst + call assert_equal('Xprevdir', fnamemodify(getcwd(), ':t')) + tabnext | wincmd t + call assert_equal('a', fnamemodify(getcwd(), ':t')) + wincmd w + call assert_equal('b', fnamemodify(getcwd(), ':t')) + tabnext + call assert_equal('c', fnamemodify(getcwd(), ':t')) + + " Change to the previous directory using chdir() + tabfirst + call chdir("-") | call chdir("-") + tabnext | wincmd t + call chdir("-") | call chdir("-") + wincmd w + call chdir("-") | call chdir("-") + tabnext + call chdir("-") | call chdir("-") + + " Check the directory of all the windows + tabfirst + call assert_equal('Xprevdir', fnamemodify(getcwd(), ':t')) + tabnext | wincmd t + call assert_equal('a', fnamemodify(getcwd(), ':t')) + wincmd w + call assert_equal('b', fnamemodify(getcwd(), ':t')) + tabnext + call assert_equal('c', fnamemodify(getcwd(), ':t')) + + only | tabonly + call chdir(topdir) +endfunc + +func Test_lcd_split() + let curdir = getcwd() + lcd .. + split + lcd - + call assert_equal(curdir, getcwd()) + quit! +endfunc + +func Test_cd_from_non_existing_dir() + CheckNotMSWindows + + let saveddir = getcwd() + call mkdir('Xdeleted_dir') + cd Xdeleted_dir + call delete(saveddir .. '/Xdeleted_dir', 'd') + + " Expect E187 as the current directory was deleted. + call assert_fails('pwd', 'E187:') + call assert_equal('', getcwd()) + cd - + call assert_equal(saveddir, getcwd()) +endfunc + +func Test_cd_completion() + call mkdir('XComplDir1', 'D') + call mkdir('XComplDir2', 'D') + call writefile([], 'XComplFile', 'D') + + for cmd in ['cd', 'chdir', 'lcd', 'lchdir', 'tcd', 'tchdir'] + call feedkeys(':' .. cmd .. " XCompl\\\"\", 'tx') + call assert_equal('"' .. cmd .. ' XComplDir1/ XComplDir2/', @:) + endfor +endfunc + +func Test_cd_unknown_dir() + call mkdir('Xa', 'R') + cd Xa + call writefile(['text'], 'Xb.txt') + edit Xa/Xb.txt + let first_buf = bufnr() + cd .. + edit + call assert_equal(first_buf, bufnr()) + edit Xa/Xb.txt + call assert_notequal(first_buf, bufnr()) + + bwipe! + exe "bwipe! " .. first_buf +endfunc + +func Test_getcwd_actual_dir() + CheckOption autochdir + + let startdir = getcwd() + call mkdir('Xactual', 'R') + call test_autochdir() + set autochdir + edit Xactual/file.txt + call assert_match('testdir.Xactual$', getcwd()) + lcd .. + call assert_match('testdir$', getcwd()) + edit + call assert_match('testdir.Xactual$', getcwd()) + call assert_match('testdir$', getcwd(win_getid())) + + set noautochdir + bwipe! + call chdir(startdir) +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_cdo.vim b/src/testdir/test_cdo.vim new file mode 100644 index 0000000..dbed7df --- /dev/null +++ b/src/testdir/test_cdo.vim @@ -0,0 +1,216 @@ +" Tests for the :cdo, :cfdo, :ldo and :lfdo commands + +source check.vim +CheckFeature quickfix + +" Create the files used by the tests +func SetUp() + call writefile(["Line1", "Line2", "Line3"], 'Xtestfile1') + call writefile(["Line1", "Line2", "Line3"], 'Xtestfile2') + call writefile(["Line1", "Line2", "Line3"], 'Xtestfile3') +endfunc + +" Remove the files used by the tests +func TearDown() + call delete('Xtestfile1') + call delete('Xtestfile2') + call delete('Xtestfile3') +endfunc + +" Returns the current line in ' L C' format +func GetRuler() + return expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' +endfunc + +" Tests for the :cdo and :ldo commands +func XdoTests(cchar) + enew + + " Shortcuts for calling the cdo and ldo commands + let Xdo = a:cchar . 'do' + let Xgetexpr = a:cchar . 'getexpr' + let Xprev = a:cchar. 'prev' + let XdoCmd = Xdo . ' call add(l, GetRuler())' + + " Try with an empty list + let l = [] + exe XdoCmd + call assert_equal([], l) + + " Populate the list and then try + exe Xgetexpr . " ['non-error 1', 'Xtestfile1:1:3:Line1', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:3:1:Line3']" + + let l = [] + exe XdoCmd + call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 3L 1C'], l) + + " Run command only on selected error lines + let l = [] + enew + exe "2,3" . XdoCmd + call assert_equal(['Xtestfile2 2L 2C', 'Xtestfile3 3L 1C'], l) + + " Boundary condition tests + let l = [] + enew + exe "1,1" . XdoCmd + call assert_equal(['Xtestfile1 1L 3C'], l) + + let l = [] + enew + exe "3" . XdoCmd + call assert_equal(['Xtestfile3 3L 1C'], l) + + " Range test commands + let l = [] + enew + exe "%" . XdoCmd + call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 3L 1C'], l) + + let l = [] + enew + exe "1,$" . XdoCmd + call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 3L 1C'], l) + + let l = [] + enew + exe Xprev + exe "." . XdoCmd + call assert_equal(['Xtestfile2 2L 2C'], l) + + let l = [] + enew + exe "+" . XdoCmd + call assert_equal(['Xtestfile3 3L 1C'], l) + + " Invalid error lines test + let l = [] + enew + exe "silent! 27" . XdoCmd + exe "silent! 4,5" . XdoCmd + call assert_equal([], l) + + " Run commands from an unsaved buffer + let v:errmsg='' + let l = [] + enew + setlocal modified + exe "silent! 2,2" . XdoCmd + if v:errmsg !~# 'No write since last change' + call add(v:errors, 'Unsaved file change test failed') + endif + + " If the executed command fails, then the operation should be aborted + enew! + let subst_count = 0 + exe "silent!" . Xdo . " s/Line/xLine/ | let subst_count += 1" + if subst_count != 1 || getline('.') != 'xLine1' + call add(v:errors, 'Abort command on error test failed') + endif + + let l = [] + exe "2,2" . Xdo . "! call add(l, GetRuler())" + call assert_equal(['Xtestfile2 2L 2C'], l) + + " List with no valid error entries + let l = [] + edit! +2 Xtestfile1 + exe Xgetexpr . " ['non-error 1', 'non-error 2', 'non-error 3']" + exe XdoCmd + call assert_equal([], l) + exe "silent! 2" . XdoCmd + call assert_equal([], l) + let v:errmsg='' + exe "%" . XdoCmd + exe "1,$" . XdoCmd + exe "." . XdoCmd + call assert_equal('', v:errmsg) + + " List with only one valid entry + let l = [] + exe Xgetexpr . " ['Xtestfile3:3:1:Line3']" + exe XdoCmd + call assert_equal(['Xtestfile3 3L 1C'], l) + +endfunc + +" Tests for the :cfdo and :lfdo commands +func XfdoTests(cchar) + enew + + " Shortcuts for calling the cfdo and lfdo commands + let Xfdo = a:cchar . 'fdo' + let Xgetexpr = a:cchar . 'getexpr' + let XfdoCmd = Xfdo . ' call add(l, GetRuler())' + let Xpfile = a:cchar. 'pfile' + + " Clear the quickfix/location list + exe Xgetexpr . " []" + + " Try with an empty list + let l = [] + exe XfdoCmd + call assert_equal([], l) + + " Populate the list and then try + exe Xgetexpr . " ['non-error 1', 'Xtestfile1:1:3:Line1', 'Xtestfile1:2:1:Line2', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:2:3:Line2', 'Xtestfile3:3:1:Line3']" + + let l = [] + exe XfdoCmd + call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 2L 3C'], l) + + " Run command only on selected error lines + let l = [] + exe "2,3" . XfdoCmd + call assert_equal(['Xtestfile2 2L 2C', 'Xtestfile3 2L 3C'], l) + + " Boundary condition tests + let l = [] + exe "3" . XfdoCmd + call assert_equal(['Xtestfile3 2L 3C'], l) + + " Range test commands + let l = [] + exe "%" . XfdoCmd + call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 2L 3C'], l) + + let l = [] + exe "1,$" . XfdoCmd + call assert_equal(['Xtestfile1 1L 3C', 'Xtestfile2 2L 2C', 'Xtestfile3 2L 3C'], l) + + let l = [] + exe Xpfile + exe "." . XfdoCmd + call assert_equal(['Xtestfile2 2L 2C'], l) + + " List with only one valid entry + let l = [] + exe Xgetexpr . " ['Xtestfile2:2:5:Line2']" + exe XfdoCmd + call assert_equal(['Xtestfile2 2L 5C'], l) + +endfunc + +" Tests for cdo and cfdo +func Test_cdo() + call XdoTests('c') + call XfdoTests('c') +endfunc + +" Tests for ldo and lfdo +func Test_ldo() + call XdoTests('l') + call XfdoTests('l') +endfunc + +" Test for making 'shm' doesn't interfere with the output. +func Test_cdo_print() + enew | only! + cgetexpr ["Xtestfile1:1:Line1", "Xtestfile2:1:Line1", "Xtestfile3:1:Line1"] + cdo print + call assert_equal('Line1', Screenline(&lines)) + call assert_equal('Line1', Screenline(&lines - 3)) + call assert_equal('Line1', Screenline(&lines - 6)) +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_changedtick.vim b/src/testdir/test_changedtick.vim new file mode 100644 index 0000000..b7e7cd6 --- /dev/null +++ b/src/testdir/test_changedtick.vim @@ -0,0 +1,97 @@ +" Tests for b:changedtick + +func Test_changedtick_increments() + new + " New buffer has an empty line, tick starts at 2. + let expected = 2 + call assert_equal(expected, b:changedtick) + call assert_equal(expected, b:['changedtick']) + call setline(1, 'hello') + let expected += 1 + call assert_equal(expected, b:changedtick) + call assert_equal(expected, b:['changedtick']) + undo + " Somehow undo counts as two changes. + let expected += 2 + call assert_equal(expected, b:changedtick) + call assert_equal(expected, b:['changedtick']) + bwipe! +endfunc + +func Test_changedtick_dict_entry() + let d = b: + call assert_equal(b:changedtick, d['changedtick']) +endfunc + +func Test_changedtick_bdel() + new + let bnr = bufnr('%') + let v = b:changedtick + bdel + " Delete counts as a change too. + call assert_equal(v + 1, getbufvar(bnr, 'changedtick')) +endfunc + +func Test_changedtick_islocked() + call assert_equal(0, islocked('b:changedtick')) + let d = b: + call assert_equal(0, islocked('d.changedtick')) +endfunc + +func Test_changedtick_fixed() + call assert_fails('let b:changedtick = 4', 'E46:') + call assert_fails('let b:["changedtick"] = 4', 'E46:') + + call assert_fails('lockvar b:changedtick', 'E940:') + call assert_fails('lockvar b:["changedtick"]', 'E46:') + call assert_fails('unlockvar b:changedtick', 'E940:') + call assert_fails('unlockvar b:["changedtick"]', 'E46:') + call assert_fails('unlet b:changedtick', 'E795:') + call assert_fails('unlet b:["changedtick"]', 'E46:') + + let d = b: + call assert_fails('lockvar d["changedtick"]', 'E46:') + call assert_fails('unlockvar d["changedtick"]', 'E46:') + call assert_fails('unlet d["changedtick"]', 'E46:') + +endfunc + +func Test_changedtick_not_incremented_with_write() + new + let fname = "XChangeTick" + exe 'w ' .. fname + + " :write when the buffer is not changed does not increment changedtick + let expected = b:changedtick + w + call assert_equal(expected, b:changedtick) + + " :write when the buffer IS changed DOES increment changedtick + let expected = b:changedtick + 1 + setlocal modified + w + call assert_equal(expected, b:changedtick) + + " Two ticks: change + write + let expected = b:changedtick + 2 + call setline(1, 'hello') + w + call assert_equal(expected, b:changedtick) + + " Two ticks: start insert + write + let expected = b:changedtick + 2 + normal! o + w + call assert_equal(expected, b:changedtick) + + " Three ticks: start insert + change + write + let expected = b:changedtick + 3 + normal! ochanged + w + call assert_equal(expected, b:changedtick) + + bwipe + call delete(fname) +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_changelist.vim b/src/testdir/test_changelist.vim new file mode 100644 index 0000000..c9d8ea4 --- /dev/null +++ b/src/testdir/test_changelist.vim @@ -0,0 +1,105 @@ +" Tests for the changelist functionality + +" When splitting a window the changelist position is wrong. +" Test the changelist position after splitting a window. +" Test for the bug fixed by 7.4.386 +func Test_changelist() + let save_ul = &ul + enew! + call append('$', ['1', '2']) + exe "normal i\u" + exe "normal Gkylpa\u" + set ul=100 + exe "normal Gylpa\u" + set ul=100 + normal gg + vsplit + normal g; + call assert_equal([3, 2], [line('.'), col('.')]) + normal g; + call assert_equal([2, 2], [line('.'), col('.')]) + call assert_fails('normal g;', 'E662:') + new + call assert_fails('normal g;', 'E664:') + %bwipe! + let &ul = save_ul +endfunc + +" Moving a split should not change its changelist index. +func Test_changelist_index_move_split() + exe "norm! iabc\u\ndef\u\nghi" + vsplit + normal 99g; + call assert_equal(0, getchangelist('%')[1]) + wincmd L + call assert_equal(0, getchangelist('%')[1]) +endfunc + +" Tests for the getchangelist() function +func Test_changelist_index() + edit Xgclfile1.txt + exe "normal iabc\u\ndef\u\nghi" + call assert_equal(3, getchangelist('%')[1]) + " Move one step back in the changelist. + normal 2g; + + hide edit Xgclfile2.txt + exe "normal iabcd\u\ndefg\u\nghij" + call assert_equal(3, getchangelist('%')[1]) + " Move to the beginning of the changelist. + normal 99g; + + " Check the changelist indices. + call assert_equal(0, getchangelist('%')[1]) + call assert_equal(1, getchangelist('#')[1]) + + bwipe! + call delete('Xgclfile1.txt') + call delete('Xgclfile2.txt') +endfunc + +func Test_getchangelist() + bwipe! + enew + call assert_equal([], 10->getchangelist()) + call assert_equal([[], 0], getchangelist()) + + call writefile(['line1', 'line2', 'line3'], 'Xclistfile1.txt', 'D') + call writefile(['line1', 'line2', 'line3'], 'Xclistfile2.txt', 'D') + + edit Xclistfile1.txt + let buf_1 = bufnr() + exe "normal 1Goline\u1.1" + exe "normal 3Goline\u2.1" + exe "normal 5Goline\u3.1" + normal g; + call assert_equal([[ + \ {'lnum' : 2, 'col' : 4, 'coladd' : 0}, + \ {'lnum' : 4, 'col' : 4, 'coladd' : 0}, + \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2], + \ getchangelist('%')) + + hide edit Xclistfile2.txt + let buf_2 = bufnr() + exe "normal 1GOline\u1.0" + exe "normal 2Goline\u2.0" + call assert_equal([[ + \ {'lnum' : 1, 'col' : 6, 'coladd' : 0}, + \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2], + \ getchangelist('%')) + hide enew + + call assert_equal([[ + \ {'lnum' : 2, 'col' : 4, 'coladd' : 0}, + \ {'lnum' : 4, 'col' : 4, 'coladd' : 0}, + \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2], + \ getchangelist(buf_1)) + call assert_equal([[ + \ {'lnum' : 1, 'col' : 6, 'coladd' : 0}, + \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2], + \ getchangelist(buf_2)) + + bwipe! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_channel.py b/src/testdir/test_channel.py new file mode 100644 index 0000000..35c34fc --- /dev/null +++ b/src/testdir/test_channel.py @@ -0,0 +1,288 @@ +#!/usr/bin/env python +# +# Server that will accept connections from a Vim channel. +# Used by test_channel.vim. +# +# This requires Python 2.6 or later. + +from __future__ import print_function +import json +import socket +import sys +import time +import threading + +try: + # Python 3 + import socketserver +except ImportError: + # Python 2 + import SocketServer as socketserver + +class TestingRequestHandler(socketserver.BaseRequestHandler): + def handle(self): + print("=== socket opened ===") + while True: + try: + received = self.request.recv(4096).decode('utf-8') + except socket.error: + print("=== socket error ===") + break + except IOError: + print("=== socket closed ===") + break + if received == '': + print("=== socket closed ===") + break + print("received: {0}".format(received)) + + # We may receive two messages at once. Take the part up to the + # newline, which should be after the matching "]". + todo = received + while todo != '': + splitidx = todo.find('\n') + if splitidx < 0: + used = todo + todo = '' + else: + used = todo[:splitidx] + todo = todo[splitidx + 1:] + if used != received: + print("using: {0}".format(used)) + + try: + decoded = json.loads(used) + except ValueError: + print("json decoding failed") + decoded = [-1, ''] + + # Send a response if the sequence number is positive. + if decoded[0] >= 0: + if decoded[1] == 'hello!': + # simply send back a string + response = "got it" + elif decoded[1] == 'malformed1': + cmd = '["ex",":"]wrong!["ex","smi"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + # Need to wait for Vim to give up, otherwise it + # sometimes fails on OS X. + time.sleep(0.2) + elif decoded[1] == 'malformed2': + cmd = '"unterminated string' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + # Need to wait for Vim to give up, otherwise the double + # quote in the "ok" response terminates the string. + time.sleep(0.2) + elif decoded[1] == 'malformed3': + cmd = '["ex","missing ]"' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + # Need to wait for Vim to give up, otherwise the ] + # in the "ok" response terminates the list. + time.sleep(0.2) + elif decoded[1] == 'split': + cmd = '["ex","let ' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + time.sleep(0.01) + cmd = 'g:split = 123"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1].startswith("echo "): + # send back the argument + response = decoded[1][5:] + elif decoded[1] == 'make change': + # Send two ex commands at the same time, before + # replying to the request. + cmd = '["ex","call append(\\"$\\",\\"added1\\")"]' + cmd += '["ex","call append(\\"$\\",\\"added2\\")"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'echoerr': + cmd = '["ex","echoerr \\\"this is an error\\\""]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + # Wait a bit, so that the "ex" command is handled + # before the "ch_evalexpr() returns. Otherwise we are + # outside the try/catch when the "ex" command is + # handled. + time.sleep(0.02) + elif decoded[1] == 'bad command': + cmd = '["ex","foo bar"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'do normal': + # Send a normal command. + cmd = '["normal","G$s more\u001b"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'eval-works': + # Send an eval request. We ignore the response. + cmd = '["expr","\\"foo\\" . 123", -1]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'eval-special': + # Send an eval request. We ignore the response. + cmd = '["expr","\\"foo\x7f\x10\x01bar\\"", -2]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'eval-getline': + # Send an eval request. We ignore the response. + cmd = '["expr","getline(3)", -3]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'eval-fails': + # Send an eval request that will fail. + cmd = '["expr","xxx", -4]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'eval-error': + # Send an eval request that works but the result can't + # be encoded. + cmd = '["expr","function(\\"tr\\")", -5]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'eval-bad': + # Send an eval request missing the third argument. + cmd = '["expr","xxx"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'an expr': + # Send an expr request. + cmd = '["expr","setline(\\"$\\", [\\"one\\",\\"two\\",\\"three\\"])"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'call-func': + cmd = '["call","MyFunction",[1,2,3], 0]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'redraw': + cmd = '["redraw",""]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'redraw!': + cmd = '["redraw","force"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'empty-request': + cmd = '[]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'eval-result': + # Send back the last received eval result. + response = last_eval + elif decoded[1] == 'call me': + cmd = '[0,"we called you"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" + elif decoded[1] == 'call me again': + cmd = '[0,"we did call you"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "" + elif decoded[1] == 'send zero': + cmd = '[0,"zero index"]' + print("sending: {0}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "sent zero" + elif decoded[1] == 'close me': + print("closing") + self.request.close() + response = "" + elif decoded[1] == 'wait a bit': + time.sleep(0.2) + response = "waited" + elif decoded[1] == '!quit!': + # we're done + self.server.shutdown() + return + elif decoded[1] == '!crash!': + # Crash! + 42 / 0 + else: + response = "what?" + + if response == "": + print("no response") + else: + encoded = json.dumps([decoded[0], response]) + print("sending: {0}".format(encoded)) + self.request.sendall(encoded.encode('utf-8')) + + # Negative numbers are used for "eval" responses. + elif decoded[0] < 0: + last_eval = decoded + +class ThreadedTCPRequestHandler(TestingRequestHandler): + def setup(self): + self.request.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + +class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): + pass + +def writePortInFile(port): + # Write the port number in Xportnr, so that the test knows it. + f = open("Xportnr", "w") + f.write("{0}".format(port)) + f.close() + +def main(host, port, server_class=ThreadedTCPServer): + # Wait half a second before opening the port to test waittime in ch_open(). + # We do want to get the port number, get that first. We cannot open the + # socket, guess a port is free. + if len(sys.argv) >= 2 and sys.argv[1] == 'delay': + port = 13684 + writePortInFile(port) + + print("Wait for it...") + time.sleep(0.5) + + addrs = socket.getaddrinfo(host, port, 0, 0, socket.IPPROTO_TCP) + # Each addr is a (family, type, proto, canonname, sockaddr) tuple + sockaddr = addrs[0][4] + server_class.address_family = addrs[0][0] + + server = server_class(sockaddr[0:2], ThreadedTCPRequestHandler) + ip, port = server.server_address[0:2] + + # Start a thread with the server. That thread will then start a new thread + # for each connection. + server_thread = threading.Thread(target=server.serve_forever) + server_thread.start() + + writePortInFile(port) + + print("Listening on port {0}".format(port)) + + # Main thread terminates, but the server continues running + # until server.shutdown() is called. + try: + while server_thread.is_alive(): + server_thread.join(1) + except (KeyboardInterrupt, SystemExit): + server.shutdown() + +if __name__ == "__main__": + main("localhost", 0) diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim new file mode 100644 index 0000000..a6b25c9 --- /dev/null +++ b/src/testdir/test_channel.vim @@ -0,0 +1,2696 @@ +" Test for channel and job functions. + +" When +channel is supported then +job is too, so we don't check for that. +source check.vim +CheckFeature channel + +source shared.vim +source screendump.vim +source view_util.vim + +let s:python = PythonProg() +if s:python == '' + " Can't run this test without Python. + throw 'Skipped: Python command missing' +endif + +" Uncomment the next line to see what happens. Output is in +" src/testdir/channellog. +" Add ch_log() calls where you want to see what happens. +" call ch_logfile('channellog', 'w') + +func SetUp() + if g:testfunc =~ '_ipv6()$' + let s:localhost = '[::1]:' + let s:testscript = 'test_channel_6.py' + elseif g:testfunc =~ '_unix()$' + let s:localhost = 'unix:Xtestsocket' + let s:testscript = 'test_channel_unix.py' + else + let s:localhost = 'localhost:' + let s:testscript = 'test_channel.py' + endif + let s:chopt = {} + call ch_log(g:testfunc) + + " Most tests use job_start(), which can be flaky + let g:test_is_flaky = 1 +endfunc + +" Run "testfunc" after starting the server and stop the server afterwards. +func s:run_server(testfunc, ...) + call RunServer(s:testscript, a:testfunc, a:000) +endfunc + +" Returns the address of the test server. +func s:address(port) + if s:localhost =~ '^unix:' + return s:localhost + else + return s:localhost . a:port + end +endfunc + +" Return a list of open files. +" Can be used to make sure no resources leaked. +" Returns an empty list on systems where this is not supported. +func s:get_resources() + let pid = getpid() + + if executable('lsof') + return systemlist('lsof -p ' . pid . ' | awk ''$4~/^[0-9]*[rwu]$/&&$5=="REG"{print$NF}''') + elseif isdirectory('/proc/' . pid . '/fd/') + return systemlist('readlink /proc/' . pid . '/fd/* | grep -v ''^/dev/''') + else + return [] + endif +endfunc + +let g:Ch_responseMsg = '' +func Ch_requestHandler(handle, msg) + let g:Ch_responseHandle = a:handle + let g:Ch_responseMsg = a:msg +endfunc + +func Ch_communicate(port) + " Avoid dropping messages, since we don't use a callback here. + let s:chopt.drop = 'never' + " Also add the noblock flag to try it out. + let s:chopt.noblock = 1 + let handle = ch_open(s:address(a:port), s:chopt) + if ch_status(handle) == "fail" + call assert_report("Can't open channel") + return + endif + + " check that getjob without a job is handled correctly + call assert_equal('no process', string(ch_getjob(handle))) + + let dict = handle->ch_info() + call assert_true(dict.id != 0) + call assert_equal('open', dict.status) + if has_key(dict, 'port') + " Channels using Unix sockets have no 'port' entry. + call assert_equal(a:port, string(dict.port)) + end + call assert_equal('open', dict.sock_status) + call assert_equal('socket', dict.sock_io) + + " Simple string request and reply. + call assert_equal('got it', ch_evalexpr(handle, 'hello!')) + + " Malformed command should be ignored. + call assert_equal('ok', ch_evalexpr(handle, 'malformed1')) + call assert_equal('ok', ch_evalexpr(handle, 'malformed2')) + call assert_equal('ok', ch_evalexpr(handle, 'malformed3')) + + " split command should work + call assert_equal('ok', ch_evalexpr(handle, 'split')) + call WaitFor('exists("g:split")') + call assert_equal(123, g:split) + + " string with ][ should work + call assert_equal('this][that', ch_evalexpr(handle, 'echo this][that')) + + " nothing to read now + call assert_equal(0, ch_canread(handle)) + + " sending three messages quickly then reading should work + for i in range(3) + call ch_sendexpr(handle, 'echo hello ' . i) + endfor + call assert_equal('hello 0', ch_read(handle)[1]) + call assert_equal('hello 1', ch_read(handle)[1]) + call assert_equal('hello 2', ch_read(handle)[1]) + + " Request that triggers sending two ex commands. These will usually be + " handled before getting the response, but it's not guaranteed, thus wait a + " tiny bit for the commands to get executed. + call assert_equal('ok', ch_evalexpr(handle, 'make change')) + call WaitForAssert({-> assert_equal("added2", getline("$"))}) + call assert_equal('added1', getline(line('$') - 1)) + + " Request command "echoerr 'this is an error'". + " This will throw an exception, catch it here. + let caught = 'no' + try + call assert_equal('ok', ch_evalexpr(handle, 'echoerr')) + catch /this is an error/ + let caught = 'yes' + endtry + if caught != 'yes' + call assert_report("Expected exception from error message") + endif + + " Request command "foo bar", which fails silently. + call assert_equal('ok', ch_evalexpr(handle, 'bad command')) + call WaitForAssert({-> assert_match("E492:.*foo bar", v:errmsg)}) + + call assert_equal('ok', ch_evalexpr(handle, 'do normal', {'timeout': 100})) + call WaitForAssert({-> assert_equal('added more', getline('$'))}) + + " Send a request with a specific handler. + call ch_sendexpr(handle, 'hello!', {'callback': 'Ch_requestHandler'}) + call WaitFor('exists("g:Ch_responseHandle")') + if !exists('g:Ch_responseHandle') + call assert_report('g:Ch_responseHandle was not set') + else + call assert_equal(handle, g:Ch_responseHandle) + unlet g:Ch_responseHandle + endif + call assert_equal('got it', g:Ch_responseMsg) + + let g:Ch_responseMsg = '' + call ch_sendexpr(handle, 'hello!', {'callback': function('Ch_requestHandler')}) + call WaitFor('exists("g:Ch_responseHandle")') + if !exists('g:Ch_responseHandle') + call assert_report('g:Ch_responseHandle was not set') + else + call assert_equal(handle, g:Ch_responseHandle) + unlet g:Ch_responseHandle + endif + call assert_equal('got it', g:Ch_responseMsg) + + " Using lambda. + let g:Ch_responseMsg = '' + call ch_sendexpr(handle, 'hello!', {'callback': {a, b -> Ch_requestHandler(a, b)}}) + call WaitFor('exists("g:Ch_responseHandle")') + if !exists('g:Ch_responseHandle') + call assert_report('g:Ch_responseHandle was not set') + else + call assert_equal(handle, g:Ch_responseHandle) + unlet g:Ch_responseHandle + endif + call assert_equal('got it', g:Ch_responseMsg) + + " Collect garbage, tests that our handle isn't collected. + call test_garbagecollect_now() + + " check setting options (without testing the effect) + eval handle->ch_setoptions({'callback': 's:NotUsed'}) + call ch_setoptions(handle, {'timeout': 1111}) + call ch_setoptions(handle, {'mode': 'json'}) + call assert_fails("call ch_setoptions(handle, {'waittime': 111})", 'E475:') + call ch_setoptions(handle, {'callback': ''}) + call ch_setoptions(handle, {'drop': 'never'}) + call ch_setoptions(handle, {'drop': 'auto'}) + call assert_fails("call ch_setoptions(handle, {'drop': 'bad'})", 'E475:') + call assert_equal(0, ch_setoptions(handle, test_null_dict())) + call assert_equal(0, ch_setoptions(test_null_channel(), {'drop' : 'never'})) + + " Send an eval request that works. + call assert_equal('ok', ch_evalexpr(handle, 'eval-works')) + sleep 10m + call assert_equal([-1, 'foo123'], ch_evalexpr(handle, 'eval-result')) + + " Send an eval request with special characters. + call assert_equal('ok', ch_evalexpr(handle, 'eval-special')) + sleep 10m + call assert_equal([-2, "foo\x7f\x10\x01bar"], ch_evalexpr(handle, 'eval-result')) + + " Send an eval request to get a line with special characters. + call setline(3, "a\nb\c\x01d\x7fe") + call assert_equal('ok', ch_evalexpr(handle, 'eval-getline')) + sleep 10m + call assert_equal([-3, "a\nb\c\x01d\x7fe"], ch_evalexpr(handle, 'eval-result')) + + " Send an eval request that fails. + call assert_equal('ok', ch_evalexpr(handle, 'eval-fails')) + sleep 10m + call assert_equal([-4, 'ERROR'], ch_evalexpr(handle, 'eval-result')) + + " Send an eval request that works but can't be encoded. + call assert_equal('ok', ch_evalexpr(handle, 'eval-error')) + sleep 10m + call assert_equal([-5, 'ERROR'], ch_evalexpr(handle, 'eval-result')) + + " Send a bad eval request. There will be no response. + call assert_equal('ok', ch_evalexpr(handle, 'eval-bad')) + sleep 10m + call assert_equal([-5, 'ERROR'], ch_evalexpr(handle, 'eval-result')) + + " Send an expr request + call assert_equal('ok', ch_evalexpr(handle, 'an expr')) + call WaitForAssert({-> assert_equal('three', getline('$'))}) + call assert_equal('one', getline(line('$') - 2)) + call assert_equal('two', getline(line('$') - 1)) + + " Request a redraw, we don't check for the effect. + call assert_equal('ok', ch_evalexpr(handle, 'redraw')) + call assert_equal('ok', ch_evalexpr(handle, 'redraw!')) + + call assert_equal('ok', ch_evalexpr(handle, 'empty-request')) + + " Reading while there is nothing available. + call assert_equal(v:none, ch_read(handle, {'timeout': 0})) + if exists('*reltimefloat') + let start = reltime() + call assert_equal(v:none, ch_read(handle, {'timeout': 333})) + let elapsed = reltime(start) + call assert_inrange(0.3, 0.6, reltimefloat(reltime(start))) + endif + + " Send without waiting for a response, then wait for a response. + call ch_sendexpr(handle, 'wait a bit') + let resp = ch_read(handle) + call assert_equal(type([]), type(resp)) + call assert_equal(type(11), type(resp[0])) + call assert_equal('waited', resp[1]) + + " make the server quit, can't check if this works, should not hang. + call ch_sendexpr(handle, '!quit!') +endfunc + +func Test_communicate() + call s:run_server('Ch_communicate') +endfunc + +func Test_communicate_ipv6() + CheckIPv6 + call Test_communicate() +endfunc + +func Test_communicate_unix() + CheckUnix + call Test_communicate() + call delete('Xtestsocket') +endfunc + + +" Test that we can open two channels. +func Ch_two_channels(port) + let handle = ch_open(s:address(a:port), s:chopt) + call assert_equal(v:t_channel, type(handle)) + if handle->ch_status() == "fail" + call assert_report("Can't open channel") + return + endif + + call assert_equal('got it', ch_evalexpr(handle, 'hello!')) + + let newhandle = ch_open(s:address(a:port), s:chopt) + if ch_status(newhandle) == "fail" + call assert_report("Can't open second channel") + return + endif + call assert_equal('got it', ch_evalexpr(newhandle, 'hello!')) + call assert_equal('got it', ch_evalexpr(handle, 'hello!')) + + call ch_close(handle) + call assert_equal('got it', ch_evalexpr(newhandle, 'hello!')) + + call ch_close(newhandle) + call assert_fails("call ch_close(newhandle)", 'E906:') +endfunc + +func Test_two_channels() + eval 'Test_two_channels()'->ch_log() + call s:run_server('Ch_two_channels') +endfunc + +func Test_two_channels_ipv6() + CheckIPv6 + call Test_two_channels() +endfunc + +func Test_two_channels_unix() + CheckUnix + call Test_two_channels() + call delete('Xtestsocket') +endfunc + +" Test that a server crash is handled gracefully. +func Ch_server_crash(port) + let handle = ch_open(s:address(a:port), s:chopt) + if ch_status(handle) == "fail" + call assert_report("Can't open channel") + return + endif + + call ch_evalexpr(handle, '!crash!') + + sleep 10m +endfunc + +func Test_server_crash() + call s:run_server('Ch_server_crash') +endfunc + +func Test_server_crash_ipv6() + CheckIPv6 + call Test_server_crash() +endfunc + +func Test_server_crash_unix() + CheckUnix + call Test_server_crash() + call delete('Xtestsocket') +endfunc + +""""""""" + +func Ch_handler(chan, msg) + call ch_log('Ch_handler()') + unlet g:Ch_reply + let g:Ch_reply = a:msg +endfunc + +func Ch_channel_handler(port) + let handle = ch_open(s:address(a:port), s:chopt) + if ch_status(handle) == "fail" + call assert_report("Can't open channel") + return + endif + + " Test that it works while waiting on a numbered message. + call assert_equal('ok', ch_evalexpr(handle, 'call me')) + call WaitForAssert({-> assert_equal('we called you', g:Ch_reply)}) + + " Test that it works while not waiting on a numbered message. + call ch_sendexpr(handle, 'call me again') + call WaitForAssert({-> assert_equal('we did call you', g:Ch_reply)}) +endfunc + +func Test_channel_handler() + let g:Ch_reply = "" + let s:chopt.callback = 'Ch_handler' + call s:run_server('Ch_channel_handler') + let g:Ch_reply = "" + let s:chopt.callback = function('Ch_handler') + call s:run_server('Ch_channel_handler') +endfunc + +func Test_channel_handler_ipv6() + CheckIPv6 + call Test_channel_handler() +endfunc + +func Test_channel_handler_unix() + CheckUnix + call Test_channel_handler() + call delete('Xtestsocket') +endfunc + +""""""""" + +let g:Ch_reply = '' +func Ch_zeroHandler(chan, msg) + unlet g:Ch_reply + let g:Ch_reply = a:msg +endfunc + +let g:Ch_zero_reply = '' +func Ch_oneHandler(chan, msg) + unlet g:Ch_zero_reply + let g:Ch_zero_reply = a:msg +endfunc + +func Ch_channel_zero(port) + let handle = (s:address(a:port))->ch_open(s:chopt) + if ch_status(handle) == "fail" + call assert_report("Can't open channel") + return + endif + + " Check that eval works. + call assert_equal('got it', ch_evalexpr(handle, 'hello!')) + + " Check that eval works if a zero id message is sent back. + let g:Ch_reply = '' + call assert_equal('sent zero', ch_evalexpr(handle, 'send zero')) + if s:has_handler + call WaitForAssert({-> assert_equal('zero index', g:Ch_reply)}) + else + sleep 20m + call assert_equal('', g:Ch_reply) + endif + + " Check that handler works if a zero id message is sent back. + let g:Ch_reply = '' + let g:Ch_zero_reply = '' + call ch_sendexpr(handle, 'send zero', {'callback': 'Ch_oneHandler'}) + call WaitForAssert({-> assert_equal('sent zero', g:Ch_zero_reply)}) + if s:has_handler + call assert_equal('zero index', g:Ch_reply) + else + call assert_equal('', g:Ch_reply) + endif +endfunc + +func Test_zero_reply() + " Run with channel handler + let s:has_handler = 1 + let s:chopt.callback = 'Ch_zeroHandler' + call s:run_server('Ch_channel_zero') + unlet s:chopt.callback + + " Run without channel handler + let s:has_handler = 0 + call s:run_server('Ch_channel_zero') +endfunc + +func Test_zero_reply_ipv6() + CheckIPv6 + call Test_zero_reply() +endfunc + +func Test_zero_reply_unix() + CheckUnix + call Test_zero_reply() + call delete('Xtestsocket') +endfunc + + +""""""""" + +let g:Ch_reply1 = "" +func Ch_handleRaw1(chan, msg) + unlet g:Ch_reply1 + let g:Ch_reply1 = a:msg +endfunc + +let g:Ch_reply2 = "" +func Ch_handleRaw2(chan, msg) + unlet g:Ch_reply2 + let g:Ch_reply2 = a:msg +endfunc + +let g:Ch_reply3 = "" +func Ch_handleRaw3(chan, msg) + unlet g:Ch_reply3 + let g:Ch_reply3 = a:msg +endfunc + +func Ch_raw_one_time_callback(port) + let handle = ch_open(s:address(a:port), s:chopt) + if ch_status(handle) == "fail" + call assert_report("Can't open channel") + return + endif + call ch_setoptions(handle, {'mode': 'raw'}) + + " The messages are sent raw, we do our own JSON strings here. + call ch_sendraw(handle, "[1, \"hello!\"]\n", {'callback': 'Ch_handleRaw1'}) + call WaitForAssert({-> assert_equal("[1, \"got it\"]", g:Ch_reply1)}) + call ch_sendraw(handle, "[2, \"echo something\"]\n", {'callback': 'Ch_handleRaw2'}) + call ch_sendraw(handle, "[3, \"wait a bit\"]\n", {'callback': 'Ch_handleRaw3'}) + call WaitForAssert({-> assert_equal("[2, \"something\"]", g:Ch_reply2)}) + " wait for the 200 msec delayed reply + call WaitForAssert({-> assert_equal("[3, \"waited\"]", g:Ch_reply3)}) +endfunc + +func Test_raw_one_time_callback() + call s:run_server('Ch_raw_one_time_callback') +endfunc + +func Test_raw_one_time_callback_ipv6() + CheckIPv6 + call Test_raw_one_time_callback() +endfunc + +func Test_raw_one_time_callback_unix() + CheckUnix + call Test_raw_one_time_callback() + call delete('Xtestsocket') +endfunc + +""""""""" + +" Test that trying to connect to a non-existing port fails quickly. +func Test_connect_waittime() + CheckFunction reltimefloat + " this is timing sensitive + + let start = reltime() + let handle = ch_open('localhost:9876', s:chopt) + if ch_status(handle) != "fail" + " Oops, port does exists. + call ch_close(handle) + else + let elapsed = reltime(start) + call assert_inrange(0.0, 1.0, reltimefloat(elapsed)) + endif + + " We intend to use a socket that doesn't exist and wait for half a second + " before giving up. If the socket does exist it can fail in various ways. + " Check for "Connection reset by peer" to avoid flakiness. + let start = reltime() + try + let handle = ch_open('localhost:9867', {'waittime': 500}) + if ch_status(handle) != "fail" + " Oops, port does exists. + call ch_close(handle) + else + " Failed connection should wait about 500 msec. Can be longer if the + " computer is busy with other things. + call assert_inrange(0.3, 1.5, reltimefloat(reltime(start))) + endif + catch + if v:exception !~ 'Connection reset by peer' + call assert_report("Caught exception: " . v:exception) + endif + endtry +endfunc + +""""""""" + +func Test_raw_pipe() + " Add a dummy close callback to avoid that messages are dropped when calling + " ch_canread(). + " Also test the non-blocking option. + let job = job_start(s:python . " test_channel_pipe.py", + \ {'mode': 'raw', 'drop': 'never', 'noblock': 1}) + call assert_equal(v:t_job, type(job)) + call assert_equal("run", job_status(job)) + + call assert_equal("open", ch_status(job)) + call assert_equal("open", ch_status(job), {"part": "out"}) + call assert_equal("open", ch_status(job), {"part": "err"}) + call assert_fails('call ch_status(job, {"in_mode": "raw"})', 'E475:') + call assert_fails('call ch_status(job, {"part": "in"})', 'E475:') + + let dict = ch_info(job) + call assert_true(dict.id != 0) + call assert_equal('open', dict.status) + call assert_equal('open', dict.out_status) + call assert_equal('RAW', dict.out_mode) + call assert_equal('pipe', dict.out_io) + call assert_equal('open', dict.err_status) + call assert_equal('RAW', dict.err_mode) + call assert_equal('pipe', dict.err_io) + + try + " For a change use the job where a channel is expected. + call ch_sendraw(job, "echo something\n") + let msg = ch_readraw(job) + call assert_equal("something\n", substitute(msg, "\r", "", 'g')) + + call ch_sendraw(job, "double this\n") + let g:handle = job->job_getchannel() + call WaitFor('g:handle->ch_canread()') + unlet g:handle + let msg = ch_readraw(job) + call assert_equal("this\nAND this\n", substitute(msg, "\r", "", 'g')) + + let g:Ch_reply = "" + call ch_sendraw(job, "double this\n", {'callback': 'Ch_handler'}) + call WaitForAssert({-> assert_equal("this\nAND this\n", substitute(g:Ch_reply, "\r", "", 'g'))}) + + call assert_fails("let i = ch_evalraw(job, '2 + 2', {'callback' : 'abc'})", 'E917:') + call assert_fails("let i = ch_evalexpr(job, '2 + 2')", 'E912:') + call assert_fails("let i = ch_evalraw(job, '2 + 2', {'drop' : ''})", 'E475:') + call assert_fails("let i = ch_evalraw(test_null_job(), '2 + 2')", 'E906:') + + let reply = job->ch_evalraw("quit\n", {'timeout': 100}) + call assert_equal("Goodbye!\n", substitute(reply, "\r", "", 'g')) + finally + call job_stop(job) + endtry + + let g:Ch_job = job + call WaitForAssert({-> assert_equal("dead", job_status(g:Ch_job))}) + let info = job->job_info() + call assert_equal("dead", info.status) + call assert_equal("term", info.stoponexit) + call assert_equal(2, len(info.cmd)) + call assert_equal("test_channel_pipe.py", info.cmd[1]) + + let found = 0 + for j in job_info() + if j == job + let found += 1 + endif + endfor + call assert_equal(1, found) + + call assert_fails("call job_stop('abc')", 'E475:') + call assert_fails("call job_stop(job, [])", 'E730:') + call assert_fails("call job_stop(test_null_job())", 'E916:') + + " Try to use the job and channel where a number is expected. This is not + " related to testing the raw pipe. This test is here just to reuse the + " already created job/channel. + let ch = job_getchannel(job) + call assert_fails('let i = job + 1', 'E910:') + call assert_fails('let j = ch + 1', 'E913:') + call assert_fails('echo 2.0 == job', 'E911:') + call assert_fails('echo 2.0 == ch', 'E914:') +endfunc + +func Test_raw_pipe_blob() + " Add a dummy close callback to avoid that messages are dropped when calling + " ch_canread(). + " Also test the non-blocking option. + let job = job_start(s:python . " test_channel_pipe.py", + \ {'mode': 'raw', 'drop': 'never', 'noblock': 1}) + call assert_equal(v:t_job, type(job)) + call assert_equal("run", job_status(job)) + + call assert_equal("open", ch_status(job)) + call assert_equal("open", ch_status(job), {"part": "out"}) + + try + " Create a blob with the echo command and write it. + let blob = 0z00 + let cmd = "echo something\n" + for i in range(0, len(cmd) - 1) + let blob[i] = char2nr(cmd[i]) + endfor + call assert_equal(len(cmd), len(blob)) + call ch_sendraw(job, blob) + + " Read a blob with the reply. + let msg = job->ch_readblob() + let expected = 'something' + for i in range(0, len(expected) - 1) + call assert_equal(char2nr(expected[i]), msg[i]) + endfor + + let reply = ch_evalraw(job, "quit\n", {'timeout': 100}) + call assert_equal("Goodbye!\n", substitute(reply, "\r", "", 'g')) + finally + call job_stop(job) + endtry + + let g:Ch_job = job + call WaitForAssert({-> assert_equal("dead", job_status(g:Ch_job))}) + let info = job_info(job) + call assert_equal("dead", info.status) +endfunc + +func Test_nl_pipe() + let job = job_start([s:python, "test_channel_pipe.py"]) + call assert_equal("run", job_status(job)) + try + let handle = job_getchannel(job) + call ch_sendraw(handle, "echo something\n") + call assert_equal("something", handle->ch_readraw()) + + call ch_sendraw(handle, "echoerr wrong\n") + call assert_equal("wrong", ch_readraw(handle, {'part': 'err'})) + + call ch_sendraw(handle, "double this\n") + call assert_equal("this", ch_readraw(handle)) + call assert_equal("AND this", ch_readraw(handle)) + + call ch_sendraw(handle, "split this line\n") + call assert_equal("this linethis linethis line", handle->ch_read()) + + let reply = ch_evalraw(handle, "quit\n") + call assert_equal("Goodbye!", reply) + finally + call job_stop(job) + endtry +endfunc + +func Stop_g_job() + call job_stop(g:job) + if has('win32') + " On MS-Windows the server must close the file handle before we are able + " to delete the file. + call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) + sleep 10m + endif +endfunc + +func Test_nl_read_file() + call writefile(['echo something', 'echoerr wrong', 'double this'], 'Xinput', 'D') + let g:job = job_start(s:python . " test_channel_pipe.py", + \ {'in_io': 'file', 'in_name': 'Xinput'}) + call assert_equal("run", job_status(g:job)) + try + let handle = job_getchannel(g:job) + call assert_equal("something", ch_readraw(handle)) + call assert_equal("wrong", ch_readraw(handle, {'part': 'err'})) + call assert_equal("this", ch_readraw(handle)) + call assert_equal("AND this", ch_readraw(handle)) + finally + call Stop_g_job() + endtry + call assert_fails("echo ch_read(test_null_channel(), {'callback' : 'abc'})", 'E475:') +endfunc + +func Test_nl_write_out_file() + let g:job = job_start(s:python . " test_channel_pipe.py", + \ {'out_io': 'file', 'out_name': 'Xoutput'}) + call assert_equal("run", job_status(g:job)) + try + let handle = job_getchannel(g:job) + call ch_sendraw(handle, "echo line one\n") + call ch_sendraw(handle, "echo line two\n") + call ch_sendraw(handle, "double this\n") + call WaitForAssert({-> assert_equal(['line one', 'line two', 'this', 'AND this'], readfile('Xoutput'))}) + finally + call Stop_g_job() + call assert_equal(-1, match(s:get_resources(), '\(^\|/\)Xoutput$')) + call delete('Xoutput') + endtry +endfunc + +func Test_nl_write_err_file() + let g:job = job_start(s:python . " test_channel_pipe.py", + \ {'err_io': 'file', 'err_name': 'Xoutput'}) + call assert_equal("run", job_status(g:job)) + try + let handle = job_getchannel(g:job) + call ch_sendraw(handle, "echoerr line one\n") + call ch_sendraw(handle, "echoerr line two\n") + call ch_sendraw(handle, "doubleerr this\n") + call WaitForAssert({-> assert_equal(['line one', 'line two', 'this', 'AND this'], readfile('Xoutput'))}) + finally + call Stop_g_job() + call delete('Xoutput') + endtry +endfunc + +func Test_nl_write_both_file() + let g:job = job_start(s:python . " test_channel_pipe.py", + \ {'out_io': 'file', 'out_name': 'Xoutput', 'err_io': 'out'}) + call assert_equal("run", job_status(g:job)) + try + let handle = job_getchannel(g:job) + call ch_sendraw(handle, "echoerr line one\n") + call ch_sendraw(handle, "echo line two\n") + call ch_sendraw(handle, "double this\n") + call ch_sendraw(handle, "doubleerr that\n") + call WaitForAssert({-> assert_equal(['line one', 'line two', 'this', 'AND this', 'that', 'AND that'], readfile('Xoutput'))}) + finally + call Stop_g_job() + call assert_equal(-1, match(s:get_resources(), '\(^\|/\)Xoutput$')) + call delete('Xoutput') + endtry +endfunc + +func BufCloseCb(ch) + let g:Ch_bufClosed = 'yes' +endfunc + +func Run_test_pipe_to_buffer(use_name, nomod, do_msg) + let g:Ch_bufClosed = 'no' + let options = {'out_io': 'buffer', 'close_cb': 'BufCloseCb'} + let expected = ['', 'line one', 'line two', 'this', 'AND this', 'Goodbye!'] + if a:use_name + let options['out_name'] = 'pipe-output' + if a:do_msg + let expected[0] = 'Reading from channel output...' + else + let options['out_msg'] = 0 + call remove(expected, 0) + endif + else + sp pipe-output + let options['out_buf'] = bufnr('%') + quit + call remove(expected, 0) + endif + if a:nomod + let options['out_modifiable'] = 0 + endif + let job = job_start(s:python . " test_channel_pipe.py", options) + call assert_equal("run", job_status(job)) + try + let handle = job_getchannel(job) + call ch_sendraw(handle, "echo line one\n") + call ch_sendraw(handle, "echo line two\n") + call ch_sendraw(handle, "double this\n") + call ch_sendraw(handle, "quit\n") + sp pipe-output + call WaitFor('line("$") == ' . len(expected) . ' && g:Ch_bufClosed == "yes"') + call assert_equal(expected, getline(1, '$')) + if a:nomod + call assert_equal(0, &modifiable) + else + call assert_equal(1, &modifiable) + endif + call assert_equal('yes', g:Ch_bufClosed) + bwipe! + finally + call job_stop(job) + endtry +endfunc + +func Test_pipe_to_buffer_name() + call Run_test_pipe_to_buffer(1, 0, 1) +endfunc + +func Test_pipe_to_buffer_nr() + call Run_test_pipe_to_buffer(0, 0, 1) +endfunc + +func Test_pipe_to_buffer_name_nomod() + call Run_test_pipe_to_buffer(1, 1, 1) +endfunc + +func Test_pipe_to_buffer_name_nomsg() + call Run_test_pipe_to_buffer(1, 0, 1) +endfunc + +func Test_close_output_buffer() + let g:test_is_flaky = 1 + enew! + let test_lines = ['one', 'two'] + call setline(1, test_lines) + let options = {'out_io': 'buffer'} + let options['out_name'] = 'buffer-output' + let options['out_msg'] = 0 + split buffer-output + let job = job_start(s:python . " test_channel_write.py", options) + call assert_equal("run", job_status(job)) + try + call WaitForAssert({-> assert_equal(3, line('$'))}) + quit! + sleep 100m + " Make sure the write didn't happen to the wrong buffer. + call assert_equal(test_lines, getline(1, line('$'))) + call assert_equal(-1, bufwinnr('buffer-output')) + sbuf buffer-output + call assert_notequal(-1, bufwinnr('buffer-output')) + sleep 100m + close " no more writes + bwipe! + finally + call job_stop(job) + endtry +endfunc + +func Run_test_pipe_err_to_buffer(use_name, nomod, do_msg) + let options = {'err_io': 'buffer'} + let expected = ['', 'line one', 'line two', 'this', 'AND this'] + if a:use_name + let options['err_name'] = 'pipe-err' + if a:do_msg + let expected[0] = 'Reading from channel error...' + else + let options['err_msg'] = 0 + call remove(expected, 0) + endif + else + sp pipe-err + let options['err_buf'] = bufnr('%') + quit + call remove(expected, 0) + endif + if a:nomod + let options['err_modifiable'] = 0 + endif + let job = job_start(s:python . " test_channel_pipe.py", options) + call assert_equal("run", job_status(job)) + try + let handle = job_getchannel(job) + call ch_sendraw(handle, "echoerr line one\n") + call ch_sendraw(handle, "echoerr line two\n") + call ch_sendraw(handle, "doubleerr this\n") + call ch_sendraw(handle, "quit\n") + sp pipe-err + call WaitForAssert({-> assert_equal(expected, getline(1, '$'))}) + if a:nomod + call assert_equal(0, &modifiable) + else + call assert_equal(1, &modifiable) + endif + bwipe! + finally + call job_stop(job) + endtry +endfunc + +func Test_pipe_err_to_buffer_name() + call Run_test_pipe_err_to_buffer(1, 0, 1) +endfunc + +func Test_pipe_err_to_buffer_nr() + call Run_test_pipe_err_to_buffer(0, 0, 1) +endfunc + +func Test_pipe_err_to_buffer_name_nomod() + call Run_test_pipe_err_to_buffer(1, 1, 1) +endfunc + +func Test_pipe_err_to_buffer_name_nomsg() + call Run_test_pipe_err_to_buffer(1, 0, 0) +endfunc + +func Test_pipe_both_to_buffer() + let job = job_start(s:python . " test_channel_pipe.py", + \ {'out_io': 'buffer', 'out_name': 'pipe-err', 'err_io': 'out'}) + call assert_equal("run", job_status(job)) + let handle = job_getchannel(job) + call assert_equal(bufnr('pipe-err'), ch_getbufnr(handle, 'out')) + call assert_equal(bufnr('pipe-err'), ch_getbufnr(handle, 'err')) + try + call ch_sendraw(handle, "echo line one\n") + call ch_sendraw(handle, "echoerr line two\n") + call ch_sendraw(handle, "double this\n") + call ch_sendraw(handle, "doubleerr that\n") + call ch_sendraw(handle, "quit\n") + sp pipe-err + call WaitForAssert({-> assert_equal(['Reading from channel output...', 'line one', 'line two', 'this', 'AND this', 'that', 'AND that', 'Goodbye!'], getline(1, '$'))}) + bwipe! + finally + call job_stop(job) + endtry +endfunc + +func Run_test_pipe_from_buffer(use_name) + sp pipe-input + call setline(1, ['echo one', 'echo two', 'echo three']) + let options = {'in_io': 'buffer', 'block_write': 1} + if a:use_name + let options['in_name'] = 'pipe-input' + else + let options['in_buf'] = bufnr('%') + endif + + let job = job_start(s:python . " test_channel_pipe.py", options) + call assert_equal("run", job_status(job)) + if has('unix') && !a:use_name + call assert_equal(bufnr('%'), ch_getbufnr(job, 'in')) + endif + try + let handle = job_getchannel(job) + call assert_equal('one', ch_read(handle)) + call assert_equal('two', ch_read(handle)) + call assert_equal('three', ch_read(handle)) + bwipe! + finally + call job_stop(job) + endtry +endfunc + +func Test_pipe_from_buffer_name() + call Run_test_pipe_from_buffer(1) +endfunc + +func Test_pipe_from_buffer_nr() + call Run_test_pipe_from_buffer(0) +endfunc + +func Run_pipe_through_sort(all, use_buffer) + CheckExecutable sort + let g:test_is_flaky = 1 + + let options = {'out_io': 'buffer', 'out_name': 'sortout'} + if a:use_buffer + split sortin + call setline(1, ['ccc', 'aaa', 'ddd', 'bbb', 'eee']) + let options.in_io = 'buffer' + let options.in_name = 'sortin' + endif + if !a:all + let options.in_top = 2 + let options.in_bot = 4 + endif + let job = job_start('sort', options) + + if !a:use_buffer + call assert_equal("run", job_status(job)) + call ch_sendraw(job, "ccc\naaa\nddd\nbbb\neee\n") + eval job->ch_close_in() + endif + + call WaitForAssert({-> assert_equal("dead", job_status(job))}) + + sp sortout + call WaitFor('line("$") > 3') + call assert_equal('Reading from channel output...', getline(1)) + if a:all + call assert_equal(['aaa', 'bbb', 'ccc', 'ddd', 'eee'], getline(2, 6)) + else + call assert_equal(['aaa', 'bbb', 'ddd'], getline(2, 4)) + endif + + call job_stop(job) + if a:use_buffer + bwipe! sortin + endif + bwipe! sortout +endfunc + +func Test_pipe_through_sort_all() + call Run_pipe_through_sort(1, 1) +endfunc + +func Test_pipe_through_sort_some() + call Run_pipe_through_sort(0, 1) +endfunc + +func Test_pipe_through_sort_feed() + call Run_pipe_through_sort(1, 0) +endfunc + +func Test_pipe_to_nameless_buffer() + let job = job_start(s:python . " test_channel_pipe.py", + \ {'out_io': 'buffer'}) + call assert_equal("run", job_status(job)) + try + let handle = job_getchannel(job) + call ch_sendraw(handle, "echo line one\n") + call ch_sendraw(handle, "echo line two\n") + exe handle->ch_getbufnr("out") .. 'sbuf' + call WaitFor('line("$") >= 3') + call assert_equal(['Reading from channel output...', 'line one', 'line two'], getline(1, '$')) + bwipe! + finally + call job_stop(job) + endtry +endfunc + +func Test_pipe_to_buffer_json() + CheckFunction reltimefloat + + let job = job_start(s:python . " test_channel_pipe.py", + \ {'out_io': 'buffer', 'out_mode': 'json'}) + call assert_equal("run", job_status(job)) + try + let handle = job_getchannel(job) + call ch_sendraw(handle, "echo [0, \"hello\"]\n") + call ch_sendraw(handle, "echo [-2, 12.34]\n") + exe ch_getbufnr(handle, "out") . 'sbuf' + call WaitFor('line("$") >= 3') + call assert_equal(['Reading from channel output...', '[0,"hello"]', '[-2,12.34]'], getline(1, '$')) + bwipe! + finally + call job_stop(job) + endtry +endfunc + +" Wait a little while for the last line, minus "offset", to equal "line". +func s:wait_for_last_line(line, offset) + for i in range(100) + if getline(line('$') - a:offset) == a:line + break + endif + sleep 10m + endfor +endfunc + +func Test_pipe_io_two_buffers() + " Create two buffers, one to read from and one to write to. + split pipe-output + set buftype=nofile + split pipe-input + set buftype=nofile + + let job = job_start(s:python . " test_channel_pipe.py", + \ {'in_io': 'buffer', 'in_name': 'pipe-input', 'in_top': 0, + \ 'out_io': 'buffer', 'out_name': 'pipe-output', + \ 'block_write': 1}) + call assert_equal("run", job_status(job)) + try + exe "normal Gaecho hello\" + exe bufwinnr('pipe-output') . "wincmd w" + call s:wait_for_last_line('hello', 0) + call assert_equal('hello', getline('$')) + + exe bufwinnr('pipe-input') . "wincmd w" + exe "normal Gadouble this\" + exe bufwinnr('pipe-output') . "wincmd w" + call s:wait_for_last_line('AND this', 0) + call assert_equal('this', getline(line('$') - 1)) + call assert_equal('AND this', getline('$')) + + bwipe! + exe bufwinnr('pipe-input') . "wincmd w" + bwipe! + finally + call job_stop(job) + endtry +endfunc + +func Test_pipe_io_one_buffer() + " Create one buffer to read from and to write to. + split pipe-io + set buftype=nofile + + let job = job_start(s:python . " test_channel_pipe.py", + \ {'in_io': 'buffer', 'in_name': 'pipe-io', 'in_top': 0, + \ 'out_io': 'buffer', 'out_name': 'pipe-io', + \ 'block_write': 1}) + call assert_equal("run", job_status(job)) + try + exe "normal Goecho hello\" + call s:wait_for_last_line('hello', 1) + call assert_equal('hello', getline(line('$') - 1)) + + exe "normal Gadouble this\" + call s:wait_for_last_line('AND this', 1) + call assert_equal('this', getline(line('$') - 2)) + call assert_equal('AND this', getline(line('$') - 1)) + + bwipe! + finally + call job_stop(job) + endtry +endfunc + +func Test_write_to_buffer_and_scroll() + CheckScreendump + + let lines =<< trim END + new Xscrollbuffer + call setline(1, range(1, 200)) + $ + redraw + wincmd w + call deletebufline('Xscrollbuffer', 1, '$') + if has('win32') + let cmd = ['cmd', '/c', 'echo sometext'] + else + let cmd = [&shell, &shellcmdflag, 'echo sometext'] + endif + call job_start(cmd, #{out_io: 'buffer', out_name: 'Xscrollbuffer'}) + END + call writefile(lines, 'XtestBufferScroll', 'D') + let buf = RunVimInTerminal('-S XtestBufferScroll', #{rows: 10}) + call TermWait(buf, 50) + call VerifyScreenDump(buf, 'Test_job_buffer_scroll_1', {}) + + " clean up + call StopVimInTerminal(buf) +endfunc + +func Test_pipe_null() + " We cannot check that no I/O works, we only check that the job starts + " properly. + let job = job_start(s:python . " test_channel_pipe.py something", + \ {'in_io': 'null'}) + call assert_equal("run", job_status(job)) + try + call assert_equal('something', ch_read(job)) + finally + call job_stop(job) + endtry + + let job = job_start(s:python . " test_channel_pipe.py err-out", + \ {'out_io': 'null'}) + call assert_equal("run", job_status(job)) + try + call assert_equal('err-out', ch_read(job, {"part": "err"})) + finally + call job_stop(job) + endtry + + let job = job_start(s:python . " test_channel_pipe.py something", + \ {'err_io': 'null'}) + call assert_equal("run", job_status(job)) + try + call assert_equal('something', ch_read(job)) + finally + call job_stop(job) + endtry + + " This causes spurious leak errors with valgrind. + if !RunningWithValgrind() + let job = job_start(s:python . " test_channel_pipe.py something", + \ {'out_io': 'null', 'err_io': 'out'}) + call assert_equal("run", job_status(job)) + call job_stop(job) + + let job = job_start(s:python . " test_channel_pipe.py something", + \ {'in_io': 'null', 'out_io': 'null', 'err_io': 'null'}) + call assert_equal("run", job_status(job)) + call assert_equal('channel fail', string(job_getchannel(job))) + call assert_equal('fail', ch_status(job)) + call assert_equal('no process', string(test_null_job())) + call assert_equal('channel fail', string(test_null_channel())) + call job_stop(job) + endif +endfunc + +func Test_pipe_to_buffer_raw() + let options = {'out_mode': 'raw', 'out_io': 'buffer', 'out_name': 'testout'} + split testout + let job = job_start([s:python, '-c', + \ 'import sys; [sys.stdout.write(".") and sys.stdout.flush() for _ in range(10000)]'], options) + " the job may be done quickly, also accept "dead" + call assert_match('^\%(dead\|run\)$', job_status(job)) + call WaitFor('len(join(getline(1, "$"), "")) >= 10000') + try + let totlen = 0 + for line in getline(1, '$') + call assert_equal('', substitute(line, '^\.*', '', '')) + let totlen += len(line) + endfor + call assert_equal(10000, totlen) + finally + call job_stop(job) + bwipe! + endtry +endfunc + +func Test_reuse_channel() + let job = job_start(s:python . " test_channel_pipe.py") + call assert_equal("run", job_status(job)) + let handle = job_getchannel(job) + try + call ch_sendraw(handle, "echo something\n") + call assert_equal("something", ch_readraw(handle)) + finally + call job_stop(job) + endtry + + let job = job_start(s:python . " test_channel_pipe.py", {'channel': handle}) + call assert_equal("run", job_status(job)) + let handle = job_getchannel(job) + try + call ch_sendraw(handle, "echo again\n") + call assert_equal("again", ch_readraw(handle)) + finally + call job_stop(job) + endtry +endfunc + +func Test_out_cb() + let g:test_is_flaky = 1 + let dict = {'thisis': 'dict: '} + func dict.outHandler(chan, msg) dict + if type(a:msg) == v:t_string + let g:Ch_outmsg = self.thisis . a:msg + else + let g:Ch_outobj = a:msg + endif + endfunc + func dict.errHandler(chan, msg) dict + let g:Ch_errmsg = self.thisis . a:msg + endfunc + let job = job_start(s:python . " test_channel_pipe.py", + \ {'out_cb': dict.outHandler, + \ 'out_mode': 'json', + \ 'err_cb': dict.errHandler, + \ 'err_mode': 'json'}) + call assert_equal("run", job_status(job)) + call test_garbagecollect_now() + try + let g:Ch_outmsg = '' + let g:Ch_errmsg = '' + call ch_sendraw(job, "echo [0, \"hello\"]\n") + call ch_sendraw(job, "echoerr [0, \"there\"]\n") + call WaitForAssert({-> assert_equal("dict: hello", g:Ch_outmsg)}) + call WaitForAssert({-> assert_equal("dict: there", g:Ch_errmsg)}) + + " Receive a json object split in pieces + let g:Ch_outobj = '' + call ch_sendraw(job, "echosplit [0, {\"one\": 1,| \"tw|o\": 2, \"three\": 3|}]\n") + " For unknown reasons this can be very slow on Mac. + " Increase the timeout on every run. + if g:run_nr == 1 + let timeout = 5000 + elseif g:run_nr == 2 + let timeout = 10000 + elseif g:run_nr == 3 + let timeout = 20000 + else + let timeout = 40000 + endif + call WaitForAssert({-> assert_equal({'one': 1, 'two': 2, 'three': 3}, g:Ch_outobj)}, timeout) + finally + call job_stop(job) + endtry +endfunc + +func Test_out_close_cb() + let s:counter = 1 + let g:Ch_msg1 = '' + let g:Ch_closemsg = 0 + func! OutHandler(chan, msg) + if s:counter == 1 + let g:Ch_msg1 = a:msg + endif + let s:counter += 1 + endfunc + func! CloseHandler(chan) + let g:Ch_closemsg = s:counter + let s:counter += 1 + endfunc + let job = job_start(s:python . " test_channel_pipe.py quit now", + \ {'out_cb': 'OutHandler', + \ 'close_cb': 'CloseHandler'}) + " the job may be done quickly, also accept "dead" + call assert_match('^\%(dead\|run\)$', job_status(job)) + try + call WaitForAssert({-> assert_equal('quit', g:Ch_msg1)}) + call WaitForAssert({-> assert_equal(2, g:Ch_closemsg)}) + finally + call job_stop(job) + delfunc OutHandler + delfunc CloseHandler + endtry +endfunc + +func Test_read_in_close_cb() + let g:Ch_received = '' + func! CloseHandler(chan) + let g:Ch_received = ch_read(a:chan) + endfunc + let job = job_start(s:python . " test_channel_pipe.py quit now", + \ {'close_cb': 'CloseHandler'}) + " the job may be done quickly, also accept "dead" + call assert_match('^\%(dead\|run\)$', job_status(job)) + try + call WaitForAssert({-> assert_equal('quit', g:Ch_received)}) + finally + call job_stop(job) + delfunc CloseHandler + endtry +endfunc + +" Use channel in NL mode but received text does not end in NL. +func Test_read_in_close_cb_incomplete() + let g:Ch_received = '' + func! CloseHandler(chan) + while ch_status(a:chan, {'part': 'out'}) == 'buffered' + let g:Ch_received .= ch_read(a:chan) + endwhile + endfunc + let job = job_start(s:python . " test_channel_pipe.py incomplete", + \ {'close_cb': 'CloseHandler'}) + " the job may be done quickly, also accept "dead" + call assert_match('^\%(dead\|run\)$', job_status(job)) + try + call WaitForAssert({-> assert_equal('incomplete', g:Ch_received)}) + finally + call job_stop(job) + delfunc CloseHandler + endtry +endfunc + +func Test_out_cb_lambda() + let job = job_start(s:python . " test_channel_pipe.py", + \ {'out_cb': {ch, msg -> execute("let g:Ch_outmsg = 'lambda: ' . msg")}, + \ 'out_mode': 'json', + \ 'err_cb': {ch, msg -> execute(":let g:Ch_errmsg = 'lambda: ' . msg")}, + \ 'err_mode': 'json'}) + call assert_equal("run", job_status(job)) + try + let g:Ch_outmsg = '' + let g:Ch_errmsg = '' + call ch_sendraw(job, "echo [0, \"hello\"]\n") + call ch_sendraw(job, "echoerr [0, \"there\"]\n") + call WaitForAssert({-> assert_equal("lambda: hello", g:Ch_outmsg)}) + call WaitForAssert({-> assert_equal("lambda: there", g:Ch_errmsg)}) + finally + call job_stop(job) + endtry +endfunc + +func Test_close_and_exit_cb() + let g:test_is_flaky = 1 + let g:retdict = {'ret': {}} + func g:retdict.close_cb(ch) dict + let self.ret['close_cb'] = a:ch->ch_getjob()->job_status() + endfunc + func g:retdict.exit_cb(job, status) dict + let self.ret['exit_cb'] = job_status(a:job) + endfunc + + let job = job_start([&shell, &shellcmdflag, 'echo'], + \ {'close_cb': g:retdict.close_cb, + \ 'exit_cb': g:retdict.exit_cb}) + " the job may be done quickly, also accept "dead" + call assert_match('^\%(dead\|run\)$', job_status(job)) + call WaitForAssert({-> assert_equal(2, len(g:retdict.ret))}) + call assert_match('^\%(dead\|run\)$', g:retdict.ret['close_cb']) + call assert_equal('dead', g:retdict.ret['exit_cb']) + unlet g:retdict +endfunc + +"""""""""" + +function ExitCbWipe(job, status) + exe g:wipe_buf 'bw!' +endfunction + +" This caused a crash, because messages were handled while peeking for a +" character. +func Test_exit_cb_wipes_buf() + CheckFeature timers + set cursorline lazyredraw + call test_override('redraw_flag', 1) + new + let g:wipe_buf = bufnr('') + + let job = job_start(has('win32') ? 'cmd /c echo:' : ['true'], + \ {'exit_cb': 'ExitCbWipe'}) + let timer = timer_start(300, {-> feedkeys("\", 'nt')}, {'repeat': 5}) + call feedkeys(repeat('g', 1000) . 'o', 'ntx!') + call WaitForAssert({-> assert_equal("dead", job_status(job))}) + call timer_stop(timer) + + set nocursorline nolazyredraw + unlet g:wipe_buf + call test_override('ALL', 0) +endfunc + +"""""""""" + +let g:Ch_unletResponse = '' +func s:UnletHandler(handle, msg) + let g:Ch_unletResponse = a:msg + unlet s:channelfd +endfunc + +" Test that "unlet handle" in a handler doesn't crash Vim. +func Ch_unlet_handle(port) + let s:channelfd = ch_open(s:address(a:port), s:chopt) + eval s:channelfd->ch_sendexpr("test", {'callback': function('s:UnletHandler')}) + call WaitForAssert({-> assert_equal('what?', g:Ch_unletResponse)}) +endfunc + +func Test_unlet_handle() + call s:run_server('Ch_unlet_handle') +endfunc + +func Test_unlet_handle_ipv6() + CheckIPv6 + call Test_unlet_handle() +endfunc + +"""""""""" + +let g:Ch_unletResponse = '' +func Ch_CloseHandler(handle, msg) + let g:Ch_unletResponse = a:msg + eval s:channelfd->ch_close() +endfunc + +" Test that "unlet handle" in a handler doesn't crash Vim. +func Ch_close_handle(port) + let s:channelfd = ch_open(s:address(a:port), s:chopt) + call ch_sendexpr(s:channelfd, "test", {'callback': function('Ch_CloseHandler')}) + call WaitForAssert({-> assert_equal('what?', g:Ch_unletResponse)}) +endfunc + +func Test_close_handle() + call s:run_server('Ch_close_handle') +endfunc + +func Test_close_handle_ipv6() + CheckIPv6 + call Test_close_handle() +endfunc + +"""""""""" + +func Ch_open_ipv6(port) + let handle = ch_open(s:address(a:port), s:chopt) + call assert_notequal('fail', ch_status(handle)) +endfunc + +func Test_open_ipv6() + CheckIPv6 + call s:run_server('Ch_open_ipv6') +endfunc + +"""""""""" + +func Test_open_fail() + call assert_fails("let ch = ch_open('noserver')", 'E475:') + echo ch + let d = ch + call assert_fails("let ch = ch_open('noserver', 10)", 'E1206:') + call assert_fails("let ch = ch_open('localhost:-1')", 'E475:') + call assert_fails("let ch = ch_open('localhost:65537')", 'E475:') + call assert_fails("let ch = ch_open('localhost:8765', {'timeout' : -1})", + \ 'E474:') + call assert_fails("let ch = ch_open('localhost:8765', {'axby' : 1})", + \ 'E475:') + call assert_fails("let ch = ch_open('localhost:8765', {'mode' : 'abc'})", + \ 'E475:') + call assert_fails("let ch = ch_open('localhost:8765', {'part' : 'out'})", + \ 'E475:') + call assert_fails("let ch = ch_open('[::]')", 'E475:') + call assert_fails("let ch = ch_open('[::.80')", 'E475:') + call assert_fails("let ch = ch_open('[::]8080')", 'E475:') +endfunc + +func Test_ch_info_fail() + call assert_fails("let x = ch_info(10)", 'E475:') +endfunc + +"""""""""" + +func Ch_open_delay(port) + " Wait up to a second for the port to open. + let s:chopt.waittime = 1000 + let channel = ch_open(s:address(a:port), s:chopt) + if ch_status(channel) == "fail" + call assert_report("Can't open channel") + return + endif + call assert_equal('got it', channel->ch_evalexpr('hello!')) + call ch_close(channel) +endfunc + +func Test_open_delay() + " The server will wait half a second before creating the port. + call s:run_server('Ch_open_delay', 'delay') +endfunc + +func Test_open_delay_ipv6() + CheckIPv6 + call Test_open_delay() +endfunc + +""""""""" + +function MyFunction(a,b,c) + let g:Ch_call_ret = [a:a, a:b, a:c] +endfunc + +function Ch_test_call(port) + let handle = ch_open(s:address(a:port), s:chopt) + if ch_status(handle) == "fail" + call assert_report("Can't open channel") + return + endif + + let g:Ch_call_ret = [] + call assert_equal('ok', ch_evalexpr(handle, 'call-func')) + call WaitForAssert({-> assert_equal([1, 2, 3], g:Ch_call_ret)}) + + call assert_fails("let i = ch_evalexpr(handle, '2 + 2', {'callback' : 'abc'})", 'E917:') + call assert_fails("let i = ch_evalexpr(handle, '2 + 2', {'drop' : ''})", 'E475:') + call assert_fails("let i = ch_evalexpr(test_null_job(), '2 + 2')", 'E906:') +endfunc + +func Test_call() + call s:run_server('Ch_test_call') +endfunc + +func Test_call_ipv6() + CheckIPv6 + call Test_call() +endfunc + +func Test_call_unix() + CheckUnix + call Test_call() + call delete('Xtestsocket') +endfunc + +""""""""" + +let g:Ch_job_exit_ret = 'not yet' +function MyExitCb(job, status) + let g:Ch_job_exit_ret = 'done' +endfunc + +function Ch_test_exit_callback(port) + eval g:currentJob->job_setoptions({'exit_cb': 'MyExitCb'}) + let g:Ch_exit_job = g:currentJob + call assert_equal('MyExitCb', job_info(g:currentJob)['exit_cb']) +endfunc + +func Test_exit_callback() + call s:run_server('Ch_test_exit_callback') + + " wait up to a second for the job to exit + for i in range(100) + if g:Ch_job_exit_ret == 'done' + break + endif + sleep 10m + " calling job_status() triggers the callback + call job_status(g:Ch_exit_job) + endfor + + call assert_equal('done', g:Ch_job_exit_ret) + call assert_equal('dead', job_info(g:Ch_exit_job).status) + unlet g:Ch_exit_job +endfunc + +function MyExitTimeCb(job, status) + if job_info(a:job).process == g:exit_cb_val.process + let g:exit_cb_val.end = reltime(g:exit_cb_val.start) + endif + call Resume() +endfunction + +func Test_exit_callback_interval() + CheckFunction reltimefloat + let g:test_is_flaky = 1 + + let g:exit_cb_val = {'start': reltime(), 'end': 0, 'process': 0} + let job = [s:python, '-c', 'import time;time.sleep(0.5)']->job_start({'exit_cb': 'MyExitTimeCb'}) + let g:exit_cb_val.process = job_info(job).process + try + call WaitFor('type(g:exit_cb_val.end) != v:t_number || g:exit_cb_val.end != 0') + catch + call add(v:errors, "Job status: " .. string(job->job_info())) + throw v:exception + endtry + let elapsed = reltimefloat(g:exit_cb_val.end) + call assert_inrange(0.5, 1.0, elapsed) + + " case: unreferenced job, using timer + if !has('timers') + return + endif + + let g:exit_cb_val = {'start': reltime(), 'end': 0, 'process': 0} + let g:job = job_start([s:python, '-c', 'import time;time.sleep(0.5)'], {'exit_cb': 'MyExitTimeCb'}) + let g:exit_cb_val.process = job_info(g:job).process + unlet g:job + call Standby(1000) + if type(g:exit_cb_val.end) != v:t_number || g:exit_cb_val.end != 0 + let elapsed = reltimefloat(g:exit_cb_val.end) + else + let elapsed = 1.0 + endif + call assert_inrange(0.5, 1.0, elapsed) +endfunc + +""""""""" + +let g:Ch_close_ret = 'alive' +function MyCloseCb(ch) + let g:Ch_close_ret = 'closed' +endfunc + +function Ch_test_close_callback(port) + let handle = ch_open(s:address(a:port), s:chopt) + if ch_status(handle) == "fail" + call assert_report("Can't open channel") + return + endif + call ch_setoptions(handle, {'close_cb': 'MyCloseCb'}) + + call assert_equal('', ch_evalexpr(handle, 'close me')) + call WaitForAssert({-> assert_equal('closed', g:Ch_close_ret)}) +endfunc + +func Test_close_callback() + call s:run_server('Ch_test_close_callback') +endfunc + +func Test_close_callback_ipv6() + CheckIPv6 + call Test_close_callback() +endfunc + +func Test_close_callback_unix() + CheckUnix + call Test_close_callback() + call delete('Xtestsocket') +endfunc + +function Ch_test_close_partial(port) + let handle = ch_open(s:address(a:port), s:chopt) + if ch_status(handle) == "fail" + call assert_report("Can't open channel") + return + endif + let g:Ch_d = {} + func g:Ch_d.closeCb(ch) dict + let self.close_ret = 'closed' + endfunc + call ch_setoptions(handle, {'close_cb': g:Ch_d.closeCb}) + + call assert_equal('', ch_evalexpr(handle, 'close me')) + call WaitForAssert({-> assert_equal('closed', g:Ch_d.close_ret)}) + unlet g:Ch_d +endfunc + +func Test_close_partial() + call s:run_server('Ch_test_close_partial') +endfunc + +func Test_close_partial_ipv6() + CheckIPv6 + call Test_close_partial() +endfunc + +func Test_close_partial_unix() + CheckUnix + call Test_close_partial() + call delete('Xtestsocket') +endfunc + +func Test_job_start_fails() + " this was leaking memory + call assert_fails("call job_start([''])", "E474:") + call assert_fails('call job_start($x)', 'E474:') + call assert_fails('call job_start("")', 'E474:') + call assert_fails('call job_start("ls", {"out_io" : "abc"})', 'E475:') + call assert_fails('call job_start("ls", {"err_io" : "abc"})', 'E475:') + call assert_fails('call job_start("ls", [])', 'E715:') + call assert_fails("call job_start('ls', {'in_top' : -1})", 'E475:') + call assert_fails("call job_start('ls', {'in_bot' : -1})", 'E475:') + call assert_fails("call job_start('ls', {'channel' : -1})", 'E475:') + call assert_fails("call job_start('ls', {'callback' : -1})", 'E921:') + call assert_fails("call job_start('ls', {'out_cb' : -1})", 'E921:') + call assert_fails("call job_start('ls', {'err_cb' : -1})", 'E921:') + call assert_fails("call job_start('ls', {'close_cb' : -1})", 'E921:') + call assert_fails("call job_start('ls', {'exit_cb' : -1})", 'E921:') + call assert_fails("call job_start('ls', {'term_name' : []})", 'E475:') + call assert_fails("call job_start('ls', {'term_finish' : 'run'})", 'E475:') + call assert_fails("call job_start('ls', {'term_api' : []})", 'E475:') + call assert_fails("call job_start('ls', {'stoponexit' : []})", 'E730:') + call assert_fails("call job_start('ls', {'in_io' : 'file'})", 'E920:') + call assert_fails("call job_start('ls', {'out_io' : 'file'})", 'E920:') + call assert_fails("call job_start('ls', {'err_io' : 'file'})", 'E920:') + call assert_fails("call job_start('ls', {'in_mode' : 'abc'})", 'E475:') + call assert_fails("call job_start('ls', {'out_mode' : 'abc'})", 'E475:') + call assert_fails("call job_start('ls', {'err_mode' : 'abc'})", 'E475:') + call assert_fails("call job_start('ls', + \ {'in_io' : 'buffer', 'in_buf' : 99999})", 'E86:') + call assert_fails("call job_start('ls', + \ {'out_io' : 'buffer', 'out_buf' : 99999})", 'E86:') + call assert_fails("call job_start('ls', + \ {'err_io' : 'buffer', 'err_buf' : 99999})", 'E86:') + + call assert_fails("call job_start('ls', + \ {'in_io' : 'buffer', 'in_buf' : -1})", 'E475:') + call assert_fails("call job_start('ls', + \ {'out_io' : 'buffer', 'out_buf' : -1})", 'E475:') + call assert_fails("call job_start('ls', + \ {'err_io' : 'buffer', 'err_buf' : -1})", 'E475:') + + let cmd = has('win32') ? "cmd /c dir" : "ls" + + set nomodifiable + call assert_fails("call job_start(cmd, + \ {'out_io' : 'buffer', 'out_buf' :" .. bufnr() .. "})", 'E21:') + call assert_fails("call job_start(cmd, + \ {'err_io' : 'buffer', 'err_buf' :" .. bufnr() .. "})", 'E21:') + set modifiable + + call assert_fails("call job_start(cmd, {'in_io' : 'buffer'})", 'E915:') + + edit! XXX + let bnum = bufnr() + enew + call assert_fails("call job_start(cmd, + \ {'in_io' : 'buffer', 'in_buf' : bnum})", 'E918:') + + " Empty job tests + " This was crashing on MS-Windows. + call assert_fails('let job = job_start([""])', 'E474:') + call assert_fails('let job = job_start([" "])', 'E474:') + call assert_fails('let job = job_start("")', 'E474:') + call assert_fails('let job = job_start(" ")', 'E474:') + call assert_fails('let job = job_start(["ls", []])', 'E730:') + call assert_fails('call job_setoptions(test_null_job(), {})', 'E916:') + %bw! +endfunc + +func Test_job_stop_immediately() + " With valgrind this causes spurious leak reports + CheckNotValgrind + + let g:job = job_start([s:python, '-c', 'import time;time.sleep(10)']) + try + eval g:job->job_stop() + call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) + finally + call job_stop(g:job, 'kill') + unlet g:job + endtry +endfunc + +func Test_null_job_eval() + call assert_fails('eval test_null_job()->eval()', 'E121:') +endfunc + +" This was leaking memory. +func Test_partial_in_channel_cycle() + let d = {} + let d.a = function('string', [d]) + try + let d.b = ch_open('nowhere:123', {'close_cb': d.a}) + call test_garbagecollect_now() + catch + call assert_exception('E901:') + endtry + unlet d +endfunc + +func Test_using_freed_memory() + let g:a = job_start(['ls']) + sleep 10m + call test_garbagecollect_now() +endfunc + +func Test_collapse_buffers() + let g:test_is_flaky = 1 + CheckExecutable cat + + sp test_channel.vim + let g:linecount = line('$') + close + split testout + 1,$delete + call job_start('cat test_channel.vim', {'out_io': 'buffer', 'out_name': 'testout'}) + call WaitForAssert({-> assert_inrange(g:linecount, g:linecount + 1, line('$'))}) + bwipe! +endfunc + +func Test_write_to_deleted_buffer() + CheckExecutable echo + CheckFeature quickfix + + let job = job_start('echo hello', {'out_io': 'buffer', 'out_name': 'test_buffer', 'out_msg': 0}) + let bufnr = bufnr('test_buffer') + call WaitForAssert({-> assert_equal(['hello'], getbufline(bufnr, 1, '$'))}) + call assert_equal('nofile', getbufvar(bufnr, '&buftype')) + call assert_equal('hide', getbufvar(bufnr, '&bufhidden')) + + bdel test_buffer + call assert_equal([], getbufline(bufnr, 1, '$')) + + let job = job_start('echo hello', {'out_io': 'buffer', 'out_name': 'test_buffer', 'out_msg': 0}) + call WaitForAssert({-> assert_equal(['hello'], getbufline(bufnr, 1, '$'))}) + call assert_equal('nofile', getbufvar(bufnr, '&buftype')) + call assert_equal('hide', getbufvar(bufnr, '&bufhidden')) + + bwipe! test_buffer +endfunc + +func Test_cmd_parsing() + CheckUnix + + call assert_false(filereadable("file with space")) + let job = job_start('touch "file with space"') + call WaitForAssert({-> assert_true(filereadable("file with space"))}) + call delete("file with space") + + let job = job_start('touch file\ with\ space') + call WaitForAssert({-> assert_true(filereadable("file with space"))}) + call delete("file with space") +endfunc + +func Test_raw_passes_nul() + CheckExecutable cat + + " Test lines from the job containing NUL are stored correctly in a buffer. + new + call setline(1, ["asdf\nasdf", "xxx\n", "\nyyy"]) + w! Xtestread + bwipe! + split testout + 1,$delete + call job_start('cat Xtestread', {'out_io': 'buffer', 'out_name': 'testout'}) + call WaitFor('line("$") > 2') + call assert_equal("asdf\nasdf", getline(1)) + call assert_equal("xxx\n", getline(2)) + call assert_equal("\nyyy", getline(3)) + + call delete('Xtestread') + bwipe! + + " Test lines from a buffer with NUL bytes are written correctly to the job. + new mybuffer + call setline(1, ["asdf\nasdf", "xxx\n", "\nyyy"]) + let g:Ch_job = job_start('cat', {'in_io': 'buffer', 'in_name': 'mybuffer', 'out_io': 'file', 'out_name': 'Xtestwrite'}) + call WaitForAssert({-> assert_equal("dead", job_status(g:Ch_job))}) + bwipe! + split Xtestwrite + call assert_equal("asdf\nasdf", getline(1)) + call assert_equal("xxx\n", getline(2)) + call assert_equal("\nyyy", getline(3)) + call assert_equal(-1, match(s:get_resources(), '\(^\|/\)Xtestwrite$')) + + call delete('Xtestwrite') + bwipe! +endfunc + +func Test_read_nonl_line() + let g:linecount = 0 + let arg = 'import sys;sys.stdout.write("1\n2\n3")' + call job_start([s:python, '-c', arg], {'callback': {-> execute('let g:linecount += 1')}}) + call WaitForAssert({-> assert_equal(3, g:linecount)}) + unlet g:linecount +endfunc + +func Test_read_nonl_in_close_cb() + func s:close_cb(ch) + while ch_status(a:ch) == 'buffered' + let g:out .= ch_read(a:ch) + endwhile + endfunc + + let g:out = '' + let arg = 'import sys;sys.stdout.write("1\n2\n3")' + call job_start([s:python, '-c', arg], {'close_cb': function('s:close_cb')}) + call test_garbagecollect_now() + call WaitForAssert({-> assert_equal('123', g:out)}) + unlet g:out + delfunc s:close_cb +endfunc + +func Test_read_from_terminated_job() + let g:linecount = 0 + let arg = 'import os,sys;os.close(1);sys.stderr.write("test\n")' + call job_start([s:python, '-c', arg], {'callback': {-> execute('let g:linecount += 1')}}) + call WaitForAssert({-> assert_equal(1, g:linecount)}) + call test_garbagecollect_now() + unlet g:linecount +endfunc + +func Test_job_start_windows() + CheckMSWindows + + " Check that backslash in $COMSPEC is handled properly. + let g:echostr = '' + let cmd = $COMSPEC . ' /c echo 123' + let job = job_start(cmd, {'callback': {ch,msg -> execute(":let g:echostr .= msg")}}) + let info = job_info(job) + call assert_equal([$COMSPEC, '/c', 'echo', '123'], info.cmd) + + call WaitForAssert({-> assert_equal("123", g:echostr)}) + unlet g:echostr +endfunc + +func Test_env() + let g:envstr = '' + if has('win32') + let cmd = ['cmd', '/c', 'echo %FOO%'] + else + let cmd = [&shell, &shellcmdflag, 'echo $FOO'] + endif + call assert_fails('call job_start(cmd, {"env": 1})', 'E475:') + let job = job_start(cmd, {'callback': {ch,msg -> execute(":let g:envstr .= msg")}, 'env': {'FOO': 'bar'}}) + if WaitForAssert({-> assert_equal("bar", g:envstr)}, 500) != 0 + call add(v:errors, "Job status: " .. string(job->job_info())) + endif + unlet g:envstr +endfunc + +func Test_cwd() + let g:test_is_flaky = 1 + let g:envstr = '' + if has('win32') + let expect = $TEMP + let cmd = ['cmd', '/c', 'echo %CD%'] + else + let expect = $HOME + let cmd = ['pwd'] + endif + let job = job_start(cmd, {'callback': {ch,msg -> execute(":let g:envstr .= msg")}, 'cwd': expect}) + try + call WaitForAssert({-> assert_notequal("", g:envstr)}) + " There may be a trailing slash or not, ignore it + let expect = substitute(expect, '[/\\]$', '', '') + let g:envstr = substitute(g:envstr, '[/\\]$', '', '') + " on CI there can be /private prefix or not, ignore it + if $CI != '' && stridx(expect, '/private/') == 0 + let expect = expect[8:] + endif + if $CI != '' && stridx(g:envstr, '/private/') == 0 + let g:envstr = g:envstr[8:] + endif + call assert_equal(expect, g:envstr) + finally + call job_stop(job) + unlet g:envstr + endtry +endfunc + +function Ch_test_close_lambda(port) + let handle = ch_open(s:address(a:port), s:chopt) + if ch_status(handle) == "fail" + call assert_report("Can't open channel") + return + endif + let g:Ch_close_ret = '' + call ch_setoptions(handle, {'close_cb': {ch -> execute("let g:Ch_close_ret = 'closed'")}}) + call test_garbagecollect_now() + + call assert_equal('', ch_evalexpr(handle, 'close me')) + call WaitForAssert({-> assert_equal('closed', g:Ch_close_ret)}) +endfunc + +func Test_close_lambda() + call s:run_server('Ch_test_close_lambda') +endfunc + +func Test_close_lambda_ipv6() + CheckIPv6 + call Test_close_lambda() +endfunc + +func Test_close_lambda_unix() + CheckUnix + call Test_close_lambda() + call delete('Xtestsocket') +endfunc + +func s:test_list_args(cmd, out, remove_lf) + try + let g:out = '' + let job = job_start([s:python, '-c', a:cmd], {'callback': {ch, msg -> execute('let g:out .= msg')}, 'out_mode': 'raw'}) + try + call WaitFor('"" != g:out') + catch + call add(v:errors, "Job status: " .. string(job->job_info())) + throw v:exception + endtry + if has('win32') + let g:out = substitute(g:out, '\r', '', 'g') + endif + if a:remove_lf + let g:out = substitute(g:out, '\n$', '', 'g') + endif + call assert_equal(a:out, g:out) + finally + call job_stop(job) + unlet g:out + endtry +endfunc + +func Test_list_args() + call s:test_list_args('import sys;sys.stdout.write("hello world")', "hello world", 0) + call s:test_list_args('import sys;sys.stdout.write("hello\nworld")', "hello\nworld", 0) + call s:test_list_args('import sys;sys.stdout.write(''hello\nworld'')', "hello\nworld", 0) + call s:test_list_args('import sys;sys.stdout.write(''hello"world'')', "hello\"world", 0) + call s:test_list_args('import sys;sys.stdout.write(''hello^world'')', "hello^world", 0) + call s:test_list_args('import sys;sys.stdout.write("hello&&world")', "hello&&world", 0) + call s:test_list_args('import sys;sys.stdout.write(''hello\\world'')', "hello\\world", 0) + call s:test_list_args('import sys;sys.stdout.write(''hello\\\\world'')', "hello\\\\world", 0) + call s:test_list_args('import sys;sys.stdout.write("hello\"world\"")', 'hello"world"', 0) + call s:test_list_args('import sys;sys.stdout.write("h\"ello worl\"d")', 'h"ello worl"d', 0) + call s:test_list_args('import sys;sys.stdout.write("h\"e\\\"llo wor\\\"l\"d")', 'h"e\"llo wor\"l"d', 0) + call s:test_list_args('import sys;sys.stdout.write("h\"e\\\"llo world")', 'h"e\"llo world', 0) + call s:test_list_args('import sys;sys.stdout.write("hello\tworld")', "hello\tworld", 0) + + " tests which not contain spaces in the argument + call s:test_list_args('print("hello\nworld")', "hello\nworld", 1) + call s:test_list_args('print(''hello\nworld'')', "hello\nworld", 1) + call s:test_list_args('print(''hello"world'')', "hello\"world", 1) + call s:test_list_args('print(''hello^world'')', "hello^world", 1) + call s:test_list_args('print("hello&&world")', "hello&&world", 1) + call s:test_list_args('print(''hello\\world'')', "hello\\world", 1) + call s:test_list_args('print(''hello\\\\world'')', "hello\\\\world", 1) + call s:test_list_args('print("hello\"world\"")', 'hello"world"', 1) + call s:test_list_args('print("hello\tworld")', "hello\tworld", 1) +endfunc + +func Test_keep_pty_open() + CheckUnix + + let job = job_start(s:python . ' -c "import time;time.sleep(0.2)"', + \ {'out_io': 'null', 'err_io': 'null', 'pty': 1}) + let elapsed = WaitFor({-> job_status(job) ==# 'dead'}) + call assert_inrange(200, 1000, elapsed) + call job_stop(job) +endfunc + +func Test_job_start_in_timer() + CheckFeature timers + CheckFunction reltimefloat + + func OutCb(chan, msg) + let g:val += 1 + endfunc + + func ExitCb(job, status) + let g:val += 1 + call Resume() + endfunc + + func TimerCb(timer) + if has('win32') + let cmd = ['cmd', '/c', 'echo.'] + else + let cmd = ['echo'] + endif + let g:job = job_start(cmd, {'out_cb': 'OutCb', 'exit_cb': 'ExitCb'}) + call substitute(repeat('a', 100000), '.', '', 'g') + endfunc + + " We should be interrupted before 'updatetime' elapsed. + let g:val = 0 + call timer_start(1, 'TimerCb') + let elapsed = Standby(&ut) + call assert_inrange(1, &ut / 2, elapsed) + + " Wait for both OutCb() and ExitCb() to have been called before deleting + " them. + call WaitForAssert({-> assert_equal(2, g:val)}) + call job_stop(g:job) + + delfunc OutCb + delfunc ExitCb + delfunc TimerCb + unlet! g:val + unlet! g:job +endfunc + +func Test_raw_large_data() + try + let g:out = '' + let job = job_start(s:python . " test_channel_pipe.py", + \ {'mode': 'raw', 'drop': 'never', 'noblock': 1, + \ 'callback': {ch, msg -> execute('let g:out .= msg')}}) + + let outlen = 79999 + let want = repeat('X', outlen) . "\n" + eval job->ch_sendraw(want) + call WaitFor({-> len(g:out) >= outlen}, 10000) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) + call assert_equal(want, substitute(g:out, '\r', '', 'g')) + finally + call job_stop(job) + unlet g:out + endtry +endfunc + +func Test_no_hang_windows() + CheckMSWindows + + try + let job = job_start(s:python . " test_channel_pipe.py busy", + \ {'mode': 'raw', 'drop': 'never', 'noblock': 0}) + call assert_fails('call ch_sendraw(job, repeat("X", 80000))', 'E631:') + finally + call job_stop(job) + endtry +endfunc + +func Test_job_exitval_and_termsig() + CheckUnix + + " Terminate job normally + let cmd = ['echo'] + let job = job_start(cmd) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) + let info = job_info(job) + call assert_equal(0, info.exitval) + call assert_equal("", info.termsig) + + " Terminate job by signal + let cmd = ['sleep', '10'] + let job = job_start(cmd) + " 10m usually works but 50m is needed when running Valgrind + sleep 50m + call job_stop(job) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) + let info = job_info(job) + call assert_equal(-1, info.exitval) + call assert_equal("term", info.termsig) +endfunc + +func Test_job_tty_in_out() + CheckUnix + + call writefile(['test'], 'Xtestin', 'D') + let in_opts = [{}, + \ {'in_io': 'null'}, + \ {'in_io': 'file', 'in_name': 'Xtestin'}] + let out_opts = [{}, + \ {'out_io': 'null'}, + \ {'out_io': 'file', 'out_name': 'Xtestout'}] + let err_opts = [{}, + \ {'err_io': 'null'}, + \ {'err_io': 'file', 'err_name': 'Xtesterr'}, + \ {'err_io': 'out'}] + let opts = [] + + for in_opt in in_opts + let x = copy(in_opt) + for out_opt in out_opts + let x = extend(copy(x), out_opt) + for err_opt in err_opts + let x = extend(copy(x), err_opt) + let opts += [extend({'pty': 1}, x)] + endfor + endfor + endfor + + for opt in opts + let job = job_start('echo', opt) + let info = job_info(job) + let msg = printf('option={"in_io": "%s", "out_io": "%s", "err_io": "%s"}', + \ get(opt, 'in_io', 'tty'), + \ get(opt, 'out_io', 'tty'), + \ get(opt, 'err_io', 'tty')) + + if !has_key(opt, 'in_io') || !has_key(opt, 'out_io') || !has_key(opt, 'err_io') + call assert_notequal('', info.tty_in, msg) + else + call assert_equal('', info.tty_in, msg) + endif + call assert_equal(info.tty_in, info.tty_out, msg) + + call WaitForAssert({-> assert_equal('dead', job_status(job))}) + endfor + + call delete('Xtestout') + call delete('Xtesterr') +endfunc + +" Do this last, it stops any channel log. +func Test_zz_nl_err_to_out_pipe() + + eval 'Xlog'->ch_logfile() + call ch_log('Test_zz_nl_err_to_out_pipe()') + let job = job_start(s:python . " test_channel_pipe.py", {'err_io': 'out'}) + call assert_equal("run", job_status(job)) + try + let handle = job_getchannel(job) + call ch_sendraw(handle, "echo something\n") + call assert_equal("something", ch_readraw(handle)) + + call ch_sendraw(handle, "echoerr wrong\n") + call assert_equal("wrong", ch_readraw(handle)) + finally + call job_stop(job) + call ch_logfile('') + let loglines = readfile('Xlog') + call assert_true(len(loglines) > 10) + let found_test = 0 + let found_send = 0 + let found_recv = 0 + let found_stop = 0 + for l in loglines + if l =~ 'Test_zz_nl_err_to_out_pipe' + let found_test = 1 + endif + if l =~ 'SEND on.*echo something' + let found_send = 1 + endif + if l =~ 'RECV on.*something' + let found_recv = 1 + endif + if l =~ 'Stopping job with' + let found_stop = 1 + endif + endfor + call assert_equal(1, found_test) + call assert_equal(1, found_send) + call assert_equal(1, found_recv) + call assert_equal(1, found_stop) + " On MS-Windows need to sleep for a moment to be able to delete the file. + sleep 10m + call delete('Xlog') + endtry +endfunc + +" Do this last, it stops any channel log. +func Test_zz_ch_log() + call ch_logfile('Xlog', 'w') + call ch_log('hello there') + call ch_log('%s%s') + call ch_logfile('') + let text = readfile('Xlog') + call assert_match("start log session", text[0]) + call assert_match("ch_log(): hello there", text[1]) + call assert_match("%s%s", text[2]) + call mkdir("Xchlogdir1", 'D') + call assert_fails("call ch_logfile('Xchlogdir1')", 'E484:') + + call delete('Xlog') +endfunc + +func Test_issue_5150() + if has('win32') + let cmd = 'cmd /c pause' + else + let cmd = 'grep foo' + endif + + let g:job = job_start(cmd, {}) + sleep 50m " give the job time to start + call job_stop(g:job) + call WaitForAssert({-> assert_equal(-1, job_info(g:job).exitval)}) + + let g:job = job_start(cmd, {}) + sleep 50m + call job_stop(g:job, 'term') + call WaitForAssert({-> assert_equal(-1, job_info(g:job).exitval)}) + + let g:job = job_start(cmd, {}) + sleep 50m + call job_stop(g:job, 'kill') + call WaitForAssert({-> assert_equal(-1, job_info(g:job).exitval)}) +endfunc + +func Test_issue_5485() + let $VAR1 = 'global' + let g:Ch_reply = "" + let l:job = job_start([&shell, &shellcmdflag, has('win32') ? 'echo %VAR1% %VAR2%' : 'echo $VAR1 $VAR2'], {'env': {'VAR1': 'local', 'VAR2': 'local'}, 'callback': 'Ch_handler'}) + let g:Ch_job = l:job + call WaitForAssert({-> assert_equal("local local", trim(g:Ch_reply))}) + unlet $VAR1 +endfunc + +func Test_job_trailing_space_unix() + CheckUnix + CheckExecutable cat + + let job = job_start("cat ", #{in_io: 'null'}) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) + call assert_equal(0, job_info(job).exitval) + + call delete('Xtestsocket') +endfunc + +func Test_ch_getbufnr() + let ch = test_null_channel() + call assert_equal(-1, ch_getbufnr(ch, 'in')) + call assert_equal(-1, ch_getbufnr(ch, 'out')) + call assert_equal(-1, ch_getbufnr(ch, 'err')) + call assert_equal(-1, ch_getbufnr(ch, '')) +endfunc + +" Test for unsupported options passed to ch_status() +func Test_invalid_job_chan_options() + let ch = test_null_channel() + let invalid_opts = [ + \ {'in_io' : 'null'}, + \ {'out_io' : 'null'}, + \ {'err_io' : 'null'}, + \ {'mode' : 'json'}, + \ {'out_mode' : 'json'}, + \ {'err_mode' : 'json'}, + \ {'noblock' : 1}, + \ {'in_name' : '/a/b'}, + \ {'pty' : 1}, + \ {'in_buf' : 1}, + \ {'out_buf' : 1}, + \ {'err_buf' : 1}, + \ {'out_modifiable' : 1}, + \ {'err_modifiable' : 1}, + \ {'out_msg' : 1}, + \ {'err_msg' : 1}, + \ {'in_top' : 1}, + \ {'in_bot' : 1}, + \ {'channel' : ch}, + \ {'callback' : ''}, + \ {'out_cb' : ''}, + \ {'err_cb' : ''}, + \ {'close_cb' : ''}, + \ {'exit_cb' : ''}, + \ {'term_opencmd' : ''}, + \ {'eof_chars' : ''}, + \ {'term_rows' : 10}, + \ {'term_cols' : 10}, + \ {'vertical' : 0}, + \ {'curwin' : 1}, + \ {'bufnr' : 1}, + \ {'hidden' : 0}, + \ {'norestore' : 0}, + \ {'term_kill' : 'kill'}, + \ {'tty_type' : ''}, + \ {'term_highlight' : ''}, + \ {'env' : {}}, + \ {'cwd' : ''}, + \ {'timeout' : 0}, + \ {'out_timeout' : 0}, + \ {'err_timeout' : 0}, + \ {'id' : 0}, + \ {'stoponexit' : ''}, + \ {'block_write' : 1} + \ ] + if has('gui') + call add(invalid_opts, {'ansi_colors' : []}) + endif + + for opt in invalid_opts + call assert_fails("let x = ch_status(ch, opt)", 'E475:') + endfor + call assert_equal('fail', ch_status(ch, test_null_dict())) +endfunc + +" Test for passing the command and the arguments as List on MS-Windows +func Test_job_with_list_args() + CheckMSWindows + + enew! + let bnum = bufnr() + let job = job_start(['cmd', '/c', 'echo', 'Hello', 'World'], {'out_io' : 'buffer', 'out_buf' : bnum}) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) + call assert_equal('Hello World', getline(1)) + %bw! +endfunc + +func ExitCb_cb_with_input(job, status) + call feedkeys(":\echo input('', 'default')\\", 'nx') + call assert_equal('default', Screenline(&lines)) + let g:wait_exit_cb = 0 +endfunc + +func Test_cb_with_input() + let g:wait_exit_cb = 1 + + if has('win32') + let cmd = 'cmd /c echo "Vim''s test"' + else + let cmd = 'echo "Vim''s test"' + endif + + let job = job_start(cmd, {'out_cb': 'ExitCb_cb_with_input'}) + call WaitFor({-> job_status(job) == "dead"}) + call WaitForAssert({-> assert_equal(0, g:wait_exit_cb)}) + + unlet g:wait_exit_cb +endfunc + +function s:HandleBufEnter() abort + let queue = [] + let job = job_start(['date'], {'callback': { j, d -> add(queue, d) }}) + while empty(queue) + sleep! 10m + endwhile +endfunction + +func Test_parse_messages_in_autocmd() + CheckUnix + + " Check that in the BufEnter autocommand events are being handled + augroup bufenterjob + autocmd! + autocmd BufEnter Xbufenterjob call s:HandleBufEnter() + augroup END + + only + split Xbufenterjob + wincmd p + redraw + + close + augroup bufenterjob + autocmd! + augroup END +endfunc + +func Test_job_start_with_invalid_argument() + call assert_fails('call job_start([0zff])', 'E976:') +endfunc + +" Test for the 'lsp' channel mode +func LspCb(chan, msg) + call add(g:lspNotif, a:msg) +endfunc + +func LspOtCb(chan, msg) + call add(g:lspOtMsgs, a:msg) +endfunc + +func LspTests(port) + " call ch_logfile('Xlspclient.log', 'w') + let ch = ch_open(s:localhost .. a:port, #{mode: 'lsp', callback: 'LspCb'}) + if ch_status(ch) == "fail" + call assert_report("Can't open the lsp channel") + return + endif + + " check for channel information + let info = ch_info(ch) + call assert_equal('LSP', info.sock_mode) + + " Evaluate an expression + let resp = ch_evalexpr(ch, #{method: 'simple-rpc', params: [10, 20]}) + call assert_false(empty(resp)) + call assert_equal(#{id: 1, jsonrpc: '2.0', result: 'simple-rpc'}, resp) + + " Evaluate an expression. While waiting for the response, a notification + " message is delivered. + let g:lspNotif = [] + let resp = ch_evalexpr(ch, #{method: 'rpc-with-notif', params: {'v': 10}}) + call assert_false(empty(resp)) + call assert_equal(#{id: 2, jsonrpc: '2.0', result: 'rpc-with-notif-resp'}, + \ resp) + call assert_equal([#{jsonrpc: '2.0', result: 'rpc-with-notif-notif'}], + \ g:lspNotif) + + " Wrong payload notification test + let g:lspNotif = [] + let r = ch_sendexpr(ch, #{method: 'wrong-payload', params: {}}) + call assert_equal({}, r) + " Send a ping to wait for all the notification messages to arrive + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + call assert_equal([#{jsonrpc: '2.0', result: 'wrong-payload'}], g:lspNotif) + + " Test for receiving a response with incorrect 'id' and additional + " notification messages while evaluating an expression. + let g:lspNotif = [] + let resp = ch_evalexpr(ch, #{method: 'rpc-resp-incorrect-id', + \ params: {'a': [1, 2]}}) + call assert_false(empty(resp)) + call assert_equal(#{id: 4, jsonrpc: '2.0', + \ result: 'rpc-resp-incorrect-id-4'}, resp) + call assert_equal([#{jsonrpc: '2.0', result: 'rpc-resp-incorrect-id-1'}, + \ #{jsonrpc: '2.0', result: 'rpc-resp-incorrect-id-2'}, + \ #{jsonrpc: '2.0', id: 1, result: 'rpc-resp-incorrect-id-3'}], + \ g:lspNotif) + + " simple notification test + let g:lspNotif = [] + call ch_sendexpr(ch, #{method: 'simple-notif', params: [#{a: 10, b: []}]}) + " Send a ping to wait for all the notification messages to arrive + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + call assert_equal([#{jsonrpc: '2.0', result: 'simple-notif'}], g:lspNotif) + + " multiple notifications test + let g:lspNotif = [] + call ch_sendexpr(ch, #{method: 'multi-notif', params: [#{a: {}, b: {}}]}) + " Send a ping to wait for all the notification messages to arrive + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + call assert_equal([#{jsonrpc: '2.0', result: 'multi-notif1'}, + \ #{jsonrpc: '2.0', result: 'multi-notif2'}], g:lspNotif) + + " Test for sending a message with an identifier. + let g:lspNotif = [] + call ch_sendexpr(ch, #{method: 'msg-with-id', id: 93, params: #{s: 'str'}}) + " Send a ping to wait for all the notification messages to arrive + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + call assert_equal([#{jsonrpc: '2.0', id: 93, result: 'msg-with-id'}], + \ g:lspNotif) + + " Test for setting the 'id' value in a request message + let resp = ch_evalexpr(ch, #{method: 'ping', id: 1, params: {}}) + call assert_equal(#{id: 8, jsonrpc: '2.0', result: 'alive'}, resp) + + " Test for using a one time callback function to process a response + let g:lspOtMsgs = [] + let r = ch_sendexpr(ch, #{method: 'msg-specific-cb', params: {}}, + \ #{callback: 'LspOtCb'}) + call assert_equal(9, r.id) + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + call assert_equal([#{id: 9, jsonrpc: '2.0', result: 'msg-specific-cb'}], + \ g:lspOtMsgs) + + " Test for generating a request message from the other end (server) + let g:lspNotif = [] + call ch_sendexpr(ch, #{method: 'server-req', params: #{}}) + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + call assert_equal([{'id': 201, 'jsonrpc': '2.0', + \ 'result': {'method': 'checkhealth', 'params': {'a': 20}}}], + \ g:lspNotif) + + " Test for sending a message without an id + let g:lspNotif = [] + call ch_sendexpr(ch, #{method: 'echo', params: #{s: 'msg-without-id'}}) + " Send a ping to wait for all the notification messages to arrive + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + call assert_equal([#{jsonrpc: '2.0', result: + \ #{method: 'echo', jsonrpc: '2.0', params: #{s: 'msg-without-id'}}}], + \ g:lspNotif) + + " Test for sending a notification message with an id + let g:lspNotif = [] + call ch_sendexpr(ch, #{method: 'echo', id: 110, params: #{s: 'msg-with-id'}}) + " Send a ping to wait for all the notification messages to arrive + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + call assert_equal([#{jsonrpc: '2.0', result: + \ #{method: 'echo', jsonrpc: '2.0', id: 110, + \ params: #{s: 'msg-with-id'}}}], g:lspNotif) + + " Test for processing the extra fields in the HTTP header + let resp = ch_evalexpr(ch, #{method: 'extra-hdr-fields', params: {}}) + call assert_equal({'id': 14, 'jsonrpc': '2.0', 'result': 'extra-hdr-fields'}, + \ resp) + + " Test for processing delayed payload + let resp = ch_evalexpr(ch, #{method: 'delayed-payload', params: {}}) + call assert_equal({'id': 15, 'jsonrpc': '2.0', 'result': 'delayed-payload'}, + \ resp) + + " Test for processing a HTTP header without the Content-Length field + let resp = ch_evalexpr(ch, #{method: 'hdr-without-len', params: {}}, + \ #{timeout: 200}) + call assert_equal({}, resp) + " send a ping to make sure communication still works + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + + " Test for processing a HTTP header with wrong length + let resp = ch_evalexpr(ch, #{method: 'hdr-with-wrong-len', params: {}}, + \ #{timeout: 200}) + call assert_equal({}, resp) + " send a ping to make sure communication still works + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + + " Test for processing a HTTP header with negative length + let resp = ch_evalexpr(ch, #{method: 'hdr-with-negative-len', params: {}}, + \ #{timeout: 200}) + call assert_equal({}, resp) + " send a ping to make sure communication still works + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + + " Test for an empty header + let resp = ch_evalexpr(ch, #{method: 'empty-header', params: {}}, + \ #{timeout: 200}) + call assert_equal({}, resp) + " send a ping to make sure communication still works + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + + " Test for an empty payload + let resp = ch_evalexpr(ch, #{method: 'empty-payload', params: {}}, + \ #{timeout: 200}) + call assert_equal({}, resp) + " send a ping to make sure communication still works + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + + " Test for a large payload + let content = repeat('abcdef', 11000) + let resp = ch_evalexpr(ch, #{method: 'large-payload', + \ params: #{text: content}}) + call assert_equal(#{jsonrpc: '2.0', id: 26, result: + \ #{method: 'large-payload', jsonrpc: '2.0', id: 26, + \ params: #{text: content}}}, resp) + " send a ping to make sure communication still works + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + + " Test for invoking an unsupported method + let resp = ch_evalexpr(ch, #{method: 'xyz', params: {}}, #{timeout: 200}) + call assert_equal({}, resp) + + " Test for sending a message without a callback function. Notification + " message should be dropped but RPC response should not be dropped. + call ch_setoptions(ch, #{callback: ''}) + let g:lspNotif = [] + call ch_sendexpr(ch, #{method: 'echo', params: #{s: 'no-callback'}}) + " Send a ping to wait for all the notification messages to arrive + call assert_equal('alive', ch_evalexpr(ch, #{method: 'ping'}).result) + call assert_equal([], g:lspNotif) + " Restore the callback function + call ch_setoptions(ch, #{callback: 'LspCb'}) + + " " Test for sending a raw message + " let g:lspNotif = [] + " let s = "Content-Length: 62\r\n" + " let s ..= "Content-Type: application/vim-jsonrpc; charset=utf-8\r\n" + " let s ..= "\r\n" + " let s ..= '{"method":"echo","jsonrpc":"2.0","params":{"m":"raw-message"}}' + " call ch_sendraw(ch, s) + " call ch_evalexpr(ch, #{method: 'ping'}) + " call assert_equal([{'jsonrpc': '2.0', + " \ 'result': {'method': 'echo', 'jsonrpc': '2.0', + " \ 'params': {'m': 'raw-message'}}}], g:lspNotif) + + " Invalid arguments to ch_evalexpr() and ch_sendexpr() + call assert_fails('call ch_sendexpr(ch, #{method: "cookie", id: "cookie"})', + \ 'E475:') + call assert_fails('call ch_evalexpr(ch, #{method: "ping", id: [{}]})', 'E475:') + call assert_fails('call ch_evalexpr(ch, [1, 2, 3])', 'E1206:') + call assert_fails('call ch_sendexpr(ch, "abc")', 'E1206:') + call assert_fails('call ch_evalexpr(ch, #{method: "ping"}, #{callback: "LspOtCb"})', 'E917:') + " call ch_logfile('', 'w') +endfunc + +func Test_channel_lsp_mode() + call RunServer('test_channel_lsp.py', 'LspTests', []) +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_channel_6.py b/src/testdir/test_channel_6.py new file mode 100644 index 0000000..5bd17a3 --- /dev/null +++ b/src/testdir/test_channel_6.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +# +# Server that will accept connections from a Vim channel. +# Used by test_channel.vim. +# +# This requires Python 2.6 or later. + +from test_channel import main, ThreadedTCPServer +import socket + +class ThreadedTCP6Server(ThreadedTCPServer): + address_family = socket.AF_INET6 + +if __name__ == "__main__": + main("::", 0, ThreadedTCP6Server) diff --git a/src/testdir/test_channel_lsp.py b/src/testdir/test_channel_lsp.py new file mode 100644 index 0000000..10b4fb4 --- /dev/null +++ b/src/testdir/test_channel_lsp.py @@ -0,0 +1,333 @@ +#!/usr/bin/env python +# +# Server that will accept connections from a Vim channel. +# Used by test_channel.vim to test LSP functionality. +# +# This requires Python 2.6 or later. + +from __future__ import print_function +import json +import socket +import sys +import time +import threading + +try: + # Python 3 + import socketserver +except ImportError: + # Python 2 + import SocketServer as socketserver + +class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler): + + def setup(self): + self.request.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + + def debuglog(self, msg): + if self.debug: + with open("Xlspserver.log", "a") as myfile: + myfile.write(msg) + + def send_lsp_msg(self, msgid, resp_dict): + v = {'jsonrpc': '2.0', 'result': resp_dict} + if msgid != -1: + v['id'] = msgid + s = json.dumps(v) + resp = "Content-Length: " + str(len(s)) + "\r\n" + resp += "Content-Type: application/vim-jsonrpc; charset=utf-8\r\n" + resp += "\r\n" + resp += s + if self.debug: + self.debuglog("SEND: ({0} bytes) '{1}'\n".format(len(resp), resp)) + self.request.sendall(resp.encode('utf-8')) + + def send_wrong_payload(self): + v = 'wrong-payload' + s = json.dumps(v) + resp = "Content-Length: " + str(len(s)) + "\r\n" + resp += "Content-Type: application/vim-jsonrpc; charset=utf-8\r\n" + resp += "\r\n" + resp += s + self.request.sendall(resp.encode('utf-8')) + + def send_empty_header(self, msgid, resp_dict): + v = {'jsonrpc': '2.0', 'id': msgid, 'result': resp_dict} + s = json.dumps(v) + resp = "\r\n" + resp += s + self.request.sendall(resp.encode('utf-8')) + + def send_empty_payload(self): + resp = "Content-Length: 0\r\n" + resp += "Content-Type: application/vim-jsonrpc; charset=utf-8\r\n" + resp += "\r\n" + self.request.sendall(resp.encode('utf-8')) + + def send_extra_hdr_fields(self, msgid, resp_dict): + # test for sending extra fields in the http header + v = {'jsonrpc': '2.0', 'id': msgid, 'result': resp_dict} + s = json.dumps(v) + resp = "Host: abc.vim.org\r\n" + resp += "User-Agent: Python\r\n" + resp += "Accept-Language: en-US,en\r\n" + resp += "Content-Type: application/vim-jsonrpc; charset=utf-8\r\n" + resp += "Content-Length: " + str(len(s)) + "\r\n" + resp += "\r\n" + resp += s + self.request.sendall(resp.encode('utf-8')) + + def send_delayed_payload(self, msgid, resp_dict): + # test for sending the hdr first and then after some delay, send the + # payload + v = {'jsonrpc': '2.0', 'id': msgid, 'result': resp_dict} + s = json.dumps(v) + resp = "Content-Length: " + str(len(s)) + "\r\n" + resp += "\r\n" + self.request.sendall(resp.encode('utf-8')) + time.sleep(0.05) + resp = s + self.request.sendall(resp.encode('utf-8')) + + def send_hdr_without_len(self, msgid, resp_dict): + # test for sending the http header without length + v = {'jsonrpc': '2.0', 'id': msgid, 'result': resp_dict} + s = json.dumps(v) + resp = "Content-Type: application/vim-jsonrpc; charset=utf-8\r\n" + resp += "\r\n" + resp += s + self.request.sendall(resp.encode('utf-8')) + + def send_hdr_with_wrong_len(self, msgid, resp_dict): + # test for sending the http header with wrong length + v = {'jsonrpc': '2.0', 'id': msgid, 'result': resp_dict} + s = json.dumps(v) + resp = "Content-Length: 1000\r\n" + resp += "\r\n" + resp += s + self.request.sendall(resp.encode('utf-8')) + + def send_hdr_with_negative_len(self, msgid, resp_dict): + # test for sending the http header with negative length + v = {'jsonrpc': '2.0', 'id': msgid, 'result': resp_dict} + s = json.dumps(v) + resp = "Content-Length: -1\r\n" + resp += "\r\n" + resp += s + self.request.sendall(resp.encode('utf-8')) + + def do_ping(self, payload): + time.sleep(0.2) + self.send_lsp_msg(payload['id'], 'alive') + + def do_echo(self, payload): + self.send_lsp_msg(-1, payload) + + def do_simple_rpc(self, payload): + # test for a simple RPC request + self.send_lsp_msg(payload['id'], 'simple-rpc') + + def do_rpc_with_notif(self, payload): + # test for sending a notification before replying to a request message + self.send_lsp_msg(-1, 'rpc-with-notif-notif') + # sleep for some time to make sure the notification is delivered + time.sleep(0.2) + self.send_lsp_msg(payload['id'], 'rpc-with-notif-resp') + + def do_wrong_payload(self, payload): + # test for sending a non dict payload + self.send_wrong_payload() + time.sleep(0.2) + self.send_lsp_msg(-1, 'wrong-payload') + + def do_large_payload(self, payload): + # test for sending a large (> 64K) payload + self.send_lsp_msg(payload['id'], payload) + + def do_rpc_resp_incorrect_id(self, payload): + self.send_lsp_msg(-1, 'rpc-resp-incorrect-id-1') + self.send_lsp_msg(-1, 'rpc-resp-incorrect-id-2') + self.send_lsp_msg(1, 'rpc-resp-incorrect-id-3') + time.sleep(0.2) + self.send_lsp_msg(payload['id'], 'rpc-resp-incorrect-id-4') + + def do_simple_notif(self, payload): + # notification message test + self.send_lsp_msg(-1, 'simple-notif') + + def do_multi_notif(self, payload): + # send multiple notifications + self.send_lsp_msg(-1, 'multi-notif1') + self.send_lsp_msg(-1, 'multi-notif2') + + def do_msg_with_id(self, payload): + self.send_lsp_msg(payload['id'], 'msg-with-id') + + def do_msg_specific_cb(self, payload): + self.send_lsp_msg(payload['id'], 'msg-specific-cb') + + def do_server_req(self, payload): + self.send_lsp_msg(201, {'method': 'checkhealth', 'params': {'a': 20}}) + + def do_extra_hdr_fields(self, payload): + self.send_extra_hdr_fields(payload['id'], 'extra-hdr-fields') + + def do_delayad_payload(self, payload): + self.send_delayed_payload(payload['id'], 'delayed-payload') + + def do_hdr_without_len(self, payload): + self.send_hdr_without_len(payload['id'], 'hdr-without-len') + + def do_hdr_with_wrong_len(self, payload): + self.send_hdr_with_wrong_len(payload['id'], 'hdr-with-wrong-len') + + def do_hdr_with_negative_len(self, payload): + self.send_hdr_with_negative_len(payload['id'], 'hdr-with-negative-len') + + def do_empty_header(self, payload): + self.send_empty_header(payload['id'], 'empty-header') + + def do_empty_payload(self, payload): + self.send_empty_payload() + + def process_msg(self, msg): + try: + decoded = json.loads(msg) + if 'method' in decoded: + test_map = { + 'ping': self.do_ping, + 'echo': self.do_echo, + 'simple-rpc': self.do_simple_rpc, + 'rpc-with-notif': self.do_rpc_with_notif, + 'wrong-payload': self.do_wrong_payload, + 'large-payload': self.do_large_payload, + 'rpc-resp-incorrect-id': self.do_rpc_resp_incorrect_id, + 'simple-notif': self.do_simple_notif, + 'multi-notif': self.do_multi_notif, + 'msg-with-id': self.do_msg_with_id, + 'msg-specific-cb': self.do_msg_specific_cb, + 'server-req': self.do_server_req, + 'extra-hdr-fields': self.do_extra_hdr_fields, + 'delayed-payload': self.do_delayad_payload, + 'hdr-without-len': self.do_hdr_without_len, + 'hdr-with-wrong-len': self.do_hdr_with_wrong_len, + 'hdr-with-negative-len': self.do_hdr_with_negative_len, + 'empty-header': self.do_empty_header, + 'empty-payload': self.do_empty_payload + } + if decoded['method'] in test_map: + test_map[decoded['method']](decoded) + else: + self.debuglog("Error: Unsupported method - " + decoded['method'] + "\n") + else: + self.debuglog("Error: 'method' field is not found\n") + + except ValueError: + self.debuglog("Error: json decoding failed\n") + + def process_msgs(self, msgbuf): + while True: + sidx = msgbuf.find('Content-Length: ') + if sidx == -1: + # partial message received + return msgbuf + sidx += 16 + eidx = msgbuf.find('\r\n') + if eidx == -1: + # partial message received + return msgbuf + msglen = int(msgbuf[sidx:eidx]) + + hdrend = msgbuf.find('\r\n\r\n') + if hdrend == -1: + # partial message received + return msgbuf + + if msglen > len(msgbuf[hdrend + 4:]): + if self.debug: + self.debuglog("Partial message ({0} bytes)\n".format(len(msgbuf))) + # partial message received + return msgbuf + + if self.debug: + self.debuglog("Complete message ({0} bytes) received\n".format(msglen)) + + # Remove the header + msgbuf = msgbuf[hdrend + 4:] + payload = msgbuf[:msglen] + + self.process_msg(payload) + + # Remove the processed message + msgbuf = msgbuf[msglen:] + + def handle(self): + self.debug = False + self.debuglog("=== socket opened ===\n") + msgbuf = '' + while True: + try: + received = self.request.recv(4096).decode('utf-8') + except socket.error: + self.debuglog("=== socket error ===\n") + break + except IOError: + self.debuglog("=== socket closed ===\n") + break + if received == '': + self.debuglog("=== socket closed ===\n") + break + + # Write the received lines into the file for debugging + if self.debug: + self.debuglog("RECV: ({0} bytes) '{1}'\n".format(len(received), received)) + + # Can receive more than one line in a response or a partial line. + # Accumulate all the received characters and process one line at + # a time. + msgbuf += received + msgbuf = self.process_msgs(msgbuf) + +class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): + pass + +def writePortInFile(port): + # Write the port number in Xportnr, so that the test knows it. + f = open("Xportnr", "w") + f.write("{0}".format(port)) + f.close() + +def main(host, port, server_class=ThreadedTCPServer): + # Wait half a second before opening the port to test waittime in ch_open(). + # We do want to get the port number, get that first. We cannot open the + # socket, guess a port is free. + if len(sys.argv) >= 2 and sys.argv[1] == 'delay': + port = 13684 + writePortInFile(port) + time.sleep(0.5) + + addrs = socket.getaddrinfo(host, port, 0, 0, socket.IPPROTO_TCP) + # Each addr is a (family, type, proto, canonname, sockaddr) tuple + sockaddr = addrs[0][4] + server_class.address_family = addrs[0][0] + + server = server_class(sockaddr[0:2], ThreadedTCPRequestHandler) + ip, port = server.server_address[0:2] + + # Start a thread with the server. That thread will then start a new thread + # for each connection. + server_thread = threading.Thread(target=server.serve_forever) + server_thread.start() + + writePortInFile(port) + + # Main thread terminates, but the server continues running + # until server.shutdown() is called. + try: + while server_thread.is_alive(): + server_thread.join(1) + except (KeyboardInterrupt, SystemExit): + server.shutdown() + +if __name__ == "__main__": + main("localhost", 0) diff --git a/src/testdir/test_channel_pipe.py b/src/testdir/test_channel_pipe.py new file mode 100644 index 0000000..22e58b4 --- /dev/null +++ b/src/testdir/test_channel_pipe.py @@ -0,0 +1,76 @@ +#!/usr/bin/python +# +# Server that will communicate over stdin/stderr +# +# This requires Python 2.6 or later. + +from __future__ import print_function +import os +import sys +import time + +if __name__ == "__main__": + + if len(sys.argv) > 1: + if sys.argv[1].startswith("err"): + print(sys.argv[1], file=sys.stderr) + sys.stderr.flush() + elif sys.argv[1].startswith("incomplete"): + print(sys.argv[1], end='') + sys.stdout.flush() + sys.exit(0) + elif sys.argv[1].startswith("busy"): + time.sleep(100) + sys.exit(0) + else: + print(sys.argv[1]) + sys.stdout.flush() + if sys.argv[1].startswith("quit"): + sys.exit(0) + + if os.getenv('CI'): + try: + import thread_util + thread_util.set_high_priority() + except Exception: + pass + + while True: + typed = sys.stdin.readline() + if typed == "": # EOF -- stop + break + if typed.startswith("quit"): + print("Goodbye!") + sys.stdout.flush() + break + if typed.startswith("echo "): + print(typed[5:-1]) + sys.stdout.flush() + if typed.startswith("echosplit "): + for part in typed[10:-1].split('|'): + sys.stdout.write(part) + sys.stdout.flush() + time.sleep(0.05) + if typed.startswith("double "): + print(typed[7:-1] + "\nAND " + typed[7:-1]) + sys.stdout.flush() + if typed.startswith("split "): + print(typed[6:-1], end='') + sys.stdout.flush() + time.sleep(0.05) + print(typed[6:-1], end='') + sys.stdout.flush() + time.sleep(0.05) + print(typed[6:-1]) + sys.stdout.flush() + if typed.startswith("echoerr "): + print(typed[8:-1], file=sys.stderr) + sys.stderr.flush() + if typed.startswith("doubleerr "): + print(typed[10:-1] + "\nAND " + typed[10:-1], file=sys.stderr) + sys.stderr.flush() + if typed.startswith("XXX"): + print(typed, end='') + sys.stderr.flush() + break + diff --git a/src/testdir/test_channel_unix.py b/src/testdir/test_channel_unix.py new file mode 100644 index 0000000..85e780a --- /dev/null +++ b/src/testdir/test_channel_unix.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python +# +# Server that will accept connections from a Vim channel. +# Used by test_channel.vim. +# +# This requires Python 2.6 or later. + +from __future__ import print_function +from test_channel import ThreadedTCPServer, TestingRequestHandler, \ + writePortInFile +import socket +import threading +import os + +try: + FileNotFoundError +except NameError: + # Python 2 + FileNotFoundError = (IOError, OSError) + +if not hasattr(socket, "AF_UNIX"): + raise NotImplementedError("Unix sockets are not supported on this platform") + +class ThreadedUnixServer(ThreadedTCPServer): + address_family = socket.AF_UNIX + +class ThreadedUnixRequestHandler(TestingRequestHandler): + pass + +def main(path): + server = ThreadedUnixServer(path, ThreadedUnixRequestHandler) + + # Start a thread with the server. That thread will then start a new thread + # for each connection. + server_thread = threading.Thread(target=server.serve_forever) + server_thread.start() + + # Signal the test harness we're ready, the port value has no meaning. + writePortInFile(1234) + + print("Listening on {0}".format(server.server_address)) + + # Main thread terminates, but the server continues running + # until server.shutdown() is called. + try: + while server_thread.is_alive(): + server_thread.join(1) + except (KeyboardInterrupt, SystemExit): + server.shutdown() + +if __name__ == "__main__": + try: + os.remove("Xtestsocket") + except FileNotFoundError: + pass + main("Xtestsocket") diff --git a/src/testdir/test_channel_write.py b/src/testdir/test_channel_write.py new file mode 100644 index 0000000..9c8813b --- /dev/null +++ b/src/testdir/test_channel_write.py @@ -0,0 +1,18 @@ +#!/usr/bin/python +# +# Program that writes a number to stdout repeatedly +# +# This requires Python 2.6 or later. + +from __future__ import print_function +import sys +import time + +if __name__ == "__main__": + + done = 0 + while done < 10: + done = done + 1 + print(done) + sys.stdout.flush() + time.sleep(0.05) # sleep 50 msec diff --git a/src/testdir/test_charsearch.vim b/src/testdir/test_charsearch.vim new file mode 100644 index 0000000..142e6c8 --- /dev/null +++ b/src/testdir/test_charsearch.vim @@ -0,0 +1,98 @@ +" Test for character search commands - t, T, f, F, ; and , + +func Test_charsearch() + enew! + call append(0, ['Xabcdefghijkemnopqretuvwxyz', + \ 'Yabcdefghijkemnopqretuvwxyz', + \ 'Zabcdefghijkemnokqretkvwxyz']) + " check that "fe" and ";" work + 1 + normal! ylfep;;p,,p + call assert_equal('XabcdeXfghijkeXmnopqreXtuvwxyz', getline(1)) + " check that save/restore works + 2 + normal! ylfep + let csave = getcharsearch() + normal! fip + call setcharsearch(csave) + normal! ;p;p + call assert_equal('YabcdeYfghiYjkeYmnopqreYtuvwxyz', getline(2)) + + " check that setcharsearch() changes the settings. + 3 + normal! ylfep + eval {'char': 'k'}->setcharsearch() + normal! ;p + call setcharsearch({'forward': 0}) + normal! $;p + call setcharsearch({'until': 1}) + set cpo-=; + normal! ;;p + call assert_equal('ZabcdeZfghijkZZemnokqretkZvwxyz', getline(3)) + + " check that repeating a search before and after a line fails + normal 3Gfv + call assert_beeps('normal ;') + call assert_beeps('normal ,') + + " clear the character search + call setcharsearch({'char' : ''}) + call assert_equal('', getcharsearch().char) + + call assert_fails("call setcharsearch([])", 'E1206:') + enew! +endfunc + +" Test for character search in virtual edit mode with +func Test_csearch_virtualedit() + new + set virtualedit=all + call setline(1, "a\tb") + normal! tb + call assert_equal([0, 1, 2, 6], getpos('.')) + set virtualedit& + bw! +endfunc + +" Test for character search failure in latin1 encoding +func Test_charsearch_latin1() + new + let save_enc = &encoding + set encoding=latin1 + call setline(1, 'abcdefghijk') + call assert_beeps('normal fz') + call assert_beeps('normal tx') + call assert_beeps('normal $Fz') + call assert_beeps('normal $Tx') + let &encoding = save_enc + bw! +endfunc + +" Test for using character search to find a multibyte character with composing +" characters. +func Test_charsearch_composing_char() + new + call setline(1, "one two thq\u0328\u0301r\u0328\u0301ree") + call feedkeys("fr\u0328\u0301", 'xt') + call assert_equal([0, 1, 16, 0, 12], getcurpos()) + + " use character search with a multi-byte character followed by a + " non-composing character + call setline(1, "abc deȉf ghi") + call feedkeys("ggcf\u0209\u0210", 'xt') + call assert_equal("\u0210f ghi", getline(1)) + bw! +endfunc + +" Test for character search with 'hkmap' +func Test_charsearch_hkmap() + new + set hkmap + call setline(1, "ùðáâ÷ëòéïçìêöî") + call feedkeys("fë", 'xt') + call assert_equal([0, 1, 11, 0, 6], getcurpos()) + set hkmap& + bw! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_charsearch_utf8.vim b/src/testdir/test_charsearch_utf8.vim new file mode 100644 index 0000000..82a807a --- /dev/null +++ b/src/testdir/test_charsearch_utf8.vim @@ -0,0 +1,19 @@ +" Tests for related f{char} and t{char} using utf-8. + +" Test for t,f,F,T movement commands +func Test_search_cmds() + new! + call setline(1, "・最初から最後まで最強のVimは最高") + 1 + normal! f最 + call assert_equal([0, 1, 4, 0], getpos('.')) + normal! ; + call assert_equal([0, 1, 16, 0], getpos('.')) + normal! 2; + call assert_equal([0, 1, 43, 0], getpos('.')) + normal! , + call assert_equal([0, 1, 28, 0], getpos('.')) + bw! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_checkpath.vim b/src/testdir/test_checkpath.vim new file mode 100644 index 0000000..97da8c2 --- /dev/null +++ b/src/testdir/test_checkpath.vim @@ -0,0 +1,116 @@ +" Tests for the :checkpath command + +" Test for 'include' without \zs or \ze +func Test_checkpath1() + call mkdir("Xcheckdir1/dir2", "pR") + call writefile(['#include "bar.a"'], 'Xcheckdir1/dir2/foo.a') + call writefile(['#include "baz.a"'], 'Xcheckdir1/dir2/bar.a') + call writefile(['#include "foo.a"'], 'Xcheckdir1/dir2/baz.a') + call writefile(['#include '], 'Xbase.a') + + edit Xbase.a + set path=Xcheckdir1/dir2 + let res = split(execute("checkpath!"), "\n") + call assert_equal([ + \ '--- Included files in path ---', + \ 'Xcheckdir1/dir2/foo.a', + \ 'Xcheckdir1/dir2/foo.a -->', + \ ' Xcheckdir1/dir2/bar.a', + \ ' Xcheckdir1/dir2/bar.a -->', + \ ' Xcheckdir1/dir2/baz.a', + \ ' Xcheckdir1/dir2/baz.a -->', + \ ' "foo.a" (Already listed)'], res) + + enew + call delete("./Xbase.a") + set path& +endfunc + +func DotsToSlashes() + return substitute(v:fname, '\.', '/', 'g') . '.b' +endfunc + +" Test for 'include' with \zs and \ze +func Test_checkpath2() + call mkdir("Xcheckdir2/dir2", "pR") + call writefile(['%inc /bar/'], 'Xcheckdir2/dir2/foo.b') + call writefile(['%inc /baz/'], 'Xcheckdir2/dir2/bar.b') + call writefile(['%inc /foo/'], 'Xcheckdir2/dir2/baz.b') + call writefile(['%inc /foo/'], 'Xbase.b', 'D') + + let &include='^\s*%inc\s*/\zs[^/]\+\ze' + let &includeexpr='DotsToSlashes()' + + edit Xbase.b + set path=Xcheckdir2/dir2 + let res = split(execute("checkpath!"), "\n") + call assert_equal([ + \ '--- Included files in path ---', + \ 'Xcheckdir2/dir2/foo.b', + \ 'Xcheckdir2/dir2/foo.b -->', + \ ' Xcheckdir2/dir2/bar.b', + \ ' Xcheckdir2/dir2/bar.b -->', + \ ' Xcheckdir2/dir2/baz.b', + \ ' Xcheckdir2/dir2/baz.b -->', + \ ' foo (Already listed)'], res) + + enew + set path& + set include& + set includeexpr& +endfunc + +func StripNewlineChar() + if v:fname =~ '\n$' + return v:fname[:-2] + endif + return v:fname +endfunc + +" Test for 'include' with \zs and no \ze +func Test_checkpath3() + call mkdir("Xcheckdir3/dir2", "pR") + call writefile(['%inc bar.c'], 'Xcheckdir3/dir2/foo.c') + call writefile(['%inc baz.c'], 'Xcheckdir3/dir2/bar.c') + call writefile(['%inc foo.c'], 'Xcheckdir3/dir2/baz.c') + call writefile(['%inc foo.c'], 'Xcheckdir3/dir2/FALSE.c') + call writefile(['%inc FALSE.c foo.c'], 'Xbase.c', 'D') + + let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze' + let &includeexpr='StripNewlineChar()' + + edit Xbase.c + set path=Xcheckdir3/dir2 + let res = split(execute("checkpath!"), "\n") + call assert_equal([ + \ '--- Included files in path ---', + \ 'Xcheckdir3/dir2/foo.c', + \ 'Xcheckdir3/dir2/foo.c -->', + \ ' Xcheckdir3/dir2/bar.c', + \ ' Xcheckdir3/dir2/bar.c -->', + \ ' Xcheckdir3/dir2/baz.c', + \ ' Xcheckdir3/dir2/baz.c -->', + \ ' foo.c (Already listed)'], res) + + enew + set path& + set include& + set includeexpr& +endfunc + +" Test for invalid regex in 'include' and 'define' options +func Test_checkpath_errors() + let save_include = &include + set include=\\%( + call assert_fails('checkpath', 'E53:') + let &include = save_include + + let save_define = &define + set define=\\%( + call assert_fails('dsearch abc', 'E53:') + let &define = save_define + + call assert_fails('psearch \%(', 'E53:') +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_cindent.vim b/src/testdir/test_cindent.vim new file mode 100644 index 0000000..96e99ac --- /dev/null +++ b/src/testdir/test_cindent.vim @@ -0,0 +1,5442 @@ +" Test for cinoptions and cindent + +def Test_cino_hash() + # Test that curbuf->b_ind_hash_comment is correctly reset + new + setlocal cindent cinoptions=#1 + setlocal cinoptions= + setline(1, ["#include "]) + cursor(1, 1) + norm! o#include + assert_equal(["#include ", "#include"], getline(1, 2)) + + bwipe! +enddef + +def Test_cino_extern_c() + # Test for cino-E + + var without_ind =<< trim [CODE] + #ifdef __cplusplus + extern "C" { + #endif + int func_a(void); + #ifdef __cplusplus + } + #endif + [CODE] + + var with_ind =<< trim [CODE] + #ifdef __cplusplus + extern "C" { + #endif + int func_a(void); + #ifdef __cplusplus + } + #endif + [CODE] + new + setlocal cindent cinoptions=E0 + setline(1, without_ind) + feedkeys("gg=G", 'tx') + assert_equal(with_ind, getline(1, '$')) + + setlocal cinoptions=E-s + setline(1, with_ind) + feedkeys("gg=G", 'tx') + assert_equal(without_ind, getline(1, '$')) + + setlocal cinoptions=Es + var tests = [ + \ ['recognized', ['extern "C" {'], "\t\t;"], + \ ['recognized', ['extern "C++" {'], "\t\t;"], + \ ['recognized', ['extern /* com */ "C"{'], "\t\t;"], + \ ['recognized', ['extern"C"{'], "\t\t;"], + \ ['recognized', ['extern "C"', '{'], "\t\t;"], + \ ['not recognized', ['extern {'], "\t;"], + \ ['not recognized', ['extern /*"C"*/{'], "\t;"], + \ ['not recognized', ['extern "C" //{'], ";"], + \ ['not recognized', ['extern "C" /*{*/'], ";"], + \ ] + + for pair in tests + var lines = pair[1] + setline(1, lines) + feedkeys(len(lines) .. "Go;", 'tx') + assert_equal(pair[2], getline(len(lines) + 1), + 'Failed for "' .. string(lines) .. '"') + endfor + + bwipe! +enddef + +def Test_cindent_rawstring() + new + setl cindent + feedkeys("i" .. + \ "int main() {\" .. + \ "R\"(\" .. + \ ")\";\" .. + \ "statement;\", "x") + assert_equal("\tstatement;", getline(line('.'))) + + bwipe! +enddef + +def Test_cindent_expr() + new + def g:MyIndentFunction(): number + return v:lnum == 1 ? shiftwidth() : 0 + enddef + setl expandtab sw=8 indentkeys+=; indentexpr=g:MyIndentFunction() + var testinput =<< trim [CODE] + var_a = something() + b = something() + [CODE] + setline(1, testinput) + cursor(1, 1) + feedkeys("^\j$A;\", 'tnix') + var expected =<< [CODE] + var_a = something(); +b = something(); +[CODE] + assert_equal(expected, getline(1, '$')) + + :%d + testinput =<< [CODE] + var_a = something() + b = something() +[CODE] + setline(1, testinput) + cursor(1, 1) + feedkeys("^\j$A;\", 'tnix') + expected =<< [CODE] + var_a = something(); + b = something() +[CODE] + assert_equal(expected, getline(1, '$')) + + delfunc g:MyIndentFunction + + bwipe! +enddef + +def Test_cindent_func() + new + setlocal cindent + setline(1, ['int main(void)', '{', 'return 0;', '}']) + assert_equal(-1, cindent(0)) + assert_equal(&sw, 3->cindent()) + assert_equal(-1, cindent(line('$') + 1)) + + bwipe! +enddef + +def Test_cindent_1() + new + setl cindent ts=4 sw=4 + setl cino& sts& + + var code =<< trim [CODE] + /* start of AUTO matically checked vim: set ts=4 : */ + { + if (test) + cmd1; + cmd2; + } + + { + if (test) + cmd1; + else + cmd2; + } + + { + if (test) + { + cmd1; + cmd2; + } + } + + { + if (test) + { + cmd1; + else + } + } + + { + while (this) + if (test) + cmd1; + cmd2; + } + + { + while (this) + if (test) + cmd1; + else + cmd2; + } + + { + if (test) + { + cmd; + } + + if (test) + cmd; + } + + { + if (test) { + cmd; + } + + if (test) cmd; + } + + { + cmd1; + for (blah) + while (this) + if (test) + cmd2; + cmd3; + } + + { + cmd1; + for (blah) + while (this) + if (test) + cmd2; + cmd3; + + if (test) + { + cmd1; + cmd2; + cmd3; + } + } + + + /* Test for 'cindent' do/while mixed with if/else: */ + + { + do + if (asdf) + asdfasd; + while (cond); + + do + if (asdf) + while (asdf) + asdf; + while (asdf); + } + + /* Test for 'cindent' with two ) on a continuation line */ + { + if (asdfasdf;asldkfj asdlkfj as;ldkfj sal;d + aal;sdkjf ( ;asldfkja;sldfk + al;sdjfka ;slkdf ) sa;ldkjfsa dlk;) + line up here; + } + + + /* C++ tests: */ + + // foo() these three lines should remain in column 0 + // { + // } + + /* Test for continuation and unterminated lines: */ + { + i = 99 + 14325 + + 21345 + + 21345 + + 21345 + ( 21345 + + 21345) + + 2345 + + 1234; + c = 1; + } + + /* + testje for indent with empty line + + here */ + + { + if (testing && + not a joke || + line up here) + hay; + if (testing && + (not a joke || testing + )line up here) + hay; + if (testing && + (not a joke || testing + line up here)) + hay; + } + + + { + switch (c) + { + case xx: + do + if (asdf) + do + asdfasdf; + while (asdf); + else + asdfasdf; + while (cond); + case yy: + case xx: + case zz: + testing; + } + } + + { + if (cond) { + foo; + } + else + { + bar; + } + } + + { + if (alskdfj ;alsdkfjal;skdjf (;sadlkfsa ;dlkf j;alksdfj ;alskdjf + alsdkfj (asldk;fj + awith cino=(0 ;lf this one goes to below the paren with == + ;laksjfd ;lsakdjf ;alskdf asd) + asdfasdf;))) + asdfasdf; + } + + int + func(a, b) + int a; + int c; + { + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3) + ) + } + + { + while (asd) + { + if (asdf) + if (test) + if (that) + { + if (asdf) + do + cdasd; + while (as + df); + } + else + if (asdf) + asdf; + else + asdf; + asdf; + } + } + + { + s = "/*"; b = ';' + s = "/*"; b = ';'; + a = b; + } + + { + switch (a) + { + case a: + switch (t) + { + case 1: + cmd; + break; + case 2: + cmd; + break; + } + cmd; + break; + case b: + { + int i; + cmd; + } + break; + case c: { + int i; + cmd; + } + case d: if (cond && + test) { /* this line doesn't work right */ + int i; + cmd; + } + break; + } + } + + { + if (!(vim_strchr(p_cpo, CPO_BUFOPTGLOB) != NULL && entering) && + (bp_to->b_p_initialized || + (!entering && vim_strchr(p_cpo, CPO_BUFOPT) != NULL))) + return; + label : + asdf = asdf ? + asdf : asdf; + asdf = asdf ? + asdf: asdf; + } + + /* Special Comments : This function has the added complexity (compared */ + /* : to addtolist) of having to check for a detail */ + /* : texture and add that to the list first. */ + + char *(array[100]) = { + "testje", + "foo", + "bar", + } + + enum soppie + { + yes = 0, + no, + maybe + }; + + typedef enum soppie + { + yes = 0, + no, + maybe + }; + + static enum + { + yes = 0, + no, + maybe + } soppie; + + public static enum + { + yes = 0, + no, + maybe + } soppie; + + static private enum + { + yes = 0, + no, + maybe + } soppie; + + { + int a, + b; + } + + { + struct Type + { + int i; + char *str; + } var[] = + { + 0, "zero", + 1, "one", + 2, "two", + 3, "three" + }; + + float matrix[3][3] = + { + { + 0, + 1, + 2 + }, + { + 3, + 4, + 5 + }, + { + 6, + 7, + 8 + } + }; + } + + { + /* blah ( blah */ + /* where does this go? */ + + /* blah ( blah */ + cmd; + + func(arg1, + /* comment */ + arg2); + a; + { + b; + { + c; /* Hey, NOW it indents?! */ + } + } + + { + func(arg1, + arg2, + arg3); + /* Hey, what am I doing here? Is this coz of the ","? */ + } + } + + main () + { + if (cond) + { + a = b; + } + if (cond) { + a = c; + } + if (cond) + a = d; + return; + } + + { + case 2: if (asdf && + asdfasdf) + aasdf; + a = 9; + case 3: if (asdf) + aasdf; + a = 9; + case 4: x = 1; + y = 2; + + label: if (asdf) + here; + + label: if (asdf && + asdfasdf) + { + } + + label: if (asdf && + asdfasdf) { + there; + } + + label: if (asdf && + asdfasdf) + there; + } + + { + /* + hello with ":set comments= cino=c5" + */ + + /* + hello with ":set comments= cino=" + */ + } + + + { + if (a < b) { + a = a + 1; + } else + a = a + 2; + + if (a) + do { + testing; + } while (asdfasdf); + a = b + 1; + asdfasdf + } + + { + for ( int i = 0; + i < 10; i++ ) + { + } + i = 0; + } + + class bob + { + int foo() {return 1;} + int bar; + } + + main() + { + while(1) + if (foo) + { + bar; + } + else { + asdf; + } + misplacedline; + } + + { + if (clipboard.state == SELECT_DONE + && ((row == clipboard.start.lnum + && col >= clipboard.start.col) + || row > clipboard.start.lnum)) + } + + { + if (1) {i += 4;} + where_am_i; + return 0; + } + + { + { + } // sdf(asdf + if (asdf) + asd; + } + + { + label1: + label2: + } + + { + int fooRet = foo(pBar1, false /*fKB*/, + true /*fPTB*/, 3 /*nT*/, false /*fDF*/); + f() { + for ( i = 0; + i < m; + /* c */ i++ ) { + a = b; + } + } + } + + { + f1(/*comment*/); + f2(); + } + + { + do { + if (foo) { + } else + ; + } while (foo); + foo(); // was wrong + } + + int x; // no extra indent because of the ; + void func() + { + } + + char *tab[] = {"aaa", + "};", /* }; */ NULL} + int indented; + {} + + char *a[] = {"aaa", "bbb", + "ccc", NULL}; + // here + + char *tab[] = {"aaa", + "xx", /* xx */}; /* asdf */ + int not_indented; + + { + do { + switch (bla) + { + case 1: if (foo) + bar; + } + } while (boo); + wrong; + } + + int foo, + bar; + int foo; + + #if defined(foo) \ + && defined(bar) + char * xx = "asdf\ + foo\ + bor"; + int x; + + char *foo = "asdf\ + asdf\ + asdf", + *bar; + + void f() + { + #if defined(foo) \ + && defined(bar) + char *foo = "asdf\ + asdf\ + asdf", + *bar; + { + int i; + char *foo = "asdf\ + asdf\ + asdf", + *bar; + } + #endif + } + #endif + + int y; // comment + // comment + + // comment + + { + Constructor(int a, + int b ) : BaseClass(a) + { + } + } + + void foo() + { + char one, + two; + struct bla piet, + jan; + enum foo kees, + jannie; + static unsigned sdf, + krap; + unsigned int piet, + jan; + int + kees, + jan; + } + + { + t(int f, + int d); // ) + d(); + } + + Constructor::Constructor(int a, + int b + ) : + BaseClass(a, + b, + c), + mMember(b), + { + } + + Constructor::Constructor(int a, + int b ) : + BaseClass(a) + { + } + + Constructor::Constructor(int a, + int b ) /*x*/ : /*x*/ BaseClass(a), + member(b) + { + } + + A::A(int a, int b) + : aa(a), + bb(b), + cc(c) + { + } + + class CAbc : + public BaseClass1, + protected BaseClass2 + { + int Test() { return FALSE; } + int Test1() { return TRUE; } + + CAbc(int a, int b ) : + BaseClass(a) + { + switch(xxx) + { + case abc: + asdf(); + break; + + case 999: + baer(); + break; + } + } + + public: // <-- this was incorrectly indented before!! + void testfall(); + protected: + void testfall(); + }; + + class CAbc : public BaseClass1, + protected BaseClass2 + { + }; + + static struct + { + int a; + int b; + } variable[COUNT] = + { + { + 123, + 456 + }, + { + 123, + 456 + } + }; + + static struct + { + int a; + int b; + } variable[COUNT] = + { + { 123, 456 }, + { 123, 456 } + }; + + void asdf() /* ind_maxparen may cause trouble here */ + { + if ((0 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1)) break; + } + + foo() + { + a = cond ? foo() : asdf + + asdf; + + a = cond ? + foo() : asdf + + asdf; + } + + int main(void) + { + if (a) + if (b) + 2; + else 3; + next_line_of_code(); + } + + barry() + { + Foo::Foo (int one, + int two) + : something(4) + {} + } + + barry() + { + Foo::Foo (int one, int two) + : something(4) + {} + } + + Constructor::Constructor(int a, + int b + ) : + BaseClass(a, + b, + c), + mMember(b) + { + } + int main () + { + if (lala) + do + ++(*lolo); + while (lili + && lele); + lulu; + } + + int main () + { + switch (c) + { + case 'c': if (cond) + { + } + } + } + + main() + { + (void) MyFancyFuasdfadsfnction( + argument); + } + + main() + { + char foo[] = "/*"; + /* as + df */ + hello + } + + /* valid namespaces with normal indent */ + namespace + { + { + 111111111111; + } + } + namespace /* test */ + { + 11111111111111111; + } + namespace // test + { + 111111111111111111; + } + namespace + { + 111111111111111111; + } + namespace test + { + 111111111111111111; + } + namespace{ + 111111111111111111; + } + namespace test{ + 111111111111111111; + } + namespace { + 111111111111111111; + } + namespace test { + 111111111111111111; + namespace test2 { + 22222222222222222; + } + } + inline namespace { + 111111111111111111; + } + inline /* test */ namespace { + 111111111111111111; + } + inline/* test */namespace { + 111111111111111111; + } + + /* invalid namespaces use block indent */ + namespace test test2 { + 111111111111111111111; + } + namespace11111111111 { + 111111111111; + } + namespace() { + 1111111111111; + } + namespace() + { + 111111111111111111; + } + namespace test test2 + { + 1111111111111111111; + } + namespace111111111 + { + 111111111111111111; + } + inlinenamespace { + 111111111111111111; + } + + void getstring() { + /* Raw strings */ + const char* s = R"( + test { + # comment + field: 123 + } + )"; + } + + void getstring() { + const char* s = R"foo( + test { + # comment + field: 123 + } + )foo"; + } + + { + int a[4] = { + [0] = 0, + [1] = 1, + [2] = 2, + [3] = 3, + }; + } + + { + a = b[2] + + 3; + } + + { + if (1) + /* aaaaa + * bbbbb + */ + a = 1; + } + + void func() + { + switch (foo) + { + case (bar): + if (baz()) + quux(); + break; + case (shmoo): + if (!bar) + { + } + case (foo1): + switch (bar) + { + case baz: + baz_f(); + break; + } + break; + default: + baz(); + baz(); + break; + } + } + + /* end of AUTO */ + [CODE] + + append(0, code) + normal gg + search('start of AUTO') + exe "normal =/end of AUTO\" + + var expected =<< trim [CODE] + /* start of AUTO matically checked vim: set ts=4 : */ + { + if (test) + cmd1; + cmd2; + } + + { + if (test) + cmd1; + else + cmd2; + } + + { + if (test) + { + cmd1; + cmd2; + } + } + + { + if (test) + { + cmd1; + else + } + } + + { + while (this) + if (test) + cmd1; + cmd2; + } + + { + while (this) + if (test) + cmd1; + else + cmd2; + } + + { + if (test) + { + cmd; + } + + if (test) + cmd; + } + + { + if (test) { + cmd; + } + + if (test) cmd; + } + + { + cmd1; + for (blah) + while (this) + if (test) + cmd2; + cmd3; + } + + { + cmd1; + for (blah) + while (this) + if (test) + cmd2; + cmd3; + + if (test) + { + cmd1; + cmd2; + cmd3; + } + } + + + /* Test for 'cindent' do/while mixed with if/else: */ + + { + do + if (asdf) + asdfasd; + while (cond); + + do + if (asdf) + while (asdf) + asdf; + while (asdf); + } + + /* Test for 'cindent' with two ) on a continuation line */ + { + if (asdfasdf;asldkfj asdlkfj as;ldkfj sal;d + aal;sdkjf ( ;asldfkja;sldfk + al;sdjfka ;slkdf ) sa;ldkjfsa dlk;) + line up here; + } + + + /* C++ tests: */ + + // foo() these three lines should remain in column 0 + // { + // } + + /* Test for continuation and unterminated lines: */ + { + i = 99 + 14325 + + 21345 + + 21345 + + 21345 + ( 21345 + + 21345) + + 2345 + + 1234; + c = 1; + } + + /* + testje for indent with empty line + + here */ + + { + if (testing && + not a joke || + line up here) + hay; + if (testing && + (not a joke || testing + )line up here) + hay; + if (testing && + (not a joke || testing + line up here)) + hay; + } + + + { + switch (c) + { + case xx: + do + if (asdf) + do + asdfasdf; + while (asdf); + else + asdfasdf; + while (cond); + case yy: + case xx: + case zz: + testing; + } + } + + { + if (cond) { + foo; + } + else + { + bar; + } + } + + { + if (alskdfj ;alsdkfjal;skdjf (;sadlkfsa ;dlkf j;alksdfj ;alskdjf + alsdkfj (asldk;fj + awith cino=(0 ;lf this one goes to below the paren with == + ;laksjfd ;lsakdjf ;alskdf asd) + asdfasdf;))) + asdfasdf; + } + + int + func(a, b) + int a; + int c; + { + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3) + ) + } + + { + while (asd) + { + if (asdf) + if (test) + if (that) + { + if (asdf) + do + cdasd; + while (as + df); + } + else + if (asdf) + asdf; + else + asdf; + asdf; + } + } + + { + s = "/*"; b = ';' + s = "/*"; b = ';'; + a = b; + } + + { + switch (a) + { + case a: + switch (t) + { + case 1: + cmd; + break; + case 2: + cmd; + break; + } + cmd; + break; + case b: + { + int i; + cmd; + } + break; + case c: { + int i; + cmd; + } + case d: if (cond && + test) { /* this line doesn't work right */ + int i; + cmd; + } + break; + } + } + + { + if (!(vim_strchr(p_cpo, CPO_BUFOPTGLOB) != NULL && entering) && + (bp_to->b_p_initialized || + (!entering && vim_strchr(p_cpo, CPO_BUFOPT) != NULL))) + return; + label : + asdf = asdf ? + asdf : asdf; + asdf = asdf ? + asdf: asdf; + } + + /* Special Comments : This function has the added complexity (compared */ + /* : to addtolist) of having to check for a detail */ + /* : texture and add that to the list first. */ + + char *(array[100]) = { + "testje", + "foo", + "bar", + } + + enum soppie + { + yes = 0, + no, + maybe + }; + + typedef enum soppie + { + yes = 0, + no, + maybe + }; + + static enum + { + yes = 0, + no, + maybe + } soppie; + + public static enum + { + yes = 0, + no, + maybe + } soppie; + + static private enum + { + yes = 0, + no, + maybe + } soppie; + + { + int a, + b; + } + + { + struct Type + { + int i; + char *str; + } var[] = + { + 0, "zero", + 1, "one", + 2, "two", + 3, "three" + }; + + float matrix[3][3] = + { + { + 0, + 1, + 2 + }, + { + 3, + 4, + 5 + }, + { + 6, + 7, + 8 + } + }; + } + + { + /* blah ( blah */ + /* where does this go? */ + + /* blah ( blah */ + cmd; + + func(arg1, + /* comment */ + arg2); + a; + { + b; + { + c; /* Hey, NOW it indents?! */ + } + } + + { + func(arg1, + arg2, + arg3); + /* Hey, what am I doing here? Is this coz of the ","? */ + } + } + + main () + { + if (cond) + { + a = b; + } + if (cond) { + a = c; + } + if (cond) + a = d; + return; + } + + { + case 2: if (asdf && + asdfasdf) + aasdf; + a = 9; + case 3: if (asdf) + aasdf; + a = 9; + case 4: x = 1; + y = 2; + + label: if (asdf) + here; + + label: if (asdf && + asdfasdf) + { + } + + label: if (asdf && + asdfasdf) { + there; + } + + label: if (asdf && + asdfasdf) + there; + } + + { + /* + hello with ":set comments= cino=c5" + */ + + /* + hello with ":set comments= cino=" + */ + } + + + { + if (a < b) { + a = a + 1; + } else + a = a + 2; + + if (a) + do { + testing; + } while (asdfasdf); + a = b + 1; + asdfasdf + } + + { + for ( int i = 0; + i < 10; i++ ) + { + } + i = 0; + } + + class bob + { + int foo() {return 1;} + int bar; + } + + main() + { + while(1) + if (foo) + { + bar; + } + else { + asdf; + } + misplacedline; + } + + { + if (clipboard.state == SELECT_DONE + && ((row == clipboard.start.lnum + && col >= clipboard.start.col) + || row > clipboard.start.lnum)) + } + + { + if (1) {i += 4;} + where_am_i; + return 0; + } + + { + { + } // sdf(asdf + if (asdf) + asd; + } + + { + label1: + label2: + } + + { + int fooRet = foo(pBar1, false /*fKB*/, + true /*fPTB*/, 3 /*nT*/, false /*fDF*/); + f() { + for ( i = 0; + i < m; + /* c */ i++ ) { + a = b; + } + } + } + + { + f1(/*comment*/); + f2(); + } + + { + do { + if (foo) { + } else + ; + } while (foo); + foo(); // was wrong + } + + int x; // no extra indent because of the ; + void func() + { + } + + char *tab[] = {"aaa", + "};", /* }; */ NULL} + int indented; + {} + + char *a[] = {"aaa", "bbb", + "ccc", NULL}; + // here + + char *tab[] = {"aaa", + "xx", /* xx */}; /* asdf */ + int not_indented; + + { + do { + switch (bla) + { + case 1: if (foo) + bar; + } + } while (boo); + wrong; + } + + int foo, + bar; + int foo; + + #if defined(foo) \ + && defined(bar) + char * xx = "asdf\ + foo\ + bor"; + int x; + + char *foo = "asdf\ + asdf\ + asdf", + *bar; + + void f() + { + #if defined(foo) \ + && defined(bar) + char *foo = "asdf\ + asdf\ + asdf", + *bar; + { + int i; + char *foo = "asdf\ + asdf\ + asdf", + *bar; + } + #endif + } + #endif + + int y; // comment + // comment + + // comment + + { + Constructor(int a, + int b ) : BaseClass(a) + { + } + } + + void foo() + { + char one, + two; + struct bla piet, + jan; + enum foo kees, + jannie; + static unsigned sdf, + krap; + unsigned int piet, + jan; + int + kees, + jan; + } + + { + t(int f, + int d); // ) + d(); + } + + Constructor::Constructor(int a, + int b + ) : + BaseClass(a, + b, + c), + mMember(b), + { + } + + Constructor::Constructor(int a, + int b ) : + BaseClass(a) + { + } + + Constructor::Constructor(int a, + int b ) /*x*/ : /*x*/ BaseClass(a), + member(b) + { + } + + A::A(int a, int b) + : aa(a), + bb(b), + cc(c) + { + } + + class CAbc : + public BaseClass1, + protected BaseClass2 + { + int Test() { return FALSE; } + int Test1() { return TRUE; } + + CAbc(int a, int b ) : + BaseClass(a) + { + switch(xxx) + { + case abc: + asdf(); + break; + + case 999: + baer(); + break; + } + } + + public: // <-- this was incorrectly indented before!! + void testfall(); + protected: + void testfall(); + }; + + class CAbc : public BaseClass1, + protected BaseClass2 + { + }; + + static struct + { + int a; + int b; + } variable[COUNT] = + { + { + 123, + 456 + }, + { + 123, + 456 + } + }; + + static struct + { + int a; + int b; + } variable[COUNT] = + { + { 123, 456 }, + { 123, 456 } + }; + + void asdf() /* ind_maxparen may cause trouble here */ + { + if ((0 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1)) break; + } + + foo() + { + a = cond ? foo() : asdf + + asdf; + + a = cond ? + foo() : asdf + + asdf; + } + + int main(void) + { + if (a) + if (b) + 2; + else 3; + next_line_of_code(); + } + + barry() + { + Foo::Foo (int one, + int two) + : something(4) + {} + } + + barry() + { + Foo::Foo (int one, int two) + : something(4) + {} + } + + Constructor::Constructor(int a, + int b + ) : + BaseClass(a, + b, + c), + mMember(b) + { + } + int main () + { + if (lala) + do + ++(*lolo); + while (lili + && lele); + lulu; + } + + int main () + { + switch (c) + { + case 'c': if (cond) + { + } + } + } + + main() + { + (void) MyFancyFuasdfadsfnction( + argument); + } + + main() + { + char foo[] = "/*"; + /* as + df */ + hello + } + + /* valid namespaces with normal indent */ + namespace + { + { + 111111111111; + } + } + namespace /* test */ + { + 11111111111111111; + } + namespace // test + { + 111111111111111111; + } + namespace + { + 111111111111111111; + } + namespace test + { + 111111111111111111; + } + namespace{ + 111111111111111111; + } + namespace test{ + 111111111111111111; + } + namespace { + 111111111111111111; + } + namespace test { + 111111111111111111; + namespace test2 { + 22222222222222222; + } + } + inline namespace { + 111111111111111111; + } + inline /* test */ namespace { + 111111111111111111; + } + inline/* test */namespace { + 111111111111111111; + } + + /* invalid namespaces use block indent */ + namespace test test2 { + 111111111111111111111; + } + namespace11111111111 { + 111111111111; + } + namespace() { + 1111111111111; + } + namespace() + { + 111111111111111111; + } + namespace test test2 + { + 1111111111111111111; + } + namespace111111111 + { + 111111111111111111; + } + inlinenamespace { + 111111111111111111; + } + + void getstring() { + /* Raw strings */ + const char* s = R"( + test { + # comment + field: 123 + } + )"; + } + + void getstring() { + const char* s = R"foo( + test { + # comment + field: 123 + } + )foo"; + } + + { + int a[4] = { + [0] = 0, + [1] = 1, + [2] = 2, + [3] = 3, + }; + } + + { + a = b[2] + + 3; + } + + { + if (1) + /* aaaaa + * bbbbb + */ + a = 1; + } + + void func() + { + switch (foo) + { + case (bar): + if (baz()) + quux(); + break; + case (shmoo): + if (!bar) + { + } + case (foo1): + switch (bar) + { + case baz: + baz_f(); + break; + } + break; + default: + baz(); + baz(); + break; + } + } + + /* end of AUTO */ + + [CODE] + + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_2() + new + setl cindent ts=4 sw=4 + setl tw=0 noai fo=croq + &wm = &columns - 20 + + var code =<< trim [CODE] + { + + /* this is + * a real serious important big + * comment + */ + /* insert " about life, the universe, and the rest" after "serious" */ + } + [CODE] + + append(0, code) + normal gg + search('serious', 'e') + normal a about life, the universe, and the rest + + var expected =<< trim [CODE] + { + + /* this is + * a real serious + * about life, the + * universe, and the + * rest important big + * comment + */ + /* insert " about life, the universe, and the rest" after "serious" */ + } + + [CODE] + + assert_equal(expected, getline(1, '$')) + set wm& + + bwipe! +enddef + +def Test_cindent_3() + new + setl nocindent ts=4 sw=4 + + var code =<< trim [CODE] + { + /* + * Testing for comments, without 'cin' set + */ + + /* + * what happens here? + */ + + /* + the end of the comment, try inserting a line below */ + + /* how about + this one */ + } + [CODE] + + append(0, code) + normal gg + search('comments') + normal joabout life + search('happens') + normal jothere + search('below') + normal oline + search('this') + normal Ohello + + var expected =<< trim [CODE] + { + /* + * Testing for comments, without 'cin' set + */ + about life + + /* + * what happens here? + */ + there + + /* + the end of the comment, try inserting a line below */ + line + + /* how about + hello + this one */ + } + + [CODE] + + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_4() + new + setl cindent ts=4 sw=4 + + var code =<< trim [CODE] + { + var = this + that + vec[0] * vec[0] + + vec[1] * vec[1] + + vec2[2] * vec[2]; + } + [CODE] + + append(0, code) + normal gg + search('vec2') + normal == + + var expected =<< trim [CODE] + { + var = this + that + vec[0] * vec[0] + + vec[1] * vec[1] + + vec2[2] * vec[2]; + } + + [CODE] + + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_5() + new + setl cindent ts=4 sw=4 + setl cino=}4 + + var code =<< trim [CODE] + { + asdf asdflkajds f; + if (tes & ting) { + asdf asdf asdf ; + asdfa sdf asdf; + } + testing1; + if (tes & ting) + { + asdf asdf asdf ; + asdfa sdf asdf; + } + testing2; + } + [CODE] + + append(0, code) + normal gg + search('testing1') + exe "normal k2==/testing2\" + normal k2== + + var expected =<< trim [CODE] + { + asdf asdflkajds f; + if (tes & ting) { + asdf asdf asdf ; + asdfa sdf asdf; + } + testing1; + if (tes & ting) + { + asdf asdf asdf ; + asdfa sdf asdf; + } + testing2; + } + + [CODE] + + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_6() + new + setl cindent ts=4 sw=4 + setl cino=(0,)20 + + var code =<< trim [CODE] + main ( int first_par, /* + * Comment for + * first par + */ + int second_par /* + * Comment for + * second par + */ + ) + { + func( first_par, /* + * Comment for + * first par + */ + second_par /* + * Comment for + * second par + */ + ); + + } + [CODE] + + append(0, code) + normal gg + search('main') + normal =][ + + var expected =<< trim [CODE] + main ( int first_par, /* + * Comment for + * first par + */ + int second_par /* + * Comment for + * second par + */ + ) + { + func( first_par, /* + * Comment for + * first par + */ + second_par /* + * Comment for + * second par + */ + ); + + } + + [CODE] + + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_7() + new + setl cindent ts=4 sw=4 + setl cino=es,n0s + + var code =<< trim [CODE] + main(void) + { + /* Make sure that cino=X0s is not parsed like cino=Xs. */ + if (cond) + foo(); + else + { + bar(); + } + } + [CODE] + + append(0, code) + normal gg + search('main') + normal =][ + + var expected =<< trim [CODE] + main(void) + { + /* Make sure that cino=X0s is not parsed like cino=Xs. */ + if (cond) + foo(); + else + { + bar(); + } + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_8() + new + setl cindent ts=4 sw=4 + setl cino= + + var code =<< trim [CODE] + + { + do + { + if () + { + if () + asdf; + else + asdf; + } + } while (); + cmd; /* this should go under the } */ + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + + { + do + { + if () + { + if () + asdf; + else + asdf; + } + } while (); + cmd; /* this should go under the } */ + } + + [CODE] + + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_9() + new + setl cindent ts=4 sw=4 + + var code =<< trim [CODE] + + void f() + { + if ( k() ) { + l(); + + } else { /* Start (two words) end */ + m(); + } + + n(); + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + + void f() + { + if ( k() ) { + l(); + + } else { /* Start (two words) end */ + m(); + } + + n(); + } + + [CODE] + + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_10() + new + setl cindent ts=4 sw=4 + setl cino={s,e-s + + var code =<< trim [CODE] + + void f() + { + if ( k() ) + { + l(); + } else { /* Start (two words) end */ + m(); + } + n(); /* should be under the if () */ + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + + void f() + { + if ( k() ) + { + l(); + } else { /* Start (two words) end */ + m(); + } + n(); /* should be under the if () */ + } + + [CODE] + + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_11() + new + setl cindent ts=4 sw=4 + setl cino={s,fs + + var code =<< trim [CODE] + void bar(void) + { + static array[2][2] = + { + { 1, 2 }, + { 3, 4 }, + } + + while (a) + { + foo(&a); + } + + { + int a; + { + a = a + 1; + } + } + b = a; + } + + void func(void) + { + a = 1; + { + b = 2; + } + c = 3; + d = 4; + } + /* foo */ + [CODE] + + append(0, code) + normal gg + exe "normal ]]=/ foo\" + + var expected =<< trim [CODE] + void bar(void) + { + static array[2][2] = + { + { 1, 2 }, + { 3, 4 }, + } + + while (a) + { + foo(&a); + } + + { + int a; + { + a = a + 1; + } + } + b = a; + } + + void func(void) + { + a = 1; + { + b = 2; + } + c = 3; + d = 4; + } + /* foo */ + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_12() + new + setl cindent ts=4 sw=4 + setl cino= + + var code =<< trim [CODE] + a() + { + do { + a = a + + a; + } while ( a ); /* add text under this line */ + if ( a ) + a; + } + [CODE] + + append(0, code) + normal gg + search('while') + normal ohere + + var expected =<< trim [CODE] + a() + { + do { + a = a + + a; + } while ( a ); /* add text under this line */ + here + if ( a ) + a; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_13() + new + setl cindent ts=4 sw=4 + setl cino= com= + + var code =<< trim [CODE] + a() + { + label1: + /* hmm */ + // comment + } + [CODE] + + append(0, code) + normal gg + search('comment') + exe "normal olabel2: b();\rlabel3 /* post */:\r/* pre */ label4:\r" + .. "f(/*com*/);\rif (/*com*/)\rcmd();" + + var expected =<< trim [CODE] + a() + { + label1: + /* hmm */ + // comment + label2: b(); + label3 /* post */: + /* pre */ label4: + f(/*com*/); + if (/*com*/) + cmd(); + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_14() + new + setl cindent ts=4 sw=4 + setl comments& comments^=s:/*,m:**,ex:*/ + + var code =<< trim [CODE] + /* + * A simple comment + */ + + /* + ** A different comment + */ + [CODE] + + append(0, code) + normal gg + search('simple') + normal =5j + + var expected =<< trim [CODE] + /* + * A simple comment + */ + + /* + ** A different comment + */ + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_15() + new + setl cindent ts=4 sw=4 + setl cino=c0 + setl comments& comments-=s1:/* comments^=s0:/* + + var code =<< trim [CODE] + void f() + { + + /********* + A comment. + *********/ + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + + /********* + A comment. + *********/ + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_16() + new + setl cindent ts=4 sw=4 + setl cino=c0,C1 + setl comments& comments-=s1:/* comments^=s0:/* + + var code =<< trim [CODE] + void f() + { + + /********* + A comment. + *********/ + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + + /********* + A comment. + *********/ + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_17() + new + setl cindent ts=4 sw=4 + setl cino= + + var code =<< trim [CODE] + void f() + { + c = c1 && + ( + c2 || + c3 + ) && c4; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + c = c1 && + ( + c2 || + c3 + ) && c4; + } + + [CODE] + call assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_18() + new + setl cindent ts=4 sw=4 + setl cino=(s + + var code =<< trim [CODE] + void f() + { + c = c1 && + ( + c2 || + c3 + ) && c4; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + c = c1 && + ( + c2 || + c3 + ) && c4; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_19() + new + setl cindent ts=4 sw=4 + set cino=(s,U1 + + var code =<< trim [CODE] + void f() + { + c = c1 && + ( + c2 || + c3 + ) && c4; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + c = c1 && + ( + c2 || + c3 + ) && c4; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_20() + new + setl cindent ts=4 sw=4 + setl cino=(0 + + var code =<< trim [CODE] + void f() + { + if ( c1 + && ( c2 + || c3)) + foo; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + if ( c1 + && ( c2 + || c3)) + foo; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_21() + new + setl cindent ts=4 sw=4 + setl cino=(0,w1 + + var code =<< trim [CODE] + void f() + { + if ( c1 + && ( c2 + || c3)) + foo; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + if ( c1 + && ( c2 + || c3)) + foo; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_22() + new + setl cindent ts=4 sw=4 + setl cino=(s + + var code =<< trim [CODE] + void f() + { + c = c1 && ( + c2 || + c3 + ) && c4; + if ( + c1 && c2 + ) + foo; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + c = c1 && ( + c2 || + c3 + ) && c4; + if ( + c1 && c2 + ) + foo; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_23() + new + setl cindent ts=4 sw=4 + setl cino=(s,m1 + + var code =<< trim [CODE] + void f() + { + c = c1 && ( + c2 || + c3 + ) && c4; + if ( + c1 && c2 + ) + foo; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + c = c1 && ( + c2 || + c3 + ) && c4; + if ( + c1 && c2 + ) + foo; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_24() + new + setl cindent ts=4 sw=4 + setl cino=b1 + + var code =<< trim [CODE] + void f() + { + switch (x) + { + case 1: + a = b; + break; + default: + a = 0; + break; + } + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + switch (x) + { + case 1: + a = b; + break; + default: + a = 0; + break; + } + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_25() + new + setl cindent ts=4 sw=4 + setl cino=(0,W5 + + var code =<< trim [CODE] + void f() + { + invokeme( + argu, + ment); + invokeme( + argu, + ment + ); + invokeme(argu, + ment + ); + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + invokeme( + argu, + ment); + invokeme( + argu, + ment + ); + invokeme(argu, + ment + ); + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_26() + new + setl cindent ts=4 sw=4 + setl cino=/6 + + var code =<< trim [CODE] + void f() + { + statement; + // comment 1 + // comment 2 + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void f() + { + statement; + // comment 1 + // comment 2 + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_27() + new + setl cindent ts=4 sw=4 + setl cino= + + var code =<< trim [CODE] + void f() + { + statement; + // comment 1 + // comment 2 + } + [CODE] + + append(0, code) + normal gg + exe "normal ]]/comment 1/+1\==" + + var expected =<< trim [CODE] + void f() + { + statement; + // comment 1 + // comment 2 + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_28() + new + setl cindent ts=4 sw=4 + setl cino=g0 + + var code =<< trim [CODE] + class CAbc + { + int Test() { return FALSE; } + + public: // comment + void testfall(); + protected: + void testfall(); + }; + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + class CAbc + { + int Test() { return FALSE; } + + public: // comment + void testfall(); + protected: + void testfall(); + }; + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_29() + new + setl cindent ts=4 sw=4 + setl cino=(0,gs,hs + + var code =<< trim [CODE] + class Foo : public Bar + { + public: + virtual void method1(void) = 0; + virtual void method2(int arg1, + int arg2, + int arg3) = 0; + }; + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + class Foo : public Bar + { + public: + virtual void method1(void) = 0; + virtual void method2(int arg1, + int arg2, + int arg3) = 0; + }; + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_30() + new + setl cindent ts=4 sw=4 + setl cino=+20 + + var code =<< [CODE] + void +foo() +{ + if (a) + { + } else + asdf; +} +[CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< [CODE] + void +foo() +{ + if (a) + { + } else + asdf; +} + +[CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_31() + new + setl cindent ts=4 sw=4 + setl cino=(0,W2s + + var code =<< trim [CODE] + + { + averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd( + asdasdf, + func(asdf, + asdfadsf), + asdfasdf + ); + + /* those are ugly, but consequent */ + + func()->asd(asdasdf, + averylongfunctionname( + abc, + dec)->averylongfunctionname( + asdfadsf, + asdfasdf, + asdfasdf, + ), + func(asdfadf, + asdfasdf + ), + asdasdf + ); + + averylongfunctionnameaverylongfunctionnameavery()->asd(fasdf( + abc, + dec)->asdfasdfasdf( + asdfadsf, + asdfasdf, + asdfasdf, + ), + func(asdfadf, + asdfasdf), + asdasdf + ); + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + + { + averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd( + asdasdf, + func(asdf, + asdfadsf), + asdfasdf + ); + + /* those are ugly, but consequent */ + + func()->asd(asdasdf, + averylongfunctionname( + abc, + dec)->averylongfunctionname( + asdfadsf, + asdfasdf, + asdfasdf, + ), + func(asdfadf, + asdfasdf + ), + asdasdf + ); + + averylongfunctionnameaverylongfunctionnameavery()->asd(fasdf( + abc, + dec)->asdfasdfasdf( + asdfadsf, + asdfasdf, + asdfasdf, + ), + func(asdfadf, + asdfasdf), + asdasdf + ); + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_32() + new + setl cindent ts=4 sw=4 + setl cino=M1 + + var code =<< trim [CODE] + int main () + { + if (cond1 && + cond2 + ) + foo; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + int main () + { + if (cond1 && + cond2 + ) + foo; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_33() + new + setl cindent ts=4 sw=4 + setl cino=(0,ts + + var code =<< trim [CODE] + void func(int a + #if defined(FOO) + , int b + , int c + #endif + ) + { + } + [CODE] + + append(0, code) + normal gg + normal 2j=][ + + var expected =<< trim [CODE] + void func(int a + #if defined(FOO) + , int b + , int c + #endif + ) + { + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_34() + new + setl cindent ts=4 sw=4 + setl cino=(0 + + var code =<< trim [CODE] + + void + func(int a + #if defined(FOO) + , int b + , int c + #endif + ) + { + } + [CODE] + + append(0, code) + normal gg + normal =][ + + var expected =<< trim [CODE] + + void + func(int a + #if defined(FOO) + , int b + , int c + #endif + ) + { + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_35() + new + setl cindent ts=4 sw=4 + setl cino& + + var code =<< trim [CODE] + void func(void) + { + if(x==y) + if(y==z) + foo=1; + else { bar=1; + baz=2; + } + printf("Foo!\n"); + } + + void func1(void) + { + char* tab[] = {"foo", "bar", + "baz", "quux", + "this line used", "to be indented incorrectly"}; + foo(); + } + + void func2(void) + { + int tab[] = + {1, 2, + 3, 4, + 5, 6}; + + printf("This line used to be indented incorrectly.\n"); + } + + int foo[] + #ifdef BAR + + = { 1, 2, 3, + 4, 5, 6 } + + #endif + ; + int baz; + + void func3(void) + { + int tab[] = { + 1, 2, + 3, 4, + 5, 6}; + + printf("Don't you dare indent this line incorrectly!\n"); + } + + void + func4(a, b, + c) + int a; + int b; + int c; + { + } + + void + func5( + int a, + int b) + { + } + + void + func6( + int a) + { + } + [CODE] + + append(0, code) + normal gg + normal ]]=7][ + + var expected =<< trim [CODE] + void func(void) + { + if(x==y) + if(y==z) + foo=1; + else { bar=1; + baz=2; + } + printf("Foo!\n"); + } + + void func1(void) + { + char* tab[] = {"foo", "bar", + "baz", "quux", + "this line used", "to be indented incorrectly"}; + foo(); + } + + void func2(void) + { + int tab[] = + {1, 2, + 3, 4, + 5, 6}; + + printf("This line used to be indented incorrectly.\n"); + } + + int foo[] + #ifdef BAR + + = { 1, 2, 3, + 4, 5, 6 } + + #endif + ; + int baz; + + void func3(void) + { + int tab[] = { + 1, 2, + 3, 4, + 5, 6}; + + printf("Don't you dare indent this line incorrectly!\n"); + } + + void + func4(a, b, + c) + int a; + int b; + int c; + { + } + + void + func5( + int a, + int b) + { + } + + void + func6( + int a) + { + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_36() + new + setl cindent ts=4 sw=4 + setl cino& + setl cino+=l1 + + var code =<< trim [CODE] + void func(void) + { + int tab[] = + { + 1, 2, 3, + 4, 5, 6}; + + printf("Indent this line correctly!\n"); + + switch (foo) + { + case bar: + printf("bar"); + break; + case baz: { + printf("baz"); + break; + } + case quux: + printf("But don't break the indentation of this instruction\n"); + break; + } + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + int tab[] = + { + 1, 2, 3, + 4, 5, 6}; + + printf("Indent this line correctly!\n"); + + switch (foo) + { + case bar: + printf("bar"); + break; + case baz: { + printf("baz"); + break; + } + case quux: + printf("But don't break the indentation of this instruction\n"); + break; + } + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_37() + new + setl cindent ts=4 sw=4 + setl cino& + + var code =<< trim [CODE] + void func(void) + { + cout << "a" + << "b" + << ") :" + << "c"; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + cout << "a" + << "b" + << ") :" + << "c"; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_38() + new + setl cindent ts=4 sw=4 + setl com=s1:/*,m:*,ex:*/ + + var code =<< trim [CODE] + void func(void) + { + /* + * This is a comment. + */ + } + [CODE] + + append(0, code) + normal gg + normal ]]3jofoo(); + + var expected =<< trim [CODE] + void func(void) + { + /* + * This is a comment. + */ + foo(); + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_39() + new + setl cindent ts=4 sw=4 + setl cino& + + var code =<< trim [CODE] + void func(void) + { + for (int i = 0; i < 10; ++i) + if (i & 1) { + foo(1); + } else + foo(0); + baz(); + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + for (int i = 0; i < 10; ++i) + if (i & 1) { + foo(1); + } else + foo(0); + baz(); + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_40() + new + setl cindent ts=4 sw=4 + setl cino=k2s,(0 + + var code =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + + if ( c1 + && ( c2 + || c3)) + foo; + func( c1 + && ( c2 + || c3)) + foo; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + + if ( c1 + && ( c2 + || c3)) + foo; + func( c1 + && ( c2 + || c3)) + foo; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_41() + new + setl cindent ts=4 sw=4 + setl cino=k2s,(s + + var code =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + + if ( c1 + && ( c2 + || c3)) + foo; + func( c1 + && ( c2 + || c3)) + foo; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + + if ( c1 + && ( c2 + || c3)) + foo; + func( c1 + && ( c2 + || c3)) + foo; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_42() + new + setl cindent ts=4 sw=4 + setl cino=k2s,(s,U1 + + var code =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + + c = c1 && + ( + c2 || + c3 + ) && c4; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + + c = c1 && + ( + c2 || + c3 + ) && c4; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_43() + new + setl cindent ts=4 sw=4 + setl cino=k2s,(0,W4 + + var code =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + + if ( c1 + && ( c2 + || c3)) + foo; + + a_long_line( + argument, + argument); + a_short_line(argument, + argument); + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + + if ( c1 + && ( c2 + || c3)) + foo; + + a_long_line( + argument, + argument); + a_short_line(argument, + argument); + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_44() + new + setl cindent ts=4 sw=4 + setl cino=k2s,u2 + + var code =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_45() + new + setl cindent ts=4 sw=4 + setl cino=k2s,(0,w1 + + var code =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + + if ( c1 + && ( c2 + || c3)) + foo; + func( c1 + && ( c2 + || c3)) + foo; + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + + if ( c1 + && ( c2 + || c3)) + foo; + func( c1 + && ( c2 + || c3)) + foo; + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_46() + new + setl cindent ts=4 sw=4 + setl cino=k2,(s + + var code =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + } + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + void func(void) + { + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_47() + new + setl cindent ts=4 sw=4 + setl cino=N-s + + var code =<< trim [CODE] + NAMESPACESTART + /* valid namespaces with normal indent */ + namespace + { + { + 111111111111; + } + } + namespace /* test */ + { + 11111111111111111; + } + namespace // test + { + 111111111111111111; + } + namespace + { + 111111111111111111; + } + namespace test + { + 111111111111111111; + } + namespace test::cpp17 + { + 111111111111111111; + } + namespace ::incorrectcpp17 + { + 111111111111111111; + } + namespace test::incorrectcpp17:: + { + 111111111111111111; + } + namespace test:incorrectcpp17 + { + 111111111111111111; + } + namespace test:::incorrectcpp17 + { + 111111111111111111; + } + namespace{ + 111111111111111111; + } + namespace test{ + 111111111111111111; + } + namespace { + 111111111111111111; + } + namespace test { + 111111111111111111; + namespace test2 { + 22222222222222222; + } + } + inline namespace { + 111111111111111111; + } + inline /* test */ namespace { + 111111111111111111; + } + inline/* test */namespace { + 111111111111111111; + } + + /* invalid namespaces use block indent */ + namespace test test2 { + 111111111111111111111; + } + namespace11111111111 { + 111111111111; + } + namespace() { + 1111111111111; + } + namespace() + { + 111111111111111111; + } + namespace test test2 + { + 1111111111111111111; + } + namespace111111111 + { + 111111111111111111; + } + inlinenamespace { + 111111111111111111; + } + NAMESPACEEND + [CODE] + + append(0, code) + normal gg + call search('^NAMESPACESTART') + exe "normal =/^NAMESPACEEND\n" + + var expected =<< trim [CODE] + NAMESPACESTART + /* valid namespaces with normal indent */ + namespace + { + { + 111111111111; + } + } + namespace /* test */ + { + 11111111111111111; + } + namespace // test + { + 111111111111111111; + } + namespace + { + 111111111111111111; + } + namespace test + { + 111111111111111111; + } + namespace test::cpp17 + { + 111111111111111111; + } + namespace ::incorrectcpp17 + { + 111111111111111111; + } + namespace test::incorrectcpp17:: + { + 111111111111111111; + } + namespace test:incorrectcpp17 + { + 111111111111111111; + } + namespace test:::incorrectcpp17 + { + 111111111111111111; + } + namespace{ + 111111111111111111; + } + namespace test{ + 111111111111111111; + } + namespace { + 111111111111111111; + } + namespace test { + 111111111111111111; + namespace test2 { + 22222222222222222; + } + } + inline namespace { + 111111111111111111; + } + inline /* test */ namespace { + 111111111111111111; + } + inline/* test */namespace { + 111111111111111111; + } + + /* invalid namespaces use block indent */ + namespace test test2 { + 111111111111111111111; + } + namespace11111111111 { + 111111111111; + } + namespace() { + 1111111111111; + } + namespace() + { + 111111111111111111; + } + namespace test test2 + { + 1111111111111111111; + } + namespace111111111 + { + 111111111111111111; + } + inlinenamespace { + 111111111111111111; + } + NAMESPACEEND + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_48() + new + setl cindent ts=4 sw=4 + setl cino=j1,J1 + + var code =<< trim [CODE] + JSSTART + var bar = { + foo: { + that: this, + some: ok, + }, + "bar":{ + a : 2, + b: "123abc", + x: 4, + "y": 5 + } + } + JSEND + [CODE] + + append(0, code) + normal gg + search('^JSSTART') + exe "normal =/^JSEND\n" + + var expected =<< trim [CODE] + JSSTART + var bar = { + foo: { + that: this, + some: ok, + }, + "bar":{ + a : 2, + b: "123abc", + x: 4, + "y": 5 + } + } + JSEND + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_49() + new + setl cindent ts=4 sw=4 + setl cino=j1,J1 + + var code =<< trim [CODE] + JSSTART + var foo = [ + 1, + 2, + 3 + ]; + JSEND + [CODE] + + append(0, code) + normal gg + search('^JSSTART') + exe "normal =/^JSEND\n" + + var expected =<< trim [CODE] + JSSTART + var foo = [ + 1, + 2, + 3 + ]; + JSEND + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_50() + new + setl cindent ts=4 sw=4 + setl cino=j1,J1 + + var code =<< trim [CODE] + JSSTART + function bar() { + var foo = [ + 1, + 2, + 3 + ]; + } + JSEND + [CODE] + + append(0, code) + normal gg + search('^JSSTART') + exe "normal =/^JSEND\n" + + var expected =<< trim [CODE] + JSSTART + function bar() { + var foo = [ + 1, + 2, + 3 + ]; + } + JSEND + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_51() + new + setl cindent ts=4 sw=4 + setl cino=j1,J1 + + var code =<< trim [CODE] + JSSTART + (function($){ + + if (cond && + cond) { + stmt; + } + window.something.left = + (width - 50 + offset) + "px"; + var class_name='myclass'; + + function private_method() { + } + + var public_method={ + method: function(options,args){ + private_method(); + } + } + + function init(options) { + + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', + bar: 2, + foobar: [ + 1, + 2, + 3 + ], + callback: function(){ + return true; + } + }, options||{})); + } + + $.fn[class_name]=function() { + + var _arguments=arguments; + return this.each(function(){ + + var options=$(this).data(class_name+'_public'); + if (!options) { + init.apply(this,_arguments); + + } else { + var method=public_method[_arguments[0]]; + + if (typeof(method)!='function') { + console.log(class_name+' has no method "'+_arguments[0]+'"'); + return false; + } + _arguments[0]=options; + method.apply(this,_arguments); + } + }); + } + + })(jQuery); + JSEND + [CODE] + + append(0, code) + normal gg + search('^JSSTART') + exe "normal =/^JSEND\n" + + var expected =<< trim [CODE] + JSSTART + (function($){ + + if (cond && + cond) { + stmt; + } + window.something.left = + (width - 50 + offset) + "px"; + var class_name='myclass'; + + function private_method() { + } + + var public_method={ + method: function(options,args){ + private_method(); + } + } + + function init(options) { + + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', + bar: 2, + foobar: [ + 1, + 2, + 3 + ], + callback: function(){ + return true; + } + }, options||{})); + } + + $.fn[class_name]=function() { + + var _arguments=arguments; + return this.each(function(){ + + var options=$(this).data(class_name+'_public'); + if (!options) { + init.apply(this,_arguments); + + } else { + var method=public_method[_arguments[0]]; + + if (typeof(method)!='function') { + console.log(class_name+' has no method "'+_arguments[0]+'"'); + return false; + } + _arguments[0]=options; + method.apply(this,_arguments); + } + }); + } + + })(jQuery); + JSEND + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_52() + new + setl cindent ts=4 sw=4 + setl cino=j1,J1 + + var code =<< trim [CODE] + JSSTART + function init(options) { + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', + bar: 2, + foobar: [ + 1, + 2, + 3 + ], + callback: function(){ + return true; + } + }, options||{})); + } + JSEND + [CODE] + + append(0, code) + normal gg + search('^JSSTART') + exe "normal =/^JSEND\n" + + var expected =<< trim [CODE] + JSSTART + function init(options) { + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', + bar: 2, + foobar: [ + 1, + 2, + 3 + ], + callback: function(){ + return true; + } + }, options||{})); + } + JSEND + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_53() + new + setl cindent ts=4 sw=4 + setl cino=j1,J1 + + var code =<< trim [CODE] + JSSTART + (function($){ + function init(options) { + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', + bar: 2, + foobar: [ + 1, + 2, + 3 + ], + callback: function(){ + return true; + } + }, options||{})); + } + })(jQuery); + JSEND + [CODE] + + append(0, code) + normal gg + search('^JSSTART') + exe "normal =/^JSEND\n" + + var expected =<< trim [CODE] + JSSTART + (function($){ + function init(options) { + $(this).data(class_name+'_public',$.extend({},{ + foo: 'bar', + bar: 2, + foobar: [ + 1, + 2, + 3 + ], + callback: function(){ + return true; + } + }, options||{})); + } + })(jQuery); + JSEND + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_54() + new + setl cindent ts=4 sw=4 + setl cino=j1,J1,+2 + + var code =<< trim [CODE] + JSSTART + // Results of JavaScript indent + // 1 + (function(){ + var a = [ + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i' + ]; + }()) + + // 2 + (function(){ + var a = [ + 0 + + 5 * + 9 * + 'a', + 'b', + 0 + + 5 * + 9 * + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i' + ]; + }()) + + // 3 + (function(){ + var a = [ + 0 + + // comment 1 + 5 * + /* comment 2 */ + 9 * + 'a', + 'b', + 0 + + 5 * + 9 * + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i' + ]; + }()) + + // 4 + { + var a = [ + 0, + 1 + ]; + var b; + var c; + } + + // 5 + { + var a = [ + [ + 0 + ], + 2, + 3 + ]; + } + + // 6 + { + var a = [ + [ + 0, + 1 + ], + 2, + 3 + ]; + } + + // 7 + { + var a = [ + // [ + 0, + // 1 + // ], + 2, + 3 + ]; + } + + // 8 + var x = [ + (function(){ + var a, + b, + c, + d, + e, + f, + g, + h, + i; + }) + ]; + + // 9 + var a = [ + 0 + + 5 * + 9 * + 'a', + 'b', + 0 + + 5 * + 9 * + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i' + ]; + + // 10 + var a, + b, + c, + d, + e, + f, + g, + h, + i; + JSEND + [CODE] + + append(0, code) + normal gg + search('^JSSTART') + exe "normal =/^JSEND\n" + + var expected =<< trim [CODE] + JSSTART + // Results of JavaScript indent + // 1 + (function(){ + var a = [ + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i' + ]; + }()) + + // 2 + (function(){ + var a = [ + 0 + + 5 * + 9 * + 'a', + 'b', + 0 + + 5 * + 9 * + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i' + ]; + }()) + + // 3 + (function(){ + var a = [ + 0 + + // comment 1 + 5 * + /* comment 2 */ + 9 * + 'a', + 'b', + 0 + + 5 * + 9 * + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i' + ]; + }()) + + // 4 + { + var a = [ + 0, + 1 + ]; + var b; + var c; + } + + // 5 + { + var a = [ + [ + 0 + ], + 2, + 3 + ]; + } + + // 6 + { + var a = [ + [ + 0, + 1 + ], + 2, + 3 + ]; + } + + // 7 + { + var a = [ + // [ + 0, + // 1 + // ], + 2, + 3 + ]; + } + + // 8 + var x = [ + (function(){ + var a, + b, + c, + d, + e, + f, + g, + h, + i; + }) + ]; + + // 9 + var a = [ + 0 + + 5 * + 9 * + 'a', + 'b', + 0 + + 5 * + 9 * + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i' + ]; + + // 10 + var a, + b, + c, + d, + e, + f, + g, + h, + i; + JSEND + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_55() + new + setl cindent ts=4 sw=4 + setl cino& + + var code =<< trim [CODE] + /* start of define */ + { + } + #define AAA \ + BBB\ + CCC + + #define CNT \ + 1 + \ + 2 + \ + 4 + /* end of define */ + [CODE] + + append(0, code) + normal gg + search('start of define') + exe "normal =/end of define\n" + + var expected =<< trim [CODE] + /* start of define */ + { + } + #define AAA \ + BBB\ + CCC + + #define CNT \ + 1 + \ + 2 + \ + 4 + /* end of define */ + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_56() + new + setl cindent ts=4 sw=4 + setl cino& + + var code =<< trim [CODE] + { + a = second/*bug*/*line; + } + [CODE] + + append(0, code) + normal gg + search('a = second') + normal ox + + var expected =<< trim [CODE] + { + a = second/*bug*/*line; + x + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +" this was going beyond the end of the line. +def Test_cindent_case() + new + setline(1, 'case x: // x') + set cindent + norm! f:a: + assert_equal('case x:: // x', getline(1)) + set cindent& + bwipe! +enddef + +" Test for changing multiple lines (using c) with cindent +def Test_cindent_change_multline() + new + setlocal cindent + setline(1, ['if (a)', '{', ' i = 1;', '}']) + normal! jc3jm = 2; + assert_equal("\tm = 2;", getline(2)) + bwipe! +enddef + +" This was reading past the end of the line +def Test_cindent_check_funcdecl() + new + sil norm o0('\0=L + bwipe! +enddef + +def Test_cindent_scopedecls() + new + setl cindent ts=4 sw=4 + setl cino=g0 + setl cinsd+=public\ slots,signals + + var code =<< trim [CODE] + class Foo + { + public: + virtual void foo() = 0; + public slots: + void onBar(); + signals: + void baz(); + private: + int x; + }; + [CODE] + + append(0, code) + normal gg + normal ]]=][ + + var expected =<< trim [CODE] + class Foo + { + public: + virtual void foo() = 0; + public slots: + void onBar(); + signals: + void baz(); + private: + int x; + }; + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_cindent_pragma() + new + setl cindent ts=4 sw=4 + setl cino=Ps + + var code =<< trim [CODE] + { + #pragma omp parallel + { + #pragma omp task + foo(); + # pragma omp taskwait + } + } + [CODE] + + append(0, code) + normal gg + normal =G + + var expected =<< trim [CODE] + { + #pragma omp parallel + { + #pragma omp task + foo(); + # pragma omp taskwait + } + } + + [CODE] + assert_equal(expected, getline(1, '$')) + + bwipe! +enddef + +def Test_backslash_at_end_of_line() + new + exe "norm v>O'\\\-" + exe "norm \=" + bwipe! +enddef + +def Test_find_brace_backwards() + # this was looking beyond the end of the line + new + norm R/* + norm o0{ + norm o// + norm V{= + assert_equal(['/*', ' 0{', '//'], getline(1, 3)) + bwipe! +enddef + + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_cjk_linebreak.vim b/src/testdir/test_cjk_linebreak.vim new file mode 100644 index 0000000..17c5916 --- /dev/null +++ b/src/testdir/test_cjk_linebreak.vim @@ -0,0 +1,101 @@ +" Test for CJK linebreak + +scriptencoding utf-8 + +func Run_cjk_linebreak_after(rigorous) + set textwidth=12 + for punct in [ + \ '!', '%', ')', ',', ':', ';', '>', '?', ']', '}', '’', '”', '†', '‡', + \ '…', '‰', '‱', '‼', '⁇', '⁈', '⁉', '℃', '℉', '、', '。', '〉', '》', + \ '」', '』', '】', '〕', '〗', '〙', '〛', '!', ')', ',', '.', ':', + \ ';', '?', ']', '}'] + call setline('.', '这是一个测试' .. punct.'试试 CJK 行禁则补丁。') + normal gqq + if a:rigorous + call assert_equal('这是一个测', getline(1)) + else + call assert_equal('这是一个测试' .. punct, getline(1)) + endif + %d_ + endfor +endfunc + +func Test_cjk_linebreak_after() + set formatoptions=croqn2mB1j + call Run_cjk_linebreak_after(0) +endfunc + +func Test_cjk_linebreak_after_rigorous() + set formatoptions=croqn2mB1j] + call Run_cjk_linebreak_after(1) +endfunc + +func Run_cjk_linebreak_before() + set textwidth=12 + for punct in [ + \ '(', '<', '[', '`', '{', '‘', '“', '〈', '《', '「', '『', '【', '〔', + \ '〖', '〘', '〚', '(', '[', '{'] + call setline('.', '这是个测试' .. punct.'试试 CJK 行禁则补丁。') + normal gqq + call assert_equal('这是个测试', getline(1)) + %d_ + endfor +endfunc + +func Test_cjk_linebreak_before() + set formatoptions=croqn2mB1j + call Run_cjk_linebreak_before() +endfunc + +func Test_cjk_linebreak_before_rigorous() + set formatoptions=croqn2mB1j] + call Run_cjk_linebreak_before() +endfunc + +func Run_cjk_linebreak_nobetween(rigorous) + " …… must not start a line + call setline('.', '这是个测试……试试 CJK 行禁则补丁。') + set textwidth=12 ambiwidth=double + normal gqq + if a:rigorous + call assert_equal('这是个测', getline(1)) + else + call assert_equal('这是个测试……', getline(1)) + endif + %d_ + + call setline('.', '这是一个测试……试试 CJK 行禁则补丁。') + set textwidth=12 ambiwidth=double + normal gqq + call assert_equal('这是一个测', getline(1)) + %d_ + + " but —— can + call setline('.', '这是个测试——试试 CJK 行禁则补丁。') + set textwidth=12 ambiwidth=double + normal gqq + call assert_equal('这是个测试', getline(1)) +endfunc + +func Test_cjk_linebreak_nobetween() + set formatoptions=croqn2mB1j + call Run_cjk_linebreak_nobetween(0) +endfunc + +func Test_cjk_linebreak_nobetween_rigorous() + set formatoptions=croqn2mB1j] + call Run_cjk_linebreak_nobetween(1) +endfunc + +func Test_cjk_linebreak_join_punct() + for punct in ['——', '〗', ',', '。', '……'] + call setline(1, '文本文本' .. punct) + call setline(2, 'English') + set formatoptions=croqn2mB1j + normal ggJ + call assert_equal('文本文本' .. punct.'English', getline(1)) + %d_ + endfor +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_clientserver.vim b/src/testdir/test_clientserver.vim new file mode 100644 index 0000000..64c9ab8 --- /dev/null +++ b/src/testdir/test_clientserver.vim @@ -0,0 +1,196 @@ +" Tests for the +clientserver feature. + +source check.vim +CheckFeature job + +if !has('clientserver') + call assert_fails('call remote_startserver("local")', 'E942:') +endif + +CheckFeature clientserver + +source shared.vim + +func Check_X11_Connection() + if has('x11') + CheckEnv DISPLAY + try + call remote_send('xxx', '') + catch + if v:exception =~ 'E240:' + throw 'Skipped: no connection to the X server' + endif + " ignore other errors + endtry + endif +endfunc + +func Test_client_server() + let g:test_is_flaky = 1 + let cmd = GetVimCommand() + if cmd == '' + throw 'GetVimCommand() failed' + endif + call Check_X11_Connection() + + let name = 'XVIMTEST' + let cmd .= ' --servername ' . name + let job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'}) + call WaitForAssert({-> assert_equal("run", job_status(job))}) + + " Takes a short while for the server to be active. + " When using valgrind it takes much longer. + call WaitForAssert({-> assert_match(name, serverlist())}) + + if !has('win32') + if RunVim([], [], '--serverlist >Xtest_serverlist') + let lines = readfile('Xtest_serverlist') + call assert_true(index(lines, 'XVIMTEST') >= 0) + endif + call delete('Xtest_serverlist') + endif + + eval name->remote_foreground() + + call remote_send(name, ":let testvar = 'yes'\") + call WaitFor('remote_expr("' . name . '", "exists(\"testvar\") ? testvar : \"\"", "", 1) == "yes"') + call assert_equal('yes', remote_expr(name, "testvar", "", 2)) + call assert_fails("let x=remote_expr(name, '2+x')", 'E449:') + call assert_fails("let x=remote_expr('[], '2+2')", 'E116:') + + if has('unix') && has('gui') && !has('gui_running') + " Running in a terminal and the GUI is available: Tell the server to open + " the GUI and check that the remote command still works. + " Need to wait for the GUI to start up, otherwise the send hangs in trying + " to send to the terminal window. + if has('gui_motif') + " For this GUI ignore the 'failed to create input context' error. + call remote_send(name, ":call test_ignore_error('E285') | gui -f\") + else + call remote_send(name, ":gui -f\") + endif + " Wait for the server to be up and answering requests. + " When using valgrind this can be very, very slow. + sleep 1 + call WaitForAssert({-> assert_match('\d', name->remote_expr("v:version", "", 1))}, 10000) + + call remote_send(name, ":let testvar = 'maybe'\") + call WaitForAssert({-> assert_equal('maybe', remote_expr(name, "testvar", "", 2))}) + endif + + call assert_fails('call remote_send("XXX", ":let testvar = ''yes''\")', 'E241:') + + call writefile(['one'], 'Xclientfile') + let cmd = GetVimProg() .. ' --servername ' .. name .. ' --remote Xclientfile' + call system(cmd) + call WaitForAssert({-> assert_equal('Xclientfile', remote_expr(name, "bufname()", "", 2))}) + call WaitForAssert({-> assert_equal('one', remote_expr(name, "getline(1)", "", 2))}) + call writefile(['one', 'two'], 'Xclientfile') + call system(cmd) + call WaitForAssert({-> assert_equal('two', remote_expr(name, "getline(2)", "", 2))}) + call delete('Xclientfile') + + " Expression evaluated locally. + if v:servername == '' + eval 'MYSELF'->remote_startserver() + " May get MYSELF1 when running the test again. + call assert_match('MYSELF', v:servername) + call assert_fails("call remote_startserver('MYSELF')", 'E941:') + endif + let g:testvar = 'myself' + call assert_equal('myself', remote_expr(v:servername, 'testvar')) + call remote_send(v:servername, ":let g:testvar2 = 75\") + call feedkeys('', 'x') + call assert_equal(75, g:testvar2) + call assert_fails('let v = remote_expr(v:servername, "/2")', ['E15:.*/2']) + + call remote_send(name, ":call server2client(expand(''), 'got it')\", 'g:myserverid') + call assert_equal('got it', g:myserverid->remote_read(2)) + + call remote_send(name, ":eval expand('')->server2client('another')\", 'g:myserverid') + let peek_result = 'nothing' + let r = g:myserverid->remote_peek('peek_result') + " unpredictable whether the result is already available. + if r > 0 + call assert_equal('another', peek_result) + elseif r == 0 + call assert_equal('nothing', peek_result) + else + call assert_report('remote_peek() failed') + endif + let g:peek_result = 'empty' + call WaitFor('remote_peek(g:myserverid, "g:peek_result") > 0') + call assert_equal('another', g:peek_result) + call assert_equal('another', remote_read(g:myserverid, 2)) + + if !has('gui_running') + " In GUI vim, the following tests display a dialog box + + let cmd = GetVimProg() .. ' --servername ' .. name + + " Run a separate instance to send a command to the server + call remote_expr(name, 'execute("only")') + call system(cmd .. ' --remote-send ":new Xclientfile"') + call assert_equal('2', remote_expr(name, 'winnr("$")')) + call assert_equal('Xclientfile', remote_expr(name, 'winbufnr(1)->bufname()')) + call remote_expr(name, 'execute("only")') + + " Invoke a remote-expr. On MS-Windows, the returned value has a carriage + " return. + let l = system(cmd .. ' --remote-expr "2 + 2"') + call assert_equal(['4'], split(l, "\n")) + + " Edit multiple files using --remote + call system(cmd .. ' --remote Xclientfile1 Xclientfile2 Xclientfile3') + call assert_match(".*Xclientfile1\n.*Xclientfile2\n.*Xclientfile3\n", remote_expr(name, 'argv()')) + eval name->remote_send(":%bw!\") + + " Edit files in separate tab pages + call system(cmd .. ' --remote-tab Xclientfile1 Xclientfile2 Xclientfile3') + call WaitForAssert({-> assert_equal('3', remote_expr(name, 'tabpagenr("$")'))}) + call assert_match('.*\remote_send(":%bw!\") + + " Edit a file using --remote-wait + eval name->remote_send(":source $VIMRUNTIME/plugin/rrhelper.vim\") + call system(cmd .. ' --remote-wait +enew Xclientfile1') + call assert_match('.*\remote_send(":%bw!\") + + " Edit files using --remote-tab-wait + call system(cmd .. ' --remote-tabwait +tabonly\|enew Xclientfile1 Xclientfile2') + call assert_equal('1', remote_expr(name, 'tabpagenr("$")')) + eval name->remote_send(":%bw!\") + + " Error cases + if v:lang == "C" || v:lang =~ '^[Ee]n' + let l = split(system(cmd .. ' --remote +pwd'), "\n") + call assert_equal("Argument missing after: \"+pwd\"", l[1]) + endif + let l = system(cmd .. ' --remote-expr "abcd"') + call assert_match('^E449: ', l) + endif + + eval name->remote_send(":%bw!\") + eval name->remote_send(":qa!\") + try + call WaitForAssert({-> assert_equal("dead", job_status(job))}) + finally + if job_status(job) != 'dead' + call assert_report('Server did not exit') + call job_stop(job, 'kill') + endif + endtry + + call assert_fails('call remote_startserver([])', 'E730:') + call assert_fails("let x = remote_peek([])", 'E730:') + call assert_fails("let x = remote_read('vim10')", + \ has('unix') ? ['E573:.*vim10'] : 'E277:') + call assert_fails("call server2client('abc', 'xyz')", + \ has('unix') ? ['E573:.*abc'] : 'E258:') +endfunc + +" Uncomment this line to get a debugging log +" call ch_logfile('channellog', 'w') + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_close_count.vim b/src/testdir/test_close_count.vim new file mode 100644 index 0000000..c0c3730 --- /dev/null +++ b/src/testdir/test_close_count.vim @@ -0,0 +1,176 @@ +" Tests for :[count]close! command + +func Test_close_count() + enew! | only + + let wids = [win_getid()] + for i in range(5) + new + call add(wids, win_getid()) + endfor + + 4wincmd w + close! + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[5], wids[4], wids[3], wids[1], wids[0]], ids) + + 1close! + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[4], wids[3], wids[1], wids[0]], ids) + + $close! + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[4], wids[3], wids[1]], ids) + + 1wincmd w + 2close! + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[4], wids[1]], ids) + + 1wincmd w + new + call add(wids, win_getid()) + new + call add(wids, win_getid()) + 2wincmd w + -1close! + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[6], wids[4], wids[1]], ids) + + 2wincmd w + +1close! + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[6], wids[4]], ids) + + only! +endfunc + +" Tests for :[count]hide command +func Test_hide_count() + enew! | only + + let wids = [win_getid()] + for i in range(5) + new + call add(wids, win_getid()) + endfor + + 4wincmd w + .hide + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[5], wids[4], wids[3], wids[1], wids[0]], ids) + + 1hide + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[4], wids[3], wids[1], wids[0]], ids) + + $hide + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[4], wids[3], wids[1]], ids) + + 1wincmd w + 2hide + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[4], wids[1]], ids) + + 1wincmd w + new + call add(wids, win_getid()) + new + call add(wids, win_getid()) + 3wincmd w + -hide + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[7], wids[4], wids[1]], ids) + + 2wincmd w + +hide + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[7], wids[4]], ids) + + only! +endfunc + +" Tests for :[count]close! command with 'hidden' +func Test_hidden_close_count() + enew! | only + + let wids = [win_getid()] + for i in range(5) + new + call add(wids, win_getid()) + endfor + + set hidden + + $ hide + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[5], wids[4], wids[3], wids[2], wids[1]], ids) + + $-1 close! + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[5], wids[4], wids[3], wids[1]], ids) + + 1wincmd w + .+close! + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[5], wids[3], wids[1]], ids) + + set nohidden + only! +endfunc + +" Tests for 'CTRL-W c' command to close windows. +func Test_winclose_command() + enew! | only + + let wids = [win_getid()] + for i in range(5) + new + call add(wids, win_getid()) + endfor + + set hidden + + 4wincmd w + exe "normal \c" + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[5], wids[4], wids[3], wids[1], wids[0]], ids) + + exe "normal 1\c" + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[4], wids[3], wids[1], wids[0]], ids) + + exe "normal 9\c" + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[4], wids[3], wids[1]], ids) + + 1wincmd w + exe "normal 2\c" + let ids = [] + windo call add(ids, win_getid()) + call assert_equal([wids[4], wids[1]], ids) + + set nohidden + only! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_cmd_lists.vim b/src/testdir/test_cmd_lists.vim new file mode 100644 index 0000000..77ae85e --- /dev/null +++ b/src/testdir/test_cmd_lists.vim @@ -0,0 +1,70 @@ +" Test to verify that the cmd list in runtime/doc/index.txt contains all of +" the commands in src/ex_cmds.h. It doesn't map the other way round because +" index.txt contains some shorthands like :!! which are useful to list, but +" they don't exist as an independent entry in src/ex_cmds.h. +" +" Currently this just checks for existence, and we aren't checking for whether +" they are sorted in the index, or whether the substring needed (e.g. +" 'defc[ompile]') is correct or not. + +func Test_cmd_lists() + + " Create a list of the commands in ex_cmds.h:CMD_index. + enew! + read ../ex_cmds.h + 1,/^enum CMD_index$/d + call search('^};$') + .,$d + v/^EXCMD/d + %s/^.*"\(\S\+\)".*$/\1/ + " Special case ':*' because it's represented as ':star' + %s/^\*$/star/ + sort u + let l:command_list = getline(1, '$') + + " Verify that the ':help ex-cmd-index' list contains all known commands. + enew! + if filereadable('../../doc/index.txt') + " unpacked MS-Windows zip archive + read ../../doc/index.txt + else + read ../../runtime/doc/index.txt + endif + call search('\*ex-cmd-index\*') + 1,.d + v/^|:/d + %s/^|:\(\S*\)|.*/\1/ + sort u + norm gg + let l:missing_cmds = [] + for cmd in l:command_list + " Reserved Vim 9 commands or other script-only syntax aren't useful to + " document as Ex commands. + let l:vim9cmds = [ + \ 'abstract', + \ 'class', + \ 'endclass', + \ 'endenum', + \ 'endinterface', + \ 'enum', + \ 'interface', + \ 'public', + \ 'static', + \ 'this', + \ 'type', + \ '++', + \ '--', + \ '{', + \ '}'] + if index(l:vim9cmds, cmd) != -1 + continue + endif + + if search('^\V' .. cmd .. '\v$', 'cW') == 0 + call add(l:missing_cmds, ':' .. cmd) + endif + endfor + call assert_equal(0, len(l:missing_cmds), "Missing commands from `:help ex-cmd-index`: " .. string(l:missing_cmds)) +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim new file mode 100644 index 0000000..ddcb260 --- /dev/null +++ b/src/testdir/test_cmdline.vim @@ -0,0 +1,3447 @@ +" Tests for editing the command line. + +source check.vim +source screendump.vim +source view_util.vim +source shared.vim +import './vim9.vim' as v9 + +func SetUp() + func SaveLastScreenLine() + let g:Sline = Screenline(&lines - 1) + return '' + endfunc + cnoremap SaveLastScreenLine() +endfunc + +func TearDown() + delfunc SaveLastScreenLine + cunmap +endfunc + +func Test_complete_tab() + call writefile(['testfile'], 'Xtestfile', 'D') + call feedkeys(":e Xtest\t\r", "tx") + call assert_equal('testfile', getline(1)) + + " Pressing after '%' completes the current file, also on MS-Windows + call feedkeys(":e %\t\r", "tx") + call assert_equal('e Xtestfile', @:) +endfunc + +func Test_complete_list() + " We can't see the output, but at least we check the code runs properly. + call feedkeys(":e test\\r", "tx") + call assert_equal('test', expand('%:t')) + + " If a command doesn't support completion, then CTRL-D should be literally + " used. + call feedkeys(":chistory \\\"\", 'xt') + call assert_equal("\"chistory \", @:) + + " Test for displaying the tail of the completion matches + set wildmode=longest,full + call mkdir('Xtest', 'R') + call writefile([], 'Xtest/a.c') + call writefile([], 'Xtest/a.h') + let g:Sline = '' + call feedkeys(":e Xtest/\\\\"\", 'xt') + call assert_equal('a.c a.h', g:Sline) + call assert_equal('"e Xtest/', @:) + if has('win32') + " Test for 'completeslash' + set completeslash=backslash + call feedkeys(":e Xtest\\\"\", 'xt') + call assert_equal('"e Xtest\', @:) + call feedkeys(":e Xtest/\\\"\", 'xt') + call assert_equal('"e Xtest\a.', @:) + set completeslash=slash + call feedkeys(":e Xtest\\\"\", 'xt') + call assert_equal('"e Xtest/', @:) + call feedkeys(":e Xtest\\\\\"\", 'xt') + call assert_equal('"e Xtest/a.', @:) + set completeslash& + endif + + " Test for displaying the tail with wildcards + let g:Sline = '' + call feedkeys(":e Xtes?/\\\\"\", 'xt') + call assert_equal('Xtest/a.c Xtest/a.h', g:Sline) + call assert_equal('"e Xtes?/', @:) + let g:Sline = '' + call feedkeys(":e Xtes*/\\\\"\", 'xt') + call assert_equal('Xtest/a.c Xtest/a.h', g:Sline) + call assert_equal('"e Xtes*/', @:) + let g:Sline = '' + call feedkeys(":e Xtes[/\\\\"\", 'xt') + call assert_equal(':e Xtes[/', g:Sline) + call assert_equal('"e Xtes[/', @:) + + set wildmode& +endfunc + +func Test_complete_wildmenu() + call mkdir('Xwilddir1/Xdir2', 'pR') + call writefile(['testfile1'], 'Xwilddir1/Xtestfile1') + call writefile(['testfile2'], 'Xwilddir1/Xtestfile2') + call writefile(['testfile3'], 'Xwilddir1/Xdir2/Xtestfile3') + call writefile(['testfile3'], 'Xwilddir1/Xdir2/Xtestfile4') + set wildmenu + + " Pressing completes, and moves to next files when pressing again. + call feedkeys(":e Xwilddir1/\\\", 'tx') + call assert_equal('testfile1', getline(1)) + call feedkeys(":e Xwilddir1/\\\\", 'tx') + call assert_equal('testfile2', getline(1)) + + " is like but begin with the last match and then go to + " previous. + call feedkeys(":e Xwilddir1/Xtest\\", 'tx') + call assert_equal('testfile2', getline(1)) + call feedkeys(":e Xwilddir1/Xtest\\\", 'tx') + call assert_equal('testfile1', getline(1)) + + " / to move to previous/next file. + call feedkeys(":e Xwilddir1/\\\", 'tx') + call assert_equal('testfile1', getline(1)) + call feedkeys(":e Xwilddir1/\\\\", 'tx') + call assert_equal('testfile2', getline(1)) + call feedkeys(":e Xwilddir1/\\\\\", 'tx') + call assert_equal('testfile1', getline(1)) + + " / to go up/down directories. + call feedkeys(":e Xwilddir1/\\\", 'tx') + call assert_equal('testfile3', getline(1)) + call feedkeys(":e Xwilddir1/\\\\\", 'tx') + call assert_equal('testfile1', getline(1)) + + " this fails in some Unix GUIs, not sure why + if !has('unix') || !has('gui_running') + " / mappings to go up/down directories when 'wildcharm' is + " different than 'wildchar'. + set wildcharm= + cnoremap + cnoremap + call feedkeys(":e Xwilddir1/\\\", 'tx') + call assert_equal('testfile3', getline(1)) + call feedkeys(":e Xwilddir1/\\\\", 'tx') + call assert_equal('testfile1', getline(1)) + set wildcharm=0 + cunmap + cunmap + endif + + " Test for canceling the wild menu by adding a character + redrawstatus + call feedkeys(":e Xwilddir1/\x\\"\", 'xt') + call assert_equal('"e Xwilddir1/Xdir2/x', @:) + + " Completion using a relative path + cd Xwilddir1/Xdir2 + call feedkeys(":e ../\\\\\\"\", 'tx') + call assert_equal('"e Xtestfile3 Xtestfile4', @:) + cd - + + " test for wildmenumode() + cnoremap wildmenumode() + call feedkeys(":cd Xwilddir\\\\"\", 'tx') + call assert_equal('"cd Xwilddir1/0', @:) + call feedkeys(":e Xwilddir1/\\\\"\", 'tx') + call assert_equal('"e Xwilddir1/Xdir2/1', @:) + cunmap + + " Test for canceling the wild menu by pressing or . + " After this pressing or should not change the selection. + call feedkeys(":sign \\\\\\\"\", 'tx') + call assert_equal('"sign define', @:) + call histadd('cmd', 'TestWildMenu') + call feedkeys(":sign \\\\\\\"\", 'tx') + call assert_equal('"TestWildMenu', @:) + + " cleanup + %bwipe + set nowildmenu +endfunc + +func Test_wildmenu_screendump() + CheckScreendump + + let lines =<< trim [SCRIPT] + set wildmenu hlsearch + [SCRIPT] + call writefile(lines, 'XTest_wildmenu', 'D') + + let buf = RunVimInTerminal('-S XTest_wildmenu', {'rows': 8}) + call term_sendkeys(buf, ":vim\") + call VerifyScreenDump(buf, 'Test_wildmenu_1', {}) + + call term_sendkeys(buf, "\") + call VerifyScreenDump(buf, 'Test_wildmenu_2', {}) + + call term_sendkeys(buf, "\") + call VerifyScreenDump(buf, 'Test_wildmenu_3', {}) + + call term_sendkeys(buf, "\\") + call VerifyScreenDump(buf, 'Test_wildmenu_4', {}) + call term_sendkeys(buf, "\") + + " clean up + call StopVimInTerminal(buf) +endfunc + +func Test_redraw_in_autocmd() + CheckScreendump + + let lines =<< trim END + set cmdheight=2 + autocmd CmdlineChanged * redraw + END + call writefile(lines, 'XTest_redraw', 'D') + + let buf = RunVimInTerminal('-S XTest_redraw', {'rows': 8}) + call term_sendkeys(buf, ":for i in range(3)\") + call VerifyScreenDump(buf, 'Test_redraw_in_autocmd_1', {}) + + call term_sendkeys(buf, "let i =") + call VerifyScreenDump(buf, 'Test_redraw_in_autocmd_2', {}) + + " clean up + call term_sendkeys(buf, "\") + call StopVimInTerminal(buf) +endfunc + +func Test_redrawstatus_in_autocmd() + CheckScreendump + + let lines =<< trim END + set laststatus=2 + set statusline=%=:%{getcmdline()} + autocmd CmdlineChanged * redrawstatus + END + call writefile(lines, 'XTest_redrawstatus', 'D') + + let buf = RunVimInTerminal('-S XTest_redrawstatus', {'rows': 8}) + " :redrawstatus is postponed if messages have scrolled + call term_sendkeys(buf, ":echo \"one\\ntwo\\nthree\\nfour\"\") + call term_sendkeys(buf, ":foobar") + call VerifyScreenDump(buf, 'Test_redrawstatus_in_autocmd_1', {}) + " it is not postponed if messages have not scrolled + call term_sendkeys(buf, "\:for in in range(3)") + call VerifyScreenDump(buf, 'Test_redrawstatus_in_autocmd_2', {}) + " with cmdheight=1 messages have scrolled when typing :endfor + call term_sendkeys(buf, "\:endfor") + call VerifyScreenDump(buf, 'Test_redrawstatus_in_autocmd_3', {}) + call term_sendkeys(buf, "\:set cmdheight=2\") + " with cmdheight=2 messages haven't scrolled when typing :for or :endfor + call term_sendkeys(buf, ":for in in range(3)") + call VerifyScreenDump(buf, 'Test_redrawstatus_in_autocmd_4', {}) + call term_sendkeys(buf, "\:endfor") + call VerifyScreenDump(buf, 'Test_redrawstatus_in_autocmd_5', {}) + + " clean up + call term_sendkeys(buf, "\") + call StopVimInTerminal(buf) +endfunc + +func Test_changing_cmdheight() + CheckScreendump + + let lines =<< trim END + set cmdheight=1 laststatus=2 + func EchoTwo() + set laststatus=2 + set cmdheight=5 + echo 'foo' + echo 'bar' + set cmdheight=1 + endfunc + END + call writefile(lines, 'XTest_cmdheight', 'D') + + let buf = RunVimInTerminal('-S XTest_cmdheight', {'rows': 8}) + call term_sendkeys(buf, ":resize -3\") + call VerifyScreenDump(buf, 'Test_changing_cmdheight_1', {}) + + " using the space available doesn't change the status line + call term_sendkeys(buf, ":set cmdheight+=3\") + call VerifyScreenDump(buf, 'Test_changing_cmdheight_2', {}) + + " using more space moves the status line up + call term_sendkeys(buf, ":set cmdheight+=1\") + call VerifyScreenDump(buf, 'Test_changing_cmdheight_3', {}) + + " reducing cmdheight moves status line down + call term_sendkeys(buf, ":set cmdheight-=2\") + call VerifyScreenDump(buf, 'Test_changing_cmdheight_4', {}) + + " reducing window size and then setting cmdheight + call term_sendkeys(buf, ":resize -1\") + call term_sendkeys(buf, ":set cmdheight=1\") + call VerifyScreenDump(buf, 'Test_changing_cmdheight_5', {}) + + " setting 'cmdheight' works after outputting two messages + call term_sendkeys(buf, ":call EchoTwo()\") + call VerifyScreenDump(buf, 'Test_changing_cmdheight_6', {}) + + " clean up + call StopVimInTerminal(buf) +endfunc + +func Test_cmdheight_tabline() + CheckScreendump + + let buf = RunVimInTerminal('-c "set ls=2" -c "set stal=2" -c "set cmdheight=1"', {'rows': 6}) + call VerifyScreenDump(buf, 'Test_cmdheight_tabline_1', {}) + + " clean up + call StopVimInTerminal(buf) +endfunc + +func Test_map_completion() + call feedkeys(":map \\"\", 'xt') + call assert_equal('"map ', getreg(':')) + call feedkeys(":map