;;-*-Lisp-*- (in-package goal) ;; name: assert.gc ;; name in dgo: assert ;; dgos: GAME, ENGINE (define *run-time-assert-enable* #t) ;; TODO macros (defun __assert ((expr symbol) (msg string)) "Assert that expr is truthy, print assert information otherwise" (when (not expr) (format #t "(ASSERT ~S) FAILED in " msg) (print-pos *__private-assert-info*) ) 0 ) (defun __assert-min-max-range-float ((expr float) (minimum float) (maximum float) (msg-expr string) (msg-min string) (msg-max string)) "Assert that float expr is a larger value than minimum and smaller than maximum, print assert information otherwise" (when (or (< expr minimum) (< maximum expr)) (format #t "(ASSERT_MIN_MAX_RANGE_FLOAT ~S ~S ~S) FAILED (values ~F ~F ~F) in " msg-expr msg-min msg-max expr minimum maximum) (print-pos *__private-assert-info*) ) 0 ) (defun __assert-min-max-range-int ((expr int) (minimum int) (maximum int) (msg-expr string) (msg-min string) (msg-max string)) "Assert that integer expr is a larger value than minimum and smaller than maximum, print assert information otherwise" (when (or (< expr minimum) (< maximum expr)) (format #t "(ASSERT_MIN_MAX_RANGE_INT ~S ~S ~S) FAILED (values ~D ~D ~D) in " msg-expr msg-min msg-max expr minimum maximum) (print-pos *__private-assert-info*) ) 0 ) (defun __assert-zero-lim-range-int ((expr int) (maximum int) (msg-expr string) (msg-max string)) "Assert that integer expr is a larger value than zero and smaller than maximum, print assert information otherwise" (when (or (< expr 0) (>= expr max)) (format #t "(ASSERT_ZERO_LIM_RANGE_INT ~S ~S) FAILED (values ~D ~D) in " msg-expr msg-max expr maximum) (print-pos *__private-assert-info*) ) 0 )