all repos — min @ a0598c9364e04d2c6691d8620e379fe7e82a9562

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 puts! 
   padding
   () 
 ) :describe

 ;; assert
 (
  ' .check      ; save the check quotation to validate
  ' .results    ; save the result symbol to update
  (check -> true ==)
  ( 
    ok results append quote :results 
    "." print!
  )
  (
    check results append quote :results 
    "x" print!
  )
  ifte
  results
 ) :assert

 ;; report
 (
  ' .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

#test

; Sample unit test program
"maths" describe
  (2 3 ==) assert
  (2 1 >) assert
  (2 1 <) assert
  (4 4 ==) assert
  (7 7 ==) assert
  newline
  report