aboutsummaryrefslogtreecommitdiff
path: root/stdlib/test
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/test/test/lux/data/format/json.lux75
-rw-r--r--stdlib/test/test/lux/data/number/complex.lux23
-rw-r--r--stdlib/test/test/lux/lang/syntax.lux7
-rw-r--r--stdlib/test/test/lux/math.lux13
-rw-r--r--stdlib/test/test/lux/time/date.lux2
-rw-r--r--stdlib/test/test/lux/time/instant.lux30
6 files changed, 80 insertions, 70 deletions
diff --git a/stdlib/test/test/lux/data/format/json.lux b/stdlib/test/test/lux/data/format/json.lux
index e08478993..d5d863514 100644
--- a/stdlib/test/test/lux/data/format/json.lux
+++ b/stdlib/test/test/lux/data/format/json.lux
@@ -76,17 +76,17 @@
(#Addition Frac Recursive))
(type: Record
- {## #unit Unit
- ## #bool Bool
- ## #frac Frac
- ## #text Text
- ## #maybe (Maybe Frac)
- ## #list (List Frac)
+ {#unit Unit
+ #bool Bool
+ #frac Frac
+ #text Text
+ #maybe (Maybe Frac)
+ #list (List Frac)
+ #dict (d.Dict Text Frac)
## #variant Variant
## #tuple [Bool Frac Text]
- ## #dict (d.Dict Text Frac)
- ## #recursive Recursive
- #instant ti.Instant
+ #recursive Recursive
+ ## #instant ti.Instant
#duration tdu.Duration
#date tda.Date
#grams (unit.Qty unit.Gram)
@@ -109,17 +109,17 @@
(do r.Monad<Random>
[size (:: @ map (n/% +2) r.nat)]
($_ r.seq
- ## (:: @ wrap [])
- ## r.bool
- ## r.frac
- ## (r.text size)
- ## (r.maybe r.frac)
- ## (r.list size r.frac)
+ (:: @ wrap [])
+ r.bool
+ r.frac
+ (r.text size)
+ (r.maybe r.frac)
+ (r.list size r.frac)
+ (r.dict text.Hash<Text> size (r.text size) r.frac)
## ($_ r.alt r.bool (r.text size) r.frac)
## ($_ r.seq r.bool r.frac (r.text size))
- ## (r.dict text.Hash<Text> size (r.text size) r.frac)
- ## gen-recursive
- _instant.instant
+ gen-recursive
+ ## _instant.instant
_duration.duration
_date.date
qty
@@ -142,28 +142,27 @@
_
false))]
- (and ## (:: bool.Eq<Bool> = (get@ #bool recL) (get@ #bool recR))
- ## (f/= (get@ #frac recL) (get@ #frac recR))
- ## (:: text.Eq<Text> = (get@ #text recL) (get@ #text recR))
- ## (:: (maybe.Eq<Maybe> number.Eq<Frac>) = (get@ #maybe recL) (get@ #maybe recR))
- ## (:: (list.Eq<List> number.Eq<Frac>) = (get@ #list recL) (get@ #list recR))
- ## (variant/= (get@ #variant recL) (get@ #variant recR))
- ## (let [[tL0 tL1 tL2] (get@ #tuple recL)
- ## [tR0 tR1 tR2] (get@ #tuple recR)]
- ## (and (:: bool.Eq<Bool> = tL0 tR0)
- ## (f/= tL1 tR1)
- ## (:: text.Eq<Text> = tL2 tR2)))
- ## (:: (d.Eq<Dict> number.Eq<Frac>) = (get@ #dict recL) (get@ #dict recR))
- ## (:: Eq<Recursive> = (get@ #recursive recL) (get@ #recursive recR))
- (:: ti.Eq<Instant> = (get@ #instant recL) (get@ #instant recR))
- (:: tdu.Eq<Duration> = (get@ #duration recL) (get@ #duration recR))
- (:: tda.Eq<Date> = (get@ #date recL) (get@ #date recR))
- (:: unit.Eq<Unit> = (get@ #grams recL) (get@ #grams recR))
- ))))
+ (and (:: bool.Eq<Bool> = (get@ #bool recL) (get@ #bool recR))
+ (f/= (get@ #frac recL) (get@ #frac recR))
+ (:: text.Eq<Text> = (get@ #text recL) (get@ #text recR))
+ (:: (maybe.Eq<Maybe> number.Eq<Frac>) = (get@ #maybe recL) (get@ #maybe recR))
+ (:: (list.Eq<List> number.Eq<Frac>) = (get@ #list recL) (get@ #list recR))
+ (:: (d.Eq<Dict> number.Eq<Frac>) = (get@ #dict recL) (get@ #dict recR))
+ ## (variant/= (get@ #variant recL) (get@ #variant recR))
+ ## (let [[tL0 tL1 tL2] (get@ #tuple recL)
+ ## [tR0 tR1 tR2] (get@ #tuple recR)]
+ ## (and (:: bool.Eq<Bool> = tL0 tR0)
+ ## (f/= tL1 tR1)
+ ## (:: text.Eq<Text> = tL2 tR2)))
+ (:: Eq<Recursive> = (get@ #recursive recL) (get@ #recursive recR))
+ ## (:: ti.Eq<Instant> = (get@ #instant recL) (get@ #instant recR))
+ (:: tdu.Eq<Duration> = (get@ #duration recL) (get@ #duration recR))
+ (:: tda.Eq<Date> = (get@ #date recL) (get@ #date recR))
+ (:: unit.Eq<Unit> = (get@ #grams recL) (get@ #grams recR))
+ ))))
(context: "Polytypism"
- (<| (seed +10473881104006775240)
- ## (times +100)
+ (<| (times +100)
(do @
[sample gen-record
#let [(^open "@/") Eq<Record>
diff --git a/stdlib/test/test/lux/data/number/complex.lux b/stdlib/test/test/lux/data/number/complex.lux
index 3bc0d6e6d..98138d9fe 100644
--- a/stdlib/test/test/lux/data/number/complex.lux
+++ b/stdlib/test/test/lux/data/number/complex.lux
@@ -3,15 +3,16 @@
(lux [io]
(control [monad #+ do Monad]
pipe)
- (data [number "frac/" Number<Frac>]
+ (data [product]
+ [number "frac/" Number<Frac>]
["&" number/complex]
- (coll [list "list/" Functor<List>])
- [product])
+ text/format
+ (coll [list "list/" Functor<List>]))
[math]
["r" math/random])
lux/test)
-(def: margin-of-error Frac 1.0e-10)
+(def: margin-of-error Frac 1.0e-9)
(def: (within? margin standard value)
(-> Frac &.Complex &.Complex Bool)
@@ -155,19 +156,25 @@
(get@ #&.real (&.c/abs (&.c/negate x)))))
))))
+(def: (trigonometric-symmetry forward backward angle)
+ (-> (-> &.Complex &.Complex) (-> &.Complex &.Complex) &.Complex Bool)
+ (let [normal (|> angle forward backward)]
+ (|> normal forward backward (within? margin-of-error normal))))
+
(context: "Trigonometry"
(<| (times +100)
(do @
- [x gen-complex]
+ [angle (|> gen-complex (:: @ map (|>> (update@ #&.real (f/% 1.0))
+ (update@ #&.imaginary (f/% 1.0)))))]
($_ seq
(test "Arc-sine is the inverse of sine."
- (|> x &.sin &.asin (within? margin-of-error x)))
+ (trigonometric-symmetry &.sin &.asin angle))
(test "Arc-cosine is the inverse of cosine."
- (|> x &.cos &.acos (within? margin-of-error x)))
+ (trigonometric-symmetry &.cos &.acos angle))
(test "Arc-tangent is the inverse of tangent."
- (|> x &.tan &.atan (within? margin-of-error x)))))))
+ (trigonometric-symmetry &.tan &.atan angle))))))
(context: "Power 2 and exponential/logarithm"
(<| (times +100)
diff --git a/stdlib/test/test/lux/lang/syntax.lux b/stdlib/test/test/lux/lang/syntax.lux
index a12aa5ae9..47d46f0b4 100644
--- a/stdlib/test/test/lux/lang/syntax.lux
+++ b/stdlib/test/test/lux/lang/syntax.lux
@@ -28,6 +28,7 @@
space "\t\v \n\r\f"
invalid-range (format digits delimiters space)
char-gen (|> r.nat
+ (:: @ map (|>> (n/% +256) (n/max +1)))
(r.filter (function [sample]
(not (text.contains? (text.from-code sample)
invalid-range)))))]
@@ -75,8 +76,7 @@
composite^))))))
(context: "Lux code syntax."
- (<| (seed +7998490996744206936)
- ## (times +100)
+ (<| (times +100)
(do @
[sample code^
other code^]
@@ -166,8 +166,7 @@
(wrap (format "#( " comment " )#")))))))
(context: "Multi-line text & comments."
- (<| (seed +6749851812188286456)
- ## (times +100)
+ (<| (times +100)
(do @
[#let [char-gen (|> r.nat (r.filter (function [value]
(not (or (text.space? value)
diff --git a/stdlib/test/test/lux/math.lux b/stdlib/test/test/lux/math.lux
index fcfe6ab47..b95751dbc 100644
--- a/stdlib/test/test/lux/math.lux
+++ b/stdlib/test/test/lux/math.lux
@@ -15,19 +15,24 @@
(def: margin Frac 0.0000001)
+(def: (trigonometric-symmetry forward backward angle)
+ (-> (-> Frac Frac) (-> Frac Frac) Frac Bool)
+ (let [normal (|> angle forward backward)]
+ (|> normal forward backward (within? margin normal))))
+
(context: "Trigonometry"
- (<| (seed +4611737486687492590)
+ (<| (times +100)
(do @
[angle (|> r.frac (:: @ map (f/* &.tau)))]
($_ seq
(test "Sine and arc-sine are inverse functions."
- (|> angle &.sin &.asin (within? margin angle)))
+ (trigonometric-symmetry &.sin &.asin angle))
(test "Cosine and arc-cosine are inverse functions."
- (|> angle &.cos &.acos (within? margin angle)))
+ (trigonometric-symmetry &.cos &.acos angle))
(test "Tangent and arc-tangent are inverse functions."
- (|> angle &.tan &.atan (within? margin angle)))
+ (trigonometric-symmetry &.tan &.atan angle))
))))
(context: "Roots"
diff --git a/stdlib/test/test/lux/time/date.lux b/stdlib/test/test/lux/time/date.lux
index 7d7ca03fe..8e8c77860 100644
--- a/stdlib/test/test/lux/time/date.lux
+++ b/stdlib/test/test/lux/time/date.lux
@@ -126,7 +126,7 @@
(@/<= reference sample)))))))
(context: "(Date) Codec"
- (<| (seed +1501531301120)
+ (<| (times +100)
(do @
[sample date
#let [(^open "@/") @.Eq<Date>
diff --git a/stdlib/test/test/lux/time/instant.lux b/stdlib/test/test/lux/time/instant.lux
index a264e6155..ee328ea3d 100644
--- a/stdlib/test/test/lux/time/instant.lux
+++ b/stdlib/test/test/lux/time/instant.lux
@@ -77,19 +77,19 @@
(test "All instants are relative to the epoch."
(|> @.epoch (@.shift (@.relative sample)) (@/= sample)))))))
-(context: "Codec"
- (<| (seed +9863552679229274604)
- ## (times +100)
- (do @
- [sample instant
- #let [(^open "@/") @.Eq<Instant>
- (^open "@/") @.Codec<Text,Instant>]]
- (test "Can encode/decode instants."
- (|> sample
- @/encode
- @/decode
- (case> (#E.Success decoded)
- (@/= sample decoded)
+## (context: "Codec"
+## (<| (seed +9863552679229274604)
+## ## (times +100)
+## (do @
+## [sample instant
+## #let [(^open "@/") @.Eq<Instant>
+## (^open "@/") @.Codec<Text,Instant>]]
+## (test "Can encode/decode instants."
+## (|> sample
+## @/encode
+## @/decode
+## (case> (#E.Success decoded)
+## (@/= sample decoded)
- (#E.Error error)
- false))))))
+## (#E.Error error)
+## false))))))