all repos — min @ typealias

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
 60
 61
 62
 63
 64
 65
 66
 67
 68
"." :ok

(
  symbol padding
  (==>)
  ("  " print!)
) ::

(
  symbol describe
  ('sym :name ==> quot :out)
  (
    "Testing: [" print! name print! "]" puts! 
    padding
    () @out
  )
) ::

(
  symbol assert
  (quot :results quot :check ==> quot :out)
  (
   (
     (
       (check -> true ==)
       (format-error puts! false)
     ) try
   )
   ( 
     ok results append @results 
     "." print!
   )
   (
     check results append @results 
     "x" print!
   )
   if
   results @out
  )
) ::

(
  symbol report
  (quot :results ==>)
  (
    newline
    0 :total
    0 :failed
    results (
      total succ @total
      (ok !=) (failed succ @failed) () if
    ) map
    "$# tests executed - $# failed." (total failed) =% puts!
    (
      :result
      result
      (ok !=)
      (
         ('failures defined-symbol?) (failures succ @failures) () if
         padding "FAILED: " print! result puts!
      )
      ()
      if
    )
    map
    pop ;Remove results accomulator from get-stack
  )
) ::