diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-05-19 10:43:09 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-05-19 10:43:09 -0700 |
commit | dd30f56dbebc54957a87d100a53415de743c7f57 (patch) | |
tree | 7ee31d03668118f036e4c84e25061905d05c647d | |
parent | 5d53e7d0c402ac6a5a928c0de9fd168ca6750f6e (diff) | |
download | mu-dd30f56dbebc54957a87d100a53415de743c7f57.tar.gz |
2977 - draw new sandbox menu in edit/
Doesn't work as advertised yet. This is just the render piece, and fixing all the tests. I've been careful to try to break tests for edit once I implement the button. Delete I can't ensure will break afterwards. Remember to test clicking on multiple places on the menu. Managing the screens is starting to grow onerous; maybe we need something called normalize which clears some things. But the sandbox menu can be on arbitrary lines..
-rw-r--r-- | edit/001-editor.mu | 2 | ||||
-rw-r--r-- | edit/005-sandbox.mu | 299 | ||||
-rw-r--r-- | edit/006-sandbox-edit.mu | 142 | ||||
-rw-r--r-- | edit/007-sandbox-delete.mu | 142 | ||||
-rw-r--r-- | edit/008-sandbox-test.mu | 70 | ||||
-rw-r--r-- | edit/009-sandbox-trace.mu | 104 | ||||
-rw-r--r-- | edit/010-errors.mu | 18 |
7 files changed, 401 insertions, 376 deletions
diff --git a/edit/001-editor.mu b/edit/001-editor.mu index 1d4b4ac2..68bb1775 100644 --- a/edit/001-editor.mu +++ b/edit/001-editor.mu @@ -222,7 +222,7 @@ def render screen:address:screen, editor:address:editor-data -> last-row:number, return row, column, screen/same-as-ingredient:0, editor/same-as-ingredient:1 ] -def clear-line-until screen:address:screen, right:number -> screen:address:screen [ +def clear-line-until screen:address:screen, right:number/inclusive -> screen:address:screen [ local-scope load-ingredients _, column:number <- cursor-position screen diff --git a/edit/005-sandbox.mu b/edit/005-sandbox.mu index b0b153f8..25542875 100644 --- a/edit/005-sandbox.mu +++ b/edit/005-sandbox.mu @@ -58,7 +58,7 @@ scenario run-and-show-results [ . run (F4) . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊0 x. + . ┊0 edit copy delete . . ┊divide-with-remainder 11, 3 . . ┊3 . . ┊2 . @@ -80,19 +80,19 @@ scenario run-and-show-results [ . . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊ x. + . ┊ . . ┊ . . ┊3 . . ┊2 . . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. . ┊ . ] - # sandbox title in reverse video - screen-should-contain-in-color 240/dark-grey, [ + # sandbox menu in reverse video + screen-should-contain-in-color 232/black, [ . . . . . . - . 0 . + . 0 edit copy delete . ] # run another command assume-console [ @@ -108,11 +108,11 @@ scenario run-and-show-results [ . run (F4) . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊0 x. + . ┊0 edit copy delete . . ┊add 2, 2 . . ┊4 . . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊1 x. + . ┊1 edit copy delete . . ┊divide-with-remainder 11, 3 . . ┊3 . . ┊2 . @@ -314,10 +314,40 @@ def render-sandbox-menu screen:address:screen, sandbox-index:number, left:number local-scope load-ingredients move-cursor-to-column screen, left - print screen, sandbox-index, 240/dark-grey - clear-line-until screen, right - delete-icon:character <- copy 120/x - print screen, delete-icon, 245/grey + edit-button-left:number, edit-button-right:number, copy-button-left:number, copy-button-right:number, delete-button-left:number <- sandbox-menu-columns left, right + print screen, sandbox-index, 232/dark-grey, 245/grey + start-buttons:number <- subtract edit-button-left, 1 + clear-line-until screen, start-buttons, 245/grey + print screen, [edit], 232/black, 130/background-orange + clear-line-until screen, edit-button-right, 130/background-orange + _, col:number <- cursor-position screen + at-start-of-copy-button?:boolean <- equal col, copy-button-left + assert at-start-of-copy-button?, [aaa] + print screen, [copy], 232/black, 28/background-green + clear-line-until screen, copy-button-right, 28/background-green + _, col:number <- cursor-position screen + at-start-of-delete-button?:boolean <- equal col, delete-button-left + assert at-start-of-delete-button?, [bbb] + print screen, [delete], 232/black, 124/background-red + clear-line-until screen, right, 124/background-red +] + +# divide up the menu bar for a sandbox into 3 segments, for edit/copy/delete buttons +# delete-button-right == right +# all left/right pairs are inclusive +def sandbox-menu-columns left:number, right:number -> edit-button-left:number, edit-button-right:number, copy-button-left:number, copy-button-right:number, delete-button-left:number [ + local-scope + load-ingredients + start-buttons:number <- add left, 4/space-for-sandbox-index + buttons-space:number <- subtract right, start-buttons + button-width:number <- divide-with-remainder buttons-space, 3 # integer division + buttons-wide-enough?:boolean <- greater-or-equal button-width, 8 + assert buttons-wide-enough?, [sandbox must be at least 30 or so characters wide] + edit-button-left:number <- copy start-buttons + copy-button-left:number <- add start-buttons, button-width + edit-button-right:number <- subtract copy-button-left, 1 + delete-button-left:number <- subtract right, button-width + copy-button-right:number <- subtract delete-button-left, 1 ] def move-cursor-to-column screen:address:screen, column:number -> screen:address:screen [ @@ -449,7 +479,7 @@ reply z . run (F4) . . ┊ . .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - .local-scope ┊0 x. + .local-scope ┊0 edit copy delete . .z:number <- add 2, 2 ┊foo . .reply z ┊4 . .] ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. @@ -471,7 +501,7 @@ reply z . run (F4) . . ┊ . .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - .local-scope ┊0 x. + .local-scope ┊0 edit copy delete . .z:number <- add 2, 3 ┊foo . .reply z ┊5 . .] ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. @@ -500,7 +530,7 @@ scenario run-instruction-manages-screen-per-sandbox [ . run (F4) . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊0 x. + . ┊0 edit copy delete . . ┊print-integer screen, 4 . . ┊screen: . . ┊ .4 . . @@ -554,7 +584,7 @@ scenario editor-provides-edited-contents [ scenario scrolling-down-past-bottom-of-sandbox-editor [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize sandbox side 1:address:array:character <- new [] 2:address:array:character <- new [add 2, 2] @@ -566,11 +596,11 @@ scenario scrolling-down-past-bottom-of-sandbox-editor [ ] event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . . # minor: F4 clears menu tooltip in very narrow screens - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 2, 2 . + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 2, 2 . ] # switch to sandbox window and hit 'page-down' assume-console [ @@ -585,13 +615,11 @@ scenario scrolling-down-past-bottom-of-sandbox-editor [ # sandbox editor hidden; first sandbox displayed # cursor moves to first sandbox screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊␣ x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊␣ edit copy delete . + . ┊add 2, 2 . + . ┊4 . ] # hit 'page-up' assume-console [ @@ -604,11 +632,11 @@ scenario scrolling-down-past-bottom-of-sandbox-editor [ ] # sandbox editor displays again, cursor is in editor screen-should-contain [ - . . # minor: F4 clears menu tooltip in very narrow screens - . ┊␣ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 2, 2 . + . run (F4) . + . ┊␣ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 2, 2 . ] ] @@ -689,7 +717,7 @@ def previous-sandbox env:address:programming-environment-data, in:address:sandbo scenario scrolling-down-on-recipe-side [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize sandbox side and create a sandbox 1:address:array:character <- new [ ] @@ -712,20 +740,17 @@ scenario scrolling-down-on-recipe-side [ ] # cursor moves down on recipe side screen-should-contain [ - . . - . ┊ . - .␣ ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊ . + .␣ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 edit copy delete . + . ┊add 2, 2 . ] ] scenario scrolling-through-multiple-sandboxes [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize environment 1:address:array:character <- new [] 2:address:array:character <- new [] @@ -743,16 +768,16 @@ scenario scrolling-through-multiple-sandboxes [ 4:character/cursor <- copy 9251/␣ print screen:address:screen, 4:character/cursor screen-should-contain [ - . . - . ┊␣ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. - . ┊add 2, 2 . - . ┊4 . + . run (F4) . + . ┊␣ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . ] # hit 'page-down' assume-console [ @@ -766,16 +791,15 @@ scenario scrolling-through-multiple-sandboxes [ # sandbox editor hidden; first sandbox displayed # cursor moves to first sandbox screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊␣ x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊␣ edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . ] # hit 'page-down' again assume-console [ @@ -786,14 +810,13 @@ scenario scrolling-through-multiple-sandboxes [ ] # just second sandbox displayed screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. - . ┊ . - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # hit 'page-down' again assume-console [ @@ -804,14 +827,13 @@ scenario scrolling-through-multiple-sandboxes [ ] # no change screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. - . ┊ . - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # hit 'page-up' assume-console [ @@ -822,16 +844,15 @@ scenario scrolling-through-multiple-sandboxes [ ] # back to displaying both sandboxes without editor screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . ] # hit 'page-up' again assume-console [ @@ -844,16 +865,16 @@ scenario scrolling-through-multiple-sandboxes [ ] # back to displaying both sandboxes as well as editor screen-should-contain [ - . . - . ┊␣ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. - . ┊add 2, 2 . - . ┊4 . + . run (F4) . + . ┊␣ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . ] # hit 'page-up' again assume-console [ @@ -866,22 +887,22 @@ scenario scrolling-through-multiple-sandboxes [ ] # no change screen-should-contain [ - . . - . ┊␣ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. - . ┊add 2, 2 . - . ┊4 . + . run (F4) . + . ┊␣ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . ] ] scenario scrolling-manages-sandbox-index-correctly [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize environment 1:address:array:character <- new [] 2:address:array:character <- new [] @@ -895,14 +916,14 @@ scenario scrolling-manages-sandbox-index-correctly [ ] event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # hit 'page-down' and 'page-up' a couple of times. sandbox index should be stable assume-console [ @@ -914,13 +935,13 @@ scenario scrolling-manages-sandbox-index-correctly [ # sandbox editor hidden; first sandbox displayed # cursor moves to first sandbox screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # hit 'page-up' again assume-console [ @@ -931,14 +952,14 @@ scenario scrolling-manages-sandbox-index-correctly [ ] # back to displaying both sandboxes as well as editor screen-should-contain [ - . . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # hit 'page-down' assume-console [ @@ -950,12 +971,12 @@ scenario scrolling-manages-sandbox-index-correctly [ # sandbox editor hidden; first sandbox displayed # cursor moves to first sandbox screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 x. # no change - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] ] diff --git a/edit/006-sandbox-edit.mu b/edit/006-sandbox-edit.mu index 6d83cee2..a9256096 100644 --- a/edit/006-sandbox-edit.mu +++ b/edit/006-sandbox-edit.mu @@ -2,7 +2,7 @@ scenario clicking-on-a-sandbox-moves-it-to-editor [ trace-until 100/app # trace too long - assume-screen 40/width, 10/height + assume-screen 100/width, 10/height # basic recipe 1:address:array:character <- new [ recipe foo [ @@ -16,32 +16,31 @@ recipe foo [ 3:address:programming-environment-data <- new-programming-environment screen:address:screen, 1:address:array:character, 2:address:array:character event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . run (F4) . - . ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . reply 4 ┊0 x. - .] ┊foo . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4 . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊ . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . reply 4 ┊0 edit copy delete . + .] ┊foo . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # click somewhere in the first row of the sandbox assume-console [ - left-click 3, 30 + left-click 3, 90 ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data ] # it pops back into editor screen-should-contain [ - . run (F4) . - . ┊foo . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . reply 4 ┊ . - .] ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊ . - . ┊ . - . ┊ . + . run (F4) . + . ┊foo . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . reply 4 ┊ . + .] ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊ . + . ┊ . ] # cursor should be in the right place assume-console [ @@ -51,14 +50,13 @@ recipe foo [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data ] screen-should-contain [ - . run (F4) . - . ┊0foo . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . reply 4 ┊ . - .] ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊ . - . ┊ . - . ┊ . + . run (F4) . + . ┊0foo . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . reply 4 ┊ . + .] ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊ . + . ┊ . ] ] @@ -158,7 +156,7 @@ scenario sandbox-with-print-can-be-edited [ . run (F4) . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊0 x. + . ┊0 edit copy delete . . ┊print-integer screen, 4 . . ┊screen: . . ┊ .4 . . @@ -187,7 +185,7 @@ scenario sandbox-with-print-can-be-edited [ scenario editing-sandbox-after-scrolling-resets-scroll [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize environment 1:address:array:character <- new [] 2:address:array:character <- new [] @@ -205,37 +203,37 @@ scenario editing-sandbox-after-scrolling-resets-scroll [ ] event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # edit the second sandbox assume-console [ - left-click 2, 20 + left-click 2, 90 ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data ] # second sandbox shows in editor; scroll resets to display first sandbox screen-should-contain [ - . . - . ┊add 2, 2 . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊add 2, 2 . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] ] scenario editing-sandbox-updates-sandbox-count [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize environment 1:address:array:character <- new [] 2:address:array:character <- new [] @@ -251,18 +249,20 @@ scenario editing-sandbox-updates-sandbox-count [ ] event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . ] # edit the second sandbox, then resave assume-console [ - left-click 3, 20 + left-click 3, 90 press F4 ] run [ @@ -270,14 +270,16 @@ scenario editing-sandbox-updates-sandbox-count [ ] # no change in contents screen-should-contain [ - . . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . ] # now try to scroll past end assume-console [ @@ -288,14 +290,14 @@ scenario editing-sandbox-updates-sandbox-count [ run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data ] - # screen should show just final sandbox + # screen should show just final sandbox with the right index (1) screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] ] diff --git a/edit/007-sandbox-delete.mu b/edit/007-sandbox-delete.mu index 4f77f205..a758e663 100644 --- a/edit/007-sandbox-delete.mu +++ b/edit/007-sandbox-delete.mu @@ -19,11 +19,11 @@ scenario deleting-sandboxes [ . run (F4) . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊0 x. + . ┊0 edit copy delete . . ┊add 2, 2 . . ┊4 . . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊1 x. + . ┊1 edit copy delete . . ┊divide-with-remainder 11, 3 . . ┊3 . . ┊2 . @@ -41,7 +41,7 @@ scenario deleting-sandboxes [ . run (F4) . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊0 x. + . ┊0 edit copy delete . . ┊add 2, 2 . . ┊4 . . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. @@ -140,7 +140,7 @@ def fixup-delete env:address:programming-environment-data, next:address:sandbox- scenario deleting-sandbox-after-scroll [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize environment 1:address:array:character <- new [] 2:address:array:character <- new [] @@ -157,36 +157,36 @@ scenario deleting-sandbox-after-scroll [ ] event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . ] # delete the second sandbox assume-console [ - left-click 6, 29 + left-click 6, 99 ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data ] # second sandbox shows in editor; scroll resets to display first sandbox screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] ] scenario deleting-top-sandbox-after-scroll [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize environment 1:address:array:character <- new [] 2:address:array:character <- new [] @@ -203,36 +203,36 @@ scenario deleting-top-sandbox-after-scroll [ ] event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . ] # delete the second sandbox assume-console [ - left-click 2, 29 + left-click 2, 99 ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data ] # second sandbox shows in editor; scroll resets to display first sandbox screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 edit copy delete . + . ┊add 2, 2 . + . ┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] ] scenario deleting-final-sandbox-after-scroll [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize environment 1:address:array:character <- new [] 2:address:array:character <- new [] @@ -250,37 +250,37 @@ scenario deleting-final-sandbox-after-scroll [ ] event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # delete the second sandbox assume-console [ - left-click 2, 29 + left-click 2, 99 ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data ] # implicitly scroll up to first sandbox screen-should-contain [ - . . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] ] scenario deleting-updates-sandbox-count [ trace-until 100/app # trace too long - assume-screen 30/width, 10/height + assume-screen 100/width, 10/height # initialize environment 1:address:array:character <- new [] 2:address:array:character <- new [] @@ -296,20 +296,20 @@ scenario deleting-updates-sandbox-count [ ] event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━. - . ┊0 x. - . ┊add 1, 1 . - . ┊2 . - . ┊━━━━━━━━━━━━━━. - . ┊1 x. - . ┊add 2, 2 . - . ┊4 . + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊0 edit copy delete . + . ┊add 1, 1 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊1 edit copy delete . + . ┊add 2, 2 . + . ┊4 . ] # delete the second sandbox, then try to scroll down twice assume-console [ - left-click 3, 29 + left-click 3, 99 press page-down press page-down ] @@ -318,12 +318,12 @@ scenario deleting-updates-sandbox-count [ ] # shouldn't go past last sandbox screen-should-contain [ - . . - . ┊━━━━━━━━━━━━━━. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 x. - . ┊add 2, 2 . - . ┊4 . - . ┊━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊0 edit copy delete . + . ┊add 2, 2 . + . ┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] ] diff --git a/edit/008-sandbox-test.mu b/edit/008-sandbox-test.mu index e15c79ec..edefcf45 100644 --- a/edit/008-sandbox-test.mu +++ b/edit/008-sandbox-test.mu @@ -2,7 +2,7 @@ scenario sandbox-click-on-result-toggles-color-to-green [ trace-until 100/app # trace too long - assume-screen 40/width, 10/height + assume-screen 100/width, 10/height # basic recipe 1:address:array:character <- new [ recipe foo [ @@ -16,32 +16,32 @@ recipe foo [ 3:address:programming-environment-data <- new-programming-environment screen:address:screen, 1:address:array:character, 2:address:array:character event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . run (F4) . - . ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . reply 4 ┊0 x. - .] ┊foo . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4 . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊ . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . reply 4 ┊0 edit copy delete . + .] ┊foo . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # click on the '4' in the result assume-console [ - left-click 5, 21 + left-click 5, 51 ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data ] # color toggles to green screen-should-contain-in-color 2/green, [ - . . - . . - . . - . . - . . - . 4 . - . . - . . + . . + . . + . . + . . + . . + . 4 . + . . + . . ] # cursor should remain unmoved run [ @@ -49,14 +49,16 @@ recipe foo [ print screen:address:screen, 4:character/cursor ] screen-should-contain [ - . run (F4) . - .␣ ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . reply 4 ┊0 x. - .] ┊foo . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4 . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + .␣ ┊ . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . reply 4 ┊0 edit copy delete . + .] ┊foo . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . + . ┊ . + . ┊ . ] # now change the result # then rerun @@ -71,14 +73,14 @@ recipe foo [ ] # result turns red screen-should-contain-in-color 1/red, [ - . . - . . - . . - . . - . . - . 3 . - . . - . . + . . + . . + . . + . . + . . + . 3 . + . . + . . ] ] diff --git a/edit/009-sandbox-trace.mu b/edit/009-sandbox-trace.mu index bf6d9fb6..1a9f93dc 100644 --- a/edit/009-sandbox-trace.mu +++ b/edit/009-sandbox-trace.mu @@ -2,7 +2,7 @@ scenario sandbox-click-on-code-toggles-app-trace [ trace-until 100/app # trace too long - assume-screen 40/width, 10/height + assume-screen 100/width, 10/height # basic recipe 1:address:array:character <- new [ recipe foo [ @@ -16,17 +16,17 @@ recipe foo [ 3:address:programming-environment-data <- new-programming-environment screen:address:screen, 1:address:array:character, 2:address:array:character event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . run (F4) . - . ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊0 x. - .] ┊foo . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊ . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . stash [abc] ┊0 edit copy delete . + .] ┊foo . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # click on the code in the sandbox assume-console [ - left-click 4, 21 + left-click 4, 51 ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data @@ -35,28 +35,28 @@ recipe foo [ ] # trace now printed and cursor shouldn't have budged screen-should-contain [ - . run (F4) . - .␣ ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊0 x. - .] ┊foo . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊abc . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + .␣ ┊ . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . stash [abc] ┊0 edit copy delete . + .] ┊foo . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊abc . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] screen-should-contain-in-color 245/grey, [ - . . - . ┊ . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ x. - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊abc . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ . + . . + . ┊ . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊abc . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # click again on the same region assume-console [ - left-click 4, 25 + left-click 4, 55 ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data @@ -64,19 +64,19 @@ recipe foo [ ] # trace hidden again screen-should-contain [ - . run (F4) . - .␣ ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊0 x. - .] ┊foo . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + .␣ ┊ . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . stash [abc] ┊0 edit copy delete . + .] ┊foo . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] ] scenario sandbox-shows-app-trace-and-result [ trace-until 100/app # trace too long - assume-screen 40/width, 10/height + assume-screen 100/width, 10/height # basic recipe 1:address:array:character <- new [ recipe foo [ @@ -91,33 +91,33 @@ recipe foo [ 3:address:programming-environment-data <- new-programming-environment screen:address:screen, 1:address:array:character, 2:address:array:character event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data screen-should-contain [ - . run (F4) . - . ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊0 x. - . reply 4 ┊foo . - .] ┊4 . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊ . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . stash [abc] ┊0 edit copy delete . + . reply 4 ┊foo . + .] ┊4 . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] # click on the code in the sandbox assume-console [ - left-click 4, 21 + left-click 4, 51 ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data ] # trace now printed above result screen-should-contain [ - . run (F4) . - . ┊ . - .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━. - . stash [abc] ┊0 x. - . reply 4 ┊foo . - .] ┊abc . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4 . - . ┊━━━━━━━━━━━━━━━━━━━. - . ┊ . + . run (F4) . + . ┊ . + .recipe foo [ ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . stash [abc] ┊0 edit copy delete . + . reply 4 ┊foo . + .] ┊abc . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . ] ] diff --git a/edit/010-errors.mu b/edit/010-errors.mu index fcedc191..2fc21464 100644 --- a/edit/010-errors.mu +++ b/edit/010-errors.mu @@ -231,7 +231,7 @@ scenario run-hides-errors-from-past-sandboxes [ . run (F4) . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊0 x. + . ┊0 edit copy delete . . ┊add 2, 2 . . ┊4 . . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. @@ -259,7 +259,7 @@ z <- add x, y . errors found (0) run (F4) . .recipe foo x:_elem -> z:_elem [ ┊ . .local-scope ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - .load-ingredients ┊0 x. + .load-ingredients ┊0 edit copy delete . .y:address:number <- copy 0 ┊foo 2 . .z <- add x, y ┊foo_2: 'add' requires number ingredients, but go↩. .] ┊t y . @@ -278,7 +278,7 @@ z <- add x, y . errors found (0) run (F4) . .recipe foo x:_elem -> z:_elem [ ┊ . .local-scope ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - .load-ingredients ┊0 x. + .load-ingredients ┊0 edit copy delete . .y:address:number <- copy 0 ┊foo 2 . .z <- add x, y ┊foo_3: 'add' requires number ingredients, but go↩. .] ┊t y . @@ -533,7 +533,7 @@ scenario run-instruction-and-print-errors [ . errors found (0) run (F4) . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊0 x. + . ┊0 edit copy delete . . ┊get 1234:number, foo:offset . . ┊unknown element foo in container number . . ┊first ingredient of 'get' should be a container,↩. @@ -566,7 +566,7 @@ scenario run-instruction-and-print-errors [ . . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊ x. + . ┊ . . ┊ . . ┊ . . ┊ ↩. @@ -597,7 +597,7 @@ scenario run-instruction-and-print-errors-only-once [ . errors found (0) run (F4) . . ┊ . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . ┊0 x. + . ┊0 edit copy delete . . ┊get 1234:number, foo:offset . . ┊unknown element foo in container number . . ┊first ingredient of 'get' should be a container,↩. @@ -630,7 +630,7 @@ scenario sandbox-can-handle-infinite-loop [ . errors found (0) run (F4) . .recipe foo [ ┊ . . { ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . loop ┊0 x. + . loop ┊0 edit copy delete . . } ┊foo . .] ┊took too long! . .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. @@ -662,7 +662,7 @@ reply b . errors found (0) run (F4) . .recipe foo [ ┊ . .local-scope ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - .a:number <- next-ingredient ┊0 x. + .a:number <- next-ingredient ┊0 edit copy delete . .b:number <- next-ingredient ┊foo 4, 0 . .stash [dividing by], b ┊foo: divide by zero in '_, c:number <- divide-wi↩. ._, c:number <- divide-with-remainder a, b ┊th-remainder a, b' . @@ -681,7 +681,7 @@ reply b . errors found (0) run (F4) . .recipe foo [ ┊ . .local-scope ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - .a:number <- next-ingredient ┊0 x. + .a:number <- next-ingredient ┊0 edit copy delete . .b:number <- next-ingredient ┊foo 4, 0 . .stash [dividing by], b ┊dividing by 0 . ._, c:number <- divide-with-remainder a, b ┊foo: divide by zero in '_, c:number <- divide-wi↩. |