test-helpers.rkt
#lang racket

#|
File: test-helpers.rkt
Author: Bill Turtle (wrturtle)

Procedures to build test cases.
|#

(provide build-bombed-list/apply)

(define (make-bombed-list-builder good-value bad-value bomb-pos)
  (lambda (n)
    (if (equal? n bomb-pos)
        bad-value
        good-value)))
        
(define/contract (build-bombed-list/apply size good-value bad-value proc ret-value)
  (-> exact-positive-integer? any/c any/c (-> list? any) any/c any)
  (let/cc esc
    (let loop ([i 0])
      (when (equal? i size)
        (esc ret-value))
      (proc (build-list size (make-bombed-list-builder good-value bad-value i)))
      (loop (add1 i)))))