Merge lines.love

[?]
Jan 21, 2023, 6:08 AM
A4BSGS2CX4JK7IELL655EC6HAY6ILCWTGIHWZXHRGQOKU3HSUPLAC

Dependencies

  • [2] XGHCLIKB Merge lines.love
  • [3] ORRSP7FV deduce test names on failures
  • [4] CE4LZV4T drop last couple of manual tests
  • [5] CRYGI3LR more drawing tests
  • [6] S2YQBEYC snapshot: test for a new regression
  • [7] D2GCFTTT clean up repl functionality
  • [8] YT5P6TO6 bugfix: save previous file when dropping a new one on
  • [9] VHUNJHXB Merge lines.love
  • [10] BPWFKBXT new test: dragging and dropping a file on lines.love
  • [11] DB7HJBHJ Merge lines.love
  • [12] 4YDBYBA4 clean up memory leak experiments
  • [13] TGZAJUEF bring back a set of constants
  • [14] T4FRZSYL delete an ancient, unused file
  • [15] RSZD5A7G forgot to add json.lua
  • [16] BJ5X5O4A let's prevent the text cursor from ever getting on a drawing
  • [17] APYPFFS3 call edit rather than App callbacks in tests
  • [18] 4WAFGF4Z selection bugfix
  • [19] 4J2L6JMR bugfix: deleting a selection spanning pages
  • [20] OWK3U6VD tests for drawing polygons
  • [21] L6XA5EY2 test: moving a point
  • [22] 62JEPVQ3 bugfix: backspace from start of final line
  • [23] 2CTN2IEF Merge lines.love
  • [24] OTIBCAUJ love2d scaffold
  • [25] 4VQGE7RA new test
  • [26] KG7YVGVR Merge lines.love
  • [27] ZTZOO2OQ Merge lines.love
  • [28] MD3W5IRA new fork: rip out drawing support
  • [29] KMRJOSLY bugfix: delete selection before pasting
  • [30] 5F54FYKI Merge lines.love
  • [31] FQZ3U3YA streamline one more test name
  • [32] BULPIBEG beginnings of a module for the text editor
  • [33] JOPVPUSA editing source code from within the app
  • [34] LMP3FXAM switch one call back to keychord_pressed
  • [35] CIQN2MDE bugfix: typing a capital letter deletes selection
  • [36] 7EQLPB3O bugfix: don't delete selection when moving cursor
  • [37] 2CK5QI7W make love event names consistent
  • [38] MUJTM6RE bring back a level of wrapping
  • [39] UTDSCN3G Merge lines.love
  • [40] VG75U7IM bugfix: typing should delete highlighted text
  • [41] H3KWPK3G regression: dropping files on the window
  • [42] LXTTOB33 extract a couple of files
  • [43] PX7DDEMO autosave slightly less aggressively
  • [44] UHB4GARJ left/right margin -> left/right coordinates
  • [45] ILOA5BYF separate data structure for each line's cache data
  • [46] AYX33NBC Merge lines.love
  • [47] K2X6G75Z start writing some tests for drawings
  • [48] ORKN6EOB Merge lines.love
  • [49] GUOQRUL7 Merge lines.love
  • [50] KMSL74GA support selections in the source editor
  • [51] VZJHGWSP Merge lines.love
  • [52] KOTNETIM repeat changes on source editor
  • [53] TVCPXAAU rename
  • [54] VXORMHME delete experimental REPL
  • [55] LYN3L74W correct commit f3abc2cbf2
  • [56] FS2ITYYH record a known issue
  • [57] 66X36NZN a little more prose describing manual_tests
  • [58] D4B52CQ2 Merge lines.love
  • [59] R5QXEHUI somebody stop me
  • [60] XX7G2FFJ intermingle freehand line drawings with text
  • [61] BLWAYPKV extract a module
  • [62] OI4FPFIN support drawings in the source editor
  • [63] 7CLGG7J2 test: autosave after any shape
  • [64] KAUD3YIK tests: deleting points/shapes
  • [65] LF7BWEG4 group all editor globals
  • [66] RZKXJYFK switch a bunch of tests to textinput events
  • [67] OGUV4HSA remove some memory leaks from rendered fragments
  • [68] 3QNOKBFM beginnings of a test harness
  • [69] 4AXV2HG4 all pending manual tests done!
  • [70] TLOAPLBJ add a license
  • [71] LNUHQOGH start passing in Editor_state explicitly
  • [72] KKMFQDR4 editing source code from within the app
  • [73] 6SMGKYDR .
  • [74] 3PSFWAIL Merge lines.love
  • [75] T7SJSJIH test: undo naming a point
  • [76] 7DYUAOI6 test: undo moving point
  • [77] 73OCE2MC after much struggle, a brute-force undo
  • [78] 6LJZN727 handle chords
  • [79] NNTMVNVO .
  • [80] ENENSZLK bugfix: source margins when toggling log browser
  • [81] 42LVB4DE test: naming a point
  • [82] VP5KC4XZ Merge lines.love
  • [83] DFGPHG5T overzealous search-and-replace
  • [84] DSLD74DK lots more tests
  • [85] 2WGHUWE6 self-documenting 0 Test_right_margin
  • [86] WLWNS6FB a bug I've never run into
  • [87] 2L5MEZV3 experiment: new edit namespace
  • [88] TO6Y2G3U more decoupling editor tests from App
  • [89] VHQCNMAR several more modules
  • [90] Y4VYNEGF test: autosave after name/move/delete of point
  • [91] AVTNUQYR basic test-enabled framework
  • [92] FFBIY74N bugfix: 'escape' to cancel a stroke
  • [93] SPNMXTYR have file API operate on state object
  • [94] TFM6F5OD Merge lines.love
  • [95] ETXNVRPT Merge lines.love
  • [96] FYS7TCDW bugfix
  • [97] APX2PY6G stop tracking wallclock time

