all repos — min @ af16cda221940a787a8f9f745f8c2b4c877bc651

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
;; test module
"." :ok

("  " print!) :padding

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

;; *test/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

;; *test/report
(
 newline
 ' :results ; save the results collected so far
 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
) :report