diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-05-19 21:35:34 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-05-19 21:35:34 -0700 |
commit | 607ddf3391dba72725a368e047169004ada0fcbe (patch) | |
tree | baa3557cae6220a7e9be943af0d76edd7e0eb588 /sandbox/008-sandbox-test.mu | |
parent | 66ee78a7bbc209d640c3c360d8973248bc66c898 (diff) | |
download | mu-607ddf3391dba72725a368e047169004ada0fcbe.tar.gz |
2983 - migrate buttons over to sandbox/
Diffstat (limited to 'sandbox/008-sandbox-test.mu')
-rw-r--r-- | sandbox/008-sandbox-test.mu | 203 |
1 files changed, 0 insertions, 203 deletions
diff --git a/sandbox/008-sandbox-test.mu b/sandbox/008-sandbox-test.mu deleted file mode 100644 index e88d7240..00000000 --- a/sandbox/008-sandbox-test.mu +++ /dev/null @@ -1,203 +0,0 @@ -## clicking on sandbox results to 'fix' them and turn sandboxes into tests - -scenario sandbox-click-on-result-toggles-color-to-green [ - trace-until 100/app # trace too long - assume-screen 50/width, 20/height - # basic recipe - 1:address:array:character <- new [ -def foo [ - return 4 -]] - # run it - 2:address:array:character <- new [foo] - assume-console [ - press F4 - ] - 3:address:programming-environment-data <- new-programming-environment screen:address:screen, 2:address:array:character - event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data, 1:address:array:character/test-recipes - screen-should-contain [ - . run (F4) . - . . - .━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - .0 x. - .foo . - .4 . - .━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . . - ] - # click on the '4' in the result - assume-console [ - left-click 5, 21 - ] - run [ - event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data, 1:address:array:character/test-recipes - ] - # color toggles to green - screen-should-contain-in-color 2/green, [ - . . - . . - . . - . . - . . - .4 . - . . - ] - # cursor should remain unmoved - run [ - 4:character/cursor <- copy 9251/␣ - print screen:address:screen, 4:character/cursor - ] - screen-should-contain [ - . run (F4) . - .␣ . - .━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - .0 x. - .foo . - .4 . - .━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. - . . - ] - # now change the result - 1:address:array:character <- new [ -def foo [ - return 3 -]] - # then rerun - assume-console [ - press F4 - ] - run [ - event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data, 1:address:array:character/new-test-recipes - ] - # result turns red - screen-should-contain-in-color 1/red, [ - . . - . . - . . - . . - . . - .3 . - . . - ] -] - -# this requires tracking a couple more things -container sandbox-data [ - response-starting-row-on-screen:number - expected-response:address:array:character -] - -# include expected response when saving or restoring a sandbox -before <end-save-sandbox> [ - { - expected-response:address:array:character <- get *curr, expected-response:offset - break-unless expected-response - filename <- append filename, [.out] - save filename, expected-response - } -] - -before <end-restore-sandbox> [ - { - filename <- append filename, [.out] - contents <- restore filename - break-unless contents - *curr <- put *curr, expected-response:offset, contents - } -] - -# clicks on sandbox responses save it as 'expected' -after <global-touch> [ - # check if it's inside the output of any sandbox - { - sandbox-left-margin:number <- get *current-sandbox, left:offset - click-column:number <- get t, column:offset - on-sandbox-side?:boolean <- greater-or-equal click-column, sandbox-left-margin - break-unless on-sandbox-side? - first-sandbox:address:sandbox-data <- get *env, sandbox:offset - break-unless first-sandbox - first-sandbox-begins:number <- get *first-sandbox, starting-row-on-screen:offset - click-row:number <- get t, row:offset - below-sandbox-editor?:boolean <- greater-or-equal click-row, first-sandbox-begins - break-unless below-sandbox-editor? - # identify the sandbox whose output is being clicked on - sandbox:address:sandbox-data <- find-click-in-sandbox-output env, click-row - break-unless sandbox - # toggle its expected-response, and save session - sandbox <- toggle-expected-response sandbox - save-sandboxes env - hide-screen screen - screen <- render-sandbox-side screen, env, 1/clear - screen <- update-cursor screen, current-sandbox, env - # no change in cursor - show-screen screen - loop +next-event:label - } -] - -def find-click-in-sandbox-output env:address:programming-environment-data, click-row:number -> sandbox:address:sandbox-data [ - local-scope - load-ingredients - # assert click-row >= sandbox.starting-row-on-screen - sandbox:address:sandbox-data <- get *env, sandbox:offset - start:number <- get *sandbox, starting-row-on-screen:offset - clicked-on-sandboxes?:boolean <- greater-or-equal click-row, start - assert clicked-on-sandboxes?, [extract-sandbox called on click to sandbox editor] - # while click-row < sandbox.next-sandbox.starting-row-on-screen - { - next-sandbox:address:sandbox-data <- get *sandbox, next-sandbox:offset - break-unless next-sandbox - next-start:number <- get *next-sandbox, starting-row-on-screen:offset - found?:boolean <- lesser-than click-row, next-start - break-if found? - sandbox <- copy next-sandbox - loop - } - # return sandbox if click is in its output region - response-starting-row:number <- get *sandbox, response-starting-row-on-screen:offset - return-unless response-starting-row, 0/no-click-in-sandbox-output - click-in-response?:boolean <- greater-or-equal click-row, response-starting-row - return-unless click-in-response?, 0/no-click-in-sandbox-output - return sandbox -] - -def toggle-expected-response sandbox:address:sandbox-data -> sandbox:address:sandbox-data [ - local-scope - load-ingredients - expected-response:address:array:character <- get *sandbox, expected-response:offset - { - # if expected-response is set, reset - break-unless expected-response - *sandbox <- put *sandbox, expected-response:offset, 0 - } - { - # if not, set expected response to the current response - break-if expected-response - response:address:array:character <- get *sandbox, response:offset - *sandbox <- put *sandbox, expected-response:offset, response - } -] - -# when rendering a sandbox, color it in red/green if expected response exists -after <render-sandbox-response> [ - { - break-unless sandbox-response - *sandbox <- put *sandbox, response-starting-row-on-screen:offset, row - expected-response:address:array:character <- get *sandbox, expected-response:offset - break-unless expected-response # fall-through to print in grey - response-is-expected?:boolean <- equal expected-response, sandbox-response - { - break-if response-is-expected?:boolean - row, screen <- render screen, sandbox-response, left, right, 1/red, row - } - { - break-unless response-is-expected?:boolean - row, screen <- render screen, sandbox-response, left, right, 2/green, row - } - jump +render-sandbox-end:label - } -] - -before <end-render-sandbox-reset-hidden> [ - *sandbox <- put *sandbox, response-starting-row-on-screen:offset, 0 -] |