diff options
author | Eduardo Julian | 2016-12-27 07:21:58 -0400 |
---|---|---|
committer | Eduardo Julian | 2016-12-27 07:21:58 -0400 |
commit | 62cdfcec5980c936d5be8b37e34e8fb9533d1ba4 (patch) | |
tree | 75b0f25322d2485031abd97ae24029abb7e715c4 /stdlib/test | |
parent | 47c956b3d436094f6d9fb3ad7987d7ae44889ce5 (diff) |
- Added a few more tests for Frac numbers.
Diffstat (limited to 'stdlib/test')
-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] |