aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorCalvin Rose <calsrose@gmail.com>2026-01-17 11:04:54 -0600
committerCalvin Rose <calsrose@gmail.com>2026-01-17 11:04:54 -0600
commit3f33f794354087bfb914770efa4db519a9823415 (patch)
treea27d490c4c5ced079a6bb325ae9b84a8640a1f80
parentMore work on sh-dsl and improving testing libraries. (diff)
parentTesting improvements and randomness. (diff)
Merge branch 'master' into sh-dslsh-dsl
-rw-r--r--spork/math.janet4
-rw-r--r--spork/test.janet6
-rw-r--r--test/suite-tarray.janet62
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)