aboutsummaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/test/test/lux.lux41
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]