diff options
| author | 2026-01-17 11:04:54 -0600 | |
|---|---|---|
| committer | 2026-01-17 11:04:54 -0600 | |
| commit | 3f33f794354087bfb914770efa4db519a9823415 (patch) | |
| tree | a27d490c4c5ced079a6bb325ae9b84a8640a1f80 | |
| parent | More work on sh-dsl and improving testing libraries. (diff) | |
| parent | Testing improvements and randomness. (diff) | |
Merge branch 'master' into sh-dslsh-dsl
| -rw-r--r-- | spork/math.janet | 4 | ||||
| -rw-r--r-- | spork/test.janet | 6 | ||||
| -rw-r--r-- | test/suite-tarray.janet | 62 |
3 files changed, 38 insertions, 34 deletions
diff --git a/spork/math.janet b/spork/math.janet index f54831a..b38083a 100644 --- a/spork/math.janet +++ b/spork/math.janet @@ -479,11 +479,11 @@ Generate random permutation of the array `xs` which is shuffled in place. ``` - [xs] + [xs &opt rng] + (default rng (math/rng (string (math/random)))) (var xl (length xs)) (var t nil) (var i nil) - (def rng (math/rng (os/time))) (while (pos? xl) (set i (math/rng-int rng xl)) (-- xl) diff --git a/spork/test.janet b/spork/test.janet index 1dbbe5b..7d9d2b5 100644 --- a/spork/test.janet +++ b/spork/test.janet @@ -6,11 +6,10 @@ (var start-time 0) (var skip-count 0) (var skip-n 0) - (def- is-verbose (delay (os/getenv "VERBOSE"))) (defn- assert-no-tail - "Override's the default assert with some nice error handling." + "Overrides the default assert with some nice error handling." [x &opt e] (++ num-tests-run) (when (pos? skip-n) @@ -69,7 +68,8 @@ (set suite-num name) (set start-time (os/clock)) (set num-tests-passed 0) - (set num-tests-run 0)) + (set num-tests-run 0) + (set skip-count 0)) (defn end-suite "Ends test suite, prints summary and exits if any tests have failed." diff --git a/test/suite-tarray.janet b/test/suite-tarray.janet index d07a3e4..6283f84 100644 --- a/test/suite-tarray.janet +++ b/test/suite-tarray.janet @@ -84,42 +84,46 @@ #construct random ta (math/seedrandom 12345) -(def array (tarray/new :float64 100)) -(for i 0 (tarray/length array) - (put array i (math/random))) +(def arr (tarray/new :float64 100)) +(for i 0 (tarray/length arr) + (put arr i (math/random))) (math/seedrandom 123456) (def array2 (tarray/new :float64 100)) (for i 0 (tarray/length array2) (put array2 i (math/random))) -(assert (approx-eq 0.208122 (median-absolute-deviation array) 0.00001) "median-absolute-deviation") -(assert (approx-eq 0.274348 (sample-standard-deviation array) 0.000001) "sample-standard-deviation") -(assert (approx-eq 0.272973 (standard-deviation array) 0.000001) "standard-deviation") -(assert (let [[i a] (extent array)] +(assert (approx-eq 0.208122 (median-absolute-deviation arr) 0.00001) "median-absolute-deviation") +(assert (approx-eq 0.274348 (sample-standard-deviation arr) 0.000001) "sample-standard-deviation") +(assert (approx-eq 0.272973 (standard-deviation arr) 0.000001) "standard-deviation") +(assert (let [[i a] (extent arr)] (and (approx-eq i 0.00746957 0.000001) (approx-eq a 0.973551 0.000001))) "extent") -(assert (approx-eq 48.7728 (sum-compensated array) 0.000001) "sum-compensated") -(assert (approx-eq 0.558921 (root-mean-square array) 0.000001) "root-mean-square") -(assert (approx-eq -0.124152 (sample-skewness array) 0.00001) "sample-skewness ") -(assert (approx-eq 0.0745142 (variance array) 0.000001) "variance") -(assert (approx-eq 0.0752669 (sample-variance array) 0.000001) "sample-variance") -(assert-no-error (shuffle-in-place array) "shuffle-in-place") -(assert (approx-eq 0.520372 (median array) 0.000001) "median") -(assert (approx-eq 0.645951 (mode array) 0.000001) "mode") -(assert (approx-eq 0.409312 (interquartile-range array) 0.000001) "interquartile-range") -(assert (approx-eq 0.348654 (geometric-mean array) 0.00001) "geometric-mean") -(assert (approx-eq 0.122595 (harmonic-mean array) 0.00001) "harmonic-mean") - -(assert (approx-eq 0.556132 (quantile-sorted array 0.5) 0.000001) "quantile-sorted") -(assert (approx-eq 0.520372 (quantile array 0.5) 0.000001) "quantile") -(assert (approx-eq 0.63 (quantile-rank-sorted array 0.5) 0.000001) "quantile-rank-sorted") -(assert (approx-eq 0.49 (quantile-rank array 0.5) 0.000001) "quantile-rank") -(assert (approx-eq 7.45142 (sum-nth-power-deviations array 2) 0.000001) "sum-nth-power-deviations") -(assert-no-error (sample-covariance array array2) "sample-covariance") -(assert-no-error (sample-correlation array array2) "sample-correlation") -(assert-no-error (t-test array 3) "t-test array") -(assert-no-error (t-test-2 array array2) "t-test-2") -(assert-no-error (permutation-test array array2) "permutation-test array") +(assert (approx-eq 48.7728 (sum-compensated arr) 0.000001) "sum-compensated") +(assert (approx-eq 0.558921 (root-mean-square arr) 0.000001) "root-mean-square") +(assert (approx-eq -0.124152 (sample-skewness arr) 0.00001) "sample-skewness ") +(assert (approx-eq 0.0745142 (variance arr) 0.000001) "variance") +(assert (approx-eq 0.0752669 (sample-variance arr) 0.000001) "sample-variance") +(assert (approx-eq 0.520372 (median arr) 0.000001) "median") +(assert (approx-eq 0.645951 (mode arr) 0.000001) "mode") +(assert (approx-eq 0.409312 (interquartile-range arr) 0.000001) "interquartile-range") +(assert (approx-eq 0.348654 (geometric-mean arr) 0.00001) "geometric-mean") +(assert (approx-eq 0.122595 (harmonic-mean arr) 0.00001) "harmonic-mean") + + +(assert (approx-eq 0.556132 (quantile-sorted arr 0.5) 0.000001) "quantile-sorted") +(assert (approx-eq 0.520372 (quantile arr 0.5) 0.000001) "quantile") +(assert (approx-eq 0.63 (quantile-rank-sorted arr 0.5) 0.000001) "quantile-rank-sorted") +(assert (approx-eq 0.49 (quantile-rank arr 0.5) 0.000001) "quantile-rank") +(assert (approx-eq 7.45142 (sum-nth-power-deviations arr 2) 0.000001) "sum-nth-power-deviations") +(assert-no-error (sample-covariance arr array2) "sample-covariance") +(assert-no-error (sample-correlation arr array2) "sample-correlation") +(assert-no-error (t-test arr 3) "t-test array") +(assert-no-error (t-test-2 arr array2) "t-test-2") + +# Do shuffle test last! +(assert-no-error (shuffle-in-place arr) "shuffle-in-place") + +(assert-no-error (permutation-test arr array2) "permutation-test array") (end-suite) |