Change contents

  • file deletion: source_text_tests.lua (----------)source_text_tests.lua (----------)
    [4.2][4.83676:83721](),[4.2][4.83676:83721](),[4.83721][4.3498:3498]()
    check_eq(Editor_state.cursor1.line, 1, '1/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, '1/cursor:pos')
    end
    check_eq(Editor_state.cursor1.line, 1, '1/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, '1/cursor:pos')
    end
    function test_search_wrap_upwards()
    check_eq(Editor_state.cursor1.line, 1, '2/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, '2/cursor:pos')
    end
    function test_search_wrap()
    check_eq(Editor_state.cursor1.line, 4, '2/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, '2/cursor:pos')
    end
    function test_search_upwards()
    check_eq(Editor_state.cursor1.line, 2, '1/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, '1/cursor:pos')
    -- reset cursor
    Editor_state.cursor1 = {line=1, pos=1}
    Editor_state.screen_top1 = {line=1, pos=1}
    -- search for second occurrence
    edit.run_after_keychord(Editor_state, 'C-f')
    check_eq(Editor_state.selection1.line, 1, 'line')
    check_eq(Editor_state.selection1.pos, 2, 'pos')
    end
    check_eq(Editor_state.lines[1].data, 'xbc', 'baseline')
    check_nil(Editor_state.selection1.line, 'baseline:selection')
    -- undo
    edit.run_after_keychord(Editor_state, 'C-z')
    edit.run_after_keychord(Editor_state, 'C-z')
    -- selection is restored
    App.screen.check(y, 'xyz', 'screen:3')
    end
    App.screen.check(y, 'defg', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection:line')
    check_nil(Editor_state.selection1.pos, 'selection:pos')
    --? check_eq(Editor_state.selection1.line, 2, 'selection:line')
    --? check_eq(Editor_state.selection1.pos, 4, 'selection:pos')
    y = Editor_state.top
    App.screen.check(y, 'xyz', 'baseline/screen:3')
    -- undo
    --? -- after undo, the backspaced key is selected
    edit.run_after_keychord(Editor_state, 'C-z')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.line, 2, 'baseline/cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'baseline/cursor:pos')
    check_nil(Editor_state.selection1.line, 'baseline/selection:line')
    check_nil(Editor_state.selection1.pos, 'baseline/selection:pos')
    local y = Editor_state.top
    App.screen.check(y, 'xyz', 'screen:3')
    end
    function test_undo_delete_text()
    App.screen.check(y, 'def', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection:line')
    check_nil(Editor_state.selection1.pos, 'selection:pos')
    y = Editor_state.top
    App.screen.check(y, 'xyz', 'baseline/screen:3')
    -- undo
    edit.run_after_keychord(Editor_state, 'C-z')
    App.screen.check(y, 'defg', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.line, 2, 'baseline/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'baseline/cursor:pos')
    check_nil(Editor_state.selection1.line, 'baseline/selection:line')
    check_nil(Editor_state.selection1.pos, 'baseline/selection:pos')
    local y = Editor_state.top
    check_nil(Editor_state.selection1.line, 'selection')
    end
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    -- selection is cleared
    check_eq(Editor_state.lines[1].data, 'abc', 'data:1')
    check_eq(Editor_state.lines[2].data, 'f', 'data:2')
    -- cursor remains at start of selection
    check_nil(Editor_state.selection1.line, 'selection')
    end
    function test_backspace_to_start_of_line()
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    -- selection is cleared
    check_eq(Editor_state.lines[1].data, 'a', 'data:1')
    check_eq(Editor_state.lines[2].data, 'def', 'data:2')
    -- cursor remains at start of selection
    check_nil(Editor_state.selection1.line, 'selection')
    end
    function test_backspace_to_end_of_line()
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    -- selection is cleared
    check_eq(Editor_state.lines[1].data, 'akl', 'data:1')
    check_eq(Editor_state.lines[2].data, 'mno', 'data:2')
    -- cursor remains at start of selection
    check_nil(Editor_state.selection1.line, 'selection')
    end
    function test_backspace_over_multiple_lines()
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    -- selection is cleared
    check_eq(Editor_state.lines[1].data, 'bc', 'data')
    -- cursor moves to start of selection
    check_nil(Editor_state.selection1.line, 'selection')
    end
    function test_backspace_over_selection_reverse()
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    -- selection is cleared
    check_eq(Editor_state.lines[1].data, 'bc', 'data')
    -- cursor (remains) at start of selection
    check_eq(Editor_state.lines[1].data, 'abcdef', 'check')
    end
    App.screen.check(y, 'mno', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
    end
    function test_backspace_past_line_boundary()
    App.screen.check(y, 'kl', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghij', 'screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mno', 'baseline/screen:2')
    -- after hitting backspace the screen scrolls up by one screen line
    edit.run_after_keychord(Editor_state, 'backspace')
    y = Editor_state.top
    App.screen.check(y, 'jkl', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'jkl', 'screen:3')
    end
    function test_backspace_can_scroll_up_screen_line()
    App.screen.check(y, 'ghi', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abcdef', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
    y = Editor_state.top
    App.screen.check(y, 'jkl', 'baseline/screen:3')
    -- after hitting backspace the screen scrolls up by one line
    edit.run_after_keychord(Editor_state, 'backspace')
    App.screen.check(y, 'ghi', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'baseline/screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 26, 'cursor:pos')
    end
    function test_backspace_can_scroll_up()
    App.screen.check(y, 'stu', 'baseline2/screen:3')
    -- try to move the cursor earlier in the third screen line by clicking the mouse
    App.screen.check(y, 'jkl mno pqr ', 'baseline2/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc def ghi ', 'baseline2/screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.pos, 28, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'xyz', 'baseline1/screen:3')
    -- add to the line until it's wrapping over 3 screen lines
    App.screen.check(y, 'jkl mno pqr ', 'baseline1/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc def ghi ', 'baseline1/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'jkl', 'screen:3')
    end
    function test_position_cursor_on_recently_edited_wrapping_line()
    -- draw a line wrapping over 2 screen lines
    App.screen.check(y, 'ghi ', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 8, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace
    -- after hitting end the screen scrolls down by one line
    edit.run_after_keychord(Editor_state, 'end')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mno', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    end
    function test_end_scrolls_down_in_wrapped_line()
    App.screen.check(y, 'jkl', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi ', 'screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mno', 'baseline/screen:2')
    -- after hitting home the screen scrolls up to first screen line
    edit.run_after_keychord(Editor_state, 'home')
    y = Editor_state.top
    App.screen.check(y, 'jkl', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'jkl', 'screen:3')
    end
    function test_home_scrolls_up_in_wrapped_line()
    App.screen.check(y, 'ghi ', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 6, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace
    -- after hitting the right arrow the screen scrolls down by one line
    edit.run_after_keychord(Editor_state, 'right')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mno', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
    end
    function test_right_arrow_scrolls_down_in_wrapped_line()
    App.screen.check(y, 'jkl', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi ', 'screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mno', 'baseline/screen:2')
    -- after hitting the left arrow the screen scrolls up to first screen line
    edit.run_after_keychord(Editor_state, 'left')
    y = Editor_state.top
    App.screen.check(y, 'jkl', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'kl', 'screen:3')
    end
    function test_left_arrow_scrolls_up_in_wrapped_line()
    App.screen.check(y, 'ghij', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 7, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'ghi', 'baseline/screen:3')
    -- after typing something the line wraps and the screen scrolls down
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'a', 'screen:1')
    end
    function test_typing_on_bottom_line_scrolls_down()
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    local y = Editor_state.top
    App.screen.check(y, 'kl', 'screen:2')
    end
    function test_inserting_text_on_final_line_avoids_scrolling_down_when_not_at_bottom()
    App.screen.check(y, 'j', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 4, 'screen_top')
    check_eq(Editor_state.cursor1.line, 5, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'jkl', 'baseline/screen:1')
    -- after hitting the enter key the screen does not scroll down
    edit.run_after_keychord(Editor_state, 'return')
    App.screen.check(y, 'hi', 'screen:3')
    end
    function test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom()
    App.screen.check(y, 'g', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 4, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'ghi', 'baseline/screen:3')
    -- after hitting the enter key the screen scrolls down
    edit.run_after_keychord(Editor_state, 'return')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi ', 'screen:3')
    end
    function test_enter_on_bottom_line_scrolls_down()
    App.screen.check(y, 'def', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc ', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'mno', 'baseline/screen:3') -- line wrapping includes trailing whitespace
    -- after hitting the page-up key the screen scrolls up to top
    edit.run_after_keychord(Editor_state, 'pageup')
    App.screen.check(y, 'jkl', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi', 'screen:3')
    end
    function test_pageup_scrolls_up_from_middle_screen_line()
    App.screen.check(y, 'def', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc ', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'mno', 'baseline/screen:3') -- line wrapping includes trailing whitespace
    -- after hitting the page-up key the screen scrolls up to top
    edit.run_after_keychord(Editor_state, 'pageup')
    App.screen.check(y, 'jkl', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:2')
    end
    function test_pageup_scrolls_up_by_screen_line()
    App.screen.check(y, 'abc', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
    y = Editor_state.top
    App.screen.check(y, 'ghi', 'baseline/screen:2')
    -- after pageup the cursor goes to first line
    edit.run_after_keychord(Editor_state, 'pageup')
    App.screen.check(y, 'def', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:3')
    end
    function test_pageup()
    App.screen.check(y, 'abc', 'screen:2')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
    y = Editor_state.top
    -- empty first line
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi', 'baseline/screen:3')
    -- after hitting the up arrow the screen scrolls up by one line
    edit.run_after_keychord(Editor_state, 'up')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'jkl', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 5, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
    end
    function test_up_arrow_scrolls_up_to_empty_line()
    App.screen.check(y, 'ghi', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mno', 'baseline/screen:3')
    -- after hitting the up arrow the screen scrolls up to final screen line of previous line
    edit.run_after_keychord(Editor_state, 'up')
    y = Editor_state.top
    App.screen.check(y, 'jkl', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mno', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    end
    function test_up_arrow_scrolls_up_to_final_screen_line()
    App.screen.check(y, 'jkl', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi ', 'screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mno', 'baseline/screen:2')
    -- after hitting the up arrow the screen scrolls up to first screen line
    edit.run_after_keychord(Editor_state, 'up')
    y = Editor_state.top
    App.screen.check(y, 'jkl', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi', 'screen:3')
    end
    function test_up_arrow_scrolls_up_by_one_screen_line()
    App.screen.check(y, 'def', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
    y = Editor_state.top
    App.screen.check(y, 'jkl', 'baseline/screen:3')
    -- after hitting the up arrow the screen scrolls up by one line
    edit.run_after_keychord(Editor_state, 'up')
    App.screen.check(y, 'ghi', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi', 'screen:3')
    end
    function test_up_arrow_scrolls_up_by_one_line()
    App.screen.check(y, 'def', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor')
    -- the screen is unchanged
    y = Editor_state.top
    App.screen.check(y, 'ghi', 'baseline/screen:3')
    -- after hitting the up arrow the cursor moves up by 1 line
    edit.run_after_keychord(Editor_state, 'up')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mno', 'screen:3')
    end
    function test_up_arrow_moves_cursor()
    App.screen.check(y, 'kl', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghij', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
    y = Editor_state.top
    check_eq(Editor_state.screen_top1.line, 3, 'baseline2/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'baseline2/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'baseline2/cursor:pos')
    -- after hitting down arrow the screen doesn't scroll down further, and certainly doesn't scroll up
    edit.run_after_keychord(Editor_state, 'down')
    App.screen.check(y, 'ghij', 'baseline/screen:3')
    -- after hitting pagedown the screen scrolls down to start of a long line
    edit.run_after_keychord(Editor_state, 'pagedown')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'kl', 'screen:3')
    end
    App.screen.check(y, 'ghij', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'ghij', 'baseline/screen:3')
    -- after hitting the down arrow the screen scrolls down by one line
    edit.run_after_keychord(Editor_state, 'down')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'jkl', 'screen:3')
    end
    function test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word()
    App.screen.check(y, 'ghi ', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace
    -- after hitting the down arrow the screen scrolls down by one line
    edit.run_after_keychord(Editor_state, 'down')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'jkl', 'screen:3')
    end
    function test_down_arrow_scrolls_down_by_one_screen_line()
    App.screen.check(y, 'ghi', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 4, 'cursor')
    y = Editor_state.top
    App.screen.check(y, 'ghi', 'baseline/screen:3')
    -- after hitting the down arrow the screen scrolls down by one line
    edit.run_after_keychord(Editor_state, 'down')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi', 'screen:3')
    end
    function test_down_arrow_scrolls_down_by_one_line()
    App.screen.check(y, 'def', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor')
    -- the screen is unchanged
    y = Editor_state.top
    App.screen.check(y, 'ghi', 'baseline/screen:3')
    -- after hitting the down arrow, the cursor moves down by 1 line
    edit.run_after_keychord(Editor_state, 'down')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 9, 'screen_top:pos')
    end
    function test_down_arrow_moves_cursor()
    App.screen.check(y, 'mno ', 'screen:3')
    end
    function test_pagedown_never_moves_up()
    App.screen.check(y, 'jkl ', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi ', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 9, 'screen_top:pos')
    y = Editor_state.top
    App.screen.check(y, 'ghi ', 'baseline/screen:3')
    -- after pagedown we scroll down the very long wrapping line
    edit.run_after_keychord(Editor_state, 'pagedown')
    App.screen.check(y, 'def ', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc ', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'screen:1')
    end
    function test_pagedown_can_start_from_middle_of_long_wrapping_line()
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor')
    y = Editor_state.top + drawing_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    -- after pagedown the screen draws the drawing up top
    -- 15px margin + 10px margin + 25px drawing + 10px margin + 15px line3 = 75px < screen height 80px
    edit.run_after_keychord(Editor_state, 'pagedown')
    check_eq(Editor_state.lines[2].mode, 'drawing', 'baseline/lines')
    Editor_state.cursor1 = {line=1, pos=1}
    Editor_state.screen_top1 = {line=1, pos=1}
    Editor_state.screen_bottom1 = {}
    local drawing_height = Drawing_padding_height + drawing_width/2 -- default
    -- initially the screen displays the first line and the drawing
    -- 15px margin + 15px line1 + 10px margin + 25px drawing + 10px margin = 75px < screen height 80px
    edit.draw(Editor_state)
    local y = Editor_state.top
    App.screen.check(y, 'ghi', 'screen:2')
    end
    function test_pagedown_skips_drawings()
    App.screen.check(y, 'def', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor')
    y = Editor_state.top
    App.screen.check(y, 'def', 'baseline/screen:2')
    -- after pagedown the bottom line becomes the top
    edit.run_after_keychord(Editor_state, 'pagedown')
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    check_nil(Editor_state.selection1.line, 'check')
    end
    check_eq(Editor_state.selection1.line, 1, 'selection:line')
    check_eq(Editor_state.selection1.pos, 2, 'selection:pos')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    end
    check_eq(Editor_state.selection1.line, 1, 'selection:line')
    check_eq(Editor_state.selection1.pos, 2, 'selection:pos')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
    end
    function test_select_text_repeatedly_using_mouse_and_shift()
    check_eq(Editor_state.selection1.line, 1, 'selection:line')
    check_eq(Editor_state.selection1.pos, 2, 'selection:pos')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
    end
    function test_select_text_using_mouse_and_shift()
    App.screen.check(y, 'def', 'screen:3')
    end
    function test_select_text_using_mouse()
    App.screen.check(y, 'zbc', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'axy', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'ghi', 'baseline/screen:3')
    -- paste some text including a newline, check that new line is created
    App.clipboard = 'xy\nz'
    edit.run_after_keychord(Editor_state, 'C-v')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    check_eq(Editor_state.lines[1].data, '', 'data:1')
    check_eq(Editor_state.lines[2].data, 'abc', 'data:2')
    end
    function test_insert_from_clipboard()
    App.screen.check(y, 'def', 'screen:3')
    end
    function test_insert_newline_at_start_of_line()
    App.screen.check(y, 'bc', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'a', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    y = Editor_state.top
    App.screen.check(y, 'ghi', 'baseline/screen:3')
    -- hitting the enter key splits the line
    edit.run_after_keychord(Editor_state, 'return')
    App.screen.check(y, 'def', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'fg', 'screen:3')
    end
    function test_insert_newline()
    App.screen.check(y, 'de', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.screen_top1.line, 1, 'check')
    check_eq(Editor_state.lines[1].data, 'ahi', 'data')
    end
    App.screen.check(y, 'jkl', 'baseline/screen:3')
    -- set up a selection starting above the currently displayed page
    Editor_state.selection1 = {line=1, pos=2}
    -- delete selection
    edit.run_after_keychord(Editor_state, 'backspace')
    -- page scrolls up
    App.screen.check(y, 'ghi', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'def', 'baseline/screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.lines[1].data, 'xyzdef', 'check')
    end
    function test_deleting_selection_may_scroll()
    check_eq(Editor_state.lines[1].data, 'bc', 'data')
    end
    function test_paste_replaces_selection()
    check_eq(App.clipboard, 'a', 'clipboard')
    -- selected text is deleted
    check(Editor_state.selection1.line, 'check')
    end
    function test_cut()
    check_eq(App.clipboard, 'a', 'clipboard')
    -- selection is reset since shift key is not pressed
    check_nil(Editor_state.selection1.line, 'check')
    check_eq(Editor_state.lines[1].data, 'Dbc', 'data')
    end
    function test_copy_does_not_reset_selection()
    check_eq(Editor_state.lines[1].data, 'xbc', 'check')
    end
    function test_edit_with_shift_key_deletes_selection()
    check_nil(Editor_state.selection1.line, 'check')
    check_eq(Editor_state.lines[1].data, 'abc', 'data')
    end
    check_eq(Editor_state.selection1.line, 1, 'selection:line')
    check_eq(Editor_state.selection1.pos, 1, 'selection:pos')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    end
    function test_cursor_movement_without_shift_resets_selection()
    check_eq(Editor_state.cursor1.pos, 20, 'cursor')
    end
    function test_select_text()
    App.screen.check(y, 'the quick brown fox ', 'baseline/screen:1')
    y = y + Editor_state.line_height
    -- click past the end of the screen line
    edit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)
    -- cursor moves to end of screen line
    check_eq(Editor_state.cursor1.pos, 15, 'cursor') -- one more than the number of UTF-8 code-points
    end
    function test_click_past_end_of_word_wrapping_line()
    App.screen.check(y, 'am', 'baseline/screen:3')
    y = y + Editor_state.line_height
    -- click past the end of it
    edit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)
    -- cursor moves to end of line
    App.screen.check(y, 'I’m ad', 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'madam ', 'baseline/screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.pos, 15, 'cursor') -- one more than the number of UTF-8 code-points
    end
    function test_click_past_end_of_wrapping_line_containing_non_ascii()
    App.screen.check(y, 'am', 'baseline/screen:3')
    y = y + Editor_state.line_height
    -- click past the end of it
    edit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)
    -- cursor moves to end of line
    App.screen.check(y, "I'm ad", 'baseline/screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'madam ', 'baseline/screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 12, 'cursor:pos')
    end
    function test_click_past_end_of_wrapping_line()
    App.screen.check(y, "I'm ad", 'baseline/screen:2')
    y = y + Editor_state.line_height
    -- click past end of second screen line
    edit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)
    -- cursor moves to end of screen line
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 12, 'cursor:pos')
    end
    function test_click_on_wrapping_line_rendered_from_partway_at_top_of_screen()
    App.screen.check(y, "I'm ad", 'baseline/screen:2')
    y = y + Editor_state.line_height
    -- click past end of second screen line
    edit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)
    -- cursor moves to end of screen line
    App.screen.check(y, 'madam ', 'baseline/screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, '’m a', 'screen:3')
    end
    function test_click_on_wrapping_line()
    App.screen.check(y, 'am I', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'mad', 'screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ijk', 'screen:3')
    end
    function test_draw_wrapping_text_containing_non_ascii()
    -- draw a long line containing non-ASCII
    App.screen.check(y, 'e fgh', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abcd ', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection is empty to avoid perturbing future edits')
    end
    function test_draw_text_wrapping_within_word()
    -- arrange a screen line that needs to be split within a word
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection is empty to avoid perturbing future edits')
    end
    App.screen.check(y, 'ghi', 'screen:3')
    end
    App.screen.check(y, 'def ', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc ', 'screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'fgh', 'screen:3')
    end
    function test_draw_word_wrapping_text()
    App.screen.check(y, 'de', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'screen:1')
    y = y + Editor_state.line_height
    App.screen.check(y, 'ghi', 'screen:3')
    end
    function test_draw_wrapping_text()
    App.screen.check(y, 'def', 'screen:2')
    y = y + Editor_state.line_height
    App.screen.check(y, 'abc', 'screen:1')
    y = y + Editor_state.line_height
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
    end
    function test_draw_text()
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection is empty to avoid perturbing future edits')
    end
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection is empty to avoid perturbing future edits')
    end
    check_nil(Editor_state.selection1.line, 'selection:line')
    check_nil(Editor_state.selection1.pos, 'selection:pos')
    end
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    -- selection is empty to avoid perturbing future edits
    check_eq(Editor_state.cursor1.line, 2, 'line')
    check_eq(Editor_state.cursor1.pos, 4, 'pos')
    end
    check_eq(Editor_state.cursor1.pos, 9, 'check')
    end
    function test_move_past_end_of_word_on_next_line()
    check_eq(Editor_state.cursor1.pos, 4, 'check')
    end
    function test_skip_multiple_spaces_to_next_word()
    check_eq(Editor_state.cursor1.pos, 8, 'check')
    end
    function test_skip_past_tab_to_next_word()
    check_eq(Editor_state.cursor1.pos, 4, 'check')
    end
    function test_skip_to_next_word()
    check_eq(Editor_state.cursor1.line, 1, 'line')
    check_eq(Editor_state.cursor1.pos, 5, 'pos')
    end
    function test_move_past_end_of_word()
    check_eq(Editor_state.cursor1.pos, 1, 'check')
    end
    function test_move_to_start_of_word_on_previous_line()
    check_eq(Editor_state.cursor1.pos, 9, 'check')
    end
    function test_skip_multiple_spaces_to_previous_word()
    check_eq(Editor_state.cursor1.pos, 1, 'check')
    end
    function test_skip_past_tab_to_previous_word()
    check_eq(Editor_state.cursor1.pos, 1, 'check')
    end
    function test_skip_to_previous_word()
    check_eq(Editor_state.cursor1.pos, 1, 'check')
    end
    function test_move_to_start_of_previous_word()
    check_eq(Editor_state.cursor1.line, 2, 'line')
    check_eq(Editor_state.cursor1.pos, 1, 'pos')
    end
    function test_move_to_start_of_word()
    check_eq(Editor_state.cursor1.line, 1, 'line')
    check_eq(Editor_state.cursor1.pos, 4, 'pos') -- past end of line
    end
    function test_move_right_to_next_line()
    check_eq(Editor_state.cursor1.pos, 2, 'check')
    end
    function test_move_left_to_previous_line()
    check_eq(Editor_state.cursor1.pos, 1, 'check')
    end
    function test_move_right()
    App.screen.check(y, 'a', 'screen:1')
    end
    function test_press_ctrl()
    check_eq(#Editor_state.lines, 1, '#lines')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    end
    function test_insert_first_character()
    check_eq(#Editor_state.lines, 1, '#lines')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
    end
    function test_backspace_from_start_of_final_line()
    check_eq(#Editor_state.lines, 2, '#lines')
    check_eq(Editor_state.cursor1.line, 2, 'cursor')
    end
    function test_backspace_to_delete_drawing()
    check_eq(#Editor_state.lines, 1, '#lines')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
    end
    function test_click_to_create_drawing()
  • file deletion: source_tests.lua (----------)source_tests.lua (----------)
    [4.2][4.150199:150239](),[4.2][4.150199:150239](),[4.150239][4.147103:147103]()
    check_eq(App.filesystem['foo'], 'abc\ndef\n', 'check')
    end
    check_eq(#Editor_state.lines, 3, '#lines')
    check_eq(Editor_state.lines[1].data, 'abc', 'lines:1')
    check_eq(Editor_state.lines[2].data, 'def', 'lines:2')
    check_eq(Editor_state.lines[3].data, 'ghi', 'lines:3')
    edit.draw(Editor_state)
    end
    function test_drop_file_saves_previous()
    check_eq(Editor_state.left, Margin_left, 'edit:left')
    check_eq(Editor_state.right, App.screen.width/2 - Margin_right, 'edit:right')
    check_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'log:left')
    check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'log:right')
    end
    check_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'log:left')
    check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'log:right')
    end
    function test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width()
    check_eq(Editor_state.left, Margin_left, 'edit:left')
    check_eq(Editor_state.right, old_editor_right, 'edit:right')
    -- log browser margins are adjusted
    check_eq(App.screen.width, 600, 'display:width')
    -- left side margins are unchanged
    check(Show_log_browser_side, 'check')
    end
    check(not Show_log_browser_side, 'baseline')
    -- pressing ctrl+l shows log-browser side
    check_eq(App.screen.width, 200, 'width')
    check_eq(App.screen.height, 400, 'height')
    check_eq(Editor_state.left, Margin_left, 'left_margin')
    check_eq(Editor_state.right, 200-Margin_right, 'right_margin')
    check_eq(Editor_state.width, 200-Margin_left-Margin_right, 'drawing_width')
    -- TODO: how to make assertions about when App.update got past the early exit?
    check_eq(App.screen.width, 300, 'baseline/width')
    check_eq(App.screen.height, 300, 'baseline/height')
    check_eq(Editor_state.left, Test_margin_left, 'baseline/left_margin')
    check_eq(Editor_state.right, 300 - Test_margin_right, 'baseline/right_margin')
    App.resize(200, 400)
  • resurrect zombie in text_tests.lua at line 9
    [4.28][3.2:283](),[4.28][3.2:283]()
    check_eq(#Editor_state.lines, 1, '#lines')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
  • edit in text_tests.lua at line 14
    [4.738][3.284:380](),[4.738][3.284:380](),[4.131][3.381:477](),[4.131][3.381:477]()
    check_eq(#Editor_state.lines, 2, '#lines')
    check_eq(Editor_state.cursor1.line, 2, 'cursor')
    check_eq(#Editor_state.lines, 1, '#lines')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
  • edit in text_tests.lua at line 567
    [4.13730][4.83:193](),[4.13730][4.83:193]()
    check_eq(Editor_state.lines[1].data, 'abc', 'F - test_cursor_movement_without_shift_resets_selection/data')
  • edit in text_tests.lua at line 585
    [4.452][4.194:275]()
    check_eq(Editor_state.lines[1].data, 'xbc', 'F - test_edit_deletes_selection')
  • edit in text_tests.lua at line 606
    [4.14601][4.276:377](),[4.14601][4.276:377]()
    check_eq(Editor_state.lines[1].data, 'Dbc', 'F - test_edit_with_shift_key_deletes_selection/data')
  • edit in text_tests.lua at line 643
    [4.451][4.378:444]()
    check_eq(Editor_state.lines[1].data, 'bc', 'F - test_cut/data')
  • edit in text_tests.lua at line 663
    [4.1068][4.445:531]()
    check_eq(Editor_state.lines[1].data, 'xyzdef', 'F - test_paste_replaces_selection')
  • edit in text_tests.lua at line 687
    [4.16335][4.532:625](),[4.16335][4.532:625]()
    check_eq(Editor_state.lines[1].data, 'ahi', 'F - test_deleting_selection_may_scroll/data')
  • edit in text_tests.lua at line 749
    [4.18093][4.626:817](),[4.18093][4.626:817]()
    check_eq(Editor_state.lines[1].data, '', 'F - test_insert_newline_at_start_of_line/data:1')
    check_eq(Editor_state.lines[2].data, 'abc', 'F - test_insert_newline_at_start_of_line/data:2')
  • resurrect zombie in text_tests.lua at line 897
    [4.24349][3.7673:7714](),[4.24349][3.7673:7714]()
    App.screen.check(y, 'ghi', 'screen:2')
  • edit in text_tests.lua at line 898
    [4.2551][3.7715:7783](),[4.2551][3.7715:7783](),[4.7723][3.7784:7834](),[4.7723][3.7784:7834](),[4.3811][3.7835:7945](),[4.3811][3.7835:7945](),[4.7764][3.7946:7987](),[4.7764][3.7946:7987]()
    check_eq(Editor_state.lines[2].mode, 'drawing', 'baseline/lines')
    App.screen.check(y, 'abc', 'baseline/screen:1')
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor')
    App.screen.check(y, 'def', 'screen:1')
  • edit in text_tests.lua at line 1664
    [4.5518][4.818:908]()
    check_eq(Editor_state.lines[1].data, 'abcdef', "F - test_backspace_past_line_boundary")
  • edit in text_tests.lua at line 1680
    [4.5572][4.909:996]()
    check_eq(Editor_state.lines[1].data, 'bc', "F - test_backspace_over_selection/data")
  • edit in text_tests.lua at line 1698
    [4.5626][4.997:1092]()
    check_eq(Editor_state.lines[1].data, 'bc', "F - test_backspace_over_selection_reverse/data")
  • edit in text_tests.lua at line 1716
    [4.5680][4.1093:1283]()
    check_eq(Editor_state.lines[1].data, 'akl', "F - test_backspace_over_multiple_lines/data:1")
    check_eq(Editor_state.lines[2].data, 'mno', "F - test_backspace_over_multiple_lines/data:2")
  • edit in text_tests.lua at line 1735
    [4.5734][4.1284:1466]()
    check_eq(Editor_state.lines[1].data, 'a', "F - test_backspace_to_start_of_line/data:1")
    check_eq(Editor_state.lines[2].data, 'def', "F - test_backspace_to_start_of_line/data:2")
  • edit in text_tests.lua at line 1754
    [4.5788][4.1467:1649]()
    check_eq(Editor_state.lines[1].data, 'abc', "F - test_backspace_to_start_of_line/data:1")
    check_eq(Editor_state.lines[2].data, 'f', "F - test_backspace_to_start_of_line/data:2")
  • edit in text_tests.lua at line 1848
    [4.49][4.1650:1741](),[4.6032][4.1650:1741](),[4.49][4.1650:1741](),[4.6032][4.1650:1741](),[4.1741][4.51:51](),[4.1741][4.51:51]()
    check_eq(Editor_state.lines[1].data, 'xbc', 'F - test_undo_restores_selection/baseline')
  • resurrect zombie in text_tests.lua at line 1848
    [4.791][3.22495:22617](),[4.791][3.22495:22617]()
    check_eq(Editor_state.lines[1].data, 'xbc', 'baseline')
    check_nil(Editor_state.selection1.line, 'baseline:selection')
  • resolve order conflict in text_tests.lua at line 1848
    [4.49]
    [3.22495]
  • edit in source_text_tests.lua at line 4
    [4.3631][4.3631:3666]()
    io.write('\ntest_initial_state')
  • replacement in source_text_tests.lua at line 9
    [4.3846][4.3846:4242]()
    check_eq(#Editor_state.lines, 1, 'F - test_initial_state/#lines')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_initial_state/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_initial_state/cursor:pos')
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_initial_state/screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'F - test_initial_state/screen_top:pos')
    [4.3846]
    [4.812]
    check_eq(#Editor_state.lines, 1, '#lines')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
  • edit in source_text_tests.lua at line 17
    [4.857][4.857:902]()
    io.write('\ntest_click_to_create_drawing')
  • replacement in source_text_tests.lua at line 24
    [4.1201][4.1201:1363]()
    check_eq(#Editor_state.lines, 2, 'F - test_click_to_create_drawing/#lines')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_click_to_create_drawing/cursor')
    [4.1201]
    [4.1363]
    check_eq(#Editor_state.lines, 2, '#lines')
    check_eq(Editor_state.cursor1.line, 2, 'cursor')
  • edit in source_text_tests.lua at line 29
    [4.1412][4.1412:1461]()
    io.write('\ntest_backspace_to_delete_drawing')
  • replacement in source_text_tests.lua at line 38
    [4.1946][4.1946:2116]()
    check_eq(#Editor_state.lines, 1, 'F - test_backspace_to_delete_drawing/#lines')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_backspace_to_delete_drawing/cursor')
    [4.1946]
    [4.4242]
    check_eq(#Editor_state.lines, 1, '#lines')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
  • edit in source_text_tests.lua at line 43
    [4.4298][4.4298:4354]()
    io.write('\ntest_backspace_from_start_of_final_line')
  • replacement in source_text_tests.lua at line 52
    [4.4744][4.4744:5031]()
    check_eq(#Editor_state.lines, 1, 'F - test_backspace_from_start_of_final_line/#lines')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_backspace_from_start_of_final_line/cursor')
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_backspace_from_start_of_final_line/screen_top')
    [4.4744]
    [4.5031]
    check_eq(#Editor_state.lines, 1, '#lines')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
  • edit in source_text_tests.lua at line 58
    [4.5075][4.5075:5119]()
    io.write('\ntest_insert_first_character')
  • replacement in source_text_tests.lua at line 65
    [4.5374][4.5374:5445]()
    App.screen.check(y, 'a', 'F - test_insert_first_character/screen:1')
    [4.5374]
    [4.5445]
    App.screen.check(y, 'a', 'screen:1')
  • edit in source_text_tests.lua at line 69
    [4.5477][4.5477:5509]()
    io.write('\ntest_press_ctrl')
  • edit in source_text_tests.lua at line 81
    [4.5907][4.5907:5938]()
    io.write('\ntest_move_left')
  • replacement in source_text_tests.lua at line 88
    [4.6210][4.6210:6272]()
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_move_left')
    [4.6210]
    [4.6272]
    check_eq(Editor_state.cursor1.pos, 1, 'check')
  • edit in source_text_tests.lua at line 92
    [4.6304][4.6304:6336]()
    io.write('\ntest_move_right')
  • replacement in source_text_tests.lua at line 99
    [4.6609][4.6609:6672]()
    check_eq(Editor_state.cursor1.pos, 2, 'F - test_move_right')
    [4.6609]
    [4.6672]
    check_eq(Editor_state.cursor1.pos, 2, 'check')
  • edit in source_text_tests.lua at line 103
    [4.6720][4.6720:6768]()
    io.write('\ntest_move_left_to_previous_line')
  • replacement in source_text_tests.lua at line 110
    [4.7049][4.7049:7238]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_move_left_to_previous_line/line')
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_move_left_to_previous_line/pos') -- past end of line
    [4.7049]
    [4.7238]
    check_eq(Editor_state.cursor1.line, 1, 'line')
    check_eq(Editor_state.cursor1.pos, 4, 'pos') -- past end of line
  • edit in source_text_tests.lua at line 115
    [4.7283][4.7283:7328]()
    io.write('\ntest_move_right_to_next_line')
  • replacement in source_text_tests.lua at line 122
    [4.7631][4.7631:7793]()
    check_eq(Editor_state.cursor1.line, 2, 'F - test_move_right_to_next_line/line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_move_right_to_next_line/pos')
    [4.7631]
    [4.7793]
    check_eq(Editor_state.cursor1.line, 2, 'line')
    check_eq(Editor_state.cursor1.pos, 1, 'pos')
  • edit in source_text_tests.lua at line 127
    [4.7836][4.7836:7879]()
    io.write('\ntest_move_to_start_of_word')
  • replacement in source_text_tests.lua at line 134
    [4.8155][4.8155:8229]()
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_move_to_start_of_word')
    [4.8155]
    [4.8229]
    check_eq(Editor_state.cursor1.pos, 1, 'check')
  • edit in source_text_tests.lua at line 138
    [4.8281][4.8281:8333]()
    io.write('\ntest_move_to_start_of_previous_word')
  • replacement in source_text_tests.lua at line 145
    [4.8644][4.8644:8727]()
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_move_to_start_of_previous_word')
    [4.8644]
    [4.8727]
    check_eq(Editor_state.cursor1.pos, 1, 'check')
  • edit in source_text_tests.lua at line 149
    [4.8770][4.8770:8813]()
    io.write('\ntest_skip_to_previous_word')
  • replacement in source_text_tests.lua at line 156
    [4.9125][4.9125:9199]()
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_skip_to_previous_word')
    [4.9125]
    [4.9199]
    check_eq(Editor_state.cursor1.pos, 1, 'check')
  • edit in source_text_tests.lua at line 160
    [4.9251][4.9251:9303]()
    io.write('\ntest_skip_past_tab_to_previous_word')
  • replacement in source_text_tests.lua at line 167
    [4.9611][4.9611:9694]()
    check_eq(Editor_state.cursor1.pos, 9, 'F - test_skip_past_tab_to_previous_word')
    [4.9611]
    [4.9694]
    check_eq(Editor_state.cursor1.pos, 9, 'check')
  • edit in source_text_tests.lua at line 171
    [4.9753][4.9753:9812]()
    io.write('\ntest_skip_multiple_spaces_to_previous_word')
  • replacement in source_text_tests.lua at line 178
    [4.10125][4.10125:10215]()
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_skip_multiple_spaces_to_previous_word')
    [4.10125]
    [4.10215]
    check_eq(Editor_state.cursor1.pos, 1, 'check')
  • edit in source_text_tests.lua at line 182
    [4.10275][4.10275:10335]()
    io.write('\ntest_move_to_start_of_word_on_previous_line')
  • replacement in source_text_tests.lua at line 189
    [4.10622][4.10622:10814]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_move_to_start_of_word_on_previous_line/line')
    check_eq(Editor_state.cursor1.pos, 5, 'F - test_move_to_start_of_word_on_previous_line/pos')
    [4.10622]
    [4.10814]
    check_eq(Editor_state.cursor1.line, 1, 'line')
    check_eq(Editor_state.cursor1.pos, 5, 'pos')
  • edit in source_text_tests.lua at line 194
    [4.10857][4.10857:10900]()
    io.write('\ntest_move_past_end_of_word')
  • replacement in source_text_tests.lua at line 201
    [4.11181][4.11181:11255]()
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_move_past_end_of_word')
    [4.11181]
    [4.11255]
    check_eq(Editor_state.cursor1.pos, 4, 'check')
  • edit in source_text_tests.lua at line 205
    [4.11294][4.11294:11333]()
    io.write('\ntest_skip_to_next_word')
  • replacement in source_text_tests.lua at line 212
    [4.11645][4.11645:11715]()
    check_eq(Editor_state.cursor1.pos, 8, 'F - test_skip_to_next_word')
    [4.11645]
    [4.11715]
    check_eq(Editor_state.cursor1.pos, 8, 'check')
  • edit in source_text_tests.lua at line 216
    [4.11763][4.11763:11811]()
    io.write('\ntest_skip_past_tab_to_next_word')
  • replacement in source_text_tests.lua at line 223
    [4.12124][4.12124:12203]()
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_skip_past_tab_to_next_word')
    [4.12124]
    [4.12203]
    check_eq(Editor_state.cursor1.pos, 4, 'check')
  • edit in source_text_tests.lua at line 227
    [4.12258][4.12258:12313]()
    io.write('\ntest_skip_multiple_spaces_to_next_word')
  • replacement in source_text_tests.lua at line 234
    [4.12627][4.12627:12713]()
    check_eq(Editor_state.cursor1.pos, 9, 'F - test_skip_multiple_spaces_to_next_word')
    [4.12627]
    [4.12713]
    check_eq(Editor_state.cursor1.pos, 9, 'check')
  • edit in source_text_tests.lua at line 238
    [4.12769][4.12769:12825]()
    io.write('\ntest_move_past_end_of_word_on_next_line')
  • replacement in source_text_tests.lua at line 245
    [4.13113][4.13113:13297]()
    check_eq(Editor_state.cursor1.line, 2, 'F - test_move_past_end_of_word_on_next_line/line')
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_move_past_end_of_word_on_next_line/pos')
    [4.13113]
    [4.13297]
    check_eq(Editor_state.cursor1.line, 2, 'line')
    check_eq(Editor_state.cursor1.pos, 4, 'pos')
  • edit in source_text_tests.lua at line 250
    [4.139][4.139:179]()
    io.write('\ntest_click_moves_cursor')
  • replacement in source_text_tests.lua at line 260
    [4.531][4.531:697]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_click_moves_cursor/cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'F - test_click_moves_cursor/cursor:pos')
    [4.531]
    [4.697]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
  • replacement in source_text_tests.lua at line 263
    [4.754][4.754:928]()
    check_nil(Editor_state.selection1.line, 'F - test_click_moves_cursor/selection:line')
    check_nil(Editor_state.selection1.pos, 'F - test_click_moves_cursor/selection:pos')
    [4.754]
    [4.13950]
    check_nil(Editor_state.selection1.line, 'selection:line')
    check_nil(Editor_state.selection1.pos, 'selection:pos')
  • edit in source_text_tests.lua at line 268
    [4.967][4.967:1010]()
    io.write('\ntest_click_to_left_of_line')
  • replacement in source_text_tests.lua at line 280
    [4.14569][4.1011:1311]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_click_to_left_of_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_click_to_left_of_line/cursor:pos')
    check_nil(Editor_state.selection1.line, 'F - test_click_to_left_of_line/selection is empty to avoid perturbing future edits')
    [4.14569]
    [4.14763]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection is empty to avoid perturbing future edits')
  • edit in source_text_tests.lua at line 286
    [4.1361][4.1361:1415]()
    io.write('\ntest_click_takes_margins_into_account')
  • replacement in source_text_tests.lua at line 299
    [4.15451][4.1416:1749]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_click_takes_margins_into_account/cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'F - test_click_takes_margins_into_account/cursor:pos')
    check_nil(Editor_state.selection1.line, 'F - test_click_takes_margins_into_account/selection is empty to avoid perturbing future edits')
    [4.15451]
    [4.15667]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection is empty to avoid perturbing future edits')
  • edit in source_text_tests.lua at line 305
    [4.1786][4.1786:1827]()
    io.write('\ntest_click_on_empty_line')
  • replacement in source_text_tests.lua at line 317
    [4.16261][4.1828:1908]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_click_on_empty_line/cursor')
    [4.16261]
    [4.16352]
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
  • edit in source_text_tests.lua at line 321
    [4.16383][4.16383:16414]()
    io.write('\ntest_draw_text')
  • replacement in source_text_tests.lua at line 330
    [4.16763][4.16763:16823]()
    App.screen.check(y, 'abc', 'F - test_draw_text/screen:1')
    [4.16763]
    [4.16823]
    App.screen.check(y, 'abc', 'screen:1')
  • replacement in source_text_tests.lua at line 332
    [4.16858][4.16858:16918]()
    App.screen.check(y, 'def', 'F - test_draw_text/screen:2')
    [4.16858]
    [4.16918]
    App.screen.check(y, 'def', 'screen:2')
  • replacement in source_text_tests.lua at line 334
    [4.16953][4.16953:17013]()
    App.screen.check(y, 'ghi', 'F - test_draw_text/screen:3')
    [4.16953]
    [4.17013]
    App.screen.check(y, 'ghi', 'screen:3')
  • edit in source_text_tests.lua at line 338
    [4.17053][4.17053:17093]()
    io.write('\ntest_draw_wrapping_text')
  • replacement in source_text_tests.lua at line 347
    [4.17443][4.17443:17512]()
    App.screen.check(y, 'abc', 'F - test_draw_wrapping_text/screen:1')
    [4.17443]
    [4.17512]
    App.screen.check(y, 'abc', 'screen:1')
  • replacement in source_text_tests.lua at line 349
    [4.17547][4.17547:17615]()
    App.screen.check(y, 'de', 'F - test_draw_wrapping_text/screen:2')
    [4.17547]
    [4.17615]
    App.screen.check(y, 'de', 'screen:2')
  • replacement in source_text_tests.lua at line 351
    [4.17650][4.17650:17719]()
    App.screen.check(y, 'fgh', 'F - test_draw_wrapping_text/screen:3')
    [4.17650]
    [4.17719]
    App.screen.check(y, 'fgh', 'screen:3')
  • edit in source_text_tests.lua at line 355
    [4.17764][4.17764:17809]()
    io.write('\ntest_draw_word_wrapping_text')
  • replacement in source_text_tests.lua at line 364
    [4.18158][4.18158:18233]()
    App.screen.check(y, 'abc ', 'F - test_draw_word_wrapping_text/screen:1')
    [4.18158]
    [4.18233]
    App.screen.check(y, 'abc ', 'screen:1')
  • replacement in source_text_tests.lua at line 366
    [4.18268][4.18268:18343]()
    App.screen.check(y, 'def ', 'F - test_draw_word_wrapping_text/screen:2')
    [4.18268]
    [4.18343]
    App.screen.check(y, 'def ', 'screen:2')
  • replacement in source_text_tests.lua at line 368
    [4.18378][4.18378:18452]()
    App.screen.check(y, 'ghi', 'F - test_draw_word_wrapping_text/screen:3')
    [4.18378]
    [4.18452]
    App.screen.check(y, 'ghi', 'screen:3')
  • edit in source_text_tests.lua at line 372
    [4.1948][4.1948:1992]()
    io.write('\ntest_click_on_wrapping_line')
  • replacement in source_text_tests.lua at line 384
    [4.19075][4.1993:2296]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_click_on_wrapping_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'F - test_click_on_wrapping_line/cursor:pos')
    check_nil(Editor_state.selection1.line, 'F - test_click_on_wrapping_line/selection is empty to avoid perturbing future edits')
    [4.19075]
    [4.19271]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection is empty to avoid perturbing future edits')
  • edit in source_text_tests.lua at line 390
    [4.2363][4.2363:2434]()
    io.write('\ntest_click_on_wrapping_line_takes_margins_into_account')
  • replacement in source_text_tests.lua at line 403
    [4.20011][4.2435:2819]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_click_on_wrapping_line_takes_margins_into_account/cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'F - test_click_on_wrapping_line_takes_margins_into_account/cursor:pos')
    check_nil(Editor_state.selection1.line, 'F - test_click_on_wrapping_line_takes_margins_into_account/selection is empty to avoid perturbing future edits')
    [4.20011]
    [4.20261]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection is empty to avoid perturbing future edits')
  • edit in source_text_tests.lua at line 410
    [4.20377][4.20377:20429]()
    io.write('\ntest_draw_text_wrapping_within_word')
  • replacement in source_text_tests.lua at line 419
    [4.20780][4.20780:20863]()
    App.screen.check(y, 'abcd ', 'F - test_draw_text_wrapping_within_word/screen:1')
    [4.20780]
    [4.20863]
    App.screen.check(y, 'abcd ', 'screen:1')
  • replacement in source_text_tests.lua at line 421
    [4.20898][4.20898:20981]()
    App.screen.check(y, 'e fgh', 'F - test_draw_text_wrapping_within_word/screen:2')
    [4.20898]
    [4.20981]
    App.screen.check(y, 'e fgh', 'screen:2')
  • replacement in source_text_tests.lua at line 423
    [4.21016][4.21016:21097]()
    App.screen.check(y, 'ijk', 'F - test_draw_text_wrapping_within_word/screen:3')
    [4.21016]
    [4.21097]
    App.screen.check(y, 'ijk', 'screen:3')
  • edit in source_text_tests.lua at line 428
    [4.21201][4.21201:21262]()
    io.write('\ntest_draw_wrapping_text_containing_non_ascii')
  • replacement in source_text_tests.lua at line 437
    [4.21652][4.21652:21742]()
    App.screen.check(y, 'mad', 'F - test_draw_wrapping_text_containing_non_ascii/screen:1')
    [4.21652]
    [4.21742]
    App.screen.check(y, 'mad', 'screen:1')
  • replacement in source_text_tests.lua at line 439
    [4.21777][4.21777:21868]()
    App.screen.check(y, 'am I', 'F - test_draw_wrapping_text_containing_non_ascii/screen:2')
    [4.21777]
    [4.21868]
    App.screen.check(y, 'am I', 'screen:2')
  • replacement in source_text_tests.lua at line 441
    [4.21903][4.21903:21996]()
    App.screen.check(y, '’m a', 'F - test_draw_wrapping_text_containing_non_ascii/screen:3')
    [4.21903]
    [4.21996]
    App.screen.check(y, '’m a', 'screen:3')
  • edit in source_text_tests.lua at line 445
    [4.22040][4.22040:22084]()
    io.write('\ntest_click_on_wrapping_line')
  • replacement in source_text_tests.lua at line 456
    [4.22508][4.22508:22593]()
    App.screen.check(y, 'madam ', 'F - test_click_on_wrapping_line/baseline/screen:1')
    [4.22508]
    [4.22593]
    App.screen.check(y, 'madam ', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 458
    [4.22628][4.22628:22713]()
    App.screen.check(y, "I'm ad", 'F - test_click_on_wrapping_line/baseline/screen:2')
    [4.22628]
    [4.22713]
    App.screen.check(y, "I'm ad", 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 463
    [4.22900][4.22900:23075]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_click_on_wrapping_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 12, 'F - test_click_on_wrapping_line/cursor:pos')
    [4.22900]
    [4.23075]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 12, 'cursor:pos')
  • edit in source_text_tests.lua at line 468
    [4.23158][4.23158:23241]()
    io.write('\ntest_click_on_wrapping_line_rendered_from_partway_at_top_of_screen')
  • replacement in source_text_tests.lua at line 479
    [4.23693][4.23693:23817]()
    App.screen.check(y, "I'm ad", 'F - test_click_on_wrapping_line_rendered_from_partway_at_top_of_screen/baseline/screen:2')
    [4.23693]
    [4.23817]
    App.screen.check(y, "I'm ad", 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 484
    [4.24004][4.24004:24257]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_click_on_wrapping_line_rendered_from_partway_at_top_of_screen/cursor:line')
    check_eq(Editor_state.cursor1.pos, 12, 'F - test_click_on_wrapping_line_rendered_from_partway_at_top_of_screen/cursor:pos')
    [4.24004]
    [4.24257]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 12, 'cursor:pos')
  • edit in source_text_tests.lua at line 489
    [4.24310][4.24310:24363]()
    io.write('\ntest_click_past_end_of_wrapping_line')
  • replacement in source_text_tests.lua at line 500
    [4.24787][4.24787:24881]()
    App.screen.check(y, 'madam ', 'F - test_click_past_end_of_wrapping_line/baseline/screen:1')
    [4.24787]
    [4.24881]
    App.screen.check(y, 'madam ', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 502
    [4.24916][4.24916:25010]()
    App.screen.check(y, "I'm ad", 'F - test_click_past_end_of_wrapping_line/baseline/screen:2')
    [4.24916]
    [4.25010]
    App.screen.check(y, "I'm ad", 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 504
    [4.25045][4.25045:25135]()
    App.screen.check(y, 'am', 'F - test_click_past_end_of_wrapping_line/baseline/screen:3')
    [4.25045]
    [4.25135]
    App.screen.check(y, 'am', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 509
    [4.25303][4.25303:25445]()
    check_eq(Editor_state.cursor1.pos, 15, 'F - test_click_past_end_of_wrapping_line/cursor') -- one more than the number of UTF-8 code-points
    [4.25303]
    [4.25445]
    check_eq(Editor_state.cursor1.pos, 15, 'cursor') -- one more than the number of UTF-8 code-points
  • edit in source_text_tests.lua at line 513
    [4.25519][4.25519:25593]()
    io.write('\ntest_click_past_end_of_wrapping_line_containing_non_ascii')
  • replacement in source_text_tests.lua at line 524
    [4.26076][4.26076:26191]()
    App.screen.check(y, 'madam ', 'F - test_click_past_end_of_wrapping_line_containing_non_ascii/baseline/screen:1')
    [4.26076]
    [4.26191]
    App.screen.check(y, 'madam ', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 526
    [4.26226][4.26226:26343]()
    App.screen.check(y, 'I’m ad', 'F - test_click_past_end_of_wrapping_line_containing_non_ascii/baseline/screen:2')
    [4.26226]
    [4.26343]
    App.screen.check(y, 'I’m ad', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 528
    [4.26378][4.26378:26489]()
    App.screen.check(y, 'am', 'F - test_click_past_end_of_wrapping_line_containing_non_ascii/baseline/screen:3')
    [4.26378]
    [4.26489]
    App.screen.check(y, 'am', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 533
    [4.26657][4.26657:26820]()
    check_eq(Editor_state.cursor1.pos, 15, 'F - test_click_past_end_of_wrapping_line_containing_non_ascii/cursor') -- one more than the number of UTF-8 code-points
    [4.26657]
    [4.26820]
    check_eq(Editor_state.cursor1.pos, 15, 'cursor') -- one more than the number of UTF-8 code-points
  • edit in source_text_tests.lua at line 537
    [4.26878][4.26878:26936]()
    io.write('\ntest_click_past_end_of_word_wrapping_line')
  • replacement in source_text_tests.lua at line 549
    [4.27515][4.27515:27628]()
    App.screen.check(y, 'the quick brown fox ', 'F - test_click_past_end_of_word_wrapping_line/baseline/screen:1')
    [4.27515]
    [4.27628]
    App.screen.check(y, 'the quick brown fox ', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 554
    [4.27816][4.27816:27913]()
    check_eq(Editor_state.cursor1.pos, 20, 'F - test_click_past_end_of_word_wrapping_line/cursor')
    [4.27816]
    [4.730]
    check_eq(Editor_state.cursor1.pos, 20, 'cursor')
  • edit in source_text_tests.lua at line 558
    [4.763][4.763:796]()
    io.write('\ntest_select_text')
  • replacement in source_text_tests.lua at line 573
    [2.59][4.1366:1682](),[4.2915][4.1366:1682](),[4.1366][4.1366:1682]()
    check_eq(Editor_state.selection1.line, 1, 'F - test_select_text/selection:line')
    check_eq(Editor_state.selection1.pos, 1, 'F - test_select_text/selection:pos')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_select_text/cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'F - test_select_text/cursor:pos')
    [2.59]
    [4.1682]
    check_eq(Editor_state.selection1.line, 1, 'selection:line')
    check_eq(Editor_state.selection1.pos, 1, 'selection:pos')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
  • edit in source_text_tests.lua at line 580
    [4.1750][4.1750:1818]()
    io.write('\ntest_cursor_movement_without_shift_resets_selection')
  • replacement in source_text_tests.lua at line 593
    [4.2349][4.2349:2560]()
    check_nil(Editor_state.selection1.line, 'F - test_cursor_movement_without_shift_resets_selection')
    check_eq(Editor_state.lines[1].data, 'abc', 'F - test_cursor_movement_without_shift_resets_selection/data')
    [4.2349]
    [4.27913]
    check_nil(Editor_state.selection1.line, 'check')
    check_eq(Editor_state.lines[1].data, 'abc', 'data')
  • edit in source_text_tests.lua at line 598
    [4.2600][4.2600:2644]()
    io.write('\ntest_edit_deletes_selection')
  • replacement in source_text_tests.lua at line 611
    [4.3164][4.3164:3245]()
    check_eq(Editor_state.lines[1].data, 'xbc', 'F - test_edit_deletes_selection')
    [4.3164]
    [4.3245]
    check_eq(Editor_state.lines[1].data, 'xbc', 'check')
  • edit in source_text_tests.lua at line 615
    [4.3304][4.3304:3363]()
    io.write('\ntest_edit_with_shift_key_deletes_selection')
  • replacement in source_text_tests.lua at line 632
    [4.4058][4.4058:4251]()
    check_nil(Editor_state.selection1.line, 'F - test_edit_with_shift_key_deletes_selection')
    check_eq(Editor_state.lines[1].data, 'Dbc', 'F - test_edit_with_shift_key_deletes_selection/data')
    [4.4058]
    [4.4251]
    check_nil(Editor_state.selection1.line, 'check')
    check_eq(Editor_state.lines[1].data, 'Dbc', 'data')
  • edit in source_text_tests.lua at line 637
    [4.4302][4.4302:4353]()
    io.write('\ntest_copy_does_not_reset_selection')
  • replacement in source_text_tests.lua at line 649
    [4.4814][4.4814:4897]()
    check_eq(App.clipboard, 'a', 'F - test_copy_does_not_reset_selection/clipboard')
    [4.4814]
    [4.4897]
    check_eq(App.clipboard, 'a', 'clipboard')
  • replacement in source_text_tests.lua at line 651
    [4.4952][4.4952:5032]()
    check(Editor_state.selection1.line, 'F - test_copy_does_not_reset_selection')
    [4.4952]
    [4.5032]
    check(Editor_state.selection1.line, 'check')
  • edit in source_text_tests.lua at line 655
    [4.5057][4.5057:5082]()
    io.write('\ntest_cut')
  • replacement in source_text_tests.lua at line 667
    [4.5547][4.5547:5604]()
    check_eq(App.clipboard, 'a', 'F - test_cut/clipboard')
    [4.5547]
    [4.5604]
    check_eq(App.clipboard, 'a', 'clipboard')
  • replacement in source_text_tests.lua at line 669
    [4.5634][4.5634:5700]()
    check_eq(Editor_state.lines[1].data, 'bc', 'F - test_cut/data')
    [4.5634]
    [4.5700]
    check_eq(Editor_state.lines[1].data, 'bc', 'data')
  • edit in source_text_tests.lua at line 673
    [4.5746][4.5746:5792]()
    io.write('\ntest_paste_replaces_selection')
  • replacement in source_text_tests.lua at line 689
    [4.6417][4.6417:6503]()
    check_eq(Editor_state.lines[1].data, 'xyzdef', 'F - test_paste_replaces_selection')
    [4.6417]
    [4.6503]
    check_eq(Editor_state.lines[1].data, 'xyzdef', 'check')
  • edit in source_text_tests.lua at line 693
    [4.6554][4.6554:6605]()
    io.write('\ntest_deleting_selection_may_scroll')
  • replacement in source_text_tests.lua at line 703
    [4.6986][4.6986:7075]()
    App.screen.check(y, 'def', 'F - test_deleting_selection_may_scroll/baseline/screen:1')
    [4.6986]
    [4.7075]
    App.screen.check(y, 'def', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 705
    [4.7110][4.7110:7199]()
    App.screen.check(y, 'ghi', 'F - test_deleting_selection_may_scroll/baseline/screen:2')
    [4.7110]
    [4.7199]
    App.screen.check(y, 'ghi', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 707
    [4.7234][4.7234:7323]()
    App.screen.check(y, 'jkl', 'F - test_deleting_selection_may_scroll/baseline/screen:3')
    [4.7234]
    [4.7323]
    App.screen.check(y, 'jkl', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 713
    [4.7531][4.7531:7711]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_deleting_selection_may_scroll')
    check_eq(Editor_state.lines[1].data, 'ahi', 'F - test_deleting_selection_may_scroll/data')
    [4.7531]
    [4.7711]
    check_eq(Editor_state.screen_top1.line, 1, 'check')
    check_eq(Editor_state.lines[1].data, 'ahi', 'data')
  • edit in source_text_tests.lua at line 718
    [4.27953][4.27953:27993]()
    io.write('\ntest_edit_wrapping_text')
  • replacement in source_text_tests.lua at line 728
    [4.28387][4.28387:28456]()
    App.screen.check(y, 'abc', 'F - test_edit_wrapping_text/screen:1')
    [4.28387]
    [4.28456]
    App.screen.check(y, 'abc', 'screen:1')
  • replacement in source_text_tests.lua at line 730
    [4.28491][4.28491:28559]()
    App.screen.check(y, 'de', 'F - test_edit_wrapping_text/screen:2')
    [4.28491]
    [4.28559]
    App.screen.check(y, 'de', 'screen:2')
  • replacement in source_text_tests.lua at line 732
    [4.28594][4.28594:28662]()
    App.screen.check(y, 'fg', 'F - test_edit_wrapping_text/screen:3')
    [4.28594]
    [4.28662]
    App.screen.check(y, 'fg', 'screen:3')
  • edit in source_text_tests.lua at line 736
    [4.28698][4.28698:28734]()
    io.write('\ntest_insert_newline')
  • replacement in source_text_tests.lua at line 746
    [4.29132][4.29132:29206]()
    App.screen.check(y, 'abc', 'F - test_insert_newline/baseline/screen:1')
    [4.29132]
    [4.29206]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 748
    [4.29241][4.29241:29315]()
    App.screen.check(y, 'def', 'F - test_insert_newline/baseline/screen:2')
    [4.29241]
    [4.29315]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 750
    [4.29350][4.29350:29424]()
    App.screen.check(y, 'ghi', 'F - test_insert_newline/baseline/screen:3')
    [4.29350]
    [4.29424]
    App.screen.check(y, 'ghi', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 753
    [4.29517][4.29517:29758]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_insert_newline/screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_insert_newline/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_insert_newline/cursor:pos')
    [4.29517]
    [4.29758]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • replacement in source_text_tests.lua at line 757
    [4.29781][4.29781:29844]()
    App.screen.check(y, 'a', 'F - test_insert_newline/screen:1')
    [4.29781]
    [4.29844]
    App.screen.check(y, 'a', 'screen:1')
  • replacement in source_text_tests.lua at line 759
    [4.29879][4.29879:29943]()
    App.screen.check(y, 'bc', 'F - test_insert_newline/screen:2')
    [4.29879]
    [4.29943]
    App.screen.check(y, 'bc', 'screen:2')
  • replacement in source_text_tests.lua at line 761
    [4.29978][4.29978:30043]()
    App.screen.check(y, 'def', 'F - test_insert_newline/screen:3')
    [4.29978]
    [4.30043]
    App.screen.check(y, 'def', 'screen:3')
  • edit in source_text_tests.lua at line 765
    [4.30096][4.30096:30149]()
    io.write('\ntest_insert_newline_at_start_of_line')
  • replacement in source_text_tests.lua at line 775
    [4.30559][4.30559:30942]()
    check_eq(Editor_state.cursor1.line, 2, 'F - test_insert_newline_at_start_of_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_insert_newline_at_start_of_line/cursor:pos')
    check_eq(Editor_state.lines[1].data, '', 'F - test_insert_newline_at_start_of_line/data:1')
    check_eq(Editor_state.lines[2].data, 'abc', 'F - test_insert_newline_at_start_of_line/data:2')
    [4.30559]
    [4.30942]
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
    check_eq(Editor_state.lines[1].data, '', 'data:1')
    check_eq(Editor_state.lines[2].data, 'abc', 'data:2')
  • edit in source_text_tests.lua at line 782
    [4.30985][4.30985:31028]()
    io.write('\ntest_insert_from_clipboard')
  • replacement in source_text_tests.lua at line 792
    [4.31426][4.31426:31507]()
    App.screen.check(y, 'abc', 'F - test_insert_from_clipboard/baseline/screen:1')
    [4.31426]
    [4.31507]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 794
    [4.31542][4.31542:31623]()
    App.screen.check(y, 'def', 'F - test_insert_from_clipboard/baseline/screen:2')
    [4.31542]
    [4.31623]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 796
    [4.31658][4.31658:31739]()
    App.screen.check(y, 'ghi', 'F - test_insert_from_clipboard/baseline/screen:3')
    [4.31658]
    [4.31739]
    App.screen.check(y, 'ghi', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 800
    [4.31885][4.31885:32147]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_insert_from_clipboard/screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_insert_from_clipboard/cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'F - test_insert_from_clipboard/cursor:pos')
    [4.31885]
    [4.32147]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
  • replacement in source_text_tests.lua at line 804
    [4.32170][4.32170:32242]()
    App.screen.check(y, 'axy', 'F - test_insert_from_clipboard/screen:1')
    [4.32170]
    [4.32242]
    App.screen.check(y, 'axy', 'screen:1')
  • replacement in source_text_tests.lua at line 806
    [4.32277][4.32277:32349]()
    App.screen.check(y, 'zbc', 'F - test_insert_from_clipboard/screen:2')
    [4.32277]
    [4.32349]
    App.screen.check(y, 'zbc', 'screen:2')
  • replacement in source_text_tests.lua at line 808
    [4.32384][4.32384:32456]()
    App.screen.check(y, 'def', 'F - test_insert_from_clipboard/screen:3')
    [4.32384]
    [4.8022]
    App.screen.check(y, 'def', 'screen:3')
  • edit in source_text_tests.lua at line 812
    [4.8067][4.8067:8112]()
    io.write('\ntest_select_text_using_mouse')
  • replacement in source_text_tests.lua at line 825
    [4.8806][4.8806:9170]()
    check_eq(Editor_state.selection1.line, 1, 'F - test_select_text_using_mouse/selection:line')
    check_eq(Editor_state.selection1.pos, 2, 'F - test_select_text_using_mouse/selection:pos')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_select_text_using_mouse/cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_select_text_using_mouse/cursor:pos')
    [4.8806]
    [4.9170]
    check_eq(Editor_state.selection1.line, 1, 'selection:line')
    check_eq(Editor_state.selection1.pos, 2, 'selection:pos')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
  • edit in source_text_tests.lua at line 832
    [4.9225][4.9225:9280]()
    io.write('\ntest_select_text_using_mouse_and_shift')
  • replacement in source_text_tests.lua at line 849
    [4.10213][4.10213:10617]()
    check_eq(Editor_state.selection1.line, 1, 'F - test_select_text_using_mouse_and_shift/selection:line')
    check_eq(Editor_state.selection1.pos, 2, 'F - test_select_text_using_mouse_and_shift/selection:pos')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_select_text_using_mouse_and_shift/cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_select_text_using_mouse_and_shift/cursor:pos')
    [4.10213]
    [4.10617]
    check_eq(Editor_state.selection1.line, 1, 'selection:line')
    check_eq(Editor_state.selection1.pos, 2, 'selection:pos')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
  • edit in source_text_tests.lua at line 856
    [4.10683][4.10683:10749]()
    io.write('\ntest_select_text_repeatedly_using_mouse_and_shift')
  • replacement in source_text_tests.lua at line 879
    [4.12097][4.12097:12545]()
    check_eq(Editor_state.selection1.line, 1, 'F - test_select_text_repeatedly_using_mouse_and_shift/selection:line')
    check_eq(Editor_state.selection1.pos, 2, 'F - test_select_text_repeatedly_using_mouse_and_shift/selection:pos')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_select_text_repeatedly_using_mouse_and_shift/cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'F - test_select_text_repeatedly_using_mouse_and_shift/cursor:pos')
    [4.12097]
    [4.33196]
    check_eq(Editor_state.selection1.line, 1, 'selection:line')
    check_eq(Editor_state.selection1.pos, 2, 'selection:pos')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
  • edit in source_text_tests.lua at line 886
    [4.12584][4.12584:12627]()
    io.write('\ntest_cut_without_selection')
  • replacement in source_text_tests.lua at line 899
    [4.13127][4.13127:13203]()
    check_nil(Editor_state.selection1.line, 'F - test_cut_without_selection')
    [4.13127]
    [4.13203]
    check_nil(Editor_state.selection1.line, 'check')
  • edit in source_text_tests.lua at line 903
    [4.33226][4.33226:33256]()
    io.write('\ntest_pagedown')
  • replacement in source_text_tests.lua at line 913
    [4.33654][4.33654:33722]()
    App.screen.check(y, 'abc', 'F - test_pagedown/baseline/screen:1')
    [4.33654]
    [4.33722]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 915
    [4.33757][4.33757:33825]()
    App.screen.check(y, 'def', 'F - test_pagedown/baseline/screen:2')
    [4.33757]
    [4.33825]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 918
    [4.33929][4.33929:34075]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_pagedown/screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_pagedown/cursor')
    [4.33929]
    [4.34075]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor')
  • replacement in source_text_tests.lua at line 921
    [4.34098][4.34098:34157]()
    App.screen.check(y, 'def', 'F - test_pagedown/screen:1')
    [4.34098]
    [4.34157]
    App.screen.check(y, 'def', 'screen:1')
  • replacement in source_text_tests.lua at line 923
    [4.34192][4.34192:34251]()
    App.screen.check(y, 'ghi', 'F - test_pagedown/screen:2')
    [4.34192]
    [4.2117]
    App.screen.check(y, 'ghi', 'screen:2')
  • edit in source_text_tests.lua at line 927
    [4.2162][4.2162:2207]()
    io.write('\ntest_pagedown_skips_drawings')
  • replacement in source_text_tests.lua at line 936
    [4.2702][4.2702:2803]()
    check_eq(Editor_state.lines[2].mode, 'drawing', 'F - test_pagedown_skips_drawings/baseline/lines')
    [4.2702]
    [4.2803]
    check_eq(Editor_state.lines[2].mode, 'drawing', 'baseline/lines')
  • replacement in source_text_tests.lua at line 945
    [4.3224][4.3224:3307]()
    App.screen.check(y, 'abc', 'F - test_pagedown_skips_drawings/baseline/screen:1')
    [4.3224]
    [4.3307]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 949
    [4.3516][4.3516:3692]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_pagedown_skips_drawings/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_pagedown_skips_drawings/cursor')
    [4.3516]
    [4.3692]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor')
  • replacement in source_text_tests.lua at line 952
    [4.3732][4.3732:3806]()
    App.screen.check(y, 'def', 'F - test_pagedown_skips_drawings/screen:1')
    [4.3732]
    [4.34251]
    App.screen.check(y, 'def', 'screen:1')
  • edit in source_text_tests.lua at line 956
    [4.34325][4.34325:34399]()
    io.write('\ntest_pagedown_can_start_from_middle_of_long_wrapping_line')
  • replacement in source_text_tests.lua at line 966
    [4.34864][4.34864:34977]()
    App.screen.check(y, 'abc ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/baseline/screen:1')
    [4.34864]
    [4.34977]
    App.screen.check(y, 'abc ', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 968
    [4.35012][4.35012:35125]()
    App.screen.check(y, 'def ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/baseline/screen:2')
    [4.35012]
    [4.35125]
    App.screen.check(y, 'def ', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 970
    [4.35160][4.35160:35273]()
    App.screen.check(y, 'ghi ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/baseline/screen:3')
    [4.35160]
    [4.35273]
    App.screen.check(y, 'ghi ', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 973
    [4.35388][4.35388:35638]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 9, 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/screen_top:pos')
    [4.35388]
    [4.35638]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 9, 'screen_top:pos')
  • replacement in source_text_tests.lua at line 976
    [4.35661][4.35661:35765]()
    App.screen.check(y, 'ghi ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/screen:1')
    [4.35661]
    [4.35765]
    App.screen.check(y, 'ghi ', 'screen:1')
  • replacement in source_text_tests.lua at line 978
    [4.35800][4.35800:35904]()
    App.screen.check(y, 'jkl ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/screen:2')
    [4.35800]
    [4.35904]
    App.screen.check(y, 'jkl ', 'screen:2')
  • replacement in source_text_tests.lua at line 980
    [4.35939][4.35939:36043]()
    App.screen.check(y, 'mno ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/screen:3')
    [4.35939]
    [4.36043]
    App.screen.check(y, 'mno ', 'screen:3')
  • edit in source_text_tests.lua at line 984
    [4.36088][4.36088:36133]()
    io.write('\ntest_pagedown_never_moves_up')
  • replacement in source_text_tests.lua at line 995
    [4.36597][4.36597:36789]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_pagedown_never_moves_up/screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 9, 'F - test_pagedown_never_moves_up/screen_top:pos')
    [4.36597]
    [4.36789]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 9, 'screen_top:pos')
  • edit in source_text_tests.lua at line 1000
    [4.36834][4.36834:36879]()
    io.write('\ntest_down_arrow_moves_cursor')
  • replacement in source_text_tests.lua at line 1010
    [4.37286][4.37286:37369]()
    App.screen.check(y, 'abc', 'F - test_down_arrow_moves_cursor/baseline/screen:1')
    [4.37286]
    [4.37369]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1012
    [4.37404][4.37404:37487]()
    App.screen.check(y, 'def', 'F - test_down_arrow_moves_cursor/baseline/screen:2')
    [4.37404]
    [4.37487]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1014
    [4.37522][4.37522:37605]()
    App.screen.check(y, 'ghi', 'F - test_down_arrow_moves_cursor/baseline/screen:3')
    [4.37522]
    [4.37605]
    App.screen.check(y, 'ghi', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1017
    [4.37720][4.37720:37896]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_down_arrow_moves_cursor/screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_down_arrow_moves_cursor/cursor')
    [4.37720]
    [4.37896]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor')
  • replacement in source_text_tests.lua at line 1021
    [4.37948][4.37948:38022]()
    App.screen.check(y, 'abc', 'F - test_down_arrow_moves_cursor/screen:1')
    [4.37948]
    [4.38022]
    App.screen.check(y, 'abc', 'screen:1')
  • replacement in source_text_tests.lua at line 1023
    [4.38057][4.38057:38131]()
    App.screen.check(y, 'def', 'F - test_down_arrow_moves_cursor/screen:2')
    [4.38057]
    [4.38131]
    App.screen.check(y, 'def', 'screen:2')
  • replacement in source_text_tests.lua at line 1025
    [4.38166][4.38166:38240]()
    App.screen.check(y, 'ghi', 'F - test_down_arrow_moves_cursor/screen:3')
    [4.38166]
    [4.38240]
    App.screen.check(y, 'ghi', 'screen:3')
  • edit in source_text_tests.lua at line 1029
    [4.38297][4.38297:38354]()
    io.write('\ntest_down_arrow_scrolls_down_by_one_line')
  • replacement in source_text_tests.lua at line 1039
    [4.38780][4.38780:38875]()
    App.screen.check(y, 'abc', 'F - test_down_arrow_scrolls_down_by_one_line/baseline/screen:1')
    [4.38780]
    [4.38875]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1041
    [4.38910][4.38910:39005]()
    App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_line/baseline/screen:2')
    [4.38910]
    [4.39005]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1043
    [4.39040][4.39040:39135]()
    App.screen.check(y, 'ghi', 'F - test_down_arrow_scrolls_down_by_one_line/baseline/screen:3')
    [4.39040]
    [4.39135]
    App.screen.check(y, 'ghi', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1046
    [4.39253][4.39253:39453]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_down_arrow_scrolls_down_by_one_line/screen_top')
    check_eq(Editor_state.cursor1.line, 4, 'F - test_down_arrow_scrolls_down_by_one_line/cursor')
    [4.39253]
    [4.39453]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 4, 'cursor')
  • replacement in source_text_tests.lua at line 1049
    [4.39476][4.39476:39562]()
    App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_line/screen:1')
    [4.39476]
    [4.39562]
    App.screen.check(y, 'def', 'screen:1')
  • replacement in source_text_tests.lua at line 1051
    [4.39597][4.39597:39683]()
    App.screen.check(y, 'ghi', 'F - test_down_arrow_scrolls_down_by_one_line/screen:2')
    [4.39597]
    [4.39683]
    App.screen.check(y, 'ghi', 'screen:2')
  • replacement in source_text_tests.lua at line 1053
    [4.39718][4.39718:39804]()
    App.screen.check(y, 'jkl', 'F - test_down_arrow_scrolls_down_by_one_line/screen:3')
    [4.39718]
    [4.39804]
    App.screen.check(y, 'jkl', 'screen:3')
  • edit in source_text_tests.lua at line 1057
    [4.39868][4.39868:39932]()
    io.write('\ntest_down_arrow_scrolls_down_by_one_screen_line')
  • replacement in source_text_tests.lua at line 1067
    [4.40379][4.40379:40481]()
    App.screen.check(y, 'abc', 'F - test_down_arrow_scrolls_down_by_one_screen_line/baseline/screen:1')
    [4.40379]
    [4.40481]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1069
    [4.40516][4.40516:40618]()
    App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_screen_line/baseline/screen:2')
    [4.40516]
    [4.40618]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1071
    [4.40653][4.40653:40803]()
    App.screen.check(y, 'ghi ', 'F - test_down_arrow_scrolls_down_by_one_screen_line/baseline/screen:3') -- line wrapping includes trailing whitespace
    [4.40653]
    [4.40803]
    App.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace
  • replacement in source_text_tests.lua at line 1074
    [4.40921][4.40921:41246]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_down_arrow_scrolls_down_by_one_screen_line/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_down_arrow_scrolls_down_by_one_screen_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'F - test_down_arrow_scrolls_down_by_one_screen_line/cursor:pos')
    [4.40921]
    [4.41246]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1078
    [4.41269][4.41269:41362]()
    App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_screen_line/screen:1')
    [4.41269]
    [4.41362]
    App.screen.check(y, 'def', 'screen:1')
  • replacement in source_text_tests.lua at line 1080
    [4.41397][4.41397:41491]()
    App.screen.check(y, 'ghi ', 'F - test_down_arrow_scrolls_down_by_one_screen_line/screen:2')
    [4.41397]
    [4.41491]
    App.screen.check(y, 'ghi ', 'screen:2')
  • replacement in source_text_tests.lua at line 1082
    [4.41526][4.41526:41619]()
    App.screen.check(y, 'jkl', 'F - test_down_arrow_scrolls_down_by_one_screen_line/screen:3')
    [4.41526]
    [4.41619]
    App.screen.check(y, 'jkl', 'screen:3')
  • edit in source_text_tests.lua at line 1086
    [4.41711][4.41711:41803]()
    io.write('\ntest_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word')
  • replacement in source_text_tests.lua at line 1096
    [4.42249][4.42249:42379]()
    App.screen.check(y, 'abc', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/baseline/screen:1')
    [4.42249]
    [4.42379]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1098
    [4.42414][4.42414:42544]()
    App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/baseline/screen:2')
    [4.42414]
    [4.42544]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1100
    [4.42579][4.42579:42710]()
    App.screen.check(y, 'ghij', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/baseline/screen:3')
    [4.42579]
    [4.42710]
    App.screen.check(y, 'ghij', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1103
    [4.42828][4.42828:43237]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/cursor:pos')
    [4.42828]
    [4.43237]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1107
    [4.43260][4.43260:43381]()
    App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/screen:1')
    [4.43260]
    [4.43381]
    App.screen.check(y, 'def', 'screen:1')
  • replacement in source_text_tests.lua at line 1109
    [4.43416][4.43416:43538]()
    App.screen.check(y, 'ghij', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/screen:2')
    [4.43416]
    [4.43538]
    App.screen.check(y, 'ghij', 'screen:2')
  • replacement in source_text_tests.lua at line 1111
    [4.43573][4.43573:43693]()
    App.screen.check(y, 'kl', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/screen:3')
    [4.43573]
    [4.43693]
    App.screen.check(y, 'kl', 'screen:3')
  • edit in source_text_tests.lua at line 1115
    [4.3208][4.3208:3287]()
    io.write('\ntest_pagedown_followed_by_down_arrow_does_not_scroll_screen_up')
  • replacement in source_text_tests.lua at line 1124
    [4.44229][4.3288:3405]()
    App.screen.check(y, 'abc', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/baseline/screen:1')
    [4.44229]
    [4.44347]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1126
    [4.44382][4.3406:3523]()
    App.screen.check(y, 'def', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/baseline/screen:2')
    [4.44382]
    [4.44500]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1128
    [4.44535][4.3524:3642]()
    App.screen.check(y, 'ghij', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/baseline/screen:3')
    [4.44535]
    [4.44654]
    App.screen.check(y, 'ghij', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1131
    [4.44782][4.3643:4043]()
    check_eq(Editor_state.screen_top1.line, 3, 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/baseline2/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/baseline2/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/baseline2/cursor:pos')
    [4.44782]
    [4.45185]
    check_eq(Editor_state.screen_top1.line, 3, 'baseline2/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'baseline2/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'baseline2/cursor:pos')
  • replacement in source_text_tests.lua at line 1136
    [4.45335][4.4044:4414]()
    check_eq(Editor_state.screen_top1.line, 3, 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/cursor:pos')
    [4.45335]
    [4.45708]
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1140
    [4.45731][4.4415:4524]()
    App.screen.check(y, 'ghij', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/screen:1')
    [4.45731]
    [4.45841]
    App.screen.check(y, 'ghij', 'screen:1')
  • replacement in source_text_tests.lua at line 1142
    [4.45876][4.4525:4632]()
    App.screen.check(y, 'kl', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/screen:2')
    [4.45876]
    [4.45984]
    App.screen.check(y, 'kl', 'screen:2')
  • replacement in source_text_tests.lua at line 1144
    [4.46019][4.4633:4741]()
    App.screen.check(y, 'mno', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/screen:3')
    [4.46019]
    [4.46128]
    App.screen.check(y, 'mno', 'screen:3')
  • edit in source_text_tests.lua at line 1148
    [4.46171][4.46171:46214]()
    io.write('\ntest_up_arrow_moves_cursor')
  • replacement in source_text_tests.lua at line 1158
    [4.46636][4.46636:46717]()
    App.screen.check(y, 'abc', 'F - test_up_arrow_moves_cursor/baseline/screen:1')
    [4.46636]
    [4.46717]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1160
    [4.46752][4.46752:46833]()
    App.screen.check(y, 'def', 'F - test_up_arrow_moves_cursor/baseline/screen:2')
    [4.46752]
    [4.46833]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1162
    [4.46868][4.46868:46949]()
    App.screen.check(y, 'ghi', 'F - test_up_arrow_moves_cursor/baseline/screen:3')
    [4.46868]
    [4.46949]
    App.screen.check(y, 'ghi', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1165
    [4.47057][4.47057:47229]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_up_arrow_moves_cursor/screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_up_arrow_moves_cursor/cursor')
    [4.47057]
    [4.47229]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor')
  • replacement in source_text_tests.lua at line 1169
    [4.47281][4.47281:47353]()
    App.screen.check(y, 'abc', 'F - test_up_arrow_moves_cursor/screen:1')
    [4.47281]
    [4.47353]
    App.screen.check(y, 'abc', 'screen:1')
  • replacement in source_text_tests.lua at line 1171
    [4.47388][4.47388:47460]()
    App.screen.check(y, 'def', 'F - test_up_arrow_moves_cursor/screen:2')
    [4.47388]
    [4.47460]
    App.screen.check(y, 'def', 'screen:2')
  • replacement in source_text_tests.lua at line 1173
    [4.47495][4.47495:47567]()
    App.screen.check(y, 'ghi', 'F - test_up_arrow_moves_cursor/screen:3')
    [4.47495]
    [4.47567]
    App.screen.check(y, 'ghi', 'screen:3')
  • edit in source_text_tests.lua at line 1177
    [4.47620][4.47620:47673]()
    io.write('\ntest_up_arrow_scrolls_up_by_one_line')
  • replacement in source_text_tests.lua at line 1187
    [4.48084][4.48084:48175]()
    App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_by_one_line/baseline/screen:1')
    [4.48084]
    [4.48175]
    App.screen.check(y, 'def', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1189
    [4.48210][4.48210:48301]()
    App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_by_one_line/baseline/screen:2')
    [4.48210]
    [4.48301]
    App.screen.check(y, 'ghi', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1191
    [4.48336][4.48336:48427]()
    App.screen.check(y, 'jkl', 'F - test_up_arrow_scrolls_up_by_one_line/baseline/screen:3')
    [4.48336]
    [4.48427]
    App.screen.check(y, 'jkl', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1194
    [4.48539][4.48539:48731]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_up_arrow_scrolls_up_by_one_line/screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_up_arrow_scrolls_up_by_one_line/cursor')
    [4.48539]
    [4.48731]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
  • replacement in source_text_tests.lua at line 1197
    [4.48754][4.48754:48836]()
    App.screen.check(y, 'abc', 'F - test_up_arrow_scrolls_up_by_one_line/screen:1')
    [4.48754]
    [4.48836]
    App.screen.check(y, 'abc', 'screen:1')
  • replacement in source_text_tests.lua at line 1199
    [4.48871][4.48871:48953]()
    App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_by_one_line/screen:2')
    [4.48871]
    [4.48953]
    App.screen.check(y, 'def', 'screen:2')
  • replacement in source_text_tests.lua at line 1201
    [4.48988][4.48988:49070]()
    App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_by_one_line/screen:3')
    [4.48988]
    [4.49070]
    App.screen.check(y, 'ghi', 'screen:3')
  • edit in source_text_tests.lua at line 1205
    [4.49130][4.49130:49190]()
    io.write('\ntest_up_arrow_scrolls_up_by_one_screen_line')
  • replacement in source_text_tests.lua at line 1215
    [4.49629][4.49629:49727]()
    App.screen.check(y, 'jkl', 'F - test_up_arrow_scrolls_up_by_one_screen_line/baseline/screen:1')
    [4.49629]
    [4.49727]
    App.screen.check(y, 'jkl', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1217
    [4.49762][4.49762:49860]()
    App.screen.check(y, 'mno', 'F - test_up_arrow_scrolls_up_by_one_screen_line/baseline/screen:2')
    [4.49762]
    [4.49860]
    App.screen.check(y, 'mno', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1221
    [4.50004][4.50004:50094]()
    App.screen.check(y, 'ghi ', 'F - test_up_arrow_scrolls_up_by_one_screen_line/screen:1')
    [4.50004]
    [4.50094]
    App.screen.check(y, 'ghi ', 'screen:1')
  • replacement in source_text_tests.lua at line 1223
    [4.50129][4.50129:50218]()
    App.screen.check(y, 'jkl', 'F - test_up_arrow_scrolls_up_by_one_screen_line/screen:2')
    [4.50129]
    [4.50218]
    App.screen.check(y, 'jkl', 'screen:2')
  • replacement in source_text_tests.lua at line 1225
    [4.50253][4.50253:50761]()
    App.screen.check(y, 'mno', 'F - test_up_arrow_scrolls_up_by_one_screen_line/screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'F - test_up_arrow_scrolls_up_by_one_screen_line/screen_top')
    check_eq(Editor_state.screen_top1.pos, 1, 'F - test_up_arrow_scrolls_up_by_one_screen_line/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_up_arrow_scrolls_up_by_one_screen_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_up_arrow_scrolls_up_by_one_screen_line/cursor:pos')
    [4.50253]
    [4.50761]
    App.screen.check(y, 'mno', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • edit in source_text_tests.lua at line 1233
    [4.50823][4.50823:50885]()
    io.write('\ntest_up_arrow_scrolls_up_to_final_screen_line')
  • replacement in source_text_tests.lua at line 1243
    [4.51313][4.51313:51413]()
    App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_to_final_screen_line/baseline/screen:1')
    [4.51313]
    [4.51413]
    App.screen.check(y, 'ghi', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1245
    [4.51448][4.51448:51548]()
    App.screen.check(y, 'jkl', 'F - test_up_arrow_scrolls_up_to_final_screen_line/baseline/screen:2')
    [4.51448]
    [4.51548]
    App.screen.check(y, 'jkl', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1247
    [4.51583][4.51583:51683]()
    App.screen.check(y, 'mno', 'F - test_up_arrow_scrolls_up_to_final_screen_line/baseline/screen:3')
    [4.51583]
    [4.51683]
    App.screen.check(y, 'mno', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1251
    [4.51844][4.51844:51935]()
    App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_to_final_screen_line/screen:1')
    [4.51844]
    [4.51935]
    App.screen.check(y, 'def', 'screen:1')
  • replacement in source_text_tests.lua at line 1253
    [4.51970][4.51970:52061]()
    App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_to_final_screen_line/screen:2')
    [4.51970]
    [4.52061]
    App.screen.check(y, 'ghi', 'screen:2')
  • replacement in source_text_tests.lua at line 1255
    [4.52096][4.52096:52614]()
    App.screen.check(y, 'jkl', 'F - test_up_arrow_scrolls_up_to_final_screen_line/screen:3')
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_up_arrow_scrolls_up_to_final_screen_line/screen_top')
    check_eq(Editor_state.screen_top1.pos, 5, 'F - test_up_arrow_scrolls_up_to_final_screen_line/screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_up_arrow_scrolls_up_to_final_screen_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'F - test_up_arrow_scrolls_up_to_final_screen_line/cursor:pos')
    [4.52096]
    [4.52614]
    App.screen.check(y, 'jkl', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 5, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
  • edit in source_text_tests.lua at line 1263
    [4.52669][4.52669:52724]()
    io.write('\ntest_up_arrow_scrolls_up_to_empty_line')
  • replacement in source_text_tests.lua at line 1273
    [4.53169][4.53169:53262]()
    App.screen.check(y, 'abc', 'F - test_up_arrow_scrolls_up_to_empty_line/baseline/screen:1')
    [4.53169]
    [4.53262]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1275
    [4.53297][4.53297:53390]()
    App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_to_empty_line/baseline/screen:2')
    [4.53297]
    [4.53390]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1277
    [4.53425][4.53425:53518]()
    App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_to_empty_line/baseline/screen:3')
    [4.53425]
    [4.53518]
    App.screen.check(y, 'ghi', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1280
    [4.53630][4.53630:53826]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_up_arrow_scrolls_up_to_empty_line/screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_up_arrow_scrolls_up_to_empty_line/cursor')
    [4.53630]
    [4.53826]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
  • replacement in source_text_tests.lua at line 1285
    [4.53906][4.53906:53990]()
    App.screen.check(y, 'abc', 'F - test_up_arrow_scrolls_up_to_empty_line/screen:2')
    [4.53906]
    [4.53990]
    App.screen.check(y, 'abc', 'screen:2')
  • replacement in source_text_tests.lua at line 1287
    [4.54025][4.54025:54109]()
    App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_to_empty_line/screen:3')
    [4.54025]
    [4.54109]
    App.screen.check(y, 'def', 'screen:3')
  • edit in source_text_tests.lua at line 1291
    [4.54137][4.54137:54165]()
    io.write('\ntest_pageup')
  • replacement in source_text_tests.lua at line 1301
    [4.54562][4.54562:54628]()
    App.screen.check(y, 'def', 'F - test_pageup/baseline/screen:1')
    [4.54562]
    [4.54628]
    App.screen.check(y, 'def', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1303
    [4.54663][4.54663:54729]()
    App.screen.check(y, 'ghi', 'F - test_pageup/baseline/screen:2')
    [4.54663]
    [4.54729]
    App.screen.check(y, 'ghi', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1306
    [4.54827][4.54827:54969]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_pageup/screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_pageup/cursor')
    [4.54827]
    [4.54969]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
  • replacement in source_text_tests.lua at line 1309
    [4.54992][4.54992:55049]()
    App.screen.check(y, 'abc', 'F - test_pageup/screen:1')
    [4.54992]
    [4.55049]
    App.screen.check(y, 'abc', 'screen:1')
  • replacement in source_text_tests.lua at line 1311
    [4.55084][4.55084:55141]()
    App.screen.check(y, 'def', 'F - test_pageup/screen:2')
    [4.55084]
    [4.55141]
    App.screen.check(y, 'def', 'screen:2')
  • edit in source_text_tests.lua at line 1315
    [4.55195][4.55195:55249]()
    io.write('\ntest_pageup_scrolls_up_by_screen_line')
  • replacement in source_text_tests.lua at line 1325
    [4.55696][4.55696:55788]()
    App.screen.check(y, 'ghi', 'F - test_pageup_scrolls_up_by_screen_line/baseline/screen:1')
    [4.55696]
    [4.55788]
    App.screen.check(y, 'ghi', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1327
    [4.55823][4.55823:55915]()
    App.screen.check(y, 'jkl', 'F - test_pageup_scrolls_up_by_screen_line/baseline/screen:2')
    [4.55823]
    [4.55915]
    App.screen.check(y, 'jkl', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1329
    [4.55950][4.55950:56089]()
    App.screen.check(y, 'mno', 'F - test_pageup_scrolls_up_by_screen_line/baseline/screen:3') -- line wrapping includes trailing whitespace
    [4.55950]
    [4.56089]
    App.screen.check(y, 'mno', 'baseline/screen:3') -- line wrapping includes trailing whitespace
  • replacement in source_text_tests.lua at line 1332
    [4.56203][4.56203:56498]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_pageup_scrolls_up_by_screen_line/screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_pageup_scrolls_up_by_screen_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_pageup_scrolls_up_by_screen_line/cursor:pos')
    [4.56203]
    [4.56498]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1336
    [4.56521][4.56521:56605]()
    App.screen.check(y, 'abc ', 'F - test_pageup_scrolls_up_by_screen_line/screen:1')
    [4.56521]
    [4.56605]
    App.screen.check(y, 'abc ', 'screen:1')
  • replacement in source_text_tests.lua at line 1338
    [4.56640][4.56640:56723]()
    App.screen.check(y, 'def', 'F - test_pageup_scrolls_up_by_screen_line/screen:2')
    [4.56640]
    [4.56723]
    App.screen.check(y, 'def', 'screen:2')
  • replacement in source_text_tests.lua at line 1340
    [4.56758][4.56758:56841]()
    App.screen.check(y, 'ghi', 'F - test_pageup_scrolls_up_by_screen_line/screen:3')
    [4.56758]
    [4.56841]
    App.screen.check(y, 'ghi', 'screen:3')
  • edit in source_text_tests.lua at line 1344
    [4.56904][4.56904:56967]()
    io.write('\ntest_pageup_scrolls_up_from_middle_screen_line')
  • replacement in source_text_tests.lua at line 1354
    [4.57432][4.57432:57533]()
    App.screen.check(y, 'jkl', 'F - test_pageup_scrolls_up_from_middle_screen_line/baseline/screen:2')
    [4.57432]
    [4.57533]
    App.screen.check(y, 'jkl', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1356
    [4.57568][4.57568:57716]()
    App.screen.check(y, 'mno', 'F - test_pageup_scrolls_up_from_middle_screen_line/baseline/screen:3') -- line wrapping includes trailing whitespace
    [4.57568]
    [4.57716]
    App.screen.check(y, 'mno', 'baseline/screen:3') -- line wrapping includes trailing whitespace
  • replacement in source_text_tests.lua at line 1359
    [4.57830][4.57830:58152]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_pageup_scrolls_up_from_middle_screen_line/screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_pageup_scrolls_up_from_middle_screen_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_pageup_scrolls_up_from_middle_screen_line/cursor:pos')
    [4.57830]
    [4.58152]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1363
    [4.58175][4.58175:58268]()
    App.screen.check(y, 'abc ', 'F - test_pageup_scrolls_up_from_middle_screen_line/screen:1')
    [4.58175]
    [4.58268]
    App.screen.check(y, 'abc ', 'screen:1')
  • replacement in source_text_tests.lua at line 1365
    [4.58303][4.58303:58395]()
    App.screen.check(y, 'def', 'F - test_pageup_scrolls_up_from_middle_screen_line/screen:2')
    [4.58303]
    [4.58395]
    App.screen.check(y, 'def', 'screen:2')
  • replacement in source_text_tests.lua at line 1367
    [4.58430][4.58430:58523]()
    App.screen.check(y, 'ghi ', 'F - test_pageup_scrolls_up_from_middle_screen_line/screen:3')
    [4.58430]
    [4.58523]
    App.screen.check(y, 'ghi ', 'screen:3')
  • edit in source_text_tests.lua at line 1371
    [4.58578][4.58578:58633]()
    io.write('\ntest_enter_on_bottom_line_scrolls_down')
  • replacement in source_text_tests.lua at line 1381
    [4.59058][4.59058:59151]()
    App.screen.check(y, 'abc', 'F - test_enter_on_bottom_line_scrolls_down/baseline/screen:1')
    [4.59058]
    [4.59151]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1383
    [4.59186][4.59186:59279]()
    App.screen.check(y, 'def', 'F - test_enter_on_bottom_line_scrolls_down/baseline/screen:2')
    [4.59186]
    [4.59279]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1385
    [4.59314][4.59314:59407]()
    App.screen.check(y, 'ghi', 'F - test_enter_on_bottom_line_scrolls_down/baseline/screen:3')
    [4.59314]
    [4.59407]
    App.screen.check(y, 'ghi', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1388
    [4.59514][4.59514:59812]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_enter_on_bottom_line_scrolls_down/screen_top')
    check_eq(Editor_state.cursor1.line, 4, 'F - test_enter_on_bottom_line_scrolls_down/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_enter_on_bottom_line_scrolls_down/cursor:pos')
    [4.59514]
    [4.59812]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 4, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1392
    [4.59835][4.59835:59919]()
    App.screen.check(y, 'def', 'F - test_enter_on_bottom_line_scrolls_down/screen:1')
    [4.59835]
    [4.59919]
    App.screen.check(y, 'def', 'screen:1')
  • replacement in source_text_tests.lua at line 1394
    [4.59954][4.59954:60036]()
    App.screen.check(y, 'g', 'F - test_enter_on_bottom_line_scrolls_down/screen:2')
    [4.59954]
    [4.60036]
    App.screen.check(y, 'g', 'screen:2')
  • replacement in source_text_tests.lua at line 1396
    [4.60071][4.60071:60154]()
    App.screen.check(y, 'hi', 'F - test_enter_on_bottom_line_scrolls_down/screen:3')
    [4.60071]
    [4.60154]
    App.screen.check(y, 'hi', 'screen:3')
  • edit in source_text_tests.lua at line 1400
    [4.60236][4.60236:60318]()
    io.write('\ntest_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom')
  • replacement in source_text_tests.lua at line 1410
    [4.60735][4.60735:60855]()
    App.screen.check(y, 'jkl', 'F - test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom/baseline/screen:1')
    [4.60735]
    [4.60855]
    App.screen.check(y, 'jkl', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1413
    [4.60970][4.60970:61349]()
    check_eq(Editor_state.screen_top1.line, 4, 'F - test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom/screen_top')
    check_eq(Editor_state.cursor1.line, 5, 'F - test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom/cursor:pos')
    [4.60970]
    [4.61349]
    check_eq(Editor_state.screen_top1.line, 4, 'screen_top')
    check_eq(Editor_state.cursor1.line, 5, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1417
    [4.61372][4.61372:61481]()
    App.screen.check(y, 'j', 'F - test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom/screen:1')
    [4.61372]
    [4.61481]
    App.screen.check(y, 'j', 'screen:1')
  • replacement in source_text_tests.lua at line 1419
    [4.61516][4.61516:61626]()
    App.screen.check(y, 'kl', 'F - test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom/screen:2')
    [4.61516]
    [4.61626]
    App.screen.check(y, 'kl', 'screen:2')
  • edit in source_text_tests.lua at line 1423
    [4.61717][4.61717:61808]()
    io.write('\ntest_inserting_text_on_final_line_avoids_scrolling_down_when_not_at_bottom')
  • replacement in source_text_tests.lua at line 1434
    [4.4789][4.62304:62710](),[4.62304][4.62304:62710]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_inserting_text_on_final_line_avoids_scrolling_down_when_not_at_bottom/screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'F - test_inserting_text_on_final_line_avoids_scrolling_down_when_not_at_bottom/cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'F - test_inserting_text_on_final_line_avoids_scrolling_down_when_not_at_bottom/cursor:pos')
    [4.4789]
    [4.62710]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1438
    [4.62739][4.62739:62857]()
    App.screen.check(y, 'a', 'F - test_inserting_text_on_final_line_avoids_scrolling_down_when_not_at_bottom/screen:1')
    [4.62739]
    [4.62857]
    App.screen.check(y, 'a', 'screen:1')
  • edit in source_text_tests.lua at line 1442
    [4.62913][4.62913:62969]()
    io.write('\ntest_typing_on_bottom_line_scrolls_down')
  • replacement in source_text_tests.lua at line 1452
    [4.63394][4.63394:63488]()
    App.screen.check(y, 'abc', 'F - test_typing_on_bottom_line_scrolls_down/baseline/screen:1')
    [4.63394]
    [4.63488]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1454
    [4.63523][4.63523:63617]()
    App.screen.check(y, 'def', 'F - test_typing_on_bottom_line_scrolls_down/baseline/screen:2')
    [4.63523]
    [4.63617]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1456
    [4.63652][4.63652:63746]()
    App.screen.check(y, 'ghi', 'F - test_typing_on_bottom_line_scrolls_down/baseline/screen:3')
    [4.63652]
    [4.63746]
    App.screen.check(y, 'ghi', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1461
    [4.4931][4.63955:64256](),[4.63955][4.63955:64256]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_typing_on_bottom_line_scrolls_down/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_typing_on_bottom_line_scrolls_down/cursor:line')
    check_eq(Editor_state.cursor1.pos, 7, 'F - test_typing_on_bottom_line_scrolls_down/cursor:pos')
    [4.4931]
    [4.64256]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 7, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1465
    [4.64279][4.64279:64364]()
    App.screen.check(y, 'def', 'F - test_typing_on_bottom_line_scrolls_down/screen:1')
    [4.64279]
    [4.64364]
    App.screen.check(y, 'def', 'screen:1')
  • replacement in source_text_tests.lua at line 1467
    [4.64399][4.64399:64485]()
    App.screen.check(y, 'ghij', 'F - test_typing_on_bottom_line_scrolls_down/screen:2')
    [4.64399]
    [4.64485]
    App.screen.check(y, 'ghij', 'screen:2')
  • replacement in source_text_tests.lua at line 1469
    [4.64520][4.64520:64604]()
    App.screen.check(y, 'kl', 'F - test_typing_on_bottom_line_scrolls_down/screen:3')
    [4.64520]
    [4.64604]
    App.screen.check(y, 'kl', 'screen:3')
  • edit in source_text_tests.lua at line 1473
    [4.64663][4.64663:64722]()
    io.write('\ntest_left_arrow_scrolls_up_in_wrapped_line')
  • replacement in source_text_tests.lua at line 1484
    [4.65193][4.65193:65290]()
    App.screen.check(y, 'jkl', 'F - test_left_arrow_scrolls_up_in_wrapped_line/baseline/screen:1')
    [4.65193]
    [4.65290]
    App.screen.check(y, 'jkl', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1486
    [4.65325][4.65325:65422]()
    App.screen.check(y, 'mno', 'F - test_left_arrow_scrolls_up_in_wrapped_line/baseline/screen:2')
    [4.65325]
    [4.65422]
    App.screen.check(y, 'mno', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1490
    [4.65570][4.65570:65659]()
    App.screen.check(y, 'ghi ', 'F - test_left_arrow_scrolls_up_in_wrapped_line/screen:1')
    [4.65570]
    [4.65659]
    App.screen.check(y, 'ghi ', 'screen:1')
  • replacement in source_text_tests.lua at line 1492
    [4.65694][4.65694:65782]()
    App.screen.check(y, 'jkl', 'F - test_left_arrow_scrolls_up_in_wrapped_line/screen:2')
    [4.65694]
    [4.65782]
    App.screen.check(y, 'jkl', 'screen:2')
  • replacement in source_text_tests.lua at line 1494
    [4.65817][4.65817:66320]()
    App.screen.check(y, 'mno', 'F - test_left_arrow_scrolls_up_in_wrapped_line/screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'F - test_left_arrow_scrolls_up_in_wrapped_line/screen_top')
    check_eq(Editor_state.screen_top1.pos, 1, 'F - test_left_arrow_scrolls_up_in_wrapped_line/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_left_arrow_scrolls_up_in_wrapped_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_left_arrow_scrolls_up_in_wrapped_line/cursor:pos')
    [4.65817]
    [4.66320]
    App.screen.check(y, 'mno', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
  • edit in source_text_tests.lua at line 1502
    [4.66382][4.66382:66444]()
    io.write('\ntest_right_arrow_scrolls_down_in_wrapped_line')
  • replacement in source_text_tests.lua at line 1513
    [4.66932][4.66932:67032]()
    App.screen.check(y, 'abc', 'F - test_right_arrow_scrolls_down_in_wrapped_line/baseline/screen:1')
    [4.66932]
    [4.67032]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1515
    [4.67067][4.67067:67167]()
    App.screen.check(y, 'def', 'F - test_right_arrow_scrolls_down_in_wrapped_line/baseline/screen:2')
    [4.67067]
    [4.67167]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1517
    [4.67202][4.67202:67350]()
    App.screen.check(y, 'ghi ', 'F - test_right_arrow_scrolls_down_in_wrapped_line/baseline/screen:3') -- line wrapping includes trailing whitespace
    [4.67202]
    [4.67350]
    App.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace
  • replacement in source_text_tests.lua at line 1520
    [4.67470][4.67470:67789]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_right_arrow_scrolls_down_in_wrapped_line/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_right_arrow_scrolls_down_in_wrapped_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 6, 'F - test_right_arrow_scrolls_down_in_wrapped_line/cursor:pos')
    [4.67470]
    [4.67789]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 6, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1524
    [4.67812][4.67812:67903]()
    App.screen.check(y, 'def', 'F - test_right_arrow_scrolls_down_in_wrapped_line/screen:1')
    [4.67812]
    [4.67903]
    App.screen.check(y, 'def', 'screen:1')
  • replacement in source_text_tests.lua at line 1526
    [4.67938][4.67938:68030]()
    App.screen.check(y, 'ghi ', 'F - test_right_arrow_scrolls_down_in_wrapped_line/screen:2')
    [4.67938]
    [4.68030]
    App.screen.check(y, 'ghi ', 'screen:2')
  • replacement in source_text_tests.lua at line 1528
    [4.68065][4.68065:68156]()
    App.screen.check(y, 'jkl', 'F - test_right_arrow_scrolls_down_in_wrapped_line/screen:3')
    [4.68065]
    [4.68156]
    App.screen.check(y, 'jkl', 'screen:3')
  • edit in source_text_tests.lua at line 1532
    [4.68209][4.68209:68262]()
    io.write('\ntest_home_scrolls_up_in_wrapped_line')
  • replacement in source_text_tests.lua at line 1543
    [4.68733][4.68733:68824]()
    App.screen.check(y, 'jkl', 'F - test_home_scrolls_up_in_wrapped_line/baseline/screen:1')
    [4.68733]
    [4.68824]
    App.screen.check(y, 'jkl', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1545
    [4.68859][4.68859:68950]()
    App.screen.check(y, 'mno', 'F - test_home_scrolls_up_in_wrapped_line/baseline/screen:2')
    [4.68859]
    [4.68950]
    App.screen.check(y, 'mno', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1549
    [4.69088][4.69088:69171]()
    App.screen.check(y, 'ghi ', 'F - test_home_scrolls_up_in_wrapped_line/screen:1')
    [4.69088]
    [4.69171]
    App.screen.check(y, 'ghi ', 'screen:1')
  • replacement in source_text_tests.lua at line 1551
    [4.69206][4.69206:69288]()
    App.screen.check(y, 'jkl', 'F - test_home_scrolls_up_in_wrapped_line/screen:2')
    [4.69206]
    [4.69288]
    App.screen.check(y, 'jkl', 'screen:2')
  • replacement in source_text_tests.lua at line 1553
    [4.69323][4.69323:69796]()
    App.screen.check(y, 'mno', 'F - test_home_scrolls_up_in_wrapped_line/screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'F - test_home_scrolls_up_in_wrapped_line/screen_top')
    check_eq(Editor_state.screen_top1.pos, 1, 'F - test_home_scrolls_up_in_wrapped_line/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_home_scrolls_up_in_wrapped_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_home_scrolls_up_in_wrapped_line/cursor:pos')
    [4.69323]
    [4.69796]
    App.screen.check(y, 'mno', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • edit in source_text_tests.lua at line 1561
    [4.69850][4.69850:69904]()
    io.write('\ntest_end_scrolls_down_in_wrapped_line')
  • replacement in source_text_tests.lua at line 1572
    [4.70392][4.70392:70484]()
    App.screen.check(y, 'abc', 'F - test_end_scrolls_down_in_wrapped_line/baseline/screen:1')
    [4.70392]
    [4.70484]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1574
    [4.70519][4.70519:70611]()
    App.screen.check(y, 'def', 'F - test_end_scrolls_down_in_wrapped_line/baseline/screen:2')
    [4.70519]
    [4.70611]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1576
    [4.70646][4.70646:70786]()
    App.screen.check(y, 'ghi ', 'F - test_end_scrolls_down_in_wrapped_line/baseline/screen:3') -- line wrapping includes trailing whitespace
    [4.70646]
    [4.70786]
    App.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace
  • replacement in source_text_tests.lua at line 1579
    [4.70892][4.70892:71187]()
    check_eq(Editor_state.screen_top1.line, 2, 'F - test_end_scrolls_down_in_wrapped_line/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_end_scrolls_down_in_wrapped_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 8, 'F - test_end_scrolls_down_in_wrapped_line/cursor:pos')
    [4.70892]
    [4.71187]
    check_eq(Editor_state.screen_top1.line, 2, 'screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 8, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1583
    [4.71210][4.71210:71293]()
    App.screen.check(y, 'def', 'F - test_end_scrolls_down_in_wrapped_line/screen:1')
    [4.71210]
    [4.71293]
    App.screen.check(y, 'def', 'screen:1')
  • replacement in source_text_tests.lua at line 1585
    [4.71328][4.71328:71412]()
    App.screen.check(y, 'ghi ', 'F - test_end_scrolls_down_in_wrapped_line/screen:2')
    [4.71328]
    [4.71412]
    App.screen.check(y, 'ghi ', 'screen:2')
  • replacement in source_text_tests.lua at line 1587
    [4.71447][4.71447:71530]()
    App.screen.check(y, 'jkl', 'F - test_end_scrolls_down_in_wrapped_line/screen:3')
    [4.71447]
    [4.71530]
    App.screen.check(y, 'jkl', 'screen:3')
  • edit in source_text_tests.lua at line 1592
    [4.71646][4.71646:71716]()
    io.write('\ntest_position_cursor_on_recently_edited_wrapping_line')
  • replacement in source_text_tests.lua at line 1601
    [4.72081][4.72081:72199]()
    App.screen.check(y, 'abc def ghi ', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline1/screen:1')
    [4.72081]
    [4.72199]
    App.screen.check(y, 'abc def ghi ', 'baseline1/screen:1')
  • replacement in source_text_tests.lua at line 1603
    [4.72234][4.72234:72352]()
    App.screen.check(y, 'jkl mno pqr ', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline1/screen:2')
    [4.72234]
    [4.72352]
    App.screen.check(y, 'jkl mno pqr ', 'baseline1/screen:2')
  • replacement in source_text_tests.lua at line 1605
    [4.72387][4.72387:72496]()
    App.screen.check(y, 'xyz', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline1/screen:3')
    [4.72387]
    [4.72496]
    App.screen.check(y, 'xyz', 'baseline1/screen:3')
  • replacement in source_text_tests.lua at line 1610
    [4.5073][4.72695:72808](),[4.72695][4.72695:72808]()
    check_eq(Editor_state.cursor1.pos, 28, 'F - test_position_cursor_on_recently_edited_wrapping_line/cursor:pos')
    [4.5073]
    [4.72808]
    check_eq(Editor_state.cursor1.pos, 28, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1612
    [4.72831][4.72831:72949]()
    App.screen.check(y, 'abc def ghi ', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline2/screen:1')
    [4.72831]
    [4.72949]
    App.screen.check(y, 'abc def ghi ', 'baseline2/screen:1')
  • replacement in source_text_tests.lua at line 1614
    [4.72984][4.72984:73102]()
    App.screen.check(y, 'jkl mno pqr ', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline2/screen:2')
    [4.72984]
    [4.73102]
    App.screen.check(y, 'jkl mno pqr ', 'baseline2/screen:2')
  • replacement in source_text_tests.lua at line 1616
    [4.73137][4.73137:73246]()
    App.screen.check(y, 'stu', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline2/screen:3')
    [4.73137]
    [4.73246]
    App.screen.check(y, 'stu', 'baseline2/screen:3')
  • replacement in source_text_tests.lua at line 1620
    [4.73466][4.73466:73693]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_position_cursor_on_recently_edited_wrapping_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 26, 'F - test_position_cursor_on_recently_edited_wrapping_line/cursor:pos')
    [4.73466]
    [4.73693]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 26, 'cursor:pos')
  • edit in source_text_tests.lua at line 1625
    [4.73738][4.73738:73783]()
    io.write('\ntest_backspace_can_scroll_up')
  • replacement in source_text_tests.lua at line 1635
    [4.74194][4.74194:74277]()
    App.screen.check(y, 'def', 'F - test_backspace_can_scroll_up/baseline/screen:1')
    [4.74194]
    [4.74277]
    App.screen.check(y, 'def', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1637
    [4.74312][4.74312:74395]()
    App.screen.check(y, 'ghi', 'F - test_backspace_can_scroll_up/baseline/screen:2')
    [4.74312]
    [4.74395]
    App.screen.check(y, 'ghi', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1639
    [4.74430][4.74430:74513]()
    App.screen.check(y, 'jkl', 'F - test_backspace_can_scroll_up/baseline/screen:3')
    [4.74430]
    [4.74513]
    App.screen.check(y, 'jkl', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1642
    [4.74629][4.74629:74805]()
    check_eq(Editor_state.screen_top1.line, 1, 'F - test_backspace_can_scroll_up/screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'F - test_backspace_can_scroll_up/cursor')
    [4.74629]
    [4.74805]
    check_eq(Editor_state.screen_top1.line, 1, 'screen_top')
    check_eq(Editor_state.cursor1.line, 1, 'cursor')
  • replacement in source_text_tests.lua at line 1645
    [4.74828][4.74828:74905]()
    App.screen.check(y, 'abcdef', 'F - test_backspace_can_scroll_up/screen:1')
    [4.74828]
    [4.74905]
    App.screen.check(y, 'abcdef', 'screen:1')
  • replacement in source_text_tests.lua at line 1647
    [4.74940][4.74940:75014]()
    App.screen.check(y, 'ghi', 'F - test_backspace_can_scroll_up/screen:2')
    [4.74940]
    [4.75014]
    App.screen.check(y, 'ghi', 'screen:2')
  • replacement in source_text_tests.lua at line 1649
    [4.75049][4.75049:75123]()
    App.screen.check(y, 'jkl', 'F - test_backspace_can_scroll_up/screen:3')
    [4.75049]
    [4.75123]
    App.screen.check(y, 'jkl', 'screen:3')
  • edit in source_text_tests.lua at line 1653
    [4.75180][4.75180:75237]()
    io.write('\ntest_backspace_can_scroll_up_screen_line')
  • replacement in source_text_tests.lua at line 1663
    [4.75676][4.75676:75771]()
    App.screen.check(y, 'jkl', 'F - test_backspace_can_scroll_up_screen_line/baseline/screen:1')
    [4.75676]
    [4.75771]
    App.screen.check(y, 'jkl', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1665
    [4.75806][4.75806:75901]()
    App.screen.check(y, 'mno', 'F - test_backspace_can_scroll_up_screen_line/baseline/screen:2')
    [4.75806]
    [4.75901]
    App.screen.check(y, 'mno', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1669
    [4.76047][4.76047:76134]()
    App.screen.check(y, 'ghij', 'F - test_backspace_can_scroll_up_screen_line/screen:1')
    [4.76047]
    [4.76134]
    App.screen.check(y, 'ghij', 'screen:1')
  • replacement in source_text_tests.lua at line 1671
    [4.76169][4.76169:76254]()
    App.screen.check(y, 'kl', 'F - test_backspace_can_scroll_up_screen_line/screen:2')
    [4.76169]
    [4.76254]
    App.screen.check(y, 'kl', 'screen:2')
  • replacement in source_text_tests.lua at line 1673
    [4.76289][4.76289:76782]()
    App.screen.check(y, 'mno', 'F - test_backspace_can_scroll_up_screen_line/screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'F - test_backspace_can_scroll_up_screen_line/screen_top')
    check_eq(Editor_state.screen_top1.pos, 1, 'F - test_backspace_can_scroll_up_screen_line/screen_top')
    check_eq(Editor_state.cursor1.line, 3, 'F - test_backspace_can_scroll_up_screen_line/cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_backspace_can_scroll_up_screen_line/cursor:pos')
    [4.76289]
    [4.76782]
    App.screen.check(y, 'mno', 'screen:3')
    check_eq(Editor_state.screen_top1.line, 3, 'screen_top:line')
    check_eq(Editor_state.screen_top1.pos, 1, 'screen_top:pos')
    check_eq(Editor_state.cursor1.line, 3, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
  • edit in source_text_tests.lua at line 1681
    [4.76832][4.76832:76882]()
    io.write('\ntest_backspace_past_line_boundary')
  • replacement in source_text_tests.lua at line 1689
    [4.77251][4.77251:77341]()
    check_eq(Editor_state.lines[1].data, 'abcdef', "F - test_backspace_past_line_boundary")
    [4.77251]
    [4.77341]
    check_eq(Editor_state.lines[1].data, 'abcdef', 'check')
  • edit in source_text_tests.lua at line 1696
    [4.13514][4.13514:13560]()
    io.write('\ntest_backspace_over_selection')
  • replacement in source_text_tests.lua at line 1705
    [4.14057][4.14057:14144]()
    check_eq(Editor_state.lines[1].data, 'bc', "F - test_backspace_over_selection/data")
    [4.14057]
    [4.14144]
    check_eq(Editor_state.lines[1].data, 'bc', 'data')
  • replacement in source_text_tests.lua at line 1707
    [4.14188][4.14188:14366]()
    check_eq(Editor_state.cursor1.line, 1, "F - test_backspace_over_selection/cursor:line")
    check_eq(Editor_state.cursor1.pos, 1, "F - test_backspace_over_selection/cursor:pos")
    [4.14188]
    [4.14366]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1710
    [4.14392][4.14392:14481]()
    check_nil(Editor_state.selection1.line, "F - test_backspace_over_selection/selection")
    [4.14392]
    [4.14481]
    check_nil(Editor_state.selection1.line, 'selection')
  • edit in source_text_tests.lua at line 1714
    [4.14535][4.14535:14589]()
    io.write('\ntest_backspace_over_selection_reverse')
  • replacement in source_text_tests.lua at line 1723
    [4.15050][4.15050:15145]()
    check_eq(Editor_state.lines[1].data, 'bc', "F - test_backspace_over_selection_reverse/data")
    [4.15050]
    [4.15145]
    check_eq(Editor_state.lines[1].data, 'bc', 'data')
  • replacement in source_text_tests.lua at line 1725
    [4.15185][4.15185:15379]()
    check_eq(Editor_state.cursor1.line, 1, "F - test_backspace_over_selection_reverse/cursor:line")
    check_eq(Editor_state.cursor1.pos, 1, "F - test_backspace_over_selection_reverse/cursor:pos")
    [4.15185]
    [4.15379]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1728
    [4.15405][4.15405:15502]()
    check_nil(Editor_state.selection1.line, "F - test_backspace_over_selection_reverse/selection")
    [4.15405]
    [4.15502]
    check_nil(Editor_state.selection1.line, 'selection')
  • edit in source_text_tests.lua at line 1732
    [4.15553][4.15553:15604]()
    io.write('\ntest_backspace_over_multiple_lines')
  • replacement in source_text_tests.lua at line 1741
    [4.16110][4.16110:16300]()
    check_eq(Editor_state.lines[1].data, 'akl', "F - test_backspace_over_multiple_lines/data:1")
    check_eq(Editor_state.lines[2].data, 'mno', "F - test_backspace_over_multiple_lines/data:2")
    [4.16110]
    [4.16300]
    check_eq(Editor_state.lines[1].data, 'akl', 'data:1')
    check_eq(Editor_state.lines[2].data, 'mno', 'data:2')
  • replacement in source_text_tests.lua at line 1744
    [4.16342][4.16342:16530]()
    check_eq(Editor_state.cursor1.line, 1, "F - test_backspace_over_multiple_lines/cursor:line")
    check_eq(Editor_state.cursor1.pos, 2, "F - test_backspace_over_multiple_lines/cursor:pos")
    [4.16342]
    [4.16530]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1747
    [4.16556][4.16556:16650]()
    check_nil(Editor_state.selection1.line, "F - test_backspace_over_multiple_lines/selection")
    [4.16556]
    [4.16650]
    check_nil(Editor_state.selection1.line, 'selection')
  • edit in source_text_tests.lua at line 1751
    [4.16696][4.16696:16742]()
    io.write('\ntest_backspace_to_end_of_line')
  • replacement in source_text_tests.lua at line 1760
    [4.17200][4.17200:17382]()
    check_eq(Editor_state.lines[1].data, 'a', "F - test_backspace_to_start_of_line/data:1")
    check_eq(Editor_state.lines[2].data, 'def', "F - test_backspace_to_start_of_line/data:2")
    [4.17200]
    [4.17382]
    check_eq(Editor_state.lines[1].data, 'a', 'data:1')
    check_eq(Editor_state.lines[2].data, 'def', 'data:2')
  • replacement in source_text_tests.lua at line 1763
    [4.17424][4.17424:17606]()
    check_eq(Editor_state.cursor1.line, 1, "F - test_backspace_to_start_of_line/cursor:line")
    check_eq(Editor_state.cursor1.pos, 2, "F - test_backspace_to_start_of_line/cursor:pos")
    [4.17424]
    [4.17606]
    check_eq(Editor_state.cursor1.line, 1, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1766
    [4.17632][4.17632:17723]()
    check_nil(Editor_state.selection1.line, "F - test_backspace_to_start_of_line/selection")
    [4.17632]
    [4.17723]
    check_nil(Editor_state.selection1.line, 'selection')
  • edit in source_text_tests.lua at line 1770
    [4.17771][4.17771:17819]()
    io.write('\ntest_backspace_to_start_of_line')
  • replacement in source_text_tests.lua at line 1779
    [4.18284][4.18284:18466]()
    check_eq(Editor_state.lines[1].data, 'abc', "F - test_backspace_to_start_of_line/data:1")
    check_eq(Editor_state.lines[2].data, 'f', "F - test_backspace_to_start_of_line/data:2")
    [4.18284]
    [4.18466]
    check_eq(Editor_state.lines[1].data, 'abc', 'data:1')
    check_eq(Editor_state.lines[2].data, 'f', 'data:2')
  • replacement in source_text_tests.lua at line 1782
    [4.18508][4.18508:18690]()
    check_eq(Editor_state.cursor1.line, 2, "F - test_backspace_to_start_of_line/cursor:line")
    check_eq(Editor_state.cursor1.pos, 1, "F - test_backspace_to_start_of_line/cursor:pos")
    [4.18508]
    [4.18690]
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')
  • replacement in source_text_tests.lua at line 1785
    [4.18716][4.18716:18807]()
    check_nil(Editor_state.selection1.line, "F - test_backspace_to_start_of_line/selection")
    [4.18716]
    [4.18807]
    check_nil(Editor_state.selection1.line, 'selection')
  • edit in source_text_tests.lua at line 1789
    [4.77379][4.77379:77417]()
    io.write('\ntest_undo_insert_text')
  • replacement in source_text_tests.lua at line 1799
    [4.5121][4.77807:77987](),[4.77807][4.77807:77987](),[4.77987][4.18813:19001]()
    check_eq(Editor_state.cursor1.line, 2, 'F - test_undo_insert_text/baseline/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'F - test_undo_insert_text/baseline/cursor:pos')
    check_nil(Editor_state.selection1.line, 'F - test_undo_insert_text/baseline/selection:line')
    check_nil(Editor_state.selection1.pos, 'F - test_undo_insert_text/baseline/selection:pos')
    [4.5121]
    [4.77987]
    check_eq(Editor_state.cursor1.line, 2, 'baseline/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'baseline/cursor:pos')
    check_nil(Editor_state.selection1.line, 'baseline/selection:line')
    check_nil(Editor_state.selection1.pos, 'baseline/selection:pos')
  • replacement in source_text_tests.lua at line 1804
    [4.78016][4.78016:78092]()
    App.screen.check(y, 'abc', 'F - test_undo_insert_text/baseline/screen:1')
    [4.78016]
    [4.78092]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1806
    [4.78127][4.78127:78204]()
    App.screen.check(y, 'defg', 'F - test_undo_insert_text/baseline/screen:2')
    [4.78127]
    [4.78204]
    App.screen.check(y, 'defg', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1808
    [4.78239][4.78239:78315]()
    App.screen.check(y, 'xyz', 'F - test_undo_insert_text/baseline/screen:3')
    [4.78239]
    [4.78315]
    App.screen.check(y, 'xyz', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1811
    [4.78372][4.78372:78534](),[4.78534][4.19002:19172]()
    check_eq(Editor_state.cursor1.line, 2, 'F - test_undo_insert_text/cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_undo_insert_text/cursor:pos')
    check_nil(Editor_state.selection1.line, 'F - test_undo_insert_text/selection:line')
    check_nil(Editor_state.selection1.pos, 'F - test_undo_insert_text/selection:pos')
    [4.78372]
    [4.78534]
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection:line')
    check_nil(Editor_state.selection1.pos, 'selection:pos')
  • replacement in source_text_tests.lua at line 1816
    [4.78557][4.78557:78624]()
    App.screen.check(y, 'abc', 'F - test_undo_insert_text/screen:1')
    [4.78557]
    [4.78624]
    App.screen.check(y, 'abc', 'screen:1')
  • replacement in source_text_tests.lua at line 1818
    [4.78659][4.78659:78726]()
    App.screen.check(y, 'def', 'F - test_undo_insert_text/screen:2')
    [4.78659]
    [4.78726]
    App.screen.check(y, 'def', 'screen:2')
  • replacement in source_text_tests.lua at line 1820
    [4.78761][4.78761:78828]()
    App.screen.check(y, 'xyz', 'F - test_undo_insert_text/screen:3')
    [4.78761]
    [4.78828]
    App.screen.check(y, 'xyz', 'screen:3')
  • edit in source_text_tests.lua at line 1824
    [4.78866][4.78866:78904]()
    io.write('\ntest_undo_delete_text')
  • replacement in source_text_tests.lua at line 1833
    [4.79276][4.79276:79456](),[4.79456][4.19173:19361]()
    check_eq(Editor_state.cursor1.line, 2, 'F - test_undo_delete_text/baseline/cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'F - test_undo_delete_text/baseline/cursor:pos')
    check_nil(Editor_state.selection1.line, 'F - test_undo_delete_text/baseline/selection:line')
    check_nil(Editor_state.selection1.pos, 'F - test_undo_delete_text/baseline/selection:pos')
    [4.79276]
    [4.79456]
    check_eq(Editor_state.cursor1.line, 2, 'baseline/cursor:line')
    check_eq(Editor_state.cursor1.pos, 4, 'baseline/cursor:pos')
    check_nil(Editor_state.selection1.line, 'baseline/selection:line')
    check_nil(Editor_state.selection1.pos, 'baseline/selection:pos')
  • replacement in source_text_tests.lua at line 1838
    [4.79485][4.79485:79561]()
    App.screen.check(y, 'abc', 'F - test_undo_delete_text/baseline/screen:1')
    [4.79485]
    [4.79561]
    App.screen.check(y, 'abc', 'baseline/screen:1')
  • replacement in source_text_tests.lua at line 1840
    [4.79596][4.79596:79672]()
    App.screen.check(y, 'def', 'F - test_undo_delete_text/baseline/screen:2')
    [4.79596]
    [4.79672]
    App.screen.check(y, 'def', 'baseline/screen:2')
  • replacement in source_text_tests.lua at line 1842
    [4.79707][4.79707:79783]()
    App.screen.check(y, 'xyz', 'F - test_undo_delete_text/baseline/screen:3')
    [4.79707]
    [4.79783]
    App.screen.check(y, 'xyz', 'baseline/screen:3')
  • replacement in source_text_tests.lua at line 1846
    [4.79892][4.79892:80054](),[4.80054][4.19362:19714]()
    check_eq(Editor_state.cursor1.line, 2, 'F - test_undo_delete_text/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'F - test_undo_delete_text/cursor:pos')
    check_nil(Editor_state.selection1.line, 'F - test_undo_delete_text/selection:line')
    check_nil(Editor_state.selection1.pos, 'F - test_undo_delete_text/selection:pos')
    --? check_eq(Editor_state.selection1.line, 2, 'F - test_undo_delete_text/selection:line')
    --? check_eq(Editor_state.selection1.pos, 4, 'F - test_undo_delete_text/selection:pos')
    [4.79892]
    [4.80054]
    check_eq(Editor_state.cursor1.line, 2, 'cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'cursor:pos')
    check_nil(Editor_state.selection1.line, 'selection:line')
    check_nil(Editor_state.selection1.pos, 'selection:pos')
    --? check_eq(Editor_state.selection1.line, 2, 'selection:line')
    --? check_eq(Editor_state.selection1.pos, 4, 'selection:pos')
  • replacement in source_text_tests.lua at line 1853
    [4.80077][4.80077:80144]()
    App.screen.check(y, 'abc', 'F - test_undo_delete_text/screen:1')
    [4.80077]
    [4.80144]
    App.screen.check(y, 'abc', 'screen:1')
  • replacement in source_text_tests.lua at line 1855
    [4.80179][4.80179:80247]()
    App.screen.check(y, 'defg', 'F - test_undo_delete_text/screen:2')
    [4.80179]
    [4.80247]
    App.screen.check(y, 'defg', 'screen:2')
  • replacement in source_text_tests.lua at line 1857
    [4.80282][4.80282:80349]()
    App.screen.check(y, 'xyz', 'F - test_undo_delete_text/screen:3')
    [4.80282]
    [4.80349]
    App.screen.check(y, 'xyz', 'screen:3')
  • edit in source_text_tests.lua at line 1861
    [4.19755][4.19755:19800]()
    io.write('\ntest_undo_restores_selection')
  • replacement in source_text_tests.lua at line 1873
    [4.5169][4.20273:20461](),[4.20273][4.20273:20461]()
    check_eq(Editor_state.lines[1].data, 'xbc', 'F - test_undo_restores_selection/baseline')
    check_nil(Editor_state.selection1.line, 'F - test_undo_restores_selection/baseline:selection')
    [4.5169]
    [4.20461]
    check_eq(Editor_state.lines[1].data, 'xbc', 'baseline')
    check_nil(Editor_state.selection1.line, 'baseline:selection')
  • replacement in source_text_tests.lua at line 1879
    [4.20592][4.20592:20760]()
    check_eq(Editor_state.selection1.line, 1, 'F - test_undo_restores_selection/line')
    check_eq(Editor_state.selection1.pos, 2, 'F - test_undo_restores_selection/pos')
    [4.20592]
    [4.20760]
    check_eq(Editor_state.selection1.line, 1, 'line')
    check_eq(Editor_state.selection1.pos, 2, 'pos')
  • edit in source_text_tests.lua at line 1884
    [4.80377][4.80377:80405]()
    io.write('\ntest_search')
  • replacement in source_text_tests.lua at line 1896
    [4.80900][4.80900:81046]()
    check_eq(Editor_state.cursor1.line, 2, 'F - test_search/1/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_search/1/cursor:pos')
    [4.80900]
    [4.81046]
    check_eq(Editor_state.cursor1.line, 2, '1/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, '1/cursor:pos')
  • replacement in source_text_tests.lua at line 1906
    [4.81376][4.81376:81522]()
    check_eq(Editor_state.cursor1.line, 4, 'F - test_search/2/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_search/2/cursor:pos')
    [4.81376]
    [4.81522]
    check_eq(Editor_state.cursor1.line, 4, '2/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, '2/cursor:pos')
  • edit in source_text_tests.lua at line 1911
    [4.81558][4.81558:81594]()
    io.write('\ntest_search_upwards')
  • replacement in source_text_tests.lua at line 1924
    [4.82104][4.82104:82266]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_search_upwards/2/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_search_upwards/2/cursor:pos')
    [4.82104]
    [4.82266]
    check_eq(Editor_state.cursor1.line, 1, '2/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, '2/cursor:pos')
  • edit in source_text_tests.lua at line 1929
    [4.82299][4.82299:82332]()
    io.write('\ntest_search_wrap')
  • replacement in source_text_tests.lua at line 1942
    [4.82824][4.82824:82980]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_search_wrap/1/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, 'F - test_search_wrap/1/cursor:pos')
    [4.82824]
    [4.82980]
    check_eq(Editor_state.cursor1.line, 1, '1/cursor:line')
    check_eq(Editor_state.cursor1.pos, 1, '1/cursor:pos')
  • edit in source_text_tests.lua at line 1947
    [4.83021][4.83021:83062]()
    io.write('\ntest_search_wrap_upwards')
  • replacement in source_text_tests.lua at line 1960
    [4.83562][4.83562:83734]()
    check_eq(Editor_state.cursor1.line, 1, 'F - test_search_wrap_upwards/1/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, 'F - test_search_wrap_upwards/1/cursor:pos')
    [4.83562]
    [4.83734]
    check_eq(Editor_state.cursor1.line, 1, '1/cursor:line')
    check_eq(Editor_state.cursor1.pos, 5, '1/cursor:pos')
  • edit in source_tests.lua at line 2
    [4.147197][4.147197:147232]()
    io.write('\ntest_resize_window')
  • replacement in source_tests.lua at line 6
    [4.147402][4.147402:147649](),[4.147649][4.8:112]()
    check_eq(App.screen.width, 300, 'F - test_resize_window/baseline/width')
    check_eq(App.screen.height, 300, 'F - test_resize_window/baseline/height')
    check_eq(Editor_state.left, Test_margin_left, 'F - test_resize_window/baseline/left_margin')
    check_eq(Editor_state.right, 300 - Test_margin_right, 'F - test_resize_window/baseline/right_margin')
    [4.147402]
    [4.147649]
    check_eq(App.screen.width, 300, 'baseline/width')
    check_eq(App.screen.height, 300, 'baseline/height')
    check_eq(Editor_state.left, Test_margin_left, 'baseline/left_margin')
    check_eq(Editor_state.right, 300 - Test_margin_right, 'baseline/right_margin')
  • replacement in source_tests.lua at line 12
    [4.165][4.147672:147806](),[4.147672][4.147672:147806](),[4.147806][4.166:247](),[4.247][4.147945:148033](),[4.147945][4.147945:148033](),[4.148033][4.248:349]()
    check_eq(App.screen.width, 200, 'F - test_resize_window/width')
    check_eq(App.screen.height, 400, 'F - test_resize_window/height')
    check_eq(Editor_state.left, Margin_left, 'F - test_resize_window/left_margin')
    check_eq(Editor_state.right, 200-Margin_right, 'F - test_resize_window/right_margin')
    check_eq(Editor_state.width, 200-Margin_left-Margin_right, 'F - test_resize_window/drawing_width')
    [4.165]
    [4.148139]
    check_eq(App.screen.width, 200, 'width')
    check_eq(App.screen.height, 400, 'height')
    check_eq(Editor_state.left, Margin_left, 'left_margin')
    check_eq(Editor_state.right, 200-Margin_right, 'right_margin')
    check_eq(Editor_state.width, 200-Margin_left-Margin_right, 'drawing_width')
  • edit in source_tests.lua at line 21
    [4.156][4.156:199]()
    io.write('\ntest_show_log_browser_side')
  • replacement in source_tests.lua at line 30
    [4.537][4.537:615]()
    check(not Show_log_browser_side, 'F - test_show_log_browser_side/baseline')
    [4.537]
    [4.615]
    check(not Show_log_browser_side, 'baseline')
  • replacement in source_tests.lua at line 34
    [4.717][4.717:782]()
    check(Show_log_browser_side, 'F - test_show_log_browser_side')
    [4.717]
    [4.782]
    check(Show_log_browser_side, 'check')
  • edit in source_tests.lua at line 38
    [4.858][4.858:934]()
    io.write('\ntest_show_log_browser_side_doubles_window_width_if_possible')
  • replacement in source_tests.lua at line 59
    [4.1775][4.1775:1890]()
    check_eq(App.screen.width, 600, 'F - test_show_log_browser_side_doubles_window_width_if_possible/display:width')
    [4.1775]
    [4.1890]
    check_eq(App.screen.width, 600, 'display:width')
  • replacement in source_tests.lua at line 61
    [4.1927][4.1927:2174]()
    check_eq(Editor_state.left, Margin_left, 'F - test_show_log_browser_side_doubles_window_width_if_possible/edit:left')
    check_eq(Editor_state.right, old_editor_right, 'F - test_show_log_browser_side_doubles_window_width_if_possible/edit:right')
    [4.1927]
    [4.2174]
    check_eq(Editor_state.left, Margin_left, 'edit:left')
    check_eq(Editor_state.right, old_editor_right, 'edit:right')
  • replacement in source_tests.lua at line 64
    [4.2212][4.2212:2503]()
    check_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'F - test_show_log_browser_side_doubles_window_width_if_possible/log:left')
    check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'F - test_show_log_browser_side_doubles_window_width_if_possible/log:right')
    [4.2212]
    [4.2503]
    check_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'log:left')
    check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'log:right')
  • edit in source_tests.lua at line 69
    [4.2595][4.2595:2687]()
    io.write('\ntest_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width')
  • replacement in source_tests.lua at line 89
    [4.3454][4.3454:4073]()
    check_eq(Editor_state.left, Margin_left, 'F - test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width/edit:left')
    check_eq(Editor_state.right, App.screen.width/2 - Margin_right, 'F - test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width/edit:right')
    check_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'F - test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width/log:left')
    check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'F - test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width/log:right')
    [4.3454]
    [4.148220]
    check_eq(Editor_state.left, Margin_left, 'edit:left')
    check_eq(Editor_state.right, App.screen.width/2 - Margin_right, 'edit:right')
    check_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'log:left')
    check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'log:right')
  • edit in source_tests.lua at line 96
    [4.148251][4.148251:148282]()
    io.write('\ntest_drop_file')
  • replacement in source_tests.lua at line 116
    [4.148901][4.148901:149193]()
    check_eq(#Editor_state.lines, 3, 'F - test_drop_file/#lines')
    check_eq(Editor_state.lines[1].data, 'abc', 'F - test_drop_file/lines:1')
    check_eq(Editor_state.lines[2].data, 'def', 'F - test_drop_file/lines:2')
    check_eq(Editor_state.lines[3].data, 'ghi', 'F - test_drop_file/lines:3')
    [4.148901]
    [4.149193]
    check_eq(#Editor_state.lines, 3, '#lines')
    check_eq(Editor_state.lines[1].data, 'abc', 'lines:1')
    check_eq(Editor_state.lines[2].data, 'def', 'lines:2')
    check_eq(Editor_state.lines[3].data, 'ghi', 'lines:3')
  • edit in source_tests.lua at line 124
    [4.149265][4.149265:149311]()
    io.write('\ntest_drop_file_saves_previous')
  • replacement in source_tests.lua at line 149
    [4.150172][4.150172:150257]()
    check_eq(App.filesystem['foo'], 'abc\ndef\n', 'F - test_drop_file_saves_previous')
    [4.150172]
    [4.150257]
    check_eq(App.filesystem['foo'], 'abc\ndef\n', 'check')
  • edit in run_tests.lua at line 40
    [4.84890][4.7644:7872](),[4.84890][4.7644:7872](),[4.7872][4.8:8]()
    check_eq(Editor_state.lines[1].data, 'abc', 'F - test_drop_file/lines:1')
    check_eq(Editor_state.lines[2].data, 'def', 'F - test_drop_file/lines:2')
    check_eq(Editor_state.lines[3].data, 'ghi', 'F - test_drop_file/lines:3')
  • resurrect zombie in run_tests.lua at line 44
    [4.8][4.54:80](),[3.48466][4.54:80](),[4.85118][4.54:80](),[4.85118][4.54:80]()
    edit.draw(Editor_state)
  • edit in drawing_tests.lua at line 6
    [4.762][4.762:806]()
    io.write('\ntest_creating_drawing_saves')
  • edit in drawing_tests.lua at line 16
    [4.1191][4.1191:1288]()
    check_nil(App.filesystem['foo'], 'F - test_creating_drawing_saves/early')
    -- wait until save
  • resurrect zombie in drawing_tests.lua at line 16
    [4.50][3.48537:48581](),[4.50][3.48537:48581]()
    check_nil(App.filesystem['foo'], 'early')
  • resolve order conflict in drawing_tests.lua at line 16
    [4.1191]
    [3.48537]
  • edit in drawing_tests.lua at line 17
    [3.48581]
    [4.897]
    -- wait until save
  • replacement in drawing_tests.lua at line 21
    [4.1379][4.1379:1469]()
    check_eq(App.filesystem['foo'], '```lines\n```\n\n', 'F - test_creating_drawing_saves')
    [4.1379]
    [4.1469]
    check_eq(App.filesystem['foo'], '```lines\n```\n\n', 'check')
  • edit in drawing_tests.lua at line 25
    [4.1500][4.1500:1531]()
    io.write('\ntest_draw_line')
  • edit in drawing_tests.lua at line 33
    [4.1970][4.1970:3185](),[4.386][3.48582:48646](),[4.386][3.48582:48646]()
    check_eq(#Editor_state.lines, 2, 'F - test_draw_line/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_line/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_draw_line/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_line/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_line/baseline/#shapes')
    -- draw a line
    edit.run_after_mouse_press(Editor_state, Editor_state.left+5, Editor_state.top+Drawing_padding_top+6, 1)
    edit.run_after_mouse_release(Editor_state, Editor_state.left+35, Editor_state.top+Drawing_padding_top+36, 1)
    local drawing = Editor_state.lines[1]
    check_eq(#drawing.shapes, 1, 'F - test_draw_line/#shapes')
    check_eq(#drawing.points, 2, 'F - test_draw_line/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_draw_line/shape:1')
    local p1 = drawing.points[drawing.shapes[1].p1]
    local p2 = drawing.points[drawing.shapes[1].p2]
    check_eq(p1.x, 5, 'F - test_draw_line/p1:x')
    check_eq(p1.y, 6, 'F - test_draw_line/p1:y')
    check_eq(p2.x, 35, 'F - test_draw_line/p2:x')
    check_eq(p2.y, 36, 'F - test_draw_line/p2:y')
    -- wait until save
    check_eq(App.filesystem['foo'], '```lines\n```\n\n', 'check')
  • resurrect zombie in drawing_tests.lua at line 33
    [4.9697][3.48647:48986](),[4.9697][3.48647:48986](),[4.107038][3.48987:49125](),[4.107038][3.48987:49125](),[4.1339][3.49126:49240](),[4.1339][3.49126:49240]()
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 2, '#points')
    check_eq(drawing.shapes[1].mode, 'line', 'shape:1')
    check_eq(p1.x, 5, 'p1:x')
    check_eq(p1.y, 6, 'p1:y')
    check_eq(p2.x, 35, 'p2:x')
    check_eq(p2.y, 36, 'p2:y')
  • resolve order conflict in drawing_tests.lua at line 33
    [4.1970]
    [3.48647]
  • edit in drawing_tests.lua at line 38
    [3.48986]
    [3.48987]
    -- draw a line
    edit.run_after_mouse_press(Editor_state, Editor_state.left+5, Editor_state.top+Drawing_padding_top+6, 1)
    edit.run_after_mouse_release(Editor_state, Editor_state.left+35, Editor_state.top+Drawing_padding_top+36, 1)
    local drawing = Editor_state.lines[1]
  • edit in drawing_tests.lua at line 45
    [3.49125]
    [3.49126]
    local p1 = drawing.points[drawing.shapes[1].p1]
    local p2 = drawing.points[drawing.shapes[1].p2]
  • edit in drawing_tests.lua at line 51
    [3.49240]
    [4.934]
    -- wait until save
  • replacement in drawing_tests.lua at line 59
    [4.3440][4.3440:3650]()
    check_eq(#drawing.shapes, 1, 'F - test_draw_line/save/#shapes')
    check_eq(#drawing.points, 2, 'F - test_draw_line/save/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_draw_line/save/shape:1')
    [4.3440]
    [4.3650]
    check_eq(#drawing.shapes, 1, 'save/#shapes')
    check_eq(#drawing.points, 2, 'save/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'save/shape:1')
  • replacement in drawing_tests.lua at line 64
    [4.3750][4.3750:3960]()
    check_eq(p1.x, 5, 'F - test_draw_line/save/p1:x')
    check_eq(p1.y, 6, 'F - test_draw_line/save/p1:y')
    check_eq(p2.x, 35, 'F - test_draw_line/save/p2:x')
    check_eq(p2.y, 36, 'F - test_draw_line/save/p2:y')
    [4.3750]
    [4.3960]
    check_eq(p1.x, 5, 'save/p1:x')
    check_eq(p1.y, 6, 'save/p1:y')
    check_eq(p2.x, 35, 'save/p2:x')
    check_eq(p2.y, 36, 'save/p2:y')
  • edit in drawing_tests.lua at line 71
    [4.4002][4.4002:4044]()
    io.write('\ntest_draw_horizontal_line')
  • replacement in drawing_tests.lua at line 78
    [4.4456][4.4456:4945]()
    check_eq(#Editor_state.lines, 2, 'F - test_draw_horizontal_line/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_horizontal_line/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_draw_horizontal_line/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_horizontal_line/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_horizontal_line/baseline/#shapes')
    [4.4456]
    [4.4945]
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
  • replacement in drawing_tests.lua at line 87
    [4.5258][4.5258:5494]()
    check_eq(#drawing.shapes, 1, 'F - test_draw_horizontal_line/#shapes')
    check_eq(#drawing.points, 2, 'F - test_draw_horizontal_line/#points')
    check_eq(drawing.shapes[1].mode, 'manhattan', 'F - test_draw_horizontal_line/shape_mode')
    [4.5258]
    [4.5494]
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 2, '#points')
    check_eq(drawing.shapes[1].mode, 'manhattan', 'shape_mode')
  • replacement in drawing_tests.lua at line 92
    [4.5594][4.5594:5830]()
    check_eq(p1.x, 5, 'F - test_draw_horizontal_line/p1:x')
    check_eq(p1.y, 6, 'F - test_draw_horizontal_line/p1:y')
    check_eq(p2.x, 35, 'F - test_draw_horizontal_line/p2:x')
    check_eq(p2.y, p1.y, 'F - test_draw_horizontal_line/p2:y')
    [4.5594]
    [4.5830]
    check_eq(p1.x, 5, 'p1:x')
    check_eq(p1.y, 6, 'p1:y')
    check_eq(p2.x, 35, 'p2:x')
    check_eq(p2.y, p1.y, 'p2:y')
  • edit in drawing_tests.lua at line 99
    [4.5863][4.5863:5896]()
    io.write('\ntest_draw_circle')
  • replacement in drawing_tests.lua at line 106
    [4.6303][4.6303:6747]()
    check_eq(#Editor_state.lines, 2, 'F - test_draw_circle/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_circle/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_draw_circle/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_circle/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_circle/baseline/#shapes')
    [4.6303]
    [4.6747]
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
  • replacement in drawing_tests.lua at line 117
    [4.7175][4.7175:7462]()
    check_eq(#drawing.shapes, 1, 'F - test_draw_circle/#shapes')
    check_eq(#drawing.points, 1, 'F - test_draw_circle/#points')
    check_eq(drawing.shapes[1].mode, 'circle', 'F - test_draw_horizontal_line/shape_mode')
    check_eq(drawing.shapes[1].radius, 30, 'F - test_draw_circle/radius')
    [4.7175]
    [4.7462]
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 1, '#points')
    check_eq(drawing.shapes[1].mode, 'circle', 'shape_mode')
    check_eq(drawing.shapes[1].radius, 30, 'radius')
  • replacement in drawing_tests.lua at line 122
    [4.7520][4.7520:7636]()
    check_eq(center.x, 35, 'F - test_draw_circle/center:x')
    check_eq(center.y, 36, 'F - test_draw_circle/center:y')
    [4.7520]
    [4.7636]
    check_eq(center.x, 35, 'center:x')
    check_eq(center.y, 36, 'center:y')
  • edit in drawing_tests.lua at line 127
    [4.7671][4.7671:7706]()
    io.write('\ntest_cancel_stroke')
  • replacement in drawing_tests.lua at line 135
    [4.8145][4.8145:8599]()
    check_eq(#Editor_state.lines, 2, 'F - test_cancel_stroke/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_cancel_stroke/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_cancel_stroke/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_cancel_stroke/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_cancel_stroke/baseline/#shapes')
    [4.8145]
    [4.8599]
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
  • replacement in drawing_tests.lua at line 146
    [4.8945][4.8945:9010]()
    check_eq(#drawing.shapes, 0, 'F - test_cancel_stroke/#shapes')
    [4.8945]
    [4.9010]
    check_eq(#drawing.shapes, 0, '#shapes')
  • edit in drawing_tests.lua at line 150
    [4.9070][4.9070:9130]()
    io.write('\ntest_keys_do_not_affect_shape_when_mouse_up')
  • replacement in drawing_tests.lua at line 161
    [4.9772][4.9772:9890]()
    check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_keys_do_not_affect_shape_when_mouse_up/drawing_mode')
    [4.9772]
    [4.8800]
    check_eq(Editor_state.current_drawing_mode, 'line', 'drawing_mode')
  • edit in drawing_tests.lua at line 166
    [4.10006][4.10006:10050]()
    io.write('\ntest_draw_circle_mid_stroke')
  • replacement in drawing_tests.lua at line 173
    [4.10457][4.10457:10956]()
    check_eq(#Editor_state.lines, 2, 'F - test_draw_circle_mid_stroke/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_circle_mid_stroke/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_draw_circle_mid_stroke/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_circle_mid_stroke/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_circle_mid_stroke/baseline/#shapes')
    [4.10457]
    [4.10956]
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
  • replacement in drawing_tests.lua at line 184
    [4.11382][4.11382:11702]()
    check_eq(#drawing.shapes, 1, 'F - test_draw_circle_mid_stroke/#shapes')
    check_eq(#drawing.points, 1, 'F - test_draw_circle_mid_stroke/#points')
    check_eq(drawing.shapes[1].mode, 'circle', 'F - test_draw_horizontal_line/shape_mode')
    check_eq(drawing.shapes[1].radius, 30, 'F - test_draw_circle_mid_stroke/radius')
    [4.11382]
    [4.11702]
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 1, '#points')
    check_eq(drawing.shapes[1].mode, 'circle', 'shape_mode')
    check_eq(drawing.shapes[1].radius, 30, 'radius')
  • replacement in drawing_tests.lua at line 189
    [4.11760][4.11760:11898]()
    check_eq(center.x, 35, 'F - test_draw_circle_mid_stroke/center:x')
    check_eq(center.y, 36, 'F - test_draw_circle_mid_stroke/center:y')
    [4.11760]
    [4.11898]
    check_eq(center.x, 35, 'center:x')
    check_eq(center.y, 36, 'center:y')
  • edit in drawing_tests.lua at line 194
    [4.11928][4.11928:11958]()
    io.write('\ntest_draw_arc')
  • replacement in drawing_tests.lua at line 201
    [4.12367][4.12367:12796]()
    check_eq(#Editor_state.lines, 2, 'F - test_draw_arc/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_arc/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_draw_arc/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_arc/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_arc/baseline/#shapes')
    [4.12367]
    [4.12796]
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
  • replacement in drawing_tests.lua at line 212
    [4.13229][4.13229:13435]()
    check_eq(#drawing.shapes, 1, 'F - test_draw_arc/#shapes')
    check_eq(#drawing.points, 1, 'F - test_draw_arc/#points')
    check_eq(drawing.shapes[1].mode, 'arc', 'F - test_draw_horizontal_line/shape_mode')
    [4.13229]
    [4.13435]
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 1, '#points')
    check_eq(drawing.shapes[1].mode, 'arc', 'shape_mode')
  • replacement in drawing_tests.lua at line 216
    [4.13467][4.13467:13522]()
    check_eq(arc.radius, 30, 'F - test_draw_arc/radius')
    [4.13467]
    [4.13522]
    check_eq(arc.radius, 30, 'radius')
  • replacement in drawing_tests.lua at line 218
    [4.13566][4.13566:13808]()
    check_eq(center.x, 35, 'F - test_draw_arc/center:x')
    check_eq(center.y, 36, 'F - test_draw_arc/center:y')
    check_eq(arc.start_angle, 0, 'F - test_draw_arc/start:angle')
    check_eq(arc.end_angle, math.pi/4, 'F - test_draw_arc/end:angle')
    [4.13566]
    [4.13808]
    check_eq(center.x, 35, 'center:x')
    check_eq(center.y, 36, 'center:y')
    check_eq(arc.start_angle, 0, 'start:angle')
    check_eq(arc.end_angle, math.pi/4, 'end:angle')
  • edit in drawing_tests.lua at line 225
    [4.13842][4.13842:13876]()
    io.write('\ntest_draw_polygon')
  • replacement in drawing_tests.lua at line 231
    [4.14238][4.14238:14788]()
    check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_draw_polygon/baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'F - test_draw_polygon/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_polygon/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_draw_polygon/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_polygon/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_polygon/baseline/#shapes')
    [4.14238]
    [4.14788]
    check_eq(Editor_state.current_drawing_mode, 'line', 'baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
  • replacement in drawing_tests.lua at line 246
    [4.15299][4.15299:15428]()
    check_eq(#drawing.shapes, 1, 'F - test_draw_polygon/#shapes')
    check_eq(#drawing.points, 3, 'F - test_draw_polygon/vertices')
    [4.15299]
    [4.15428]
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 3, 'vertices')
  • replacement in drawing_tests.lua at line 249
    [4.15462][4.15462:15597]()
    check_eq(shape.mode, 'polygon', 'F - test_draw_polygon/shape_mode')
    check_eq(#shape.vertices, 3, 'F - test_draw_polygon/vertices')
    [4.15462]
    [4.15597]
    check_eq(shape.mode, 'polygon', 'shape_mode')
    check_eq(#shape.vertices, 3, 'vertices')
  • replacement in drawing_tests.lua at line 252
    [4.15643][4.15643:15741]()
    check_eq(p.x, 5, 'F - test_draw_polygon/p1:x')
    check_eq(p.y, 6, 'F - test_draw_polygon/p1:y')
    [4.15643]
    [4.15741]
    check_eq(p.x, 5, 'p1:x')
    check_eq(p.y, 6, 'p1:y')
  • replacement in drawing_tests.lua at line 255
    [4.15787][4.15787:15887]()
    check_eq(p.x, 65, 'F - test_draw_polygon/p2:x')
    check_eq(p.y, 36, 'F - test_draw_polygon/p2:y')
    [4.15787]
    [4.15887]
    check_eq(p.x, 65, 'p2:x')
    check_eq(p.y, 36, 'p2:y')
  • replacement in drawing_tests.lua at line 258
    [4.15933][4.15933:16033]()
    check_eq(p.x, 35, 'F - test_draw_polygon/p3:x')
    check_eq(p.y, 26, 'F - test_draw_polygon/p3:y')
    [4.15933]
    [4.16033]
    check_eq(p.x, 35, 'p3:x')
    check_eq(p.y, 26, 'p3:y')
  • edit in drawing_tests.lua at line 263
    [4.16069][4.16069:16105]()
    io.write('\ntest_draw_rectangle')
  • replacement in drawing_tests.lua at line 269
    [4.16467][4.16467:17029]()
    check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_draw_rectangle/baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'F - test_draw_rectangle/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_rectangle/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_draw_rectangle/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_rectangle/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_rectangle/baseline/#shapes')
    [4.16467]
    [4.17029]
    check_eq(Editor_state.current_drawing_mode, 'line', 'baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
  • replacement in drawing_tests.lua at line 287
    [4.17763][4.17763:17936]()
    check_eq(#drawing.shapes, 1, 'F - test_draw_rectangle/#shapes')
    check_eq(#drawing.points, 5, 'F - test_draw_rectangle/#points') -- currently includes every point added
    [4.17763]
    [4.17936]
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 5, '#points') -- currently includes every point added
  • replacement in drawing_tests.lua at line 290
    [4.17970][4.17970:18111]()
    check_eq(shape.mode, 'rectangle', 'F - test_draw_rectangle/shape_mode')
    check_eq(#shape.vertices, 4, 'F - test_draw_rectangle/vertices')
    [4.17970]
    [4.18111]
    check_eq(shape.mode, 'rectangle', 'shape_mode')
    check_eq(#shape.vertices, 4, 'vertices')
  • replacement in drawing_tests.lua at line 293
    [4.18157][4.18157:18261]()
    check_eq(p.x, 35, 'F - test_draw_rectangle/p1:x')
    check_eq(p.y, 36, 'F - test_draw_rectangle/p1:y')
    [4.18157]
    [4.18261]
    check_eq(p.x, 35, 'p1:x')
    check_eq(p.y, 36, 'p1:y')
  • replacement in drawing_tests.lua at line 296
    [4.18307][4.18307:18411]()
    check_eq(p.x, 75, 'F - test_draw_rectangle/p2:x')
    check_eq(p.y, 76, 'F - test_draw_rectangle/p2:y')
    [4.18307]
    [4.18411]
    check_eq(p.x, 75, 'p2:x')
    check_eq(p.y, 76, 'p2:y')
  • replacement in drawing_tests.lua at line 299
    [4.18457][4.18457:18561]()
    check_eq(p.x, 70, 'F - test_draw_rectangle/p3:x')
    check_eq(p.y, 81, 'F - test_draw_rectangle/p3:y')
    [4.18457]
    [4.18561]
    check_eq(p.x, 70, 'p3:x')
    check_eq(p.y, 81, 'p3:y')
  • replacement in drawing_tests.lua at line 302
    [4.18607][4.18607:18711]()
    check_eq(p.x, 30, 'F - test_draw_rectangle/p4:x')
    check_eq(p.y, 41, 'F - test_draw_rectangle/p4:y')
    [4.18607]
    [4.18711]
    check_eq(p.x, 30, 'p4:x')
    check_eq(p.y, 41, 'p4:y')
  • edit in drawing_tests.lua at line 307
    [4.18760][4.18760:18809]()
    io.write('\ntest_draw_rectangle_intermediate')
  • replacement in drawing_tests.lua at line 313
    [4.19171][4.19171:19811]()
    check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_draw_rectangle_intermediate/baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'F - test_draw_rectangle_intermediate/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_rectangle_intermediate/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_draw_rectangle_intermediate/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_rectangle_intermediate/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_rectangle_intermediate/baseline/#shapes')
    [4.19171]
    [4.19811]
    check_eq(Editor_state.current_drawing_mode, 'line', 'baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
  • replacement in drawing_tests.lua at line 329
    [4.20358][4.20358:20478]()
    check_eq(#drawing.points, 3, 'F - test_draw_rectangle_intermediate/#points') -- currently includes every point added
    [4.20358]
    [4.20478]
    check_eq(#drawing.points, 3, '#points') -- currently includes every point added
  • replacement in drawing_tests.lua at line 331
    [4.20512][4.20512:20683]()
    check_eq(pending.mode, 'rectangle', 'F - test_draw_rectangle_intermediate/shape_mode')
    check_eq(#pending.vertices, 2, 'F - test_draw_rectangle_intermediate/vertices')
    [4.20512]
    [4.20683]
    check_eq(pending.mode, 'rectangle', 'shape_mode')
    check_eq(#pending.vertices, 2, 'vertices')
  • replacement in drawing_tests.lua at line 334
    [4.20731][4.20731:20861]()
    check_eq(p.x, 35, 'F - test_draw_rectangle_intermediate/p1:x')
    check_eq(p.y, 36, 'F - test_draw_rectangle_intermediate/p1:y')
    [4.20731]
    [4.20861]
    check_eq(p.x, 35, 'p1:x')
    check_eq(p.y, 36, 'p1:y')
  • replacement in drawing_tests.lua at line 337
    [4.20909][4.20909:21039]()
    check_eq(p.x, 75, 'F - test_draw_rectangle_intermediate/p2:x')
    check_eq(p.y, 76, 'F - test_draw_rectangle_intermediate/p2:y')
    [4.20909]
    [4.21039]
    check_eq(p.x, 75, 'p2:x')
    check_eq(p.y, 76, 'p2:y')
  • edit in drawing_tests.lua at line 343
    [4.21167][4.21167:21200]()
    io.write('\ntest_draw_square')
  • replacement in drawing_tests.lua at line 349
    [4.21562][4.21562:22106]()
    check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_draw_square/baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'F - test_draw_square/baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_square/baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'F - test_draw_square/baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_square/baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_square/baseline/#shapes')
    [4.21562]
    [4.22106]
    check_eq(Editor_state.current_drawing_mode, 'line', 'baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
  • replacement in drawing_tests.lua at line 367
    [4.22827][4.22827:23150]()
    check_eq(#drawing.shapes, 1, 'F - test_draw_square/#shapes')
    check_eq(#drawing.points, 5, 'F - test_draw_square/#points') -- currently includes every point added
    check_eq(drawing.shapes[1].mode, 'square', 'F - test_draw_square/shape_mode')
    check_eq(#drawing.shapes[1].vertices, 4, 'F - test_draw_square/vertices')
    [4.22827]
    [4.23150]
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 5, '#points') -- currently includes every point added
    check_eq(drawing.shapes[1].mode, 'square', 'shape_mode')
    check_eq(#drawing.shapes[1].vertices, 4, 'vertices')
  • replacement in drawing_tests.lua at line 372
    [4.23208][4.23208:23306]()
    check_eq(p.x, 35, 'F - test_draw_square/p1:x')
    check_eq(p.y, 36, 'F - test_draw_square/p1:y')
    [4.23208]
    [4.23306]
    check_eq(p.x, 35, 'p1:x')
    check_eq(p.y, 36, 'p1:y')
  • replacement in drawing_tests.lua at line 375
    [4.23364][4.23364:23462]()
    check_eq(p.x, 65, 'F - test_draw_square/p2:x')
    check_eq(p.y, 66, 'F - test_draw_square/p2:y')
    [4.23364]
    [4.23462]
    check_eq(p.x, 65, 'p2:x')
    check_eq(p.y, 66, 'p2:y')
  • replacement in drawing_tests.lua at line 378
    [4.23520][4.23520:23618]()
    check_eq(p.x, 35, 'F - test_draw_square/p3:x')
    check_eq(p.y, 96, 'F - test_draw_square/p3:y')
    [4.23520]
    [4.23618]
    check_eq(p.x, 35, 'p3:x')
    check_eq(p.y, 96, 'p3:y')
  • replacement in drawing_tests.lua at line 381
    [4.23676][4.23676:23773]()
    check_eq(p.x, 5, 'F - test_draw_square/p4:x')
    check_eq(p.y, 66, 'F - test_draw_square/p4:y')
    [4.23676]
    [4.23773]
    check_eq(p.x, 5, 'p4:x')
    check_eq(p.y, 66, 'p4:y')
  • edit in drawing_tests.lua at line 386
    [4.23805][4.23805:23837]()
    io.write('\ntest_name_point')
  • edit in drawing_tests.lua at line 398
    [4.24482][4.24482:25277](),[4.25277][4.9596:9643](),[4.9643][4.25323:25706](),[4.25323][4.25323:25706](),[4.25706][4.9645:9645](),[4.107140][3.49241:49394](),[4.107140][3.49241:49394](),[4.994][3.49395:49529](),[4.994][3.49395:49529](),[4.9724][3.49530:49869](),[4.9724][3.49530:49869](),[4.108138][3.49870:50016](),[4.108138][3.49870:50016](),[4.1511][3.50017:50133](),[4.1511][3.50017:50133](),[4.9751][3.50134:50473](),[4.9751][3.50134:50473](),[4.109218][3.50474:50668](),[4.109218][3.50474:50668](),[4.3161][3.50669:50743](),[4.3161][3.50669:50743](),[4.9778][3.50744:51083](),[4.9778][3.50744:51083](),[4.110209][3.51084:51126](),[4.110209][3.51084:51126](),[4.3909][3.51127:51197](),[4.3909][3.51127:51197](),[4.3909][3.51127:51197](),[4.9832][3.51198:51537](),[4.9832][3.51198:51537](),[4.111800][3.51538:51732](),[4.111800][3.51538:51732](),[4.5608][3.51733:51807](),[4.5608][3.51733:51807](),[4.9859][3.51808:52147](),[4.9859][3.51808:52147](),[4.112863][3.52148:52288](),[4.112863][3.52148:52288](),[4.7036][3.52289:52326](),[4.7036][3.52289:52326](),[4.7135][3.52327:52497](),[4.7135][3.52327:52497](),[4.9886][3.52498:52916](),[4.9886][3.52498:52916](),[4.113981][3.52917:53002](),[4.113981][3.52917:53002](),[4.2037][3.53003:53094](),[4.2037][3.53003:53094](),[4.2218][3.53095:53149](),[4.2218][3.53095:53149](),[4.2362][3.53150:53206](),[4.2362][3.53150:53206](),[4.2508][3.53207:53263](),[4.2508][3.53207:53263](),[4.9913][3.53264:53682](),[4.9913][3.53264:53682](),[4.115221][3.53683:53808](),[4.115221][3.53683:53808](),[4.4225][3.53809:53902](),[4.4225][3.53809:53902](),[4.4412][3.53903:53959](),[4.4412][3.53903:53959](),[4.4562][3.53960:54016](),[4.4562][3.53960:54016](),[4.4712][3.54017:54073](),[4.4712][3.54017:54073](),[4.4862][3.54074:54130](),[4.4862][3.54074:54130](),[4.9940][3.54131:54549](),[4.9940][3.54131:54549](),[4.116416][3.54550:54633](),[4.116416][3.54550:54633](),[4.6474][3.54634:54731](),[4.6474][3.54634:54731](),[4.6693][3.54732:54788](),[4.6693][3.54732:54788](),[4.6871][3.54789:54845](),[4.6871][3.54789:54845](),[4.9967][3.54846:55264](),[4.9967][3.54846:55264](),[4.117638][3.55265:55504](),[4.117638][3.55265:55504](),[4.8850][3.55505:55561](),[4.8850][3.55505:55561](),[4.9006][3.55562:55618](),[4.9006][3.55562:55618](),[4.9162][3.55619:55675](),[4.9162][3.55619:55675](),[4.9318][3.55676:55731](),[4.9318][3.55676:55731]()
    check_eq(#drawing.shapes, 1, 'F - test_name_point/baseline/#shapes')
    check_eq(#drawing.points, 2, 'F - test_name_point/baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_name_point/baseline/shape:1')
    local p1 = drawing.points[drawing.shapes[1].p1]
    local p2 = drawing.points[drawing.shapes[1].p2]
    check_eq(p1.x, 5, 'F - test_name_point/baseline/p1:x')
    check_eq(p1.y, 6, 'F - test_name_point/baseline/p1:y')
    check_eq(p2.x, 35, 'F - test_name_point/baseline/p2:x')
    check_eq(p2.y, 36, 'F - test_name_point/baseline/p2:y')
    check_nil(p2.name, 'F - test_name_point/baseline/p2:name')
    -- enter 'name' mode without moving the mouse
    edit.run_after_keychord(Editor_state, 'C-n')
    check_eq(Editor_state.current_drawing_mode, 'name', 'F - test_name_point/mode:1')
    edit.run_after_text_input(Editor_state, 'A')
    check_eq(p2.name, 'A', 'F - test_name_point')
    -- still in 'name' mode
    check_eq(Editor_state.current_drawing_mode, 'name', 'F - test_name_point/mode:2')
    -- exit 'name' mode
    edit.run_after_keychord(Editor_state, 'return')
    check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_name_point/mode:3')
    check_eq(p2.name, 'A', 'F - test_name_point')
    -- wait until save
    check_eq(#drawing.shapes, 1, 'save/#shapes')
    check_eq(#drawing.points, 2, 'save/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'save/shape:1')
    check_eq(p1.x, 5, 'save/p1:x')
    check_eq(p1.y, 6, 'save/p1:y')
    check_eq(p2.x, 35, 'save/p2:x')
    check_eq(p2.y, 36, 'save/p2:y')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 2, '#points')
    check_eq(drawing.shapes[1].mode, 'manhattan', 'shape_mode')
    check_eq(p1.x, 5, 'p1:x')
    check_eq(p1.y, 6, 'p1:y')
    check_eq(p2.x, 35, 'p2:x')
    check_eq(p2.y, p1.y, 'p2:y')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 1, '#points')
    check_eq(drawing.shapes[1].mode, 'circle', 'shape_mode')
    check_eq(drawing.shapes[1].radius, 30, 'radius')
    check_eq(center.x, 35, 'center:x')
    check_eq(center.y, 36, 'center:y')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.shapes, 0, '#shapes')
    check_eq(Editor_state.current_drawing_mode, 'line', 'drawing_mode')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 1, '#points')
    check_eq(drawing.shapes[1].mode, 'circle', 'shape_mode')
    check_eq(drawing.shapes[1].radius, 30, 'radius')
    check_eq(center.x, 35, 'center:x')
    check_eq(center.y, 36, 'center:y')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 1, '#points')
    check_eq(drawing.shapes[1].mode, 'arc', 'shape_mode')
    check_eq(arc.radius, 30, 'radius')
    check_eq(center.x, 35, 'center:x')
    check_eq(center.y, 36, 'center:y')
    check_eq(arc.start_angle, 0, 'start:angle')
    check_eq(arc.end_angle, math.pi/4, 'end:angle')
    check_eq(Editor_state.current_drawing_mode, 'line', 'baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 3, 'vertices')
    check_eq(shape.mode, 'polygon', 'shape_mode')
    check_eq(#shape.vertices, 3, 'vertices')
    check_eq(p.x, 5, 'p1:x')
    check_eq(p.y, 6, 'p1:y')
    check_eq(p.x, 65, 'p2:x')
    check_eq(p.y, 36, 'p2:y')
    check_eq(p.x, 35, 'p3:x')
    check_eq(p.y, 26, 'p3:y')
    check_eq(Editor_state.current_drawing_mode, 'line', 'baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 5, '#points') -- currently includes every point added
    check_eq(shape.mode, 'rectangle', 'shape_mode')
    check_eq(#shape.vertices, 4, 'vertices')
    check_eq(p.x, 35, 'p1:x')
    check_eq(p.y, 36, 'p1:y')
    check_eq(p.x, 75, 'p2:x')
    check_eq(p.y, 76, 'p2:y')
    check_eq(p.x, 70, 'p3:x')
    check_eq(p.y, 81, 'p3:y')
    check_eq(p.x, 30, 'p4:x')
    check_eq(p.y, 41, 'p4:y')
    check_eq(Editor_state.current_drawing_mode, 'line', 'baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.points, 3, '#points') -- currently includes every point added
    check_eq(pending.mode, 'rectangle', 'shape_mode')
    check_eq(#pending.vertices, 2, 'vertices')
    check_eq(p.x, 35, 'p1:x')
    check_eq(p.y, 36, 'p1:y')
    check_eq(p.x, 75, 'p2:x')
    check_eq(p.y, 76, 'p2:y')
    check_eq(Editor_state.current_drawing_mode, 'line', 'baseline/drawing_mode')
    check_eq(#Editor_state.lines, 2, 'baseline/#lines')
    check_eq(Editor_state.lines[1].mode, 'drawing', 'baseline/mode')
    check_eq(Editor_state.line_cache[1].starty, Editor_state.top+Drawing_padding_top, 'baseline/y')
    check_eq(Editor_state.lines[1].h, 128, 'baseline/y')
    check_eq(#Editor_state.lines[1].shapes, 0, 'baseline/#shapes')
    check_eq(#drawing.shapes, 1, '#shapes')
    check_eq(#drawing.points, 5, '#points') -- currently includes every point added
    check_eq(drawing.shapes[1].mode, 'square', 'shape_mode')
    check_eq(#drawing.shapes[1].vertices, 4, 'vertices')
    check_eq(p.x, 35, 'p1:x')
    check_eq(p.y, 36, 'p1:y')
    check_eq(p.x, 65, 'p2:x')
    check_eq(p.y, 66, 'p2:y')
    check_eq(p.x, 35, 'p3:x')
    check_eq(p.y, 96, 'p3:y')
    check_eq(p.x, 5, 'p4:x')
    check_eq(p.y, 66, 'p4:y')
  • resurrect zombie in drawing_tests.lua at line 398
    [4.118163][3.55732:55897](),[4.118163][3.55732:55897](),[4.976][3.55898:56089](),[4.976][3.55898:56089](),[4.11148][3.56090:56154](),[4.11148][3.56090:56154](),[4.11148][3.56090:56154](),[4.7031][3.56155:56190](),[4.7031][3.56155:56190](),[4.7031][3.56155:56190](),[4.1523][3.56191:56255](),[4.1523][3.56191:56255](),[4.11246][3.56256:56355](),[4.11246][3.56256:56355]()
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(#drawing.points, 2, 'baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(p1.x, 5, 'baseline/p1:x')
    check_eq(p1.y, 6, 'baseline/p1:y')
    check_eq(p2.x, 35, 'baseline/p2:x')
    check_eq(p2.y, 36, 'baseline/p2:y')
    check_nil(p2.name, 'baseline/p2:name')
    check_eq(Editor_state.current_drawing_mode, 'name', 'mode:1')
    check_eq(p2.name, 'A', 'check1')
    check_eq(Editor_state.current_drawing_mode, 'name', 'mode:2')
    check_eq(Editor_state.current_drawing_mode, 'line', 'mode:3')
    check_eq(p2.name, 'A', 'check2')
  • resolve order conflict in drawing_tests.lua at line 398
    [4.24482]
    [3.55732]
  • edit in drawing_tests.lua at line 401
    [3.55897]
    [3.55898]
    local p1 = drawing.points[drawing.shapes[1].p1]
    local p2 = drawing.points[drawing.shapes[1].p2]
  • edit in drawing_tests.lua at line 408
    [3.56089]
    [3.56090]
    -- enter 'name' mode without moving the mouse
    edit.run_after_keychord(Editor_state, 'C-n')
  • edit in drawing_tests.lua at line 411
    [3.56154]
    [3.56155]
    edit.run_after_text_input(Editor_state, 'A')
  • edit in drawing_tests.lua at line 413
    [3.56190]
    [3.56191]
    -- still in 'name' mode
  • edit in drawing_tests.lua at line 415
    [3.56255]
    [3.56256]
    -- exit 'name' mode
    edit.run_after_keychord(Editor_state, 'return')
  • edit in drawing_tests.lua at line 419
    [3.56355]
    [4.971]
    -- wait until save
  • replacement in drawing_tests.lua at line 426
    [4.25886][4.25886:25939]()
    check_eq(p2.name, 'A', 'F - test_name_point/save')
    [4.25886]
    [4.25939]
    check_eq(p2.name, 'A', 'save')
  • edit in drawing_tests.lua at line 430
    [4.25971][4.25971:26003]()
    io.write('\ntest_move_point')
  • edit in drawing_tests.lua at line 441
    [4.26631][4.26631:27207](),[4.118544][3.56356:56389](),[4.118544][3.56356:56389]()
    check_eq(#drawing.shapes, 1, 'F - test_move_point/baseline/#shapes')
    check_eq(#drawing.points, 2, 'F - test_move_point/baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_move_point/baseline/shape:1')
    local p1 = drawing.points[drawing.shapes[1].p1]
    local p2 = drawing.points[drawing.shapes[1].p2]
    check_eq(p1.x, 5, 'F - test_move_point/baseline/p1:x')
    check_eq(p1.y, 6, 'F - test_move_point/baseline/p1:y')
    check_eq(p2.x, 35, 'F - test_move_point/baseline/p2:x')
    check_eq(p2.y, 36, 'F - test_move_point/baseline/p2:y')
    -- wait until save
    check_eq(p2.name, 'A', 'save')
  • resurrect zombie in drawing_tests.lua at line 441
    [4.119069][3.56390:56555](),[4.119069][3.56390:56555](),[4.846][3.56556:56706](),[4.846][3.56556:56706]()
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(#drawing.points, 2, 'baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(p1.x, 5, 'baseline/p1:x')
    check_eq(p1.y, 6, 'baseline/p1:y')
    check_eq(p2.x, 35, 'baseline/p2:x')
    check_eq(p2.y, 36, 'baseline/p2:y')
  • resolve order conflict in drawing_tests.lua at line 441
    [4.26631]
    [3.56390]
  • edit in drawing_tests.lua at line 444
    [3.56555]
    [3.56556]
    local p1 = drawing.points[drawing.shapes[1].p1]
    local p2 = drawing.points[drawing.shapes[1].p2]
  • edit in drawing_tests.lua at line 450
    [3.56706]
    [4.1008]
    -- wait until save
  • replacement in drawing_tests.lua at line 458
    [4.27433][4.27433:27535]()
    check_eq(p2.x, 35, 'F - test_move_point/save/x')
    check_eq(p2.y, 36, 'F - test_move_point/save/y')
    [4.27433]
    [4.27535]
    check_eq(p2.x, 35, 'save/x')
    check_eq(p2.y, 36, 'save/y')
  • replacement in drawing_tests.lua at line 463
    [4.27656][4.27656:27740]()
    check_eq(Editor_state.current_drawing_mode, 'move', 'F - test_move_point/mode:1')
    [4.27656]
    [4.27740]
    check_eq(Editor_state.current_drawing_mode, 'move', 'mode:1')
  • replacement in drawing_tests.lua at line 465
    [4.27761][4.27761:27907]()
    check_eq(drawing.pending.mode, 'move', 'F - test_move_point/mode:2')
    check_eq(drawing.pending.target_point, p2, 'F - test_move_point/target')
    [4.27761]
    [4.27907]
    check_eq(drawing.pending.mode, 'move', 'mode:2')
    check_eq(drawing.pending.target_point, p2, 'target')
  • replacement in drawing_tests.lua at line 471
    [4.28087][4.28087:28179]()
    check_eq(p2.x, 26, 'F - test_move_point/x')
    check_eq(p2.y, 44, 'F - test_move_point/y')
    [4.28087]
    [4.28179]
    check_eq(p2.x, 26, 'x')
    check_eq(p2.y, 44, 'y')
  • edit in drawing_tests.lua at line 475
    [4.28310][4.28310:28478](),[4.119235][3.56707:56769](),[4.119235][3.56707:56769](),[4.11567][3.56770:56834](),[4.11567][3.56770:56834](),[4.1309][3.56835:56941](),[4.1309][3.56835:56941](),[4.1608][3.56942:56994](),[4.1608][3.56942:56994]()
    check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_move_point/mode:3')
    check_eq(drawing.pending, {}, 'F - test_move_point/pending')
    -- wait until save
    check_eq(p2.x, 35, 'save/x')
    check_eq(p2.y, 36, 'save/y')
    check_eq(Editor_state.current_drawing_mode, 'move', 'mode:1')
    check_eq(drawing.pending.mode, 'move', 'mode:2')
    check_eq(drawing.pending.target_point, p2, 'target')
    check_eq(p2.x, 26, 'x')
    check_eq(p2.y, 44, 'y')
  • resurrect zombie in drawing_tests.lua at line 475
    [4.5467][3.56995:57102](),[4.5467][3.56995:57102]()
    check_eq(Editor_state.current_drawing_mode, 'line', 'mode:3')
    check_eq(drawing.pending, {}, 'pending')
  • resolve order conflict in drawing_tests.lua at line 475
    [4.28310]
    [3.56995]
  • edit in drawing_tests.lua at line 477
    [3.57102]
    [4.1045]
    -- wait until save
  • replacement in drawing_tests.lua at line 484
    [4.28658][4.28658:28760]()
    check_eq(p2.x, 26, 'F - test_move_point/save/x')
    check_eq(p2.y, 44, 'F - test_move_point/save/y')
    [4.28658]
    [4.28760]
    check_eq(p2.x, 26, 'save/x')
    check_eq(p2.y, 44, 'save/y')
  • edit in drawing_tests.lua at line 489
    [4.28810][4.28810:28860]()
    io.write('\ntest_move_point_on_manhattan_line')
  • replacement in drawing_tests.lua at line 500
    [4.29503][4.29503:29787]()
    check_eq(#drawing.shapes, 1, 'F - test_move_point_on_manhattan_line/baseline/#shapes')
    check_eq(#drawing.points, 2, 'F - test_move_point_on_manhattan_line/baseline/#points')
    check_eq(drawing.shapes[1].mode, 'manhattan', 'F - test_move_point_on_manhattan_line/baseline/shape:1')
    [4.29503]
    [4.29787]
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(#drawing.points, 2, 'baseline/#points')
    check_eq(drawing.shapes[1].mode, 'manhattan', 'baseline/shape:1')
  • replacement in drawing_tests.lua at line 506
    [4.29883][4.29883:29985]()
    check_eq(Editor_state.current_drawing_mode, 'move', 'F - test_move_point_on_manhattan_line/mode:1')
    [4.29883]
    [4.29985]
    check_eq(Editor_state.current_drawing_mode, 'move', 'mode:1')
  • replacement in drawing_tests.lua at line 511
    [4.30148][4.30148:30249]()
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_move_point_on_manhattan_line/baseline/shape:1')
    [4.30148]
    [4.30249]
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
  • edit in drawing_tests.lua at line 515
    [4.30292][4.30292:30335]()
    io.write('\ntest_delete_lines_at_point')
  • replacement in drawing_tests.lua at line 528
    [4.31207][4.31207:31477]()
    check_eq(#drawing.shapes, 2, 'F - test_delete_lines_at_point/baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_delete_lines_at_point/baseline/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'F - test_delete_lines_at_point/baseline/shape:2')
    [4.31207]
    [4.31477]
    check_eq(#drawing.shapes, 2, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'baseline/shape:2')
  • edit in drawing_tests.lua at line 534
    [4.31646][4.31646:31846](),[4.119760][3.57103:57165](),[4.119760][3.57103:57165](),[4.120290][3.57166:57336](),[4.120290][3.57166:57336](),[4.12025][3.57337:57401](),[4.12025][3.57337:57401](),[4.1147][3.57402:57465](),[4.1147][3.57402:57465](),[4.121270][3.57466:57643](),[4.121270][3.57466:57643]()
    check_eq(drawing.shapes[1].mode, 'deleted', 'F - test_delete_lines_at_point/shape:1')
    check_eq(drawing.shapes[2].mode, 'deleted', 'F - test_delete_lines_at_point/shape:2')
    -- wait for some time
    check_eq(p2.x, 26, 'save/x')
    check_eq(p2.y, 44, 'save/y')
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(#drawing.points, 2, 'baseline/#points')
    check_eq(drawing.shapes[1].mode, 'manhattan', 'baseline/shape:1')
    check_eq(Editor_state.current_drawing_mode, 'move', 'mode:1')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(#drawing.shapes, 2, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'baseline/shape:2')
  • resurrect zombie in drawing_tests.lua at line 534
    [4.12620][3.57644:57758](),[4.12620][3.57644:57758]()
    check_eq(drawing.shapes[1].mode, 'deleted', 'shape:1')
    check_eq(drawing.shapes[2].mode, 'deleted', 'shape:2')
  • resolve order conflict in drawing_tests.lua at line 534
    [4.31646]
    [3.57644]
  • edit in drawing_tests.lua at line 536
    [3.57758]
    [4.1082]
    -- wait for some time
  • replacement in drawing_tests.lua at line 542
    [4.31994][4.31994:32078]()
    check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_delete_lines_at_point/save')
    [4.31994]
    [4.32078]
    check_eq(#Editor_state.lines[1].shapes, 0, 'save')
  • edit in drawing_tests.lua at line 546
    [4.32131][4.32131:32184]()
    io.write('\ntest_delete_line_under_mouse_pointer')
  • replacement in drawing_tests.lua at line 558
    [4.33024][4.33024:33324]()
    check_eq(#drawing.shapes, 2, 'F - test_delete_line_under_mouse_pointer/baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_delete_line_under_mouse_pointer/baseline/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'F - test_delete_line_under_mouse_pointer/baseline/shape:2')
    [4.33024]
    [4.33324]
    check_eq(#drawing.shapes, 2, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'baseline/shape:2')
  • replacement in drawing_tests.lua at line 565
    [4.33524][4.33524:33717]()
    check_eq(drawing.shapes[1].mode, 'deleted', 'F - test_delete_line_under_mouse_pointer/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'F - test_delete_line_under_mouse_pointer/shape:2')
    [4.33524]
    [4.33717]
    check_eq(drawing.shapes[1].mode, 'deleted', 'shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'shape:2')
  • edit in drawing_tests.lua at line 570
    [4.33764][4.33764:33811]()
    io.write('\ntest_delete_point_from_polygon')
  • replacement in drawing_tests.lua at line 589
    [4.34841][4.34841:35124]()
    check_eq(#drawing.shapes, 1, 'F - test_delete_point_from_polygon/baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'polygon', 'F - test_delete_point_from_polygon/baseline/mode')
    check_eq(#drawing.shapes[1].vertices, 4, 'F - test_delete_point_from_polygon/baseline/vertices')
    [4.34841]
    [4.35124]
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'polygon', 'baseline/mode')
    check_eq(#drawing.shapes[1].vertices, 4, 'baseline/vertices')
  • replacement in drawing_tests.lua at line 596
    [4.35319][4.35319:35499]()
    check_eq(drawing.shapes[1].mode, 'polygon', 'F - test_delete_point_from_polygon/shape')
    check_eq(#drawing.shapes[1].vertices, 3, 'F - test_delete_point_from_polygon/vertices')
    [4.35319]
    [4.35499]
    check_eq(drawing.shapes[1].mode, 'polygon', 'shape')
    check_eq(#drawing.shapes[1].vertices, 3, 'vertices')
  • edit in drawing_tests.lua at line 601
    [4.35546][4.35546:35593]()
    io.write('\ntest_delete_point_from_polygon')
  • replacement in drawing_tests.lua at line 617
    [4.36466][4.36466:36749]()
    check_eq(#drawing.shapes, 1, 'F - test_delete_point_from_polygon/baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'polygon', 'F - test_delete_point_from_polygon/baseline/mode')
    check_eq(#drawing.shapes[1].vertices, 3, 'F - test_delete_point_from_polygon/baseline/vertices')
    [4.36466]
    [4.36749]
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'polygon', 'baseline/mode')
    check_eq(#drawing.shapes[1].vertices, 3, 'baseline/vertices')
  • replacement in drawing_tests.lua at line 624
    [4.36971][4.36971:37055]()
    check_eq(drawing.shapes[1].mode, 'deleted', 'F - test_delete_point_from_polygon')
    [4.36971]
    [4.37055]
    check_eq(drawing.shapes[1].mode, 'deleted', 'check')
  • edit in drawing_tests.lua at line 628
    [4.37092][4.37092:37129]()
    io.write('\ntest_undo_name_point')
  • replacement in drawing_tests.lua at line 640
    [4.37774][4.37774:38014]()
    check_eq(#drawing.shapes, 1, 'F - test_undo_name_point/baseline/#shapes')
    check_eq(#drawing.points, 2, 'F - test_undo_name_point/baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_undo_name_point/baseline/shape:1')
    [4.37774]
    [4.38014]
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(#drawing.points, 2, 'baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
  • replacement in drawing_tests.lua at line 645
    [4.38114][4.38114:38514]()
    check_eq(p1.x, 5, 'F - test_undo_name_point/baseline/p1:x')
    check_eq(p1.y, 6, 'F - test_undo_name_point/baseline/p1:y')
    check_eq(p2.x, 35, 'F - test_undo_name_point/baseline/p2:x')
    check_eq(p2.y, 36, 'F - test_undo_name_point/baseline/p2:y')
    check_nil(p2.name, 'F - test_undo_name_point/baseline/p2:name')
    check_eq(#Editor_state.history, 1, 'F - test_undo_name_point/baseline/history:1')
    [4.38114]
    [4.38514]
    check_eq(p1.x, 5, 'baseline/p1:x')
    check_eq(p1.y, 6, 'baseline/p1:y')
    check_eq(p2.x, 35, 'baseline/p2:x')
    check_eq(p2.y, 36, 'baseline/p2:y')
    check_nil(p2.name, 'baseline/p2:name')
    check_eq(#Editor_state.history, 1, 'baseline/history:1')
  • replacement in drawing_tests.lua at line 656
    [4.38758][4.38758:38995]()
    check_eq(p2.name, 'A', 'F - test_undo_name_point/baseline')
    check_eq(#Editor_state.history, 3, 'F - test_undo_name_point/baseline/history:2')
    check_eq(Editor_state.next_history, 4, 'F - test_undo_name_point/baseline/next_history')
    [4.38758]
    [4.38995]
    check_eq(p2.name, 'A', 'baseline')
    check_eq(#Editor_state.history, 3, 'baseline/history:2')
    check_eq(Editor_state.next_history, 4, 'baseline/next_history')
  • edit in drawing_tests.lua at line 664
    [4.39195][4.39195:39401](),[4.39401][4.10011:10011](),[4.9264][3.57759:57812](),[4.9264][3.57759:57812](),[4.122261][3.57813:57990](),[4.122261][3.57813:57990](),[4.2499][3.57991:58102](),[4.2499][3.57991:58102](),[4.123079][3.58103:58281](),[4.123079][3.58103:58281](),[4.4028][3.58282:58392](),[4.4028][3.58282:58392](),[4.123789][3.58393:58571](),[4.123789][3.58393:58571](),[4.5438][3.58572:58627](),[4.5438][3.58572:58627](),[4.124422][3.58628:58793](),[4.124422][3.58628:58793](),[4.960][3.58794:59044](),[4.960][3.58794:59044](),[4.14580][3.59045:59207](),[4.14580][3.59045:59207]()
    check_eq(Editor_state.next_history, 3, 'F - test_undo_name_point/next_history')
    check_eq(p2.name, '', 'F - test_undo_name_point') -- not quite what it was before, but close enough
    -- wait until save
    check_eq(#Editor_state.lines[1].shapes, 0, 'save')
    check_eq(#drawing.shapes, 2, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'baseline/shape:2')
    check_eq(drawing.shapes[1].mode, 'deleted', 'shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'shape:2')
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'polygon', 'baseline/mode')
    check_eq(#drawing.shapes[1].vertices, 4, 'baseline/vertices')
    check_eq(drawing.shapes[1].mode, 'polygon', 'shape')
    check_eq(#drawing.shapes[1].vertices, 3, 'vertices')
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'polygon', 'baseline/mode')
    check_eq(#drawing.shapes[1].vertices, 3, 'baseline/vertices')
    check_eq(drawing.shapes[1].mode, 'deleted', 'check')
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(#drawing.points, 2, 'baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(p1.x, 5, 'baseline/p1:x')
    check_eq(p1.y, 6, 'baseline/p1:y')
    check_eq(p2.x, 35, 'baseline/p2:x')
    check_eq(p2.y, 36, 'baseline/p2:y')
    check_nil(p2.name, 'baseline/p2:name')
    check_eq(#Editor_state.history, 1, 'baseline/history:1')
    check_eq(p2.name, 'A', 'baseline')
    check_eq(#Editor_state.history, 3, 'baseline/history:2')
    check_eq(Editor_state.next_history, 4, 'baseline/next_history')
  • resurrect zombie in drawing_tests.lua at line 664
    [4.1823][3.59208:59348](),[4.1823][3.59208:59348]()
    check_eq(Editor_state.next_history, 3, 'next_history')
    check_eq(p2.name, '', 'undo') -- not quite what it was before, but close enough
  • resolve order conflict in drawing_tests.lua at line 664
    [4.39195]
    [3.59208]
  • edit in drawing_tests.lua at line 666
    [3.59348]
    [4.1119]
    -- wait until save
  • replacement in drawing_tests.lua at line 673
    [4.39579][4.39579:39636]()
    check_eq(p2.name, '', 'F - test_undo_name_point/save')
    [4.39579]
    [4.39636]
    check_eq(p2.name, '', 'save')
  • edit in drawing_tests.lua at line 677
    [4.39673][4.39673:39710]()
    io.write('\ntest_undo_move_point')
  • replacement in drawing_tests.lua at line 688
    [4.40338][4.40338:40578]()
    check_eq(#drawing.shapes, 1, 'F - test_undo_move_point/baseline/#shapes')
    check_eq(#drawing.points, 2, 'F - test_undo_move_point/baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_undo_move_point/baseline/shape:1')
    [4.40338]
    [4.40578]
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(#drawing.points, 2, 'baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
  • replacement in drawing_tests.lua at line 693
    [4.40678][4.40678:40994]()
    check_eq(p1.x, 5, 'F - test_undo_move_point/baseline/p1:x')
    check_eq(p1.y, 6, 'F - test_undo_move_point/baseline/p1:y')
    check_eq(p2.x, 35, 'F - test_undo_move_point/baseline/p2:x')
    check_eq(p2.y, 36, 'F - test_undo_move_point/baseline/p2:y')
    check_nil(p2.name, 'F - test_undo_move_point/baseline/p2:name')
    [4.40678]
    [4.40994]
    check_eq(p1.x, 5, 'baseline/p1:x')
    check_eq(p1.y, 6, 'baseline/p1:y')
    check_eq(p2.x, 35, 'baseline/p2:x')
    check_eq(p2.y, 36, 'baseline/p2:y')
    check_nil(p2.name, 'baseline/p2:name')
  • replacement in drawing_tests.lua at line 703
    [4.41218][4.41218:41320]()
    check_eq(p2.x, 26, 'F - test_undo_move_point/x')
    check_eq(p2.y, 44, 'F - test_undo_move_point/y')
    [4.41218]
    [4.41320]
    check_eq(p2.x, 26, 'x')
    check_eq(p2.y, 44, 'y')
  • replacement in drawing_tests.lua at line 707
    [4.41451][4.41451:41533]()
    check_eq(Editor_state.next_history, 4, 'F - test_undo_move_point/next_history')
    [4.41451]
    [4.41533]
    check_eq(Editor_state.next_history, 4, 'next_history')
  • edit in drawing_tests.lua at line 713
    [4.41755][4.41755:41960](),[4.124933][3.59349:59381](),[4.124933][3.59349:59381](),[4.125458][3.59382:59547](),[4.125458][3.59382:59547](),[4.869][3.59548:59739](),[4.869][3.59548:59739](),[4.1367][3.59740:59792](),[4.1367][3.59740:59792](),[4.8281][3.59793:59850](),[4.8281][3.59793:59850]()
    check_eq(Editor_state.next_history, 2, 'F - test_undo_move_point/next_history')
    check_eq(p2.x, 35, 'F - test_undo_move_point/x')
    check_eq(p2.y, 36, 'F - test_undo_move_point/y')
    -- wait until save
    check_eq(p2.name, '', 'save')
    check_eq(#drawing.shapes, 1, 'baseline/#shapes')
    check_eq(#drawing.points, 2, 'baseline/#points')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(p1.x, 5, 'baseline/p1:x')
    check_eq(p1.y, 6, 'baseline/p1:y')
    check_eq(p2.x, 35, 'baseline/p2:x')
    check_eq(p2.y, 36, 'baseline/p2:y')
    check_nil(p2.name, 'baseline/p2:name')
    check_eq(p2.x, 26, 'x')
    check_eq(p2.y, 44, 'y')
    check_eq(Editor_state.next_history, 4, 'next_history')
  • resurrect zombie in drawing_tests.lua at line 713
    [4.1821][3.59851:59960](),[4.1821][3.59851:59960]()
    check_eq(Editor_state.next_history, 2, 'next_history')
    check_eq(p2.x, 35, 'x')
    check_eq(p2.y, 36, 'y')
  • resolve order conflict in drawing_tests.lua at line 713
    [4.41755]
    [3.59851]
  • edit in drawing_tests.lua at line 716
    [3.59960]
    [4.1156]
    -- wait until save
  • replacement in drawing_tests.lua at line 723
    [4.42138][4.42138:42250]()
    check_eq(p2.x, 35, 'F - test_undo_move_point/save/x')
    check_eq(p2.y, 36, 'F - test_undo_move_point/save/y')
    [4.42138]
    [4.42250]
    check_eq(p2.x, 35, 'save/x')
    check_eq(p2.y, 36, 'save/y')
  • edit in drawing_tests.lua at line 728
    [4.42289][4.42289:42328]()
    io.write('\ntest_undo_delete_point')
  • replacement in drawing_tests.lua at line 741
    [4.43200][4.43200:43458]()
    check_eq(#drawing.shapes, 2, 'F - test_undo_delete_point/baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_undo_delete_point/baseline/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'F - test_undo_delete_point/baseline/shape:2')
    [4.43200]
    [4.43458]
    check_eq(#drawing.shapes, 2, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'baseline/shape:2')
  • replacement in drawing_tests.lua at line 747
    [4.43627][4.43627:43795]()
    check_eq(drawing.shapes[1].mode, 'deleted', 'F - test_undo_delete_point/shape:1')
    check_eq(drawing.shapes[2].mode, 'deleted', 'F - test_undo_delete_point/shape:2')
    [4.43627]
    [4.43795]
    check_eq(drawing.shapes[1].mode, 'deleted', 'shape:1')
    check_eq(drawing.shapes[2].mode, 'deleted', 'shape:2')
  • edit in drawing_tests.lua at line 753
    [4.43942][4.43942:44207](),[4.126020][3.59961:60023](),[4.126020][3.59961:60023](),[4.126789][3.60024:60201](),[4.126789][3.60024:60201](),[4.15804][3.60202:60316](),[4.15804][3.60202:60316]()
    check_eq(Editor_state.next_history, 3, 'F - test_undo_move_point/next_history')
    check_eq(drawing.shapes[1].mode, 'line', 'F - test_undo_delete_point/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'F - test_undo_delete_point/shape:2')
    -- wait until save
    check_eq(p2.x, 35, 'save/x')
    check_eq(p2.y, 36, 'save/y')
    check_eq(#drawing.shapes, 2, 'baseline/#shapes')
    check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'baseline/shape:2')
    check_eq(drawing.shapes[1].mode, 'deleted', 'shape:1')
    check_eq(drawing.shapes[2].mode, 'deleted', 'shape:2')
  • resurrect zombie in drawing_tests.lua at line 753
    [4.1454][3.60317:60482](),[4.1454][3.60317:60482]()
    check_eq(Editor_state.next_history, 3, 'next_history')
    check_eq(drawing.shapes[1].mode, 'line', 'shape:1')
    check_eq(drawing.shapes[2].mode, 'line', 'shape:2')
  • resolve order conflict in drawing_tests.lua at line 753
    [4.43942]
    [3.60317]
  • edit in drawing_tests.lua at line 756
    [3.60482]
    [4.1193]
    -- wait until save
  • replacement in drawing_tests.lua at line 762
    [4.44321][4.44321:44401]()
    check_eq(#Editor_state.lines[1].shapes, 2, 'F - test_undo_delete_point/save')
    [4.44321]
    [4.44401]
    check_eq(#Editor_state.lines[1].shapes, 2, 'save')
  • edit in drawing_tests.lua at line 764
    [4.44405][4.1189:1189](),[4.9561][3.60483:60536](),[4.9561][3.60483:60536]()
    check_eq(#Editor_state.lines[1].shapes, 2, 'save')
  • resolve order conflict in drawing_tests.lua at line 764
    [4.44405]
  • edit in app.lua at line 137
    [4.209731]
    [4.209731]
    Test_errors = {}
  • edit in app.lua at line 139
    [4.209749]
    [4.209749]
    if #Test_errors > 0 then
    error('There were test failures:\n\n'..table.concat(Test_errors))
    end
  • edit in app.lua at line 147
    [4.209859][4.86:86](),[4.210275][3.60542:60561](),[4.210275][3.60542:60561](),[4.210293][3.60562:60665](),[4.210293][3.60562:60665]()
    Test_errors = {}
    if #Test_errors > 0 then
    error('There were test failures:\n\n'..table.concat(Test_errors))
    end
  • resolve order conflict in app.lua at line 147
    [4.209859]
    [4.5849]