all repos — min @ 888c0a0abe088aab1a8971607f7ff47d047c02c2

A small but practical concatenative programming language.

tests/test.min

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
;; test module
(
 'OK ' :ok
 ("  " print!) :padding

 ;; describe
 (
   :name
   "Testing: [" print! name print! "]" puts! 
   padding
   () 
 ) :describe

 ;; assert
 (
  ' :check      ; save the check quotation to validate
  ' :results    ; save the result symbol to update
  (
    (
      (check -> true ==)
      (1 at :err "\nError: $1" (err) % puts false)
    ) try
    
  )
  ( 
    ok results append quote @results 
    "." print!
  )
  (
    check results append quote @results 
    "x" print!
  )
  ifte
  results
 ) :assert

 ;; report
 (
  newline
  ' :results ; save the results collected so far
  0 :total
  0 :failed
  results (
    total succ @total
    (ok !=) (failed succ @failed) () ifte
  ) map
  padding total print! " tests executed - " print! failed print! " failed." puts!
  (
    ' :result
    result
    (ok !=)
    (padding "FAILED: " print! result puts!)
    ()
    ifte
  )
  map
 ) :report

) =test