feat: read N/M/ratio/radix/exponent number literals; clean suite measurement
Reader gaps caused the clojure-test-suite worker to crash whole deftests on literals it could not parse (0N, 1.5M, 2r1010, 1/2), losing every assertion in the file. read-number now handles: - N (bigint) / M (bigdec) suffixes -> plain number (Jolt has no bignum/bigdec) - ratios a/b -> double quotient - radix integers NrDDD (2r1010, 16rFF, 36rZ) parsed by base - exponents (1e3, 1.5e-2) and 0X hex Also fixed suite measurement: when-var-exists now skips silently (its SKIP print to stdout was corrupting the worker's count line, dropping whole files), and the worker emits counts on an @@COUNTS sentinel line (robust against test bodies that print, e.g. with-out-str). Runner parses the sentinel; deftest crashes now report the underlying message. Impact: clojure-test-suite 210->231 files run, pass 1955->3535, clean files 24->39. Baseline raised to 3450/38. spec: numbers/literal-syntax (13 cases). jpm test green.
This commit is contained in:
parent
20ab88dd0c
commit
acfcf2f94b
5 changed files with 106 additions and 39 deletions
|
|
@ -72,6 +72,24 @@
|
|||
["int? ##Inf false" "false" "(int? ##Inf)"]
|
||||
["pos-int? ##Inf" "false" "(pos-int? ##Inf)"])
|
||||
|
||||
# Numeric literal syntaxes. Jolt has no true bignum/ratio/bigdec types, so the
|
||||
# N (bigint) and M (bigdec) suffixes read as the plain number, ratios as the
|
||||
# double quotient; radix integers (NrDDD) are parsed by base.
|
||||
(defspec "numbers / literal syntax"
|
||||
["bigint suffix N" "42" "42N"]
|
||||
["bigint zero" "0" "0N"]
|
||||
["bigdec suffix M" "1.5" "1.5M"]
|
||||
["bigdec int M" "0" "0.0M"]
|
||||
["ratio -> double" "0.5" "1/2"]
|
||||
["ratio 3/4" "0.75" "3/4"]
|
||||
["neg ratio" "-0.5" "-1/2"]
|
||||
["radix binary" "10" "2r1010"]
|
||||
["radix hex-ish" "255" "16rFF"]
|
||||
["radix base36" "35" "36rZ"]
|
||||
["hex" "255" "0xFF"]
|
||||
["exponent" "1000.0" "1e3"]
|
||||
["exponent neg" "0.015" "1.5e-2"])
|
||||
|
||||
(defspec "numbers / bit-ops & math"
|
||||
["bit-and" "4" "(bit-and 12 6)"]
|
||||
["bit-or" "14" "(bit-or 12 6)"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue