Merge lines.love
[?]
Jan 21, 2023, 6:08 AM
A4BSGS2CX4JK7IELL655EC6HAY6ILCWTGIHWZXHRGQOKU3HSUPLACDependencies
- [2]
XGHCLIKBMerge lines.love - [3]
ORRSP7FVdeduce test names on failures - [4]
CE4LZV4Tdrop last couple of manual tests - [5]
CRYGI3LRmore drawing tests - [6]
S2YQBEYCsnapshot: test for a new regression - [7]
D2GCFTTTclean up repl functionality - [8]
YT5P6TO6bugfix: save previous file when dropping a new one on - [9]
VHUNJHXBMerge lines.love - [10]
BPWFKBXTnew test: dragging and dropping a file on lines.love - [11]
DB7HJBHJMerge lines.love - [12]
4YDBYBA4clean up memory leak experiments - [13]
TGZAJUEFbring back a set of constants - [14]
T4FRZSYLdelete an ancient, unused file - [15]
RSZD5A7Gforgot to add json.lua - [16]
BJ5X5O4Alet's prevent the text cursor from ever getting on a drawing - [17]
APYPFFS3call edit rather than App callbacks in tests - [18]
4WAFGF4Zselection bugfix - [19]
4J2L6JMRbugfix: deleting a selection spanning pages - [20]
OWK3U6VDtests for drawing polygons - [21]
L6XA5EY2test: moving a point - [22]
62JEPVQ3bugfix: backspace from start of final line - [23]
2CTN2IEFMerge lines.love - [24]
OTIBCAUJlove2d scaffold - [25]
4VQGE7RAnew test - [26]
KG7YVGVRMerge lines.love - [27]
ZTZOO2OQMerge lines.love - [28]
MD3W5IRAnew fork: rip out drawing support - [29]
KMRJOSLYbugfix: delete selection before pasting - [30]
5F54FYKIMerge lines.love - [31]
FQZ3U3YAstreamline one more test name - [32]
BULPIBEGbeginnings of a module for the text editor - [33]
JOPVPUSAediting source code from within the app - [34]
LMP3FXAMswitch one call back to keychord_pressed - [35]
CIQN2MDEbugfix: typing a capital letter deletes selection - [36]
7EQLPB3Obugfix: don't delete selection when moving cursor - [37]
2CK5QI7Wmake love event names consistent - [38]
MUJTM6REbring back a level of wrapping - [39]
UTDSCN3GMerge lines.love - [40]
VG75U7IMbugfix: typing should delete highlighted text - [41]
H3KWPK3Gregression: dropping files on the window - [42]
LXTTOB33extract a couple of files - [43]
PX7DDEMOautosave slightly less aggressively - [44]
UHB4GARJleft/right margin -> left/right coordinates - [45]
ILOA5BYFseparate data structure for each line's cache data - [46]
AYX33NBCMerge lines.love - [47]
K2X6G75Zstart writing some tests for drawings - [48]
ORKN6EOBMerge lines.love - [49]
GUOQRUL7Merge lines.love - [50]
KMSL74GAsupport selections in the source editor - [51]
VZJHGWSPMerge lines.love - [52]
KOTNETIMrepeat changes on source editor - [53]
TVCPXAAUrename - [54]
VXORMHMEdelete experimental REPL - [55]
LYN3L74Wcorrect commit f3abc2cbf2 - [56]
FS2ITYYHrecord a known issue - [57]
66X36NZNa little more prose describing manual_tests - [58]
D4B52CQ2Merge lines.love - [59]
R5QXEHUIsomebody stop me - [60]
XX7G2FFJintermingle freehand line drawings with text - [61]
BLWAYPKVextract a module - [62]
OI4FPFINsupport drawings in the source editor - [63]
7CLGG7J2test: autosave after any shape - [64]
KAUD3YIKtests: deleting points/shapes - [65]
LF7BWEG4group all editor globals - [66]
RZKXJYFKswitch a bunch of tests to textinput events - [67]
OGUV4HSAremove some memory leaks from rendered fragments - [68]
3QNOKBFMbeginnings of a test harness - [69]
4AXV2HG4all pending manual tests done! - [70]
TLOAPLBJadd a license - [71]
LNUHQOGHstart passing in Editor_state explicitly - [72]
KKMFQDR4editing source code from within the app - [73]
6SMGKYDR. - [74]
3PSFWAILMerge lines.love - [75]
T7SJSJIHtest: undo naming a point - [76]
7DYUAOI6test: undo moving point - [77]
73OCE2MCafter much struggle, a brute-force undo - [78]
6LJZN727handle chords - [79]
NNTMVNVO. - [80]
ENENSZLKbugfix: source margins when toggling log browser - [81]
42LVB4DEtest: naming a point - [82]
VP5KC4XZMerge lines.love - [83]
DFGPHG5Toverzealous search-and-replace - [84]
DSLD74DKlots more tests - [85]
2WGHUWE6self-documenting 0 Test_right_margin - [86]
WLWNS6FBa bug I've never run into - [87]
2L5MEZV3experiment: new edit namespace - [88]
TO6Y2G3Umore decoupling editor tests from App - [89]
VHQCNMARseveral more modules - [90]
Y4VYNEGFtest: autosave after name/move/delete of point - [91]
AVTNUQYRbasic test-enabled framework - [92]
FFBIY74Nbugfix: 'escape' to cancel a stroke - [93]
SPNMXTYRhave file API operate on state object - [94]
TFM6F5ODMerge lines.love - [95]
ETXNVRPTMerge lines.love - [96]
FYS7TCDWbugfix - [97]
APX2PY6Gstop tracking wallclock time
Change contents
- file deletion: source_text_tests.lua source_text_tests.lua
check_eq(Editor_state.cursor1.line, 1, '1/cursor:line')check_eq(Editor_state.cursor1.pos, 5, '1/cursor:pos')endcheck_eq(Editor_state.cursor1.line, 1, '1/cursor:line')check_eq(Editor_state.cursor1.pos, 1, '1/cursor:pos')endfunction test_search_wrap_upwards()check_eq(Editor_state.cursor1.line, 1, '2/cursor:line')check_eq(Editor_state.cursor1.pos, 1, '2/cursor:pos')endfunction test_search_wrap()check_eq(Editor_state.cursor1.line, 4, '2/cursor:line')check_eq(Editor_state.cursor1.pos, 1, '2/cursor:pos')endfunction test_search_upwards()check_eq(Editor_state.cursor1.line, 2, '1/cursor:line')check_eq(Editor_state.cursor1.pos, 1, '1/cursor:pos')-- reset cursorEditor_state.cursor1 = {line=1, pos=1}Editor_state.screen_top1 = {line=1, pos=1}-- search for second occurrenceedit.run_after_keychord(Editor_state, 'C-f')check_eq(Editor_state.selection1.line, 1, 'line')check_eq(Editor_state.selection1.pos, 2, 'pos')endcheck_eq(Editor_state.lines[1].data, 'xbc', 'baseline')check_nil(Editor_state.selection1.line, 'baseline:selection')-- undoedit.run_after_keychord(Editor_state, 'C-z')edit.run_after_keychord(Editor_state, 'C-z')-- selection is restoredApp.screen.check(y, 'xyz', 'screen:3')endApp.screen.check(y, 'defg', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'xyz', 'baseline/screen:3')-- undo--? -- after undo, the backspaced key is selectededit.run_after_keychord(Editor_state, 'C-z')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'xyz', 'screen:3')endfunction test_undo_delete_text()App.screen.check(y, 'def', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'xyz', 'baseline/screen:3')-- undoedit.run_after_keychord(Editor_state, 'C-z')App.screen.check(y, 'defg', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightcheck_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.topcheck_nil(Editor_state.selection1.line, 'selection')endcheck_eq(Editor_state.cursor1.line, 2, 'cursor:line')check_eq(Editor_state.cursor1.pos, 1, 'cursor:pos')-- selection is clearedcheck_eq(Editor_state.lines[1].data, 'abc', 'data:1')check_eq(Editor_state.lines[2].data, 'f', 'data:2')-- cursor remains at start of selectioncheck_nil(Editor_state.selection1.line, 'selection')endfunction 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 clearedcheck_eq(Editor_state.lines[1].data, 'a', 'data:1')check_eq(Editor_state.lines[2].data, 'def', 'data:2')-- cursor remains at start of selectioncheck_nil(Editor_state.selection1.line, 'selection')endfunction 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 clearedcheck_eq(Editor_state.lines[1].data, 'akl', 'data:1')check_eq(Editor_state.lines[2].data, 'mno', 'data:2')-- cursor remains at start of selectioncheck_nil(Editor_state.selection1.line, 'selection')endfunction 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 clearedcheck_eq(Editor_state.lines[1].data, 'bc', 'data')-- cursor moves to start of selectioncheck_nil(Editor_state.selection1.line, 'selection')endfunction 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 clearedcheck_eq(Editor_state.lines[1].data, 'bc', 'data')-- cursor (remains) at start of selectioncheck_eq(Editor_state.lines[1].data, 'abcdef', 'check')endApp.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')endfunction test_backspace_past_line_boundary()App.screen.check(y, 'kl', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'ghij', 'screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'mno', 'baseline/screen:2')-- after hitting backspace the screen scrolls up by one screen lineedit.run_after_keychord(Editor_state, 'backspace')y = Editor_state.topApp.screen.check(y, 'jkl', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'jkl', 'screen:3')endfunction test_backspace_can_scroll_up_screen_line()App.screen.check(y, 'ghi', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abcdef', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 1, 'screen_top')check_eq(Editor_state.cursor1.line, 1, 'cursor')y = Editor_state.topApp.screen.check(y, 'jkl', 'baseline/screen:3')-- after hitting backspace the screen scrolls up by one lineedit.run_after_keychord(Editor_state, 'backspace')App.screen.check(y, 'ghi', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'baseline/screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.cursor1.line, 1, 'cursor:line')check_eq(Editor_state.cursor1.pos, 26, 'cursor:pos')endfunction 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 mouseApp.screen.check(y, 'jkl mno pqr ', 'baseline2/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc def ghi ', 'baseline2/screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.cursor1.pos, 28, 'cursor:pos')y = Editor_state.topApp.screen.check(y, 'xyz', 'baseline1/screen:3')-- add to the line until it's wrapping over 3 screen linesApp.screen.check(y, 'jkl mno pqr ', 'baseline1/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc def ghi ', 'baseline1/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'jkl', 'screen:3')endfunction test_position_cursor_on_recently_edited_wrapping_line()-- draw a line wrapping over 2 screen linesApp.screen.check(y, 'ghi ', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace-- after hitting end the screen scrolls down by one lineedit.run_after_keychord(Editor_state, 'end')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.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')endfunction test_end_scrolls_down_in_wrapped_line()App.screen.check(y, 'jkl', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi ', 'screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'mno', 'baseline/screen:2')-- after hitting home the screen scrolls up to first screen lineedit.run_after_keychord(Editor_state, 'home')y = Editor_state.topApp.screen.check(y, 'jkl', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'jkl', 'screen:3')endfunction test_home_scrolls_up_in_wrapped_line()App.screen.check(y, 'ghi ', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace-- after hitting the right arrow the screen scrolls down by one lineedit.run_after_keychord(Editor_state, 'right')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.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')endfunction test_right_arrow_scrolls_down_in_wrapped_line()App.screen.check(y, 'jkl', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi ', 'screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'mno', 'baseline/screen:2')-- after hitting the left arrow the screen scrolls up to first screen lineedit.run_after_keychord(Editor_state, 'left')y = Editor_state.topApp.screen.check(y, 'jkl', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'kl', 'screen:3')endfunction test_left_arrow_scrolls_up_in_wrapped_line()App.screen.check(y, 'ghij', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'ghi', 'baseline/screen:3')-- after typing something the line wraps and the screen scrolls downApp.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'a', 'screen:1')endfunction 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.topApp.screen.check(y, 'kl', 'screen:2')endfunction 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_heightcheck_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.topApp.screen.check(y, 'jkl', 'baseline/screen:1')-- after hitting the enter key the screen does not scroll downedit.run_after_keychord(Editor_state, 'return')App.screen.check(y, 'hi', 'screen:3')endfunction test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom()App.screen.check(y, 'g', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'ghi', 'baseline/screen:3')-- after hitting the enter key the screen scrolls downedit.run_after_keychord(Editor_state, 'return')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi ', 'screen:3')endfunction test_enter_on_bottom_line_scrolls_down()App.screen.check(y, 'def', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc ', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'mno', 'baseline/screen:3') -- line wrapping includes trailing whitespace-- after hitting the page-up key the screen scrolls up to topedit.run_after_keychord(Editor_state, 'pageup')App.screen.check(y, 'jkl', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi', 'screen:3')endfunction test_pageup_scrolls_up_from_middle_screen_line()App.screen.check(y, 'def', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc ', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'mno', 'baseline/screen:3') -- line wrapping includes trailing whitespace-- after hitting the page-up key the screen scrolls up to topedit.run_after_keychord(Editor_state, 'pageup')App.screen.check(y, 'jkl', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:2')endfunction test_pageup_scrolls_up_by_screen_line()App.screen.check(y, 'abc', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 1, 'screen_top')check_eq(Editor_state.cursor1.line, 1, 'cursor')y = Editor_state.topApp.screen.check(y, 'ghi', 'baseline/screen:2')-- after pageup the cursor goes to first lineedit.run_after_keychord(Editor_state, 'pageup')App.screen.check(y, 'def', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:3')endfunction test_pageup()App.screen.check(y, 'abc', 'screen:2')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 1, 'screen_top')check_eq(Editor_state.cursor1.line, 1, 'cursor')y = Editor_state.top-- empty first liney = y + Editor_state.line_heightApp.screen.check(y, 'ghi', 'baseline/screen:3')-- after hitting the up arrow the screen scrolls up by one lineedit.run_after_keychord(Editor_state, 'up')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.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')endfunction test_up_arrow_scrolls_up_to_empty_line()App.screen.check(y, 'ghi', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'mno', 'baseline/screen:3')-- after hitting the up arrow the screen scrolls up to final screen line of previous lineedit.run_after_keychord(Editor_state, 'up')y = Editor_state.topApp.screen.check(y, 'jkl', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi', 'baseline/screen:1')y = y + Editor_state.line_heightApp.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')endfunction test_up_arrow_scrolls_up_to_final_screen_line()App.screen.check(y, 'jkl', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi ', 'screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'mno', 'baseline/screen:2')-- after hitting the up arrow the screen scrolls up to first screen lineedit.run_after_keychord(Editor_state, 'up')y = Editor_state.topApp.screen.check(y, 'jkl', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi', 'screen:3')endfunction test_up_arrow_scrolls_up_by_one_screen_line()App.screen.check(y, 'def', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 1, 'screen_top')check_eq(Editor_state.cursor1.line, 1, 'cursor')y = Editor_state.topApp.screen.check(y, 'jkl', 'baseline/screen:3')-- after hitting the up arrow the screen scrolls up by one lineedit.run_after_keychord(Editor_state, 'up')App.screen.check(y, 'ghi', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi', 'screen:3')endfunction test_up_arrow_scrolls_up_by_one_line()App.screen.check(y, 'def', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 1, 'screen_top')check_eq(Editor_state.cursor1.line, 2, 'cursor')-- the screen is unchangedy = Editor_state.topApp.screen.check(y, 'ghi', 'baseline/screen:3')-- after hitting the up arrow the cursor moves up by 1 lineedit.run_after_keychord(Editor_state, 'up')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'mno', 'screen:3')endfunction test_up_arrow_moves_cursor()App.screen.check(y, 'kl', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'ghij', 'screen:1')y = y + Editor_state.line_heightcheck_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.topcheck_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 upedit.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 lineedit.run_after_keychord(Editor_state, 'pagedown')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'kl', 'screen:3')endApp.screen.check(y, 'ghij', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'ghij', 'baseline/screen:3')-- after hitting the down arrow the screen scrolls down by one lineedit.run_after_keychord(Editor_state, 'down')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'jkl', 'screen:3')endfunction 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_heightApp.screen.check(y, 'def', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace-- after hitting the down arrow the screen scrolls down by one lineedit.run_after_keychord(Editor_state, 'down')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'jkl', 'screen:3')endfunction test_down_arrow_scrolls_down_by_one_screen_line()App.screen.check(y, 'ghi', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 2, 'screen_top')check_eq(Editor_state.cursor1.line, 4, 'cursor')y = Editor_state.topApp.screen.check(y, 'ghi', 'baseline/screen:3')-- after hitting the down arrow the screen scrolls down by one lineedit.run_after_keychord(Editor_state, 'down')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi', 'screen:3')endfunction test_down_arrow_scrolls_down_by_one_line()App.screen.check(y, 'def', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 1, 'screen_top')check_eq(Editor_state.cursor1.line, 2, 'cursor')-- the screen is unchangedy = Editor_state.topApp.screen.check(y, 'ghi', 'baseline/screen:3')-- after hitting the down arrow, the cursor moves down by 1 lineedit.run_after_keychord(Editor_state, 'down')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')check_eq(Editor_state.screen_top1.pos, 9, 'screen_top:pos')endfunction test_down_arrow_moves_cursor()App.screen.check(y, 'mno ', 'screen:3')endfunction test_pagedown_never_moves_up()App.screen.check(y, 'jkl ', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi ', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 1, 'screen_top:line')check_eq(Editor_state.screen_top1.pos, 9, 'screen_top:pos')y = Editor_state.topApp.screen.check(y, 'ghi ', 'baseline/screen:3')-- after pagedown we scroll down the very long wrapping lineedit.run_after_keychord(Editor_state, 'pagedown')App.screen.check(y, 'def ', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc ', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'screen:1')endfunction 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_heightApp.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 80pxedit.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 80pxedit.draw(Editor_state)local y = Editor_state.topApp.screen.check(y, 'ghi', 'screen:2')endfunction test_pagedown_skips_drawings()App.screen.check(y, 'def', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 2, 'screen_top')check_eq(Editor_state.cursor1.line, 2, 'cursor')y = Editor_state.topApp.screen.check(y, 'def', 'baseline/screen:2')-- after pagedown the bottom line becomes the topedit.run_after_keychord(Editor_state, 'pagedown')App.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightcheck_nil(Editor_state.selection1.line, 'check')endcheck_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')endcheck_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')endfunction 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')endfunction test_select_text_using_mouse_and_shift()App.screen.check(y, 'def', 'screen:3')endfunction test_select_text_using_mouse()App.screen.check(y, 'zbc', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'axy', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'ghi', 'baseline/screen:3')-- paste some text including a newline, check that new line is createdApp.clipboard = 'xy\nz'edit.run_after_keychord(Editor_state, 'C-v')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightcheck_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')endfunction test_insert_from_clipboard()App.screen.check(y, 'def', 'screen:3')endfunction test_insert_newline_at_start_of_line()App.screen.check(y, 'bc', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'a', 'screen:1')y = y + Editor_state.line_heightcheck_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.topApp.screen.check(y, 'ghi', 'baseline/screen:3')-- hitting the enter key splits the lineedit.run_after_keychord(Editor_state, 'return')App.screen.check(y, 'def', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'fg', 'screen:3')endfunction test_insert_newline()App.screen.check(y, 'de', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.screen_top1.line, 1, 'check')check_eq(Editor_state.lines[1].data, 'ahi', 'data')endApp.screen.check(y, 'jkl', 'baseline/screen:3')-- set up a selection starting above the currently displayed pageEditor_state.selection1 = {line=1, pos=2}-- delete selectionedit.run_after_keychord(Editor_state, 'backspace')-- page scrolls upApp.screen.check(y, 'ghi', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'def', 'baseline/screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.lines[1].data, 'xyzdef', 'check')endfunction test_deleting_selection_may_scroll()check_eq(Editor_state.lines[1].data, 'bc', 'data')endfunction test_paste_replaces_selection()check_eq(App.clipboard, 'a', 'clipboard')-- selected text is deletedcheck(Editor_state.selection1.line, 'check')endfunction test_cut()check_eq(App.clipboard, 'a', 'clipboard')-- selection is reset since shift key is not pressedcheck_nil(Editor_state.selection1.line, 'check')check_eq(Editor_state.lines[1].data, 'Dbc', 'data')endfunction test_copy_does_not_reset_selection()check_eq(Editor_state.lines[1].data, 'xbc', 'check')endfunction test_edit_with_shift_key_deletes_selection()check_nil(Editor_state.selection1.line, 'check')check_eq(Editor_state.lines[1].data, 'abc', 'data')endcheck_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')endfunction test_cursor_movement_without_shift_resets_selection()check_eq(Editor_state.cursor1.pos, 20, 'cursor')endfunction 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 lineedit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)-- cursor moves to end of screen linecheck_eq(Editor_state.cursor1.pos, 15, 'cursor') -- one more than the number of UTF-8 code-pointsendfunction 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 itedit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)-- cursor moves to end of lineApp.screen.check(y, 'I’m ad', 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'madam ', 'baseline/screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.cursor1.pos, 15, 'cursor') -- one more than the number of UTF-8 code-pointsendfunction 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 itedit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)-- cursor moves to end of lineApp.screen.check(y, "I'm ad", 'baseline/screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'madam ', 'baseline/screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.cursor1.line, 1, 'cursor:line')check_eq(Editor_state.cursor1.pos, 12, 'cursor:pos')endfunction 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 lineedit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)-- cursor moves to end of screen linecheck_eq(Editor_state.cursor1.line, 1, 'cursor:line')check_eq(Editor_state.cursor1.pos, 12, 'cursor:pos')endfunction 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 lineedit.run_after_mouse_click(Editor_state, App.screen.width-2,y-2, 1)-- cursor moves to end of screen lineApp.screen.check(y, 'madam ', 'baseline/screen:1')y = y + Editor_state.line_heightApp.screen.check(y, '’m a', 'screen:3')endfunction test_click_on_wrapping_line()App.screen.check(y, 'am I', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'mad', 'screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'ijk', 'screen:3')endfunction test_draw_wrapping_text_containing_non_ascii()-- draw a long line containing non-ASCIIApp.screen.check(y, 'e fgh', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abcd ', 'screen:1')y = y + Editor_state.line_heightcheck_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')endfunction test_draw_text_wrapping_within_word()-- arrange a screen line that needs to be split within a wordcheck_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')endApp.screen.check(y, 'ghi', 'screen:3')endApp.screen.check(y, 'def ', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc ', 'screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'fgh', 'screen:3')endfunction test_draw_word_wrapping_text()App.screen.check(y, 'de', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'screen:1')y = y + Editor_state.line_heightApp.screen.check(y, 'ghi', 'screen:3')endfunction test_draw_wrapping_text()App.screen.check(y, 'def', 'screen:2')y = y + Editor_state.line_heightApp.screen.check(y, 'abc', 'screen:1')y = y + Editor_state.line_heightcheck_eq(Editor_state.cursor1.line, 1, 'cursor')endfunction 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')endcheck_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')endcheck_nil(Editor_state.selection1.line, 'selection:line')check_nil(Editor_state.selection1.pos, 'selection:pos')endcheck_eq(Editor_state.cursor1.line, 1, 'cursor:line')check_eq(Editor_state.cursor1.pos, 2, 'cursor:pos')-- selection is empty to avoid perturbing future editscheck_eq(Editor_state.cursor1.line, 2, 'line')check_eq(Editor_state.cursor1.pos, 4, 'pos')endcheck_eq(Editor_state.cursor1.pos, 9, 'check')endfunction test_move_past_end_of_word_on_next_line()check_eq(Editor_state.cursor1.pos, 4, 'check')endfunction test_skip_multiple_spaces_to_next_word()check_eq(Editor_state.cursor1.pos, 8, 'check')endfunction test_skip_past_tab_to_next_word()check_eq(Editor_state.cursor1.pos, 4, 'check')endfunction test_skip_to_next_word()check_eq(Editor_state.cursor1.line, 1, 'line')check_eq(Editor_state.cursor1.pos, 5, 'pos')endfunction test_move_past_end_of_word()check_eq(Editor_state.cursor1.pos, 1, 'check')endfunction test_move_to_start_of_word_on_previous_line()check_eq(Editor_state.cursor1.pos, 9, 'check')endfunction test_skip_multiple_spaces_to_previous_word()check_eq(Editor_state.cursor1.pos, 1, 'check')endfunction test_skip_past_tab_to_previous_word()check_eq(Editor_state.cursor1.pos, 1, 'check')endfunction test_skip_to_previous_word()check_eq(Editor_state.cursor1.pos, 1, 'check')endfunction test_move_to_start_of_previous_word()check_eq(Editor_state.cursor1.line, 2, 'line')check_eq(Editor_state.cursor1.pos, 1, 'pos')endfunction 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 lineendfunction test_move_right_to_next_line()check_eq(Editor_state.cursor1.pos, 2, 'check')endfunction test_move_left_to_previous_line()check_eq(Editor_state.cursor1.pos, 1, 'check')endfunction test_move_right()App.screen.check(y, 'a', 'screen:1')endfunction 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')endfunction test_insert_first_character()check_eq(#Editor_state.lines, 1, '#lines')check_eq(Editor_state.cursor1.line, 1, 'cursor')endfunction test_backspace_from_start_of_final_line()check_eq(#Editor_state.lines, 2, '#lines')check_eq(Editor_state.cursor1.line, 2, 'cursor')endfunction 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')endfunction test_click_to_create_drawing() - file deletion: source_tests.lua source_tests.lua
check_eq(App.filesystem['foo'], 'abc\ndef\n', 'check')endcheck_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)endfunction 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')endcheck_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')endfunction 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 adjustedcheck_eq(App.screen.width, 600, 'display:width')-- left side margins are unchangedcheck(Show_log_browser_side, 'check')endcheck(not Show_log_browser_side, 'baseline')-- pressing ctrl+l shows log-browser sidecheck_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
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
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
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
check_eq(Editor_state.lines[1].data, 'xbc', 'F - test_edit_deletes_selection') - edit in text_tests.lua at line 606
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
check_eq(Editor_state.lines[1].data, 'bc', 'F - test_cut/data') - edit in text_tests.lua at line 663
check_eq(Editor_state.lines[1].data, 'xyzdef', 'F - test_paste_replaces_selection') - edit in text_tests.lua at line 687
check_eq(Editor_state.lines[1].data, 'ahi', 'F - test_deleting_selection_may_scroll/data') - edit in text_tests.lua at line 749
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
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
check_eq(Editor_state.lines[1].data, 'abcdef', "F - test_backspace_past_line_boundary") - edit in text_tests.lua at line 1680
check_eq(Editor_state.lines[1].data, 'bc', "F - test_backspace_over_selection/data") - edit in text_tests.lua at line 1698
check_eq(Editor_state.lines[1].data, 'bc', "F - test_backspace_over_selection_reverse/data") - edit in text_tests.lua at line 1716
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
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
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
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
- edit in source_text_tests.lua at line 4
io.write('\ntest_initial_state') - replacement in source_text_tests.lua at line 9
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')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
io.write('\ntest_click_to_create_drawing') - replacement in source_text_tests.lua at line 24
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')check_eq(#Editor_state.lines, 2, '#lines')check_eq(Editor_state.cursor1.line, 2, 'cursor') - edit in source_text_tests.lua at line 29
io.write('\ntest_backspace_to_delete_drawing') - replacement in source_text_tests.lua at line 38
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')check_eq(#Editor_state.lines, 1, '#lines')check_eq(Editor_state.cursor1.line, 1, 'cursor') - edit in source_text_tests.lua at line 43
io.write('\ntest_backspace_from_start_of_final_line') - replacement in source_text_tests.lua at line 52
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')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
io.write('\ntest_insert_first_character') - replacement in source_text_tests.lua at line 65
App.screen.check(y, 'a', 'F - test_insert_first_character/screen:1')App.screen.check(y, 'a', 'screen:1') - edit in source_text_tests.lua at line 69
io.write('\ntest_press_ctrl') - edit in source_text_tests.lua at line 81
io.write('\ntest_move_left') - replacement in source_text_tests.lua at line 88
check_eq(Editor_state.cursor1.pos, 1, 'F - test_move_left')check_eq(Editor_state.cursor1.pos, 1, 'check') - edit in source_text_tests.lua at line 92
io.write('\ntest_move_right') - replacement in source_text_tests.lua at line 99
check_eq(Editor_state.cursor1.pos, 2, 'F - test_move_right')check_eq(Editor_state.cursor1.pos, 2, 'check') - edit in source_text_tests.lua at line 103
io.write('\ntest_move_left_to_previous_line') - replacement in source_text_tests.lua at line 110
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 linecheck_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
io.write('\ntest_move_right_to_next_line') - replacement in source_text_tests.lua at line 122
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')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
io.write('\ntest_move_to_start_of_word') - replacement in source_text_tests.lua at line 134
check_eq(Editor_state.cursor1.pos, 1, 'F - test_move_to_start_of_word')check_eq(Editor_state.cursor1.pos, 1, 'check') - edit in source_text_tests.lua at line 138
io.write('\ntest_move_to_start_of_previous_word') - replacement in source_text_tests.lua at line 145
check_eq(Editor_state.cursor1.pos, 1, 'F - test_move_to_start_of_previous_word')check_eq(Editor_state.cursor1.pos, 1, 'check') - edit in source_text_tests.lua at line 149
io.write('\ntest_skip_to_previous_word') - replacement in source_text_tests.lua at line 156
check_eq(Editor_state.cursor1.pos, 1, 'F - test_skip_to_previous_word')check_eq(Editor_state.cursor1.pos, 1, 'check') - edit in source_text_tests.lua at line 160
io.write('\ntest_skip_past_tab_to_previous_word') - replacement in source_text_tests.lua at line 167
check_eq(Editor_state.cursor1.pos, 9, 'F - test_skip_past_tab_to_previous_word')check_eq(Editor_state.cursor1.pos, 9, 'check') - edit in source_text_tests.lua at line 171
io.write('\ntest_skip_multiple_spaces_to_previous_word') - replacement in source_text_tests.lua at line 178
check_eq(Editor_state.cursor1.pos, 1, 'F - test_skip_multiple_spaces_to_previous_word')check_eq(Editor_state.cursor1.pos, 1, 'check') - edit in source_text_tests.lua at line 182
io.write('\ntest_move_to_start_of_word_on_previous_line') - replacement in source_text_tests.lua at line 189
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')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
io.write('\ntest_move_past_end_of_word') - replacement in source_text_tests.lua at line 201
check_eq(Editor_state.cursor1.pos, 4, 'F - test_move_past_end_of_word')check_eq(Editor_state.cursor1.pos, 4, 'check') - edit in source_text_tests.lua at line 205
io.write('\ntest_skip_to_next_word') - replacement in source_text_tests.lua at line 212
check_eq(Editor_state.cursor1.pos, 8, 'F - test_skip_to_next_word')check_eq(Editor_state.cursor1.pos, 8, 'check') - edit in source_text_tests.lua at line 216
io.write('\ntest_skip_past_tab_to_next_word') - replacement in source_text_tests.lua at line 223
check_eq(Editor_state.cursor1.pos, 4, 'F - test_skip_past_tab_to_next_word')check_eq(Editor_state.cursor1.pos, 4, 'check') - edit in source_text_tests.lua at line 227
io.write('\ntest_skip_multiple_spaces_to_next_word') - replacement in source_text_tests.lua at line 234
check_eq(Editor_state.cursor1.pos, 9, 'F - test_skip_multiple_spaces_to_next_word')check_eq(Editor_state.cursor1.pos, 9, 'check') - edit in source_text_tests.lua at line 238
io.write('\ntest_move_past_end_of_word_on_next_line') - replacement in source_text_tests.lua at line 245
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')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
io.write('\ntest_click_moves_cursor') - replacement in source_text_tests.lua at line 260
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')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
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')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
io.write('\ntest_click_to_left_of_line') - replacement in source_text_tests.lua at line 280
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')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
io.write('\ntest_click_takes_margins_into_account') - replacement in source_text_tests.lua at line 299
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')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
io.write('\ntest_click_on_empty_line') - replacement in source_text_tests.lua at line 317
check_eq(Editor_state.cursor1.line, 1, 'F - test_click_on_empty_line/cursor')check_eq(Editor_state.cursor1.line, 1, 'cursor') - edit in source_text_tests.lua at line 321
io.write('\ntest_draw_text') - replacement in source_text_tests.lua at line 330
App.screen.check(y, 'abc', 'F - test_draw_text/screen:1')App.screen.check(y, 'abc', 'screen:1') - replacement in source_text_tests.lua at line 332
App.screen.check(y, 'def', 'F - test_draw_text/screen:2')App.screen.check(y, 'def', 'screen:2') - replacement in source_text_tests.lua at line 334
App.screen.check(y, 'ghi', 'F - test_draw_text/screen:3')App.screen.check(y, 'ghi', 'screen:3') - edit in source_text_tests.lua at line 338
io.write('\ntest_draw_wrapping_text') - replacement in source_text_tests.lua at line 347
App.screen.check(y, 'abc', 'F - test_draw_wrapping_text/screen:1')App.screen.check(y, 'abc', 'screen:1') - replacement in source_text_tests.lua at line 349
App.screen.check(y, 'de', 'F - test_draw_wrapping_text/screen:2')App.screen.check(y, 'de', 'screen:2') - replacement in source_text_tests.lua at line 351
App.screen.check(y, 'fgh', 'F - test_draw_wrapping_text/screen:3')App.screen.check(y, 'fgh', 'screen:3') - edit in source_text_tests.lua at line 355
io.write('\ntest_draw_word_wrapping_text') - replacement in source_text_tests.lua at line 364
App.screen.check(y, 'abc ', 'F - test_draw_word_wrapping_text/screen:1')App.screen.check(y, 'abc ', 'screen:1') - replacement in source_text_tests.lua at line 366
App.screen.check(y, 'def ', 'F - test_draw_word_wrapping_text/screen:2')App.screen.check(y, 'def ', 'screen:2') - replacement in source_text_tests.lua at line 368
App.screen.check(y, 'ghi', 'F - test_draw_word_wrapping_text/screen:3')App.screen.check(y, 'ghi', 'screen:3') - edit in source_text_tests.lua at line 372
io.write('\ntest_click_on_wrapping_line') - replacement in source_text_tests.lua at line 384
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')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
io.write('\ntest_click_on_wrapping_line_takes_margins_into_account') - replacement in source_text_tests.lua at line 403
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')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
io.write('\ntest_draw_text_wrapping_within_word') - replacement in source_text_tests.lua at line 419
App.screen.check(y, 'abcd ', 'F - test_draw_text_wrapping_within_word/screen:1')App.screen.check(y, 'abcd ', 'screen:1') - replacement in source_text_tests.lua at line 421
App.screen.check(y, 'e fgh', 'F - test_draw_text_wrapping_within_word/screen:2')App.screen.check(y, 'e fgh', 'screen:2') - replacement in source_text_tests.lua at line 423
App.screen.check(y, 'ijk', 'F - test_draw_text_wrapping_within_word/screen:3')App.screen.check(y, 'ijk', 'screen:3') - edit in source_text_tests.lua at line 428
io.write('\ntest_draw_wrapping_text_containing_non_ascii') - replacement in source_text_tests.lua at line 437
App.screen.check(y, 'mad', 'F - test_draw_wrapping_text_containing_non_ascii/screen:1')App.screen.check(y, 'mad', 'screen:1') - replacement in source_text_tests.lua at line 439
App.screen.check(y, 'am I', 'F - test_draw_wrapping_text_containing_non_ascii/screen:2')App.screen.check(y, 'am I', 'screen:2') - replacement in source_text_tests.lua at line 441
App.screen.check(y, '’m a', 'F - test_draw_wrapping_text_containing_non_ascii/screen:3')App.screen.check(y, '’m a', 'screen:3') - edit in source_text_tests.lua at line 445
io.write('\ntest_click_on_wrapping_line') - replacement in source_text_tests.lua at line 456
App.screen.check(y, 'madam ', 'F - test_click_on_wrapping_line/baseline/screen:1')App.screen.check(y, 'madam ', 'baseline/screen:1') - replacement in source_text_tests.lua at line 458
App.screen.check(y, "I'm ad", 'F - test_click_on_wrapping_line/baseline/screen:2')App.screen.check(y, "I'm ad", 'baseline/screen:2') - replacement in source_text_tests.lua at line 463
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')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
io.write('\ntest_click_on_wrapping_line_rendered_from_partway_at_top_of_screen') - replacement in source_text_tests.lua at line 479
App.screen.check(y, "I'm ad", 'F - test_click_on_wrapping_line_rendered_from_partway_at_top_of_screen/baseline/screen:2')App.screen.check(y, "I'm ad", 'baseline/screen:2') - replacement in source_text_tests.lua at line 484
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')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
io.write('\ntest_click_past_end_of_wrapping_line') - replacement in source_text_tests.lua at line 500
App.screen.check(y, 'madam ', 'F - test_click_past_end_of_wrapping_line/baseline/screen:1')App.screen.check(y, 'madam ', 'baseline/screen:1') - replacement in source_text_tests.lua at line 502
App.screen.check(y, "I'm ad", 'F - test_click_past_end_of_wrapping_line/baseline/screen:2')App.screen.check(y, "I'm ad", 'baseline/screen:2') - replacement in source_text_tests.lua at line 504
App.screen.check(y, 'am', 'F - test_click_past_end_of_wrapping_line/baseline/screen:3')App.screen.check(y, 'am', 'baseline/screen:3') - replacement in source_text_tests.lua at line 509
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-pointscheck_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
io.write('\ntest_click_past_end_of_wrapping_line_containing_non_ascii') - replacement in source_text_tests.lua at line 524
App.screen.check(y, 'madam ', 'F - test_click_past_end_of_wrapping_line_containing_non_ascii/baseline/screen:1')App.screen.check(y, 'madam ', 'baseline/screen:1') - replacement in source_text_tests.lua at line 526
App.screen.check(y, 'I’m ad', 'F - test_click_past_end_of_wrapping_line_containing_non_ascii/baseline/screen:2')App.screen.check(y, 'I’m ad', 'baseline/screen:2') - replacement in source_text_tests.lua at line 528
App.screen.check(y, 'am', 'F - test_click_past_end_of_wrapping_line_containing_non_ascii/baseline/screen:3')App.screen.check(y, 'am', 'baseline/screen:3') - replacement in source_text_tests.lua at line 533
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-pointscheck_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
io.write('\ntest_click_past_end_of_word_wrapping_line') - replacement in source_text_tests.lua at line 549
App.screen.check(y, 'the quick brown fox ', 'F - test_click_past_end_of_word_wrapping_line/baseline/screen:1')App.screen.check(y, 'the quick brown fox ', 'baseline/screen:1') - replacement in source_text_tests.lua at line 554
check_eq(Editor_state.cursor1.pos, 20, 'F - test_click_past_end_of_word_wrapping_line/cursor')check_eq(Editor_state.cursor1.pos, 20, 'cursor') - edit in source_text_tests.lua at line 558
io.write('\ntest_select_text') - replacement in source_text_tests.lua at line 573
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')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
io.write('\ntest_cursor_movement_without_shift_resets_selection') - replacement in source_text_tests.lua at line 593
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')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
io.write('\ntest_edit_deletes_selection') - replacement in source_text_tests.lua at line 611
check_eq(Editor_state.lines[1].data, 'xbc', 'F - test_edit_deletes_selection')check_eq(Editor_state.lines[1].data, 'xbc', 'check') - edit in source_text_tests.lua at line 615
io.write('\ntest_edit_with_shift_key_deletes_selection') - replacement in source_text_tests.lua at line 632
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')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
io.write('\ntest_copy_does_not_reset_selection') - replacement in source_text_tests.lua at line 649
check_eq(App.clipboard, 'a', 'F - test_copy_does_not_reset_selection/clipboard')check_eq(App.clipboard, 'a', 'clipboard') - replacement in source_text_tests.lua at line 651
check(Editor_state.selection1.line, 'F - test_copy_does_not_reset_selection')check(Editor_state.selection1.line, 'check') - edit in source_text_tests.lua at line 655
io.write('\ntest_cut') - replacement in source_text_tests.lua at line 667
check_eq(App.clipboard, 'a', 'F - test_cut/clipboard')check_eq(App.clipboard, 'a', 'clipboard') - replacement in source_text_tests.lua at line 669
check_eq(Editor_state.lines[1].data, 'bc', 'F - test_cut/data')check_eq(Editor_state.lines[1].data, 'bc', 'data') - edit in source_text_tests.lua at line 673
io.write('\ntest_paste_replaces_selection') - replacement in source_text_tests.lua at line 689
check_eq(Editor_state.lines[1].data, 'xyzdef', 'F - test_paste_replaces_selection')check_eq(Editor_state.lines[1].data, 'xyzdef', 'check') - edit in source_text_tests.lua at line 693
io.write('\ntest_deleting_selection_may_scroll') - replacement in source_text_tests.lua at line 703
App.screen.check(y, 'def', 'F - test_deleting_selection_may_scroll/baseline/screen:1')App.screen.check(y, 'def', 'baseline/screen:1') - replacement in source_text_tests.lua at line 705
App.screen.check(y, 'ghi', 'F - test_deleting_selection_may_scroll/baseline/screen:2')App.screen.check(y, 'ghi', 'baseline/screen:2') - replacement in source_text_tests.lua at line 707
App.screen.check(y, 'jkl', 'F - test_deleting_selection_may_scroll/baseline/screen:3')App.screen.check(y, 'jkl', 'baseline/screen:3') - replacement in source_text_tests.lua at line 713
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')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
io.write('\ntest_edit_wrapping_text') - replacement in source_text_tests.lua at line 728
App.screen.check(y, 'abc', 'F - test_edit_wrapping_text/screen:1')App.screen.check(y, 'abc', 'screen:1') - replacement in source_text_tests.lua at line 730
App.screen.check(y, 'de', 'F - test_edit_wrapping_text/screen:2')App.screen.check(y, 'de', 'screen:2') - replacement in source_text_tests.lua at line 732
App.screen.check(y, 'fg', 'F - test_edit_wrapping_text/screen:3')App.screen.check(y, 'fg', 'screen:3') - edit in source_text_tests.lua at line 736
io.write('\ntest_insert_newline') - replacement in source_text_tests.lua at line 746
App.screen.check(y, 'abc', 'F - test_insert_newline/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 748
App.screen.check(y, 'def', 'F - test_insert_newline/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 750
App.screen.check(y, 'ghi', 'F - test_insert_newline/baseline/screen:3')App.screen.check(y, 'ghi', 'baseline/screen:3') - replacement in source_text_tests.lua at line 753
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')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
App.screen.check(y, 'a', 'F - test_insert_newline/screen:1')App.screen.check(y, 'a', 'screen:1') - replacement in source_text_tests.lua at line 759
App.screen.check(y, 'bc', 'F - test_insert_newline/screen:2')App.screen.check(y, 'bc', 'screen:2') - replacement in source_text_tests.lua at line 761
App.screen.check(y, 'def', 'F - test_insert_newline/screen:3')App.screen.check(y, 'def', 'screen:3') - edit in source_text_tests.lua at line 765
io.write('\ntest_insert_newline_at_start_of_line') - replacement in source_text_tests.lua at line 775
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')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
io.write('\ntest_insert_from_clipboard') - replacement in source_text_tests.lua at line 792
App.screen.check(y, 'abc', 'F - test_insert_from_clipboard/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 794
App.screen.check(y, 'def', 'F - test_insert_from_clipboard/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 796
App.screen.check(y, 'ghi', 'F - test_insert_from_clipboard/baseline/screen:3')App.screen.check(y, 'ghi', 'baseline/screen:3') - replacement in source_text_tests.lua at line 800
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')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
App.screen.check(y, 'axy', 'F - test_insert_from_clipboard/screen:1')App.screen.check(y, 'axy', 'screen:1') - replacement in source_text_tests.lua at line 806
App.screen.check(y, 'zbc', 'F - test_insert_from_clipboard/screen:2')App.screen.check(y, 'zbc', 'screen:2') - replacement in source_text_tests.lua at line 808
App.screen.check(y, 'def', 'F - test_insert_from_clipboard/screen:3')App.screen.check(y, 'def', 'screen:3') - edit in source_text_tests.lua at line 812
io.write('\ntest_select_text_using_mouse') - replacement in source_text_tests.lua at line 825
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')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
io.write('\ntest_select_text_using_mouse_and_shift') - replacement in source_text_tests.lua at line 849
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')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
io.write('\ntest_select_text_repeatedly_using_mouse_and_shift') - replacement in source_text_tests.lua at line 879
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')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
io.write('\ntest_cut_without_selection') - replacement in source_text_tests.lua at line 899
check_nil(Editor_state.selection1.line, 'F - test_cut_without_selection')check_nil(Editor_state.selection1.line, 'check') - edit in source_text_tests.lua at line 903
io.write('\ntest_pagedown') - replacement in source_text_tests.lua at line 913
App.screen.check(y, 'abc', 'F - test_pagedown/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 915
App.screen.check(y, 'def', 'F - test_pagedown/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 918
check_eq(Editor_state.screen_top1.line, 2, 'F - test_pagedown/screen_top')check_eq(Editor_state.cursor1.line, 2, 'F - test_pagedown/cursor')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
App.screen.check(y, 'def', 'F - test_pagedown/screen:1')App.screen.check(y, 'def', 'screen:1') - replacement in source_text_tests.lua at line 923
App.screen.check(y, 'ghi', 'F - test_pagedown/screen:2')App.screen.check(y, 'ghi', 'screen:2') - edit in source_text_tests.lua at line 927
io.write('\ntest_pagedown_skips_drawings') - replacement in source_text_tests.lua at line 936
check_eq(Editor_state.lines[2].mode, 'drawing', 'F - test_pagedown_skips_drawings/baseline/lines')check_eq(Editor_state.lines[2].mode, 'drawing', 'baseline/lines') - replacement in source_text_tests.lua at line 945
App.screen.check(y, 'abc', 'F - test_pagedown_skips_drawings/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 949
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')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
App.screen.check(y, 'def', 'F - test_pagedown_skips_drawings/screen:1')App.screen.check(y, 'def', 'screen:1') - edit in source_text_tests.lua at line 956
io.write('\ntest_pagedown_can_start_from_middle_of_long_wrapping_line') - replacement in source_text_tests.lua at line 966
App.screen.check(y, 'abc ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/baseline/screen:1')App.screen.check(y, 'abc ', 'baseline/screen:1') - replacement in source_text_tests.lua at line 968
App.screen.check(y, 'def ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/baseline/screen:2')App.screen.check(y, 'def ', 'baseline/screen:2') - replacement in source_text_tests.lua at line 970
App.screen.check(y, 'ghi ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/baseline/screen:3')App.screen.check(y, 'ghi ', 'baseline/screen:3') - replacement in source_text_tests.lua at line 973
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')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
App.screen.check(y, 'ghi ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/screen:1')App.screen.check(y, 'ghi ', 'screen:1') - replacement in source_text_tests.lua at line 978
App.screen.check(y, 'jkl ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/screen:2')App.screen.check(y, 'jkl ', 'screen:2') - replacement in source_text_tests.lua at line 980
App.screen.check(y, 'mno ', 'F - test_pagedown_can_start_from_middle_of_long_wrapping_line/screen:3')App.screen.check(y, 'mno ', 'screen:3') - edit in source_text_tests.lua at line 984
io.write('\ntest_pagedown_never_moves_up') - replacement in source_text_tests.lua at line 995
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')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
io.write('\ntest_down_arrow_moves_cursor') - replacement in source_text_tests.lua at line 1010
App.screen.check(y, 'abc', 'F - test_down_arrow_moves_cursor/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1012
App.screen.check(y, 'def', 'F - test_down_arrow_moves_cursor/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1014
App.screen.check(y, 'ghi', 'F - test_down_arrow_moves_cursor/baseline/screen:3')App.screen.check(y, 'ghi', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1017
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')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
App.screen.check(y, 'abc', 'F - test_down_arrow_moves_cursor/screen:1')App.screen.check(y, 'abc', 'screen:1') - replacement in source_text_tests.lua at line 1023
App.screen.check(y, 'def', 'F - test_down_arrow_moves_cursor/screen:2')App.screen.check(y, 'def', 'screen:2') - replacement in source_text_tests.lua at line 1025
App.screen.check(y, 'ghi', 'F - test_down_arrow_moves_cursor/screen:3')App.screen.check(y, 'ghi', 'screen:3') - edit in source_text_tests.lua at line 1029
io.write('\ntest_down_arrow_scrolls_down_by_one_line') - replacement in source_text_tests.lua at line 1039
App.screen.check(y, 'abc', 'F - test_down_arrow_scrolls_down_by_one_line/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1041
App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_line/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1043
App.screen.check(y, 'ghi', 'F - test_down_arrow_scrolls_down_by_one_line/baseline/screen:3')App.screen.check(y, 'ghi', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1046
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')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
App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_line/screen:1')App.screen.check(y, 'def', 'screen:1') - replacement in source_text_tests.lua at line 1051
App.screen.check(y, 'ghi', 'F - test_down_arrow_scrolls_down_by_one_line/screen:2')App.screen.check(y, 'ghi', 'screen:2') - replacement in source_text_tests.lua at line 1053
App.screen.check(y, 'jkl', 'F - test_down_arrow_scrolls_down_by_one_line/screen:3')App.screen.check(y, 'jkl', 'screen:3') - edit in source_text_tests.lua at line 1057
io.write('\ntest_down_arrow_scrolls_down_by_one_screen_line') - replacement in source_text_tests.lua at line 1067
App.screen.check(y, 'abc', 'F - test_down_arrow_scrolls_down_by_one_screen_line/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1069
App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_screen_line/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1071
App.screen.check(y, 'ghi ', 'F - test_down_arrow_scrolls_down_by_one_screen_line/baseline/screen:3') -- line wrapping includes trailing whitespaceApp.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace - replacement in source_text_tests.lua at line 1074
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')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
App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_screen_line/screen:1')App.screen.check(y, 'def', 'screen:1') - replacement in source_text_tests.lua at line 1080
App.screen.check(y, 'ghi ', 'F - test_down_arrow_scrolls_down_by_one_screen_line/screen:2')App.screen.check(y, 'ghi ', 'screen:2') - replacement in source_text_tests.lua at line 1082
App.screen.check(y, 'jkl', 'F - test_down_arrow_scrolls_down_by_one_screen_line/screen:3')App.screen.check(y, 'jkl', 'screen:3') - edit in source_text_tests.lua at line 1086
io.write('\ntest_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word') - replacement in source_text_tests.lua at line 1096
App.screen.check(y, 'abc', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1098
App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1100
App.screen.check(y, 'ghij', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/baseline/screen:3')App.screen.check(y, 'ghij', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1103
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')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
App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/screen:1')App.screen.check(y, 'def', 'screen:1') - replacement in source_text_tests.lua at line 1109
App.screen.check(y, 'ghij', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/screen:2')App.screen.check(y, 'ghij', 'screen:2') - replacement in source_text_tests.lua at line 1111
App.screen.check(y, 'kl', 'F - test_down_arrow_scrolls_down_by_one_screen_line_after_splitting_within_word/screen:3')App.screen.check(y, 'kl', 'screen:3') - edit in source_text_tests.lua at line 1115
io.write('\ntest_pagedown_followed_by_down_arrow_does_not_scroll_screen_up') - replacement in source_text_tests.lua at line 1124
App.screen.check(y, 'abc', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1126
App.screen.check(y, 'def', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1128
App.screen.check(y, 'ghij', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/baseline/screen:3')App.screen.check(y, 'ghij', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1131
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')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
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')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
App.screen.check(y, 'ghij', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/screen:1')App.screen.check(y, 'ghij', 'screen:1') - replacement in source_text_tests.lua at line 1142
App.screen.check(y, 'kl', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/screen:2')App.screen.check(y, 'kl', 'screen:2') - replacement in source_text_tests.lua at line 1144
App.screen.check(y, 'mno', 'F - test_pagedown_followed_by_down_arrow_does_not_scroll_screen_up/screen:3')App.screen.check(y, 'mno', 'screen:3') - edit in source_text_tests.lua at line 1148
io.write('\ntest_up_arrow_moves_cursor') - replacement in source_text_tests.lua at line 1158
App.screen.check(y, 'abc', 'F - test_up_arrow_moves_cursor/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1160
App.screen.check(y, 'def', 'F - test_up_arrow_moves_cursor/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1162
App.screen.check(y, 'ghi', 'F - test_up_arrow_moves_cursor/baseline/screen:3')App.screen.check(y, 'ghi', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1165
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')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
App.screen.check(y, 'abc', 'F - test_up_arrow_moves_cursor/screen:1')App.screen.check(y, 'abc', 'screen:1') - replacement in source_text_tests.lua at line 1171
App.screen.check(y, 'def', 'F - test_up_arrow_moves_cursor/screen:2')App.screen.check(y, 'def', 'screen:2') - replacement in source_text_tests.lua at line 1173
App.screen.check(y, 'ghi', 'F - test_up_arrow_moves_cursor/screen:3')App.screen.check(y, 'ghi', 'screen:3') - edit in source_text_tests.lua at line 1177
io.write('\ntest_up_arrow_scrolls_up_by_one_line') - replacement in source_text_tests.lua at line 1187
App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_by_one_line/baseline/screen:1')App.screen.check(y, 'def', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1189
App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_by_one_line/baseline/screen:2')App.screen.check(y, 'ghi', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1191
App.screen.check(y, 'jkl', 'F - test_up_arrow_scrolls_up_by_one_line/baseline/screen:3')App.screen.check(y, 'jkl', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1194
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')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
App.screen.check(y, 'abc', 'F - test_up_arrow_scrolls_up_by_one_line/screen:1')App.screen.check(y, 'abc', 'screen:1') - replacement in source_text_tests.lua at line 1199
App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_by_one_line/screen:2')App.screen.check(y, 'def', 'screen:2') - replacement in source_text_tests.lua at line 1201
App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_by_one_line/screen:3')App.screen.check(y, 'ghi', 'screen:3') - edit in source_text_tests.lua at line 1205
io.write('\ntest_up_arrow_scrolls_up_by_one_screen_line') - replacement in source_text_tests.lua at line 1215
App.screen.check(y, 'jkl', 'F - test_up_arrow_scrolls_up_by_one_screen_line/baseline/screen:1')App.screen.check(y, 'jkl', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1217
App.screen.check(y, 'mno', 'F - test_up_arrow_scrolls_up_by_one_screen_line/baseline/screen:2')App.screen.check(y, 'mno', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1221
App.screen.check(y, 'ghi ', 'F - test_up_arrow_scrolls_up_by_one_screen_line/screen:1')App.screen.check(y, 'ghi ', 'screen:1') - replacement in source_text_tests.lua at line 1223
App.screen.check(y, 'jkl', 'F - test_up_arrow_scrolls_up_by_one_screen_line/screen:2')App.screen.check(y, 'jkl', 'screen:2') - replacement in source_text_tests.lua at line 1225
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')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
io.write('\ntest_up_arrow_scrolls_up_to_final_screen_line') - replacement in source_text_tests.lua at line 1243
App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_to_final_screen_line/baseline/screen:1')App.screen.check(y, 'ghi', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1245
App.screen.check(y, 'jkl', 'F - test_up_arrow_scrolls_up_to_final_screen_line/baseline/screen:2')App.screen.check(y, 'jkl', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1247
App.screen.check(y, 'mno', 'F - test_up_arrow_scrolls_up_to_final_screen_line/baseline/screen:3')App.screen.check(y, 'mno', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1251
App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_to_final_screen_line/screen:1')App.screen.check(y, 'def', 'screen:1') - replacement in source_text_tests.lua at line 1253
App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_to_final_screen_line/screen:2')App.screen.check(y, 'ghi', 'screen:2') - replacement in source_text_tests.lua at line 1255
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')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
io.write('\ntest_up_arrow_scrolls_up_to_empty_line') - replacement in source_text_tests.lua at line 1273
App.screen.check(y, 'abc', 'F - test_up_arrow_scrolls_up_to_empty_line/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1275
App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_to_empty_line/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1277
App.screen.check(y, 'ghi', 'F - test_up_arrow_scrolls_up_to_empty_line/baseline/screen:3')App.screen.check(y, 'ghi', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1280
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')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
App.screen.check(y, 'abc', 'F - test_up_arrow_scrolls_up_to_empty_line/screen:2')App.screen.check(y, 'abc', 'screen:2') - replacement in source_text_tests.lua at line 1287
App.screen.check(y, 'def', 'F - test_up_arrow_scrolls_up_to_empty_line/screen:3')App.screen.check(y, 'def', 'screen:3') - edit in source_text_tests.lua at line 1291
io.write('\ntest_pageup') - replacement in source_text_tests.lua at line 1301
App.screen.check(y, 'def', 'F - test_pageup/baseline/screen:1')App.screen.check(y, 'def', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1303
App.screen.check(y, 'ghi', 'F - test_pageup/baseline/screen:2')App.screen.check(y, 'ghi', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1306
check_eq(Editor_state.screen_top1.line, 1, 'F - test_pageup/screen_top')check_eq(Editor_state.cursor1.line, 1, 'F - test_pageup/cursor')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
App.screen.check(y, 'abc', 'F - test_pageup/screen:1')App.screen.check(y, 'abc', 'screen:1') - replacement in source_text_tests.lua at line 1311
App.screen.check(y, 'def', 'F - test_pageup/screen:2')App.screen.check(y, 'def', 'screen:2') - edit in source_text_tests.lua at line 1315
io.write('\ntest_pageup_scrolls_up_by_screen_line') - replacement in source_text_tests.lua at line 1325
App.screen.check(y, 'ghi', 'F - test_pageup_scrolls_up_by_screen_line/baseline/screen:1')App.screen.check(y, 'ghi', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1327
App.screen.check(y, 'jkl', 'F - test_pageup_scrolls_up_by_screen_line/baseline/screen:2')App.screen.check(y, 'jkl', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1329
App.screen.check(y, 'mno', 'F - test_pageup_scrolls_up_by_screen_line/baseline/screen:3') -- line wrapping includes trailing whitespaceApp.screen.check(y, 'mno', 'baseline/screen:3') -- line wrapping includes trailing whitespace - replacement in source_text_tests.lua at line 1332
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')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
App.screen.check(y, 'abc ', 'F - test_pageup_scrolls_up_by_screen_line/screen:1')App.screen.check(y, 'abc ', 'screen:1') - replacement in source_text_tests.lua at line 1338
App.screen.check(y, 'def', 'F - test_pageup_scrolls_up_by_screen_line/screen:2')App.screen.check(y, 'def', 'screen:2') - replacement in source_text_tests.lua at line 1340
App.screen.check(y, 'ghi', 'F - test_pageup_scrolls_up_by_screen_line/screen:3')App.screen.check(y, 'ghi', 'screen:3') - edit in source_text_tests.lua at line 1344
io.write('\ntest_pageup_scrolls_up_from_middle_screen_line') - replacement in source_text_tests.lua at line 1354
App.screen.check(y, 'jkl', 'F - test_pageup_scrolls_up_from_middle_screen_line/baseline/screen:2')App.screen.check(y, 'jkl', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1356
App.screen.check(y, 'mno', 'F - test_pageup_scrolls_up_from_middle_screen_line/baseline/screen:3') -- line wrapping includes trailing whitespaceApp.screen.check(y, 'mno', 'baseline/screen:3') -- line wrapping includes trailing whitespace - replacement in source_text_tests.lua at line 1359
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')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
App.screen.check(y, 'abc ', 'F - test_pageup_scrolls_up_from_middle_screen_line/screen:1')App.screen.check(y, 'abc ', 'screen:1') - replacement in source_text_tests.lua at line 1365
App.screen.check(y, 'def', 'F - test_pageup_scrolls_up_from_middle_screen_line/screen:2')App.screen.check(y, 'def', 'screen:2') - replacement in source_text_tests.lua at line 1367
App.screen.check(y, 'ghi ', 'F - test_pageup_scrolls_up_from_middle_screen_line/screen:3')App.screen.check(y, 'ghi ', 'screen:3') - edit in source_text_tests.lua at line 1371
io.write('\ntest_enter_on_bottom_line_scrolls_down') - replacement in source_text_tests.lua at line 1381
App.screen.check(y, 'abc', 'F - test_enter_on_bottom_line_scrolls_down/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1383
App.screen.check(y, 'def', 'F - test_enter_on_bottom_line_scrolls_down/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1385
App.screen.check(y, 'ghi', 'F - test_enter_on_bottom_line_scrolls_down/baseline/screen:3')App.screen.check(y, 'ghi', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1388
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')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
App.screen.check(y, 'def', 'F - test_enter_on_bottom_line_scrolls_down/screen:1')App.screen.check(y, 'def', 'screen:1') - replacement in source_text_tests.lua at line 1394
App.screen.check(y, 'g', 'F - test_enter_on_bottom_line_scrolls_down/screen:2')App.screen.check(y, 'g', 'screen:2') - replacement in source_text_tests.lua at line 1396
App.screen.check(y, 'hi', 'F - test_enter_on_bottom_line_scrolls_down/screen:3')App.screen.check(y, 'hi', 'screen:3') - edit in source_text_tests.lua at line 1400
io.write('\ntest_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom') - replacement in source_text_tests.lua at line 1410
App.screen.check(y, 'jkl', 'F - test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom/baseline/screen:1')App.screen.check(y, 'jkl', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1413
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')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
App.screen.check(y, 'j', 'F - test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom/screen:1')App.screen.check(y, 'j', 'screen:1') - replacement in source_text_tests.lua at line 1419
App.screen.check(y, 'kl', 'F - test_enter_on_final_line_avoids_scrolling_down_when_not_at_bottom/screen:2')App.screen.check(y, 'kl', 'screen:2') - edit in source_text_tests.lua at line 1423
io.write('\ntest_inserting_text_on_final_line_avoids_scrolling_down_when_not_at_bottom') - replacement in source_text_tests.lua at line 1434
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')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
App.screen.check(y, 'a', 'F - test_inserting_text_on_final_line_avoids_scrolling_down_when_not_at_bottom/screen:1')App.screen.check(y, 'a', 'screen:1') - edit in source_text_tests.lua at line 1442
io.write('\ntest_typing_on_bottom_line_scrolls_down') - replacement in source_text_tests.lua at line 1452
App.screen.check(y, 'abc', 'F - test_typing_on_bottom_line_scrolls_down/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1454
App.screen.check(y, 'def', 'F - test_typing_on_bottom_line_scrolls_down/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1456
App.screen.check(y, 'ghi', 'F - test_typing_on_bottom_line_scrolls_down/baseline/screen:3')App.screen.check(y, 'ghi', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1461
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')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
App.screen.check(y, 'def', 'F - test_typing_on_bottom_line_scrolls_down/screen:1')App.screen.check(y, 'def', 'screen:1') - replacement in source_text_tests.lua at line 1467
App.screen.check(y, 'ghij', 'F - test_typing_on_bottom_line_scrolls_down/screen:2')App.screen.check(y, 'ghij', 'screen:2') - replacement in source_text_tests.lua at line 1469
App.screen.check(y, 'kl', 'F - test_typing_on_bottom_line_scrolls_down/screen:3')App.screen.check(y, 'kl', 'screen:3') - edit in source_text_tests.lua at line 1473
io.write('\ntest_left_arrow_scrolls_up_in_wrapped_line') - replacement in source_text_tests.lua at line 1484
App.screen.check(y, 'jkl', 'F - test_left_arrow_scrolls_up_in_wrapped_line/baseline/screen:1')App.screen.check(y, 'jkl', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1486
App.screen.check(y, 'mno', 'F - test_left_arrow_scrolls_up_in_wrapped_line/baseline/screen:2')App.screen.check(y, 'mno', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1490
App.screen.check(y, 'ghi ', 'F - test_left_arrow_scrolls_up_in_wrapped_line/screen:1')App.screen.check(y, 'ghi ', 'screen:1') - replacement in source_text_tests.lua at line 1492
App.screen.check(y, 'jkl', 'F - test_left_arrow_scrolls_up_in_wrapped_line/screen:2')App.screen.check(y, 'jkl', 'screen:2') - replacement in source_text_tests.lua at line 1494
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')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
io.write('\ntest_right_arrow_scrolls_down_in_wrapped_line') - replacement in source_text_tests.lua at line 1513
App.screen.check(y, 'abc', 'F - test_right_arrow_scrolls_down_in_wrapped_line/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1515
App.screen.check(y, 'def', 'F - test_right_arrow_scrolls_down_in_wrapped_line/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1517
App.screen.check(y, 'ghi ', 'F - test_right_arrow_scrolls_down_in_wrapped_line/baseline/screen:3') -- line wrapping includes trailing whitespaceApp.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace - replacement in source_text_tests.lua at line 1520
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')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
App.screen.check(y, 'def', 'F - test_right_arrow_scrolls_down_in_wrapped_line/screen:1')App.screen.check(y, 'def', 'screen:1') - replacement in source_text_tests.lua at line 1526
App.screen.check(y, 'ghi ', 'F - test_right_arrow_scrolls_down_in_wrapped_line/screen:2')App.screen.check(y, 'ghi ', 'screen:2') - replacement in source_text_tests.lua at line 1528
App.screen.check(y, 'jkl', 'F - test_right_arrow_scrolls_down_in_wrapped_line/screen:3')App.screen.check(y, 'jkl', 'screen:3') - edit in source_text_tests.lua at line 1532
io.write('\ntest_home_scrolls_up_in_wrapped_line') - replacement in source_text_tests.lua at line 1543
App.screen.check(y, 'jkl', 'F - test_home_scrolls_up_in_wrapped_line/baseline/screen:1')App.screen.check(y, 'jkl', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1545
App.screen.check(y, 'mno', 'F - test_home_scrolls_up_in_wrapped_line/baseline/screen:2')App.screen.check(y, 'mno', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1549
App.screen.check(y, 'ghi ', 'F - test_home_scrolls_up_in_wrapped_line/screen:1')App.screen.check(y, 'ghi ', 'screen:1') - replacement in source_text_tests.lua at line 1551
App.screen.check(y, 'jkl', 'F - test_home_scrolls_up_in_wrapped_line/screen:2')App.screen.check(y, 'jkl', 'screen:2') - replacement in source_text_tests.lua at line 1553
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')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
io.write('\ntest_end_scrolls_down_in_wrapped_line') - replacement in source_text_tests.lua at line 1572
App.screen.check(y, 'abc', 'F - test_end_scrolls_down_in_wrapped_line/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1574
App.screen.check(y, 'def', 'F - test_end_scrolls_down_in_wrapped_line/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1576
App.screen.check(y, 'ghi ', 'F - test_end_scrolls_down_in_wrapped_line/baseline/screen:3') -- line wrapping includes trailing whitespaceApp.screen.check(y, 'ghi ', 'baseline/screen:3') -- line wrapping includes trailing whitespace - replacement in source_text_tests.lua at line 1579
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')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
App.screen.check(y, 'def', 'F - test_end_scrolls_down_in_wrapped_line/screen:1')App.screen.check(y, 'def', 'screen:1') - replacement in source_text_tests.lua at line 1585
App.screen.check(y, 'ghi ', 'F - test_end_scrolls_down_in_wrapped_line/screen:2')App.screen.check(y, 'ghi ', 'screen:2') - replacement in source_text_tests.lua at line 1587
App.screen.check(y, 'jkl', 'F - test_end_scrolls_down_in_wrapped_line/screen:3')App.screen.check(y, 'jkl', 'screen:3') - edit in source_text_tests.lua at line 1592
io.write('\ntest_position_cursor_on_recently_edited_wrapping_line') - replacement in source_text_tests.lua at line 1601
App.screen.check(y, 'abc def ghi ', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline1/screen:1')App.screen.check(y, 'abc def ghi ', 'baseline1/screen:1') - replacement in source_text_tests.lua at line 1603
App.screen.check(y, 'jkl mno pqr ', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline1/screen:2')App.screen.check(y, 'jkl mno pqr ', 'baseline1/screen:2') - replacement in source_text_tests.lua at line 1605
App.screen.check(y, 'xyz', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline1/screen:3')App.screen.check(y, 'xyz', 'baseline1/screen:3') - replacement in source_text_tests.lua at line 1610
check_eq(Editor_state.cursor1.pos, 28, 'F - test_position_cursor_on_recently_edited_wrapping_line/cursor:pos')check_eq(Editor_state.cursor1.pos, 28, 'cursor:pos') - replacement in source_text_tests.lua at line 1612
App.screen.check(y, 'abc def ghi ', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline2/screen:1')App.screen.check(y, 'abc def ghi ', 'baseline2/screen:1') - replacement in source_text_tests.lua at line 1614
App.screen.check(y, 'jkl mno pqr ', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline2/screen:2')App.screen.check(y, 'jkl mno pqr ', 'baseline2/screen:2') - replacement in source_text_tests.lua at line 1616
App.screen.check(y, 'stu', 'F - test_position_cursor_on_recently_edited_wrapping_line/baseline2/screen:3')App.screen.check(y, 'stu', 'baseline2/screen:3') - replacement in source_text_tests.lua at line 1620
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')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
io.write('\ntest_backspace_can_scroll_up') - replacement in source_text_tests.lua at line 1635
App.screen.check(y, 'def', 'F - test_backspace_can_scroll_up/baseline/screen:1')App.screen.check(y, 'def', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1637
App.screen.check(y, 'ghi', 'F - test_backspace_can_scroll_up/baseline/screen:2')App.screen.check(y, 'ghi', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1639
App.screen.check(y, 'jkl', 'F - test_backspace_can_scroll_up/baseline/screen:3')App.screen.check(y, 'jkl', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1642
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')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
App.screen.check(y, 'abcdef', 'F - test_backspace_can_scroll_up/screen:1')App.screen.check(y, 'abcdef', 'screen:1') - replacement in source_text_tests.lua at line 1647
App.screen.check(y, 'ghi', 'F - test_backspace_can_scroll_up/screen:2')App.screen.check(y, 'ghi', 'screen:2') - replacement in source_text_tests.lua at line 1649
App.screen.check(y, 'jkl', 'F - test_backspace_can_scroll_up/screen:3')App.screen.check(y, 'jkl', 'screen:3') - edit in source_text_tests.lua at line 1653
io.write('\ntest_backspace_can_scroll_up_screen_line') - replacement in source_text_tests.lua at line 1663
App.screen.check(y, 'jkl', 'F - test_backspace_can_scroll_up_screen_line/baseline/screen:1')App.screen.check(y, 'jkl', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1665
App.screen.check(y, 'mno', 'F - test_backspace_can_scroll_up_screen_line/baseline/screen:2')App.screen.check(y, 'mno', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1669
App.screen.check(y, 'ghij', 'F - test_backspace_can_scroll_up_screen_line/screen:1')App.screen.check(y, 'ghij', 'screen:1') - replacement in source_text_tests.lua at line 1671
App.screen.check(y, 'kl', 'F - test_backspace_can_scroll_up_screen_line/screen:2')App.screen.check(y, 'kl', 'screen:2') - replacement in source_text_tests.lua at line 1673
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')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
io.write('\ntest_backspace_past_line_boundary') - replacement in source_text_tests.lua at line 1689
check_eq(Editor_state.lines[1].data, 'abcdef', "F - test_backspace_past_line_boundary")check_eq(Editor_state.lines[1].data, 'abcdef', 'check') - edit in source_text_tests.lua at line 1696
io.write('\ntest_backspace_over_selection') - replacement in source_text_tests.lua at line 1705
check_eq(Editor_state.lines[1].data, 'bc', "F - test_backspace_over_selection/data")check_eq(Editor_state.lines[1].data, 'bc', 'data') - replacement in source_text_tests.lua at line 1707
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")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
check_nil(Editor_state.selection1.line, "F - test_backspace_over_selection/selection")check_nil(Editor_state.selection1.line, 'selection') - edit in source_text_tests.lua at line 1714
io.write('\ntest_backspace_over_selection_reverse') - replacement in source_text_tests.lua at line 1723
check_eq(Editor_state.lines[1].data, 'bc', "F - test_backspace_over_selection_reverse/data")check_eq(Editor_state.lines[1].data, 'bc', 'data') - replacement in source_text_tests.lua at line 1725
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")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
check_nil(Editor_state.selection1.line, "F - test_backspace_over_selection_reverse/selection")check_nil(Editor_state.selection1.line, 'selection') - edit in source_text_tests.lua at line 1732
io.write('\ntest_backspace_over_multiple_lines') - replacement in source_text_tests.lua at line 1741
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")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
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")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
check_nil(Editor_state.selection1.line, "F - test_backspace_over_multiple_lines/selection")check_nil(Editor_state.selection1.line, 'selection') - edit in source_text_tests.lua at line 1751
io.write('\ntest_backspace_to_end_of_line') - replacement in source_text_tests.lua at line 1760
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")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
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")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
check_nil(Editor_state.selection1.line, "F - test_backspace_to_start_of_line/selection")check_nil(Editor_state.selection1.line, 'selection') - edit in source_text_tests.lua at line 1770
io.write('\ntest_backspace_to_start_of_line') - replacement in source_text_tests.lua at line 1779
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")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
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")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
check_nil(Editor_state.selection1.line, "F - test_backspace_to_start_of_line/selection")check_nil(Editor_state.selection1.line, 'selection') - edit in source_text_tests.lua at line 1789
io.write('\ntest_undo_insert_text') - replacement in source_text_tests.lua at line 1799
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')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
App.screen.check(y, 'abc', 'F - test_undo_insert_text/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1806
App.screen.check(y, 'defg', 'F - test_undo_insert_text/baseline/screen:2')App.screen.check(y, 'defg', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1808
App.screen.check(y, 'xyz', 'F - test_undo_insert_text/baseline/screen:3')App.screen.check(y, 'xyz', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1811
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')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
App.screen.check(y, 'abc', 'F - test_undo_insert_text/screen:1')App.screen.check(y, 'abc', 'screen:1') - replacement in source_text_tests.lua at line 1818
App.screen.check(y, 'def', 'F - test_undo_insert_text/screen:2')App.screen.check(y, 'def', 'screen:2') - replacement in source_text_tests.lua at line 1820
App.screen.check(y, 'xyz', 'F - test_undo_insert_text/screen:3')App.screen.check(y, 'xyz', 'screen:3') - edit in source_text_tests.lua at line 1824
io.write('\ntest_undo_delete_text') - replacement in source_text_tests.lua at line 1833
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')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
App.screen.check(y, 'abc', 'F - test_undo_delete_text/baseline/screen:1')App.screen.check(y, 'abc', 'baseline/screen:1') - replacement in source_text_tests.lua at line 1840
App.screen.check(y, 'def', 'F - test_undo_delete_text/baseline/screen:2')App.screen.check(y, 'def', 'baseline/screen:2') - replacement in source_text_tests.lua at line 1842
App.screen.check(y, 'xyz', 'F - test_undo_delete_text/baseline/screen:3')App.screen.check(y, 'xyz', 'baseline/screen:3') - replacement in source_text_tests.lua at line 1846
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')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
App.screen.check(y, 'abc', 'F - test_undo_delete_text/screen:1')App.screen.check(y, 'abc', 'screen:1') - replacement in source_text_tests.lua at line 1855
App.screen.check(y, 'defg', 'F - test_undo_delete_text/screen:2')App.screen.check(y, 'defg', 'screen:2') - replacement in source_text_tests.lua at line 1857
App.screen.check(y, 'xyz', 'F - test_undo_delete_text/screen:3')App.screen.check(y, 'xyz', 'screen:3') - edit in source_text_tests.lua at line 1861
io.write('\ntest_undo_restores_selection') - replacement in source_text_tests.lua at line 1873
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')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
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')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
io.write('\ntest_search') - replacement in source_text_tests.lua at line 1896
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')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
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')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
io.write('\ntest_search_upwards') - replacement in source_text_tests.lua at line 1924
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')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
io.write('\ntest_search_wrap') - replacement in source_text_tests.lua at line 1942
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')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
io.write('\ntest_search_wrap_upwards') - replacement in source_text_tests.lua at line 1960
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')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
io.write('\ntest_resize_window') - replacement in source_tests.lua at line 6
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')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')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
io.write('\ntest_show_log_browser_side') - replacement in source_tests.lua at line 30
check(not Show_log_browser_side, 'F - test_show_log_browser_side/baseline')check(not Show_log_browser_side, 'baseline') - replacement in source_tests.lua at line 34
check(Show_log_browser_side, 'F - test_show_log_browser_side')check(Show_log_browser_side, 'check') - edit in source_tests.lua at line 38
io.write('\ntest_show_log_browser_side_doubles_window_width_if_possible') - replacement in source_tests.lua at line 59
check_eq(App.screen.width, 600, 'F - test_show_log_browser_side_doubles_window_width_if_possible/display:width')check_eq(App.screen.width, 600, 'display:width') - replacement in source_tests.lua at line 61
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')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
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')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
io.write('\ntest_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width') - replacement in source_tests.lua at line 89
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')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
io.write('\ntest_drop_file') - replacement in source_tests.lua at line 116
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')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
io.write('\ntest_drop_file_saves_previous') - replacement in source_tests.lua at line 149
check_eq(App.filesystem['foo'], 'abc\ndef\n', 'F - test_drop_file_saves_previous')check_eq(App.filesystem['foo'], 'abc\ndef\n', 'check') - edit in run_tests.lua at line 40
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
edit.draw(Editor_state) - edit in drawing_tests.lua at line 6
io.write('\ntest_creating_drawing_saves') - edit in drawing_tests.lua at line 16
check_nil(App.filesystem['foo'], 'F - test_creating_drawing_saves/early')-- wait until save - resurrect zombie in drawing_tests.lua at line 16
check_nil(App.filesystem['foo'], 'early') - resolve order conflict in drawing_tests.lua at line 16
- edit in drawing_tests.lua at line 17
-- wait until save - replacement in drawing_tests.lua at line 21
check_eq(App.filesystem['foo'], '```lines\n```\n\n', 'F - test_creating_drawing_saves')check_eq(App.filesystem['foo'], '```lines\n```\n\n', 'check') - edit in drawing_tests.lua at line 25
io.write('\ntest_draw_line') - edit in drawing_tests.lua at line 33
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 lineedit.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 savecheck_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
- edit in drawing_tests.lua at line 38
-- draw a lineedit.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
local p1 = drawing.points[drawing.shapes[1].p1]local p2 = drawing.points[drawing.shapes[1].p2] - edit in drawing_tests.lua at line 51
-- wait until save - replacement in drawing_tests.lua at line 59
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')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
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')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
io.write('\ntest_draw_horizontal_line') - replacement in drawing_tests.lua at line 78
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')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
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')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
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')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
io.write('\ntest_draw_circle') - replacement in drawing_tests.lua at line 106
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')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
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')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
check_eq(center.x, 35, 'F - test_draw_circle/center:x')check_eq(center.y, 36, 'F - test_draw_circle/center:y')check_eq(center.x, 35, 'center:x')check_eq(center.y, 36, 'center:y') - edit in drawing_tests.lua at line 127
io.write('\ntest_cancel_stroke') - replacement in drawing_tests.lua at line 135
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')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
check_eq(#drawing.shapes, 0, 'F - test_cancel_stroke/#shapes')check_eq(#drawing.shapes, 0, '#shapes') - edit in drawing_tests.lua at line 150
io.write('\ntest_keys_do_not_affect_shape_when_mouse_up') - replacement in drawing_tests.lua at line 161
check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_keys_do_not_affect_shape_when_mouse_up/drawing_mode')check_eq(Editor_state.current_drawing_mode, 'line', 'drawing_mode') - edit in drawing_tests.lua at line 166
io.write('\ntest_draw_circle_mid_stroke') - replacement in drawing_tests.lua at line 173
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')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
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')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
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')check_eq(center.x, 35, 'center:x')check_eq(center.y, 36, 'center:y') - edit in drawing_tests.lua at line 194
io.write('\ntest_draw_arc') - replacement in drawing_tests.lua at line 201
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')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
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')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
check_eq(arc.radius, 30, 'F - test_draw_arc/radius')check_eq(arc.radius, 30, 'radius') - replacement in drawing_tests.lua at line 218
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')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
io.write('\ntest_draw_polygon') - replacement in drawing_tests.lua at line 231
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')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
check_eq(#drawing.shapes, 1, 'F - test_draw_polygon/#shapes')check_eq(#drawing.points, 3, 'F - test_draw_polygon/vertices')check_eq(#drawing.shapes, 1, '#shapes')check_eq(#drawing.points, 3, 'vertices') - replacement in drawing_tests.lua at line 249
check_eq(shape.mode, 'polygon', 'F - test_draw_polygon/shape_mode')check_eq(#shape.vertices, 3, 'F - test_draw_polygon/vertices')check_eq(shape.mode, 'polygon', 'shape_mode')check_eq(#shape.vertices, 3, 'vertices') - replacement in drawing_tests.lua at line 252
check_eq(p.x, 5, 'F - test_draw_polygon/p1:x')check_eq(p.y, 6, 'F - test_draw_polygon/p1:y')check_eq(p.x, 5, 'p1:x')check_eq(p.y, 6, 'p1:y') - replacement in drawing_tests.lua at line 255
check_eq(p.x, 65, 'F - test_draw_polygon/p2:x')check_eq(p.y, 36, 'F - test_draw_polygon/p2:y')check_eq(p.x, 65, 'p2:x')check_eq(p.y, 36, 'p2:y') - replacement in drawing_tests.lua at line 258
check_eq(p.x, 35, 'F - test_draw_polygon/p3:x')check_eq(p.y, 26, 'F - test_draw_polygon/p3:y')check_eq(p.x, 35, 'p3:x')check_eq(p.y, 26, 'p3:y') - edit in drawing_tests.lua at line 263
io.write('\ntest_draw_rectangle') - replacement in drawing_tests.lua at line 269
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')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
check_eq(#drawing.shapes, 1, 'F - test_draw_rectangle/#shapes')check_eq(#drawing.points, 5, 'F - test_draw_rectangle/#points') -- currently includes every point addedcheck_eq(#drawing.shapes, 1, '#shapes')check_eq(#drawing.points, 5, '#points') -- currently includes every point added - replacement in drawing_tests.lua at line 290
check_eq(shape.mode, 'rectangle', 'F - test_draw_rectangle/shape_mode')check_eq(#shape.vertices, 4, 'F - test_draw_rectangle/vertices')check_eq(shape.mode, 'rectangle', 'shape_mode')check_eq(#shape.vertices, 4, 'vertices') - replacement in drawing_tests.lua at line 293
check_eq(p.x, 35, 'F - test_draw_rectangle/p1:x')check_eq(p.y, 36, 'F - test_draw_rectangle/p1:y')check_eq(p.x, 35, 'p1:x')check_eq(p.y, 36, 'p1:y') - replacement in drawing_tests.lua at line 296
check_eq(p.x, 75, 'F - test_draw_rectangle/p2:x')check_eq(p.y, 76, 'F - test_draw_rectangle/p2:y')check_eq(p.x, 75, 'p2:x')check_eq(p.y, 76, 'p2:y') - replacement in drawing_tests.lua at line 299
check_eq(p.x, 70, 'F - test_draw_rectangle/p3:x')check_eq(p.y, 81, 'F - test_draw_rectangle/p3:y')check_eq(p.x, 70, 'p3:x')check_eq(p.y, 81, 'p3:y') - replacement in drawing_tests.lua at line 302
check_eq(p.x, 30, 'F - test_draw_rectangle/p4:x')check_eq(p.y, 41, 'F - test_draw_rectangle/p4:y')check_eq(p.x, 30, 'p4:x')check_eq(p.y, 41, 'p4:y') - edit in drawing_tests.lua at line 307
io.write('\ntest_draw_rectangle_intermediate') - replacement in drawing_tests.lua at line 313
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')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
check_eq(#drawing.points, 3, 'F - test_draw_rectangle_intermediate/#points') -- currently includes every point addedcheck_eq(#drawing.points, 3, '#points') -- currently includes every point added - replacement in drawing_tests.lua at line 331
check_eq(pending.mode, 'rectangle', 'F - test_draw_rectangle_intermediate/shape_mode')check_eq(#pending.vertices, 2, 'F - test_draw_rectangle_intermediate/vertices')check_eq(pending.mode, 'rectangle', 'shape_mode')check_eq(#pending.vertices, 2, 'vertices') - replacement in drawing_tests.lua at line 334
check_eq(p.x, 35, 'F - test_draw_rectangle_intermediate/p1:x')check_eq(p.y, 36, 'F - test_draw_rectangle_intermediate/p1:y')check_eq(p.x, 35, 'p1:x')check_eq(p.y, 36, 'p1:y') - replacement in drawing_tests.lua at line 337
check_eq(p.x, 75, 'F - test_draw_rectangle_intermediate/p2:x')check_eq(p.y, 76, 'F - test_draw_rectangle_intermediate/p2:y')check_eq(p.x, 75, 'p2:x')check_eq(p.y, 76, 'p2:y') - edit in drawing_tests.lua at line 343
io.write('\ntest_draw_square') - replacement in drawing_tests.lua at line 349
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')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
check_eq(#drawing.shapes, 1, 'F - test_draw_square/#shapes')check_eq(#drawing.points, 5, 'F - test_draw_square/#points') -- currently includes every point addedcheck_eq(drawing.shapes[1].mode, 'square', 'F - test_draw_square/shape_mode')check_eq(#drawing.shapes[1].vertices, 4, 'F - test_draw_square/vertices')check_eq(#drawing.shapes, 1, '#shapes')check_eq(#drawing.points, 5, '#points') -- currently includes every point addedcheck_eq(drawing.shapes[1].mode, 'square', 'shape_mode')check_eq(#drawing.shapes[1].vertices, 4, 'vertices') - replacement in drawing_tests.lua at line 372
check_eq(p.x, 35, 'F - test_draw_square/p1:x')check_eq(p.y, 36, 'F - test_draw_square/p1:y')check_eq(p.x, 35, 'p1:x')check_eq(p.y, 36, 'p1:y') - replacement in drawing_tests.lua at line 375
check_eq(p.x, 65, 'F - test_draw_square/p2:x')check_eq(p.y, 66, 'F - test_draw_square/p2:y')check_eq(p.x, 65, 'p2:x')check_eq(p.y, 66, 'p2:y') - replacement in drawing_tests.lua at line 378
check_eq(p.x, 35, 'F - test_draw_square/p3:x')check_eq(p.y, 96, 'F - test_draw_square/p3:y')check_eq(p.x, 35, 'p3:x')check_eq(p.y, 96, 'p3:y') - replacement in drawing_tests.lua at line 381
check_eq(p.x, 5, 'F - test_draw_square/p4:x')check_eq(p.y, 66, 'F - test_draw_square/p4:y')check_eq(p.x, 5, 'p4:x')check_eq(p.y, 66, 'p4:y') - edit in drawing_tests.lua at line 386
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 mouseedit.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' modecheck_eq(Editor_state.current_drawing_mode, 'name', 'F - test_name_point/mode:2')-- exit 'name' modeedit.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 savecheck_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 addedcheck_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 addedcheck_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 addedcheck_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
- edit in drawing_tests.lua at line 401
local p1 = drawing.points[drawing.shapes[1].p1]local p2 = drawing.points[drawing.shapes[1].p2] - edit in drawing_tests.lua at line 408
-- enter 'name' mode without moving the mouseedit.run_after_keychord(Editor_state, 'C-n') - edit in drawing_tests.lua at line 411
edit.run_after_text_input(Editor_state, 'A') - edit in drawing_tests.lua at line 413
-- still in 'name' mode - edit in drawing_tests.lua at line 415
-- exit 'name' modeedit.run_after_keychord(Editor_state, 'return') - edit in drawing_tests.lua at line 419
-- wait until save - replacement in drawing_tests.lua at line 426
check_eq(p2.name, 'A', 'F - test_name_point/save')check_eq(p2.name, 'A', 'save') - edit in drawing_tests.lua at line 430
io.write('\ntest_move_point') - edit in drawing_tests.lua at line 441
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 savecheck_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
- edit in drawing_tests.lua at line 444
local p1 = drawing.points[drawing.shapes[1].p1]local p2 = drawing.points[drawing.shapes[1].p2] - edit in drawing_tests.lua at line 450
-- wait until save - replacement in drawing_tests.lua at line 458
check_eq(p2.x, 35, 'F - test_move_point/save/x')check_eq(p2.y, 36, 'F - test_move_point/save/y')check_eq(p2.x, 35, 'save/x')check_eq(p2.y, 36, 'save/y') - replacement in drawing_tests.lua at line 463
check_eq(Editor_state.current_drawing_mode, 'move', 'F - test_move_point/mode:1')check_eq(Editor_state.current_drawing_mode, 'move', 'mode:1') - replacement in drawing_tests.lua at line 465
check_eq(drawing.pending.mode, 'move', 'F - test_move_point/mode:2')check_eq(drawing.pending.target_point, p2, 'F - test_move_point/target')check_eq(drawing.pending.mode, 'move', 'mode:2')check_eq(drawing.pending.target_point, p2, 'target') - replacement in drawing_tests.lua at line 471
check_eq(p2.x, 26, 'F - test_move_point/x')check_eq(p2.y, 44, 'F - test_move_point/y')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 savecheck_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
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
- edit in drawing_tests.lua at line 477
-- wait until save - replacement in drawing_tests.lua at line 484
check_eq(p2.x, 26, 'F - test_move_point/save/x')check_eq(p2.y, 44, 'F - test_move_point/save/y')check_eq(p2.x, 26, 'save/x')check_eq(p2.y, 44, 'save/y') - edit in drawing_tests.lua at line 489
io.write('\ntest_move_point_on_manhattan_line') - replacement in drawing_tests.lua at line 500
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')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
check_eq(Editor_state.current_drawing_mode, 'move', 'F - test_move_point_on_manhattan_line/mode:1')check_eq(Editor_state.current_drawing_mode, 'move', 'mode:1') - replacement in drawing_tests.lua at line 511
check_eq(drawing.shapes[1].mode, 'line', 'F - test_move_point_on_manhattan_line/baseline/shape:1')check_eq(drawing.shapes[1].mode, 'line', 'baseline/shape:1') - edit in drawing_tests.lua at line 515
io.write('\ntest_delete_lines_at_point') - replacement in drawing_tests.lua at line 528
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')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 timecheck_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
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
- edit in drawing_tests.lua at line 536
-- wait for some time - replacement in drawing_tests.lua at line 542
check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_delete_lines_at_point/save')check_eq(#Editor_state.lines[1].shapes, 0, 'save') - edit in drawing_tests.lua at line 546
io.write('\ntest_delete_line_under_mouse_pointer') - replacement in drawing_tests.lua at line 558
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')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
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')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
io.write('\ntest_delete_point_from_polygon') - replacement in drawing_tests.lua at line 589
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')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
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')check_eq(drawing.shapes[1].mode, 'polygon', 'shape')check_eq(#drawing.shapes[1].vertices, 3, 'vertices') - edit in drawing_tests.lua at line 601
io.write('\ntest_delete_point_from_polygon') - replacement in drawing_tests.lua at line 617
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')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
check_eq(drawing.shapes[1].mode, 'deleted', 'F - test_delete_point_from_polygon')check_eq(drawing.shapes[1].mode, 'deleted', 'check') - edit in drawing_tests.lua at line 628
io.write('\ntest_undo_name_point') - replacement in drawing_tests.lua at line 640
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')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
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')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
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')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 savecheck_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
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
- edit in drawing_tests.lua at line 666
-- wait until save - replacement in drawing_tests.lua at line 673
check_eq(p2.name, '', 'F - test_undo_name_point/save')check_eq(p2.name, '', 'save') - edit in drawing_tests.lua at line 677
io.write('\ntest_undo_move_point') - replacement in drawing_tests.lua at line 688
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')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
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')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
check_eq(p2.x, 26, 'F - test_undo_move_point/x')check_eq(p2.y, 44, 'F - test_undo_move_point/y')check_eq(p2.x, 26, 'x')check_eq(p2.y, 44, 'y') - replacement in drawing_tests.lua at line 707
check_eq(Editor_state.next_history, 4, 'F - test_undo_move_point/next_history')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 savecheck_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
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
- edit in drawing_tests.lua at line 716
-- wait until save - replacement in drawing_tests.lua at line 723
check_eq(p2.x, 35, 'F - test_undo_move_point/save/x')check_eq(p2.y, 36, 'F - test_undo_move_point/save/y')check_eq(p2.x, 35, 'save/x')check_eq(p2.y, 36, 'save/y') - edit in drawing_tests.lua at line 728
io.write('\ntest_undo_delete_point') - replacement in drawing_tests.lua at line 741
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')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
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')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 savecheck_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
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
- edit in drawing_tests.lua at line 756
-- wait until save - replacement in drawing_tests.lua at line 762
check_eq(#Editor_state.lines[1].shapes, 2, 'F - test_undo_delete_point/save')check_eq(#Editor_state.lines[1].shapes, 2, 'save') - edit in drawing_tests.lua at line 764
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
Test_errors = {} - edit in app.lua at line 139
if #Test_errors > 0 thenerror('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 thenerror('There were test failures:\n\n'..table.concat(Test_errors))end - resolve order conflict in app.lua at line 147