about summary refs log tree commit diff stats
path: root/edit/009-sandbox-test.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-07-27 16:01:55 -0700
committerKartik Agaram <vc@akkartik.com>2019-07-27 17:47:59 -0700
commit6e1eeeebfb453fa7c871869c19375ce60fbd7413 (patch)
tree539c4a3fdf1756ae79770d5c4aaf6366f1d1525e /edit/009-sandbox-test.mu
parent8846a7f85cc04b77b2fe8a67b6d317723437b00c (diff)
downloadmu-6e1eeeebfb453fa7c871869c19375ce60fbd7413.tar.gz
5485 - promote SubX to top-level
Diffstat (limited to 'edit/009-sandbox-test.mu')
-rw-r--r--edit/009-sandbox-test.mu231
1 files changed, 0 insertions, 231 deletions
diff --git a/edit/009-sandbox-test.mu b/edit/009-sandbox-test.mu
deleted file mode 100644
index 52c1e909..00000000
--- a/edit/009-sandbox-test.mu
+++ /dev/null
@@ -1,231 +0,0 @@
-## clicking on sandbox results to 'fix' them and turn sandboxes into tests
-
-scenario sandbox-click-on-result-toggles-color-to-green [
-  local-scope
-  trace-until 100/app  # trace too long
-  assume-screen 100/width, 20/height
-  # basic recipe
-  assume-resources [
-    [lesson/recipes.mu] <- [
-      |recipe foo [|
-      |  reply 4|
-      |]|
-    ]
-  ]
-  env:&:environment <- new-programming-environment resources, screen, [foo]
-  render-all screen, env, render
-  # run it
-  assume-console [
-    press F4
-  ]
-  event-loop screen, console, env, resources
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .recipe foo [                                      ┊                                                 .
-    .  reply 4                                         ┊─────────────────────────────────────────────────.
-    .]                                                 ┊0   edit       copy       to recipe    delete    .
-    .                                                  ┊foo                                              .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-  # click on the '4' in the result
-  $clear-trace
-  assume-console [
-    left-click 5, 51
-  ]
-  run [
-    event-loop screen, console, env, resources
-  ]
-  # color toggles to green
-  screen-should-contain-in-color 2/green, [
-    .                                                                                                    .
-    .                                                                                                    .
-    .                                                                                                    .
-    .                                                                                                    .
-    .                                                                                                    .
-    .                                                   4                                                .
-    .                                                                                                    .
-    .                                                                                                    .
-  ]
-  # don't render entire sandbox side
-  check-trace-count-for-label-lesser-than 250, [print-character]  # say 5 sandbox lines
-  # cursor should remain unmoved
-  run [
-    cursor:char <- copy 9251/␣
-    print screen, cursor
-  ]
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .␣ecipe foo [                                      ┊                                                 .
-    .  reply 4                                         ┊─────────────────────────────────────────────────.
-    .]                                                 ┊0   edit       copy       to recipe    delete    .
-    .                                                  ┊foo                                              .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-  # now change the result
-  # then rerun
-  assume-console [
-    left-click 2, 11  # cursor to end of line
-    press backspace
-    type [3]
-    press F4
-  ]
-  run [
-    event-loop screen, console, env, resources
-  ]
-  # result turns red
-  screen-should-contain-in-color 1/red, [
-    .                                                                                                    .
-    .                                                                                                    .
-    .                                                                                                    .
-    .                                                                                                    .
-    .                                                                                                    .
-    .                                                   3                                                .
-    .                                                                                                    .
-    .                                                                                                    .
-  ]
-]
-
-# this requires tracking a couple more things
-container sandbox [
-  response-starting-row-on-screen:num
-  expected-response:text
-]
-
-# include expected response when saving or restoring a sandbox
-before <end-save-sandbox> [
-  {
-    expected-response:text <- get *sandbox, expected-response:offset
-    break-unless expected-response
-    filename <- append filename, [.out]
-    resources <- dump resources, filename, expected-response
-  }
-]
-
-before <end-restore-sandbox> [
-  {
-    filename <- append filename, [.out]
-    contents <- slurp resources, 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:num <- get *current-sandbox, left:offset
-    click-column:num <- get t, column:offset
-    on-sandbox-side?:bool <- greater-or-equal click-column, sandbox-left-margin
-    break-unless on-sandbox-side?
-    first-sandbox:&:sandbox <- get *env, sandbox:offset
-    break-unless first-sandbox
-    first-sandbox-begins:num <- get *first-sandbox, starting-row-on-screen:offset
-    click-row:num <- get t, row:offset
-    below-sandbox-editor?:bool <- greater-or-equal click-row, first-sandbox-begins
-    break-unless below-sandbox-editor?
-    # identify the sandbox whose output is being clicked on
-    sandbox:&:sandbox, sandbox-index:num <- find-click-in-sandbox-output env, click-row
-    break-unless sandbox
-    # update it
-    sandbox <- toggle-expected-response sandbox
-    # minimal update to disk
-    save-sandbox resources, sandbox, sandbox-index
-    # minimal update to screen
-    sandbox-right-margin:num <- get *current-sandbox, right:offset
-    row:num <- render-sandbox-response screen, sandbox, sandbox-left-margin, sandbox-right-margin
-    {
-      height:num <- screen-height screen
-      at-bottom?:bool <- greater-or-equal row, height
-      break-if at-bottom?
-      draw-horizontal screen, row, sandbox-left-margin, sandbox-right-margin
-    }
-    screen <- update-cursor screen, recipes, current-sandbox, sandbox-in-focus?, env
-    loop +next-event
-  }
-]
-
-def find-click-in-sandbox-output env:&:environment, click-row:num -> sandbox:&:sandbox, sandbox-index:num [
-  local-scope
-  load-inputs
-  # assert click-row >= sandbox.starting-row-on-screen
-  sandbox:&:sandbox <- get *env, sandbox:offset
-  start:num <- get *sandbox, starting-row-on-screen:offset
-  clicked-on-sandboxes?:bool <- 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
-  sandbox-index <- copy 0
-  {
-    next-sandbox:&:sandbox <- get *sandbox, next-sandbox:offset
-    break-unless next-sandbox
-    next-start:num <- get *next-sandbox, starting-row-on-screen:offset
-    found?:bool <- lesser-than click-row, next-start
-    break-if found?
-    sandbox <- copy next-sandbox
-    sandbox-index <- add sandbox-index, 1
-    loop
-  }
-  # return sandbox if click is in its output region
-  response-starting-row:num <- get *sandbox, response-starting-row-on-screen:offset
-  return-unless response-starting-row, null/no-click-in-sandbox-output, 0/sandbox-index
-  click-in-response?:bool <- greater-or-equal click-row, response-starting-row
-  return-unless click-in-response?, null/no-click-in-sandbox-output, 0/sandbox-index
-  return sandbox, sandbox-index
-]
-
-def toggle-expected-response sandbox:&:sandbox -> sandbox:&:sandbox [
-  local-scope
-  load-inputs
-  expected-response:text <- get *sandbox, expected-response:offset
-  {
-    # if expected-response is set, reset
-    break-unless expected-response
-    *sandbox <- put *sandbox, expected-response:offset, null
-  }
-  {
-    # if not, set expected response to the current response
-    break-if expected-response
-    response:text <- 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
-    row <- render-sandbox-response screen, sandbox, left, right
-    jump +render-sandbox-end
-  }
-]
-
-def render-sandbox-response screen:&:screen, sandbox:&:sandbox, left:num, right:num -> row:num, screen:&:screen [
-  local-scope
-  load-inputs
-  sandbox-response:text <- get *sandbox, response:offset
-  expected-response:text <- get *sandbox, expected-response:offset
-  row:num <- get *sandbox response-starting-row-on-screen:offset
-  {
-    break-if expected-response
-    row <- render-text screen, sandbox-response, left, right, 245/grey, row
-    return
-  }
-  response-is-expected?:bool <- equal expected-response, sandbox-response
-  {
-    break-if response-is-expected?
-    row <- render-text screen, sandbox-response, left, right, 1/red, row
-  }
-  {
-    break-unless response-is-expected?:bool
-    row <- render-text screen, sandbox-response, left, right, 2/green, row
-  }
-]
-
-before <end-render-sandbox-reset-hidden> [
-  *sandbox <- put *sandbox, response-starting-row-on-screen:offset, 0
-]