diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/test/test/lux/data/format/json.lux | 75 | ||||
-rw-r--r-- | stdlib/test/test/lux/data/number/complex.lux | 23 | ||||
-rw-r--r-- | stdlib/test/test/lux/lang/syntax.lux | 7 | ||||
-rw-r--r-- | stdlib/test/test/lux/math.lux | 13 | ||||
-rw-r--r-- | stdlib/test/test/lux/time/date.lux | 2 | ||||
-rw-r--r-- | stdlib/test/test/lux/time/instant.lux | 30 |
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)))))) |