about summary refs log tree commit diff stats
path: root/sandbox/009-sandbox-test.mu
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/009-sandbox-test.mu')
-rw-r--r--sandbox/009-sandbox-test.mu233
1 files changed, 0 insertions, 233 deletions
diff --git a/sandbox/009-sandbox-test.mu b/sandbox/009-sandbox-test.mu
deleted file mode 100644
index c22916a7..00000000
--- a/sandbox/009-sandbox-test.mu
+++ /dev/null
@@ -1,233 +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 50/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)           .
-    .                                                  .
-    .──────────────────────────────────────────────────.
-    .0   edit           copy           delete          .
-    .foo                                               .
-    .4                                                 .
-    .──────────────────────────────────────────────────.
-    .                                                  .
-  ]
-  # click on the '4' in the result
-  $clear-trace
-  assume-console [
-    left-click 5, 21
-  ]
-  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)           .
-    .␣                                                 .
-    .──────────────────────────────────────────────────.
-    .0   edit           copy           delete          .
-    .foo                                               .
-    .4                                                 .
-    .──────────────────────────────────────────────────.
-    .                                                  .
-  ]
-  # now change the result
-  assume-resources [
-    [lesson/recipes.mu] <- [
-      |recipe foo [|
-      |  reply 3|
-      |]|
-    ]
-  ]
-  # then rerun
-  assume-console [
-    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, current-sandbox, 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
-]