diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/test/test/lux.lux | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/stdlib/test/test/lux.lux b/stdlib/test/test/lux.lux index 24954fa2f..1085a1376 100644 --- a/stdlib/test/test/lux.lux +++ b/stdlib/test/test/lux.lux @@ -10,7 +10,8 @@ (codata [io]) [math] (math ["R" random]) - (data text/format) + (data [text "T/" Eq<Text>] + text/format) [compiler] (macro ["s" syntax #+ syntax:]))) @@ -77,7 +78,7 @@ ["Frac" R;frac f.= f.< f.> f.<= f.>= f.min f.max] ) -(do-template [category rand-gen = + - * / <%> > <0> <1> <10> %x <cap> <prep>] +(do-template [category rand-gen = + - * / <%> > <0> <1> <factor> %x <cap> <prep>] [(test: (format "[" category "] " "Additive identity") [x rand-gen] (assert "" @@ -87,17 +88,8 @@ (test: (format "[" category "] " "Addition & Substraction") [x (:: @ map <prep> rand-gen) y (:: @ map <prep> rand-gen) - #let [x (* <10> x) - y (* <10> y) - cond (and (|> x (- y) (+ y) (= x)) - (|> x (+ y) (- y) (= x))) - _ (if cond - [] - (exec - (log! "+- SAMPLE") - (log! (format (%x x) " -+ " (%x y) " = " (%x (|> x (- y) (+ y))))) - (log! (format (%x x) " +- " (%x y) " = " (%x (|> x (+ y) (- y))))))) - ]] + #let [x (* <factor> x) + y (* <factor> y)]] (assert "" (and (|> x (- y) (+ y) (= x)) (|> x (+ y) (- y) (= x))))) @@ -105,8 +97,12 @@ (test: (format "[" category "] " "Multiplicative identity") [x rand-gen] (assert "" - (and (|> x (* <1>) (= x)) - (|> x (/ <1>) (= x))))) + ## Skip this test for Frac + ## because Frac division loses the last + ## 32 bits of precision. + (or (T/= "Frac" category) + (and (|> x (* <1>) (= x)) + (|> x (/ <1>) (= x)))))) (test: (format "[" category "] " "Multiplication & Division") [x (:: @ map <cap> rand-gen) @@ -116,13 +112,18 @@ #let [r (<%> y x) x' (- r x)]] (assert "" - (or (> x' y) - (|> x' (/ y) (* y) (= x'))) + ## Skip this test for Frac + ## because Frac division loses the last + ## 32 bits of precision. + (or (T/= "Frac" category) + (or (> x' y) + (|> x' (/ y) (* y) (= x')))) ))] - ["Nat" R;nat n.= n.+ n.- n.* n./ n.% n.> +0 +1 +1000000 %n (n.% +1000) id] - ["Int" R;int i.= i.+ i.- i.* i./ i.% i.> 0 1 1000000 %i (i.% 1000) id] - ["Real" R;real r.= r.+ r.- r.* r./ r.% r.> 0.0 1.0 1000000.0 %r id math;floor] + ["Nat" R;nat n.= n.+ n.- n.* n./ n.% n.> +0 +1 +1000000 %n (n.% +1000) id] + ["Int" R;int i.= i.+ i.- i.* i./ i.% i.> 0 1 1000000 %i (i.% 1000) id] + ["Real" R;real r.= r.+ r.- r.* r./ r.% r.> 0.0 1.0 1000000.0 %r id math;floor] + ["Frac" R;frac f.= f.+ f.- f.* f./ f.% f.> .0 (_lux_proc ["frac" "max-value"] []) (_lux_proc ["frac" "max-value"] []) %f id id] ) (do-template [category rand-gen -> <- = <cap> %a %z] |