all repos — min @ snap

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
;; 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 ==)
      (format-error puts! false)
    ) try
    
  )
  ( 
    ok results append quote @results 
    "." print!
  )
  (
    check results append quote @results 
    "x" print!
  )
  if
  results
 ) :assert

 ;; report
 (
  newline
  ' :results ; save the results collected so far
  0 :total
  0 :failed
  results (
    total succ @total
    (ok !=) (failed succ @failed) () if
  ) map
  padding total print! " tests executed - " print! failed print! " failed." puts!
  (
    =result
    result
    (ok !=)
    (
      ('failures defined?) (failures succ @failures) () if
      padding "FAILED: " print! result puts!
    )
    ()
    if
  )
  map
  pop ;Remove results accomulator from get-stack
 ) :report

} +test