; Unicalc top-level tests ; These test your top-level function without using the command-line interface. ; Function top-level is the thing that is passed the expression read by ; the (read) in the read-eval-print loop. ; It returns a Quantity, which can be rendered as desired. ; The point of these test is to provide a way of debugging and testing without ; using the read-eval-print-loop. There is a corresponding set of test that ; can be provided as input to the program. (test (top-level 1) '(1 () ())) (test (top-level 'meter) '(1 (meter) ())) (test (top-level 'day) '(86400 (second) ())) (test (top-level '(/ meter second)) '(1 (meter) (second))) (test (top-level '(* kg meter)) '(1 (kg meter) ())) (test (top-level '(* meter kg)) '(1 (kg meter) ())) (test (top-level '(/ (* meter kg) second)) '(1 (kg meter) (second))) (test (top-level '(/ 24 6)) '(4 () ())) (test (top-level '(* 2 3 4 5)) '(120 () ())) (test (top-level '(*)) '(1 () ())) (test (top-level '(/ 24 (* 2 3))) '(4 () ())) (test (top-level '(/ (* 8 3) (* 2 3))) '(4 () ())) (test (top-level '(= $a 999)) '(999 () ())) (test (top-level '$a) '(999 () ())) (test (top-level '(* $a 2)) '(1998 () ())) (test (top-level '(* $a $a)) '(998001 () ())) (test (top-level '(* $a meter)) '(999 (meter) ())) (test (top-level '(* $a (/ meter second))) '(999 (meter) (second))) (test (top-level '(/ (* $a meter) second)) '(999 (meter) (second))) (test (top-level 'newton) '(1 (kg meter) (second second))) (test (top-level '(* newton second)) '(1 (kg meter) (second))) (test (top-level '(/ liter meter)) '(1/1000 (meter meter) ())) (test (top-level '(/ liter (* meter meter))) '(1/1000 (meter) ())) (test (top-level '(= $x (* newton second))) '(1 (kg meter) (second))) (test (top-level '(* $a $x)) '(999 (kg meter) (second)))