From 2a05d8f3711d2e1b6fcccd9a2869478197386a7f Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sat, 6 Apr 2019 23:11:20 -0400 Subject: Moved "lux/cli", "lux/io" and "lux/function" under "lux/control". --- stdlib/source/test/lux.lux | 18 ++-- stdlib/source/test/lux/abstract/apply.lux | 3 +- stdlib/source/test/lux/abstract/enum.lux | 3 +- stdlib/source/test/lux/abstract/functor.lux | 3 +- stdlib/source/test/lux/abstract/monad.lux | 3 +- stdlib/source/test/lux/abstract/monoid.lux | 5 +- stdlib/source/test/lux/cli.lux | 75 ------------- stdlib/source/test/lux/control.lux | 7 +- stdlib/source/test/lux/control/cli.lux | 75 +++++++++++++ .../source/test/lux/control/concurrency/actor.lux | 8 +- .../source/test/lux/control/concurrency/atom.lux | 5 +- stdlib/source/test/lux/control/concurrency/frp.lux | 10 +- .../test/lux/control/concurrency/promise.lux | 4 +- .../test/lux/control/concurrency/semaphore.lux | 2 +- stdlib/source/test/lux/control/concurrency/stm.lux | 14 +-- stdlib/source/test/lux/control/io.lux | 42 ++++++++ stdlib/source/test/lux/control/reader.lux | 7 +- stdlib/source/test/lux/control/region.lux | 8 +- stdlib/source/test/lux/control/state.lux | 4 +- stdlib/source/test/lux/control/writer.lux | 3 +- stdlib/source/test/lux/data/bit.lux | 5 +- stdlib/source/test/lux/data/collection/bits.lux | 4 +- stdlib/source/test/lux/data/collection/list.lux | 4 +- stdlib/source/test/lux/data/error.lux | 4 +- stdlib/source/test/lux/data/maybe.lux | 2 +- stdlib/source/test/lux/host/jvm.jvm.lux | 2 +- stdlib/source/test/lux/io.lux | 41 -------- stdlib/source/test/lux/math.lux | 117 +++++++++++---------- stdlib/source/test/lux/math/infix.lux | 2 +- stdlib/source/test/lux/type/resource.lux | 3 +- stdlib/source/test/lux/world/file.lux | 2 +- stdlib/source/test/lux/world/net/tcp.lux | 2 +- stdlib/source/test/lux/world/net/udp.lux | 2 +- 33 files changed, 251 insertions(+), 238 deletions(-) delete mode 100644 stdlib/source/test/lux/cli.lux create mode 100644 stdlib/source/test/lux/control/cli.lux create mode 100644 stdlib/source/test/lux/control/io.lux delete mode 100644 stdlib/source/test/lux/io.lux (limited to 'stdlib/source/test') diff --git a/stdlib/source/test/lux.lux b/stdlib/source/test/lux.lux index 5b45d6e5e..42f4c9f81 100644 --- a/stdlib/source/test/lux.lux +++ b/stdlib/source/test/lux.lux @@ -10,15 +10,16 @@ [host (#+)]])] (.module: ["/" lux #* - [cli (#+ program:)] - ["." io (#+ io)] [abstract [monad (#+ do)] [predicate (#+ Predicate)]] + [control + [cli (#+ program:)] + ["." io (#+ io)] + ["." function]] [data [number ["." i64]]] - ["." function] ["." math] ["_" test (#+ Test)] ## These modules do not need to be tested. @@ -110,8 +111,6 @@ ] ## TODO: Must have 100% coverage on tests. ["." / #_ - ["#." cli] - ["#." io] ["#." abstract] ["#." control] ["#." data] @@ -353,8 +352,6 @@ ..templates) (<| (_.context "Cross-platform support.") ..cross-platform-support) - /cli.test - /io.test (<| (_.context "/abstract") /abstract.test) (<| (_.context "/control") @@ -362,16 +359,15 @@ (<| (_.context "/data") /data.test) /macro.test - (<| (_.context "/math") - /math.test) + /math.test (<| (_.context "/time") /time.test) /type.test /world.test - (<| (_.context "/host Host-platform interoperation") + (<| (_.context "/host") ($_ _.and /host.test - (<| (_.context "/jvm JVM (Java Virtual Machine)") + (<| (_.context "/jvm") /host/jvm.test))) ))) diff --git a/stdlib/source/test/lux/abstract/apply.lux b/stdlib/source/test/lux/abstract/apply.lux index a269810bb..6b3ea631f 100644 --- a/stdlib/source/test/lux/abstract/apply.lux +++ b/stdlib/source/test/lux/abstract/apply.lux @@ -4,7 +4,8 @@ [data [text format]] - ["." function] + [control + ["." function]] [math ["r" random]] ["_" test (#+ Test)]] diff --git a/stdlib/source/test/lux/abstract/enum.lux b/stdlib/source/test/lux/abstract/enum.lux index 63bbf97ad..b0498dc09 100644 --- a/stdlib/source/test/lux/abstract/enum.lux +++ b/stdlib/source/test/lux/abstract/enum.lux @@ -2,7 +2,8 @@ [lux #* data/text/format ["_" test (#+ Test)] - ["." function] + [control + ["." function]] [abstract/monad (#+ do)] [math ["r" random (#+ Random)]]] diff --git a/stdlib/source/test/lux/abstract/functor.lux b/stdlib/source/test/lux/abstract/functor.lux index cf3538575..77a07233b 100644 --- a/stdlib/source/test/lux/abstract/functor.lux +++ b/stdlib/source/test/lux/abstract/functor.lux @@ -6,7 +6,8 @@ [abstract [equivalence (#+ Equivalence)] [monad (#+ do)]] - ["." function]] + [control + ["." function]]] {1 ["." / (#+ Functor)]}) diff --git a/stdlib/source/test/lux/abstract/monad.lux b/stdlib/source/test/lux/abstract/monad.lux index 4382a260d..827a1e509 100644 --- a/stdlib/source/test/lux/abstract/monad.lux +++ b/stdlib/source/test/lux/abstract/monad.lux @@ -3,7 +3,8 @@ [data [text format]] - ["." function] + [control + ["." function]] [math ["r" random]] ["_" test (#+ Test)]] diff --git a/stdlib/source/test/lux/abstract/monoid.lux b/stdlib/source/test/lux/abstract/monoid.lux index b526c3e58..3600795ff 100644 --- a/stdlib/source/test/lux/abstract/monoid.lux +++ b/stdlib/source/test/lux/abstract/monoid.lux @@ -2,10 +2,11 @@ [lux #* data/text/format ["_" test (#+ Test)] - ["." function] [abstract/monad (#+ do)] [math - ["r" random (#+ Random)]]] + ["r" random (#+ Random)]] + [control + ["." function]]] {1 ["." / (#+ Monoid) [// diff --git a/stdlib/source/test/lux/cli.lux b/stdlib/source/test/lux/cli.lux deleted file mode 100644 index ff7a3abb3..000000000 --- a/stdlib/source/test/lux/cli.lux +++ /dev/null @@ -1,75 +0,0 @@ -(.module: - [lux #* - data/text/format - ["M" abstract/monad (#+ Monad do)] - ["_" test (#+ Test)] - ["r" math/random] - [control - pipe - ["p" parser]] - [data - ["." error] - [number - ["." nat ("#;." decimal)]] - ["." text ("#;." equivalence)] - [collection - ["." list]]]] - {1 - ["." /]}) - -(def: #export test - Test - (<| (_.context (%name (name-of /.CLI))) - (do r.monad - [num-args (|> r.nat (:: @ map (n/% 10))) - #let [gen-arg (:: @ map nat;encode r.nat)] - yes gen-arg - #let [gen-ignore (r.filter (|>> (text;= yes) not) - (r.unicode 5))] - no gen-ignore - pre-ignore (r.list 5 gen-ignore) - post-ignore (r.list 5 gen-ignore)] - ($_ _.and - (_.test "Can read any argument." - (|> (/.run (list yes) /.any) - (case> (#error.Failure _) - #0 - - (#error.Success arg) - (text;= arg yes)))) - (_.test "Can test tokens." - (and (|> (/.run (list yes) (/.this yes)) - (case> (#error.Failure _) - #0 - - (#error.Success _) - #1)) - (|> (/.run (list no) (/.this yes)) - (case> (#error.Failure _) - #1 - - (#error.Success _) - #0)))) - (_.test "Can use custom token parsers." - (|> (/.run (list yes) (/.parse nat;decode)) - (case> (#error.Failure _) - #0 - - (#error.Success parsed) - (text;= (nat;encode parsed) - yes)))) - (_.test "Can query if there are any more inputs." - (and (|> (/.run (list) /.end) - (case> (#error.Success []) #1 _ #0)) - (|> (/.run (list yes) (p.not /.end)) - (case> (#error.Success []) #0 _ #1)))) - (_.test "Can parse CLI input anywhere." - (|> (/.run (list.concat (list pre-ignore (list yes) post-ignore)) - (|> (/.somewhere (/.this yes)) - (p.before (p.some /.any)))) - (case> (#error.Failure _) - #0 - - (#error.Success _) - #1))) - )))) diff --git a/stdlib/source/test/lux/control.lux b/stdlib/source/test/lux/control.lux index 341a119fe..9d95dc969 100644 --- a/stdlib/source/test/lux/control.lux +++ b/stdlib/source/test/lux/control.lux @@ -2,8 +2,10 @@ [lux #* ["_" test (#+ Test)]] ["." / #_ + ["#." cli] ["#." continuation] ["#." exception] + ["#." io] ["#." parser] ["#." pipe] ["#." reader] @@ -19,7 +21,8 @@ ["#." stm]] [security ["#." privacy] - ["#." integrity]]]) + ["#." integrity]] + ]) (def: concurrency Test @@ -41,8 +44,10 @@ (def: #export test Test ($_ _.and + /cli.test /continuation.test /exception.test + /io.test /parser.test (<| (_.context "/pipe") /pipe.test) diff --git a/stdlib/source/test/lux/control/cli.lux b/stdlib/source/test/lux/control/cli.lux new file mode 100644 index 000000000..ff7a3abb3 --- /dev/null +++ b/stdlib/source/test/lux/control/cli.lux @@ -0,0 +1,75 @@ +(.module: + [lux #* + data/text/format + ["M" abstract/monad (#+ Monad do)] + ["_" test (#+ Test)] + ["r" math/random] + [control + pipe + ["p" parser]] + [data + ["." error] + [number + ["." nat ("#;." decimal)]] + ["." text ("#;." equivalence)] + [collection + ["." list]]]] + {1 + ["." /]}) + +(def: #export test + Test + (<| (_.context (%name (name-of /.CLI))) + (do r.monad + [num-args (|> r.nat (:: @ map (n/% 10))) + #let [gen-arg (:: @ map nat;encode r.nat)] + yes gen-arg + #let [gen-ignore (r.filter (|>> (text;= yes) not) + (r.unicode 5))] + no gen-ignore + pre-ignore (r.list 5 gen-ignore) + post-ignore (r.list 5 gen-ignore)] + ($_ _.and + (_.test "Can read any argument." + (|> (/.run (list yes) /.any) + (case> (#error.Failure _) + #0 + + (#error.Success arg) + (text;= arg yes)))) + (_.test "Can test tokens." + (and (|> (/.run (list yes) (/.this yes)) + (case> (#error.Failure _) + #0 + + (#error.Success _) + #1)) + (|> (/.run (list no) (/.this yes)) + (case> (#error.Failure _) + #1 + + (#error.Success _) + #0)))) + (_.test "Can use custom token parsers." + (|> (/.run (list yes) (/.parse nat;decode)) + (case> (#error.Failure _) + #0 + + (#error.Success parsed) + (text;= (nat;encode parsed) + yes)))) + (_.test "Can query if there are any more inputs." + (and (|> (/.run (list) /.end) + (case> (#error.Success []) #1 _ #0)) + (|> (/.run (list yes) (p.not /.end)) + (case> (#error.Success []) #0 _ #1)))) + (_.test "Can parse CLI input anywhere." + (|> (/.run (list.concat (list pre-ignore (list yes) post-ignore)) + (|> (/.somewhere (/.this yes)) + (p.before (p.some /.any)))) + (case> (#error.Failure _) + #0 + + (#error.Success _) + #1))) + )))) diff --git a/stdlib/source/test/lux/control/concurrency/actor.lux b/stdlib/source/test/lux/control/concurrency/actor.lux index eff4d051d..a39f7b039 100644 --- a/stdlib/source/test/lux/control/concurrency/actor.lux +++ b/stdlib/source/test/lux/control/concurrency/actor.lux @@ -1,12 +1,10 @@ (.module: [lux #* ["_" test (#+ Test)] - ["." io (#+ IO io)] [abstract/monad (#+ do)] [control ["ex" exception] - [concurrency - ["." promise ("#;." monad)]]] + ["." io (#+ IO io)]] [data ["." error] [text @@ -14,7 +12,9 @@ [math ["r" random]]] {1 - ["." / (#+ actor: message:)]}) + ["." / (#+ actor: message:) + [// + ["." promise ("#;." monad)]]]}) (actor: Counter Nat diff --git a/stdlib/source/test/lux/control/concurrency/atom.lux b/stdlib/source/test/lux/control/concurrency/atom.lux index 455f8b00d..63f9ec296 100644 --- a/stdlib/source/test/lux/control/concurrency/atom.lux +++ b/stdlib/source/test/lux/control/concurrency/atom.lux @@ -1,11 +1,12 @@ (.module: [lux #* ["_" test (#+ Test)] - ["." io] [abstract/monad (#+ do)] data/text/format [math - ["r" random]]] + ["r" random]] + [control + ["." io]]] {1 ["." /]}) diff --git a/stdlib/source/test/lux/control/concurrency/frp.lux b/stdlib/source/test/lux/control/concurrency/frp.lux index 7ac79b465..f9cea5737 100644 --- a/stdlib/source/test/lux/control/concurrency/frp.lux +++ b/stdlib/source/test/lux/control/concurrency/frp.lux @@ -1,12 +1,9 @@ (.module: [lux #* ["_" test (#+ Test)] - ["." io (#+ IO io)] [abstract/monad (#+ do)] [control - [concurrency - ["." promise ("#@." monad)] - ["." atom (#+ Atom atom)]]] + ["." io (#+ IO io)]] [data [number ["." nat]] @@ -15,7 +12,10 @@ [math ["r" random]]] {1 - ["." / (#+ Channel)]}) + ["." / (#+ Channel) + [// + ["." promise ("#@." monad)] + ["." atom (#+ Atom atom)]]]}) (def: #export test Test diff --git a/stdlib/source/test/lux/control/concurrency/promise.lux b/stdlib/source/test/lux/control/concurrency/promise.lux index 5a49f26fe..5a4a41adb 100644 --- a/stdlib/source/test/lux/control/concurrency/promise.lux +++ b/stdlib/source/test/lux/control/concurrency/promise.lux @@ -1,10 +1,10 @@ (.module: [lux #* ["_" test (#+ Test)] - ["." io] [abstract/monad (#+ do)] [control - pipe] + pipe + ["." io]] data/text/format [math ["r" random]]] diff --git a/stdlib/source/test/lux/control/concurrency/semaphore.lux b/stdlib/source/test/lux/control/concurrency/semaphore.lux index 40bd81364..369bc8507 100644 --- a/stdlib/source/test/lux/control/concurrency/semaphore.lux +++ b/stdlib/source/test/lux/control/concurrency/semaphore.lux @@ -3,6 +3,7 @@ [abstract ["." monad (#+ do)]] [control + ["." io] [concurrency ["/" semaphore] ["." promise (#+ Promise)] @@ -13,7 +14,6 @@ format] [collection ["." list ("#;." functor)]]] - ["." io] [math ["r" random]]] lux/test) diff --git a/stdlib/source/test/lux/control/concurrency/stm.lux b/stdlib/source/test/lux/control/concurrency/stm.lux index 9e3b9290c..6b9a65a55 100644 --- a/stdlib/source/test/lux/control/concurrency/stm.lux +++ b/stdlib/source/test/lux/control/concurrency/stm.lux @@ -1,14 +1,9 @@ (.module: [lux #* ["_" test (#+ Test)] - ["." io (#+ IO)] ["M" abstract/monad (#+ do Monad)] [control - [concurrency - ["." atom (#+ Atom atom)] - ["." process] - ["." promise] - ["." frp (#+ Channel)]]] + ["." io (#+ IO)]] [data text/format [number @@ -18,7 +13,12 @@ [math ["r" random]]] {1 - ["." /]}) + ["." / + [// + ["." atom (#+ Atom atom)] + ["." process] + ["." promise] + ["." frp (#+ Channel)]]]}) (def: (read! channel) (All [a] (-> (Channel a) (IO (Atom (List a))))) diff --git a/stdlib/source/test/lux/control/io.lux b/stdlib/source/test/lux/control/io.lux new file mode 100644 index 000000000..1a14558b2 --- /dev/null +++ b/stdlib/source/test/lux/control/io.lux @@ -0,0 +1,42 @@ +(.module: + [lux #* + data/text/format + ["_" test (#+ Test)] + ["r" math/random] + [abstract + [monad (#+ do)] + {[0 #test] + [/ + ["$." functor (#+ Injection Comparison)] + ["$." apply] + ["$." monad]]}]] + {1 + ["." / (#+ IO) + [// + ["." function]]]}) + +(def: injection + (Injection IO) + (|>> /.io)) + +(def: comparison + (Comparison IO) + (function (_ == left right) + (== (/.run left) (/.run right)))) + +(def: #export test + Test + (<| (_.context (%name (name-of /.IO))) + (do r.monad + [sample r.nat + exit-code r.int] + ($_ _.and + ($functor.spec ..injection ..comparison /.functor) + ($apply.spec ..injection ..comparison /.apply) + ($monad.spec ..injection ..comparison /.monad) + + (_.test "Can execute computations designated as I/O computations." + (n/= sample (/.run (/.io sample)))) + (_.test "I/O operations won't execute unless they are explicitly run." + (exec (/.exit exit-code) + true)))))) diff --git a/stdlib/source/test/lux/control/reader.lux b/stdlib/source/test/lux/control/reader.lux index aa639ce70..94aacdb5d 100644 --- a/stdlib/source/test/lux/control/reader.lux +++ b/stdlib/source/test/lux/control/reader.lux @@ -1,6 +1,5 @@ (.module: [lux #* - ["." io (#+ IO)] ["_" test (#+ Test)] [abstract [monad (#+ do)] @@ -15,7 +14,9 @@ [math ["r" random]]] {1 - ["." / (#+ Reader)]}) + ["." / (#+ Reader) + [// + ["." io (#+ IO)]]]}) (def: (injection value) (Injection (All [a r] (Reader r a))) @@ -29,7 +30,7 @@ (def: #export test Test - (<| (_.context (%name (name-of /.Reader))) + (<| (_.context (%name (name-of /._))) (do r.monad [sample r.nat factor r.nat] diff --git a/stdlib/source/test/lux/control/region.lux b/stdlib/source/test/lux/control/region.lux index a575e4250..57ed91c1a 100644 --- a/stdlib/source/test/lux/control/region.lux +++ b/stdlib/source/test/lux/control/region.lux @@ -3,9 +3,6 @@ ["_" test (#+ Test)] [abstract ["." monad (#+ do)]] - [control - ["." thread (#+ Thread)] - ["ex" exception (#+ exception:)]] [data ["." error (#+ Error)] [text @@ -15,7 +12,10 @@ [math ["r" random]]] {1 - ["." /]}) + ["." / + [// + ["." thread (#+ Thread)] + ["ex" exception (#+ exception:)]]]}) (exception: oops) diff --git a/stdlib/source/test/lux/control/state.lux b/stdlib/source/test/lux/control/state.lux index 808d5ebb2..96f9e9d34 100644 --- a/stdlib/source/test/lux/control/state.lux +++ b/stdlib/source/test/lux/control/state.lux @@ -1,7 +1,6 @@ (.module: [lux #* ["_" test (#+ Test)] - ["." io] [abstract [monad (#+ do)] {[0 #test] @@ -10,7 +9,8 @@ ["$." apply] ["$." monad]]}] [control - [pipe (#+ let>)]] + [pipe (#+ let>)] + ["." io]] [data ["." product] [text diff --git a/stdlib/source/test/lux/control/writer.lux b/stdlib/source/test/lux/control/writer.lux index 392fc7a4b..a95384fef 100644 --- a/stdlib/source/test/lux/control/writer.lux +++ b/stdlib/source/test/lux/control/writer.lux @@ -1,7 +1,6 @@ (.module: [lux #* ["_" test (#+ Test)] - ["." io] [abstract [equivalence (#+ Equivalence)] [monoid (#+ Monoid)] @@ -11,6 +10,8 @@ ["$." functor (#+ Injection Comparison)] ["$." apply] ["$." monad]]}] + [control + ["." io]] [data ["." product] ["." text ("#;." equivalence) diff --git a/stdlib/source/test/lux/data/bit.lux b/stdlib/source/test/lux/data/bit.lux index 9515fa5ce..eebca5f2a 100644 --- a/stdlib/source/test/lux/data/bit.lux +++ b/stdlib/source/test/lux/data/bit.lux @@ -3,14 +3,15 @@ data/text/format ["_" test (#+ Test)] ["r" math/random] - ["." function] [abstract [monad (#+ do)] {[0 #test] [/ ["$." equivalence] ["$." monoid] - ["$." codec]]}]] + ["$." codec]]}] + [control + ["." function]]] {1 ["." /]}) diff --git a/stdlib/source/test/lux/data/collection/bits.lux b/stdlib/source/test/lux/data/collection/bits.lux index a727761ca..4b9743912 100644 --- a/stdlib/source/test/lux/data/collection/bits.lux +++ b/stdlib/source/test/lux/data/collection/bits.lux @@ -27,7 +27,7 @@ (def: #export test Test - (<| (_.context (%name (name-of /.Bits))) + (<| (_.context (%name (name-of /._))) ($_ _.and ($equivalence.spec /.equivalence ..bits) (do r.monad @@ -47,7 +47,7 @@ (and (n/= 0 (/.capacity /.empty)) (|> /.empty (/.set idx) /.capacity (n/- idx) - (predicate.union (n/>= 0) + (predicate.unite (n/>= 0) (n/< /.chunk-size))))) (_.test "Bits (must) shrink when (and as much as) possible." (let [grown (/.flip idx /.empty)] diff --git a/stdlib/source/test/lux/data/collection/list.lux b/stdlib/source/test/lux/data/collection/list.lux index 247b2de78..fb97c3d32 100644 --- a/stdlib/source/test/lux/data/collection/list.lux +++ b/stdlib/source/test/lux/data/collection/list.lux @@ -2,7 +2,6 @@ [lux #* data/text/format ["_" test (#+ Test)] - ["." io] [abstract [monad (#+ do)] {[0 #test] @@ -14,7 +13,8 @@ ["$." apply] ["$." monad]]}] [control - pipe] + pipe + ["." io]] [data ["." bit] ["." product] diff --git a/stdlib/source/test/lux/data/error.lux b/stdlib/source/test/lux/data/error.lux index 8f89ccb8f..f65128ec3 100644 --- a/stdlib/source/test/lux/data/error.lux +++ b/stdlib/source/test/lux/data/error.lux @@ -1,7 +1,6 @@ (.module: [lux #* ["_" test (#+ Test)] - ["." io] [abstract [monad (#+ do Monad)] {[0 #test] @@ -11,7 +10,8 @@ ["$." monad] ["$." equivalence]]}] [control - pipe] + pipe + ["." io]] [data text/format [number diff --git a/stdlib/source/test/lux/data/maybe.lux b/stdlib/source/test/lux/data/maybe.lux index dc6ca1d56..a92141bd9 100644 --- a/stdlib/source/test/lux/data/maybe.lux +++ b/stdlib/source/test/lux/data/maybe.lux @@ -10,13 +10,13 @@ ["$." apply] ["$." monad]]}] [control + ["." io ("#@." monad)] pipe] [data ["." text format] [number ["." nat]]] - ["." io ("#@." monad)] [math ["r" random (#+ Random)]]] {1 diff --git a/stdlib/source/test/lux/host/jvm.jvm.lux b/stdlib/source/test/lux/host/jvm.jvm.lux index 16c4aea90..47c6f35d9 100644 --- a/stdlib/source/test/lux/host/jvm.jvm.lux +++ b/stdlib/source/test/lux/host/jvm.jvm.lux @@ -2,6 +2,7 @@ [lux #* [abstract/monad (#+ do)] [control + ["." io (#+ IO)] [concurrency ["." atom]] [security @@ -15,7 +16,6 @@ [collection ["." dictionary] ["." row]]] - ["." io (#+ IO)] [world ["." file (#+ File)] [binary (#+ Binary)]] diff --git a/stdlib/source/test/lux/io.lux b/stdlib/source/test/lux/io.lux deleted file mode 100644 index 3b00ceb3f..000000000 --- a/stdlib/source/test/lux/io.lux +++ /dev/null @@ -1,41 +0,0 @@ -(.module: - [lux #* - data/text/format - ["_" test (#+ Test)] - ["r" math/random] - [abstract - [monad (#+ do)] - {[0 #test] - [/ - ["$." functor (#+ Injection Comparison)] - ["$." apply] - ["$." monad]]}] - ["." function]] - {1 - ["." / (#+ IO)]}) - -(def: injection - (Injection IO) - (|>> /.io)) - -(def: comparison - (Comparison IO) - (function (_ == left right) - (== (/.run left) (/.run right)))) - -(def: #export test - Test - (<| (_.context (%name (name-of /.IO))) - (do r.monad - [sample r.nat - exit-code r.int] - ($_ _.and - ($functor.spec ..injection ..comparison /.functor) - ($apply.spec ..injection ..comparison /.apply) - ($monad.spec ..injection ..comparison /.monad) - - (_.test "Can execute computations designated as I/O computations." - (n/= sample (/.run (/.io sample)))) - (_.test "I/O operations won't execute unless they are explicitly run." - (exec (/.exit exit-code) - true)))))) diff --git a/stdlib/source/test/lux/math.lux b/stdlib/source/test/lux/math.lux index fcd4a1134..c11380015 100644 --- a/stdlib/source/test/lux/math.lux +++ b/stdlib/source/test/lux/math.lux @@ -31,63 +31,64 @@ (def: #export test Test - ($_ _.and - (<| (_.context "Trigonometry") - (do r.monad - [angle (|> r.safe-frac (:: @ map (f/* /.tau)))] - ($_ _.and - (_.test "Sine and arc-sine are inverse functions." - (trigonometric-symmetry /.sin /.asin angle)) - (_.test "Cosine and arc-cosine are inverse functions." - (trigonometric-symmetry /.cos /.acos angle)) - (_.test "Tangent and arc-tangent are inverse functions." - (trigonometric-symmetry /.tan /.atan angle)) - ))) - (<| (_.context "Rounding") - (do r.monad - [sample (|> r.safe-frac (:: @ map (f/* +1000.0)))] - ($_ _.and - (_.test "The ceiling will be an integer value, and will be >= the original." - (let [ceil'd (/.ceil sample)] - (and (|> ceil'd frac-to-int int-to-frac (f/= ceil'd)) - (f/>= sample ceil'd) - (f/<= +1.0 (f/- sample ceil'd))))) - (_.test "The floor will be an integer value, and will be <= the original." - (let [floor'd (/.floor sample)] - (and (|> floor'd frac-to-int int-to-frac (f/= floor'd)) - (f/<= sample floor'd) - (f/<= +1.0 (f/- floor'd sample))))) - (_.test "The round will be an integer value, and will be < or > or = the original." - (let [round'd (/.round sample)] - (and (|> round'd frac-to-int int-to-frac (f/= round'd)) - (f/<= +1.0 (frac@abs (f/- sample round'd)))))) - ))) - (<| (_.context "Exponentials and logarithms") - (do r.monad - [sample (|> r.safe-frac (:: @ map (f/* +10.0)))] - (_.test "Logarithm is the inverse of exponential." - (|> sample /.exp /.log (within? +1.0e-15 sample))))) - (<| (_.context "Greatest-Common-Divisor and Least-Common-Multiple") - (do r.monad - [#let [gen-nat (|> r.nat (:: @ map (|>> (n/% 1000) (n/max 1))))] - x gen-nat - y gen-nat] - ($_ _.and - (_.test "GCD" - (let [gcd (/.n/gcd x y)] - (and (n/= 0 (n/% gcd x)) - (n/= 0 (n/% gcd y)) - (n/>= 1 gcd)))) + (<| (_.context (%name (name-of /._))) + ($_ _.and + (<| (_.context "Trigonometry") + (do r.monad + [angle (|> r.safe-frac (:: @ map (f/* /.tau)))] + ($_ _.and + (_.test "Sine and arc-sine are inverse functions." + (trigonometric-symmetry /.sin /.asin angle)) + (_.test "Cosine and arc-cosine are inverse functions." + (trigonometric-symmetry /.cos /.acos angle)) + (_.test "Tangent and arc-tangent are inverse functions." + (trigonometric-symmetry /.tan /.atan angle)) + ))) + (<| (_.context "Rounding") + (do r.monad + [sample (|> r.safe-frac (:: @ map (f/* +1000.0)))] + ($_ _.and + (_.test "The ceiling will be an integer value, and will be >= the original." + (let [ceil'd (/.ceil sample)] + (and (|> ceil'd frac-to-int int-to-frac (f/= ceil'd)) + (f/>= sample ceil'd) + (f/<= +1.0 (f/- sample ceil'd))))) + (_.test "The floor will be an integer value, and will be <= the original." + (let [floor'd (/.floor sample)] + (and (|> floor'd frac-to-int int-to-frac (f/= floor'd)) + (f/<= sample floor'd) + (f/<= +1.0 (f/- floor'd sample))))) + (_.test "The round will be an integer value, and will be < or > or = the original." + (let [round'd (/.round sample)] + (and (|> round'd frac-to-int int-to-frac (f/= round'd)) + (f/<= +1.0 (frac@abs (f/- sample round'd)))))) + ))) + (<| (_.context "Exponentials and logarithms") + (do r.monad + [sample (|> r.safe-frac (:: @ map (f/* +10.0)))] + (_.test "Logarithm is the inverse of exponential." + (|> sample /.exp /.log (within? +1.0e-15 sample))))) + (<| (_.context "Greatest-Common-Divisor and Least-Common-Multiple") + (do r.monad + [#let [gen-nat (|> r.nat (:: @ map (|>> (n/% 1000) (n/max 1))))] + x gen-nat + y gen-nat] + ($_ _.and + (_.test "GCD" + (let [gcd (/.n/gcd x y)] + (and (n/= 0 (n/% gcd x)) + (n/= 0 (n/% gcd y)) + (n/>= 1 gcd)))) - (_.test "LCM" - (let [lcm (/.n/lcm x y)] - (and (n/= 0 (n/% x lcm)) - (n/= 0 (n/% y lcm)) - (n/<= (n/* x y) lcm)))) - ))) + (_.test "LCM" + (let [lcm (/.n/lcm x y)] + (and (n/= 0 (n/% x lcm)) + (n/= 0 (n/% y lcm)) + (n/<= (n/* x y) lcm)))) + ))) - /infix.test - /modular.test - /logic/continuous.test - /logic/fuzzy.test - )) + /infix.test + /modular.test + /logic/continuous.test + /logic/fuzzy.test + ))) diff --git a/stdlib/source/test/lux/math/infix.lux b/stdlib/source/test/lux/math/infix.lux index db40f693c..5224700a5 100644 --- a/stdlib/source/test/lux/math/infix.lux +++ b/stdlib/source/test/lux/math/infix.lux @@ -12,7 +12,7 @@ (def: #export test Test - (<| (_.context (%name (name-of /.infix))) + (<| (_.context (%name (name-of /._))) (do r.monad [subject r.nat parameter r.nat diff --git a/stdlib/source/test/lux/type/resource.lux b/stdlib/source/test/lux/type/resource.lux index 293629e18..92b085e6a 100644 --- a/stdlib/source/test/lux/type/resource.lux +++ b/stdlib/source/test/lux/type/resource.lux @@ -6,7 +6,8 @@ [abstract [monad [indexed (#+ do)]]] - ["." io]] + [control + ["." io]]] {1 ["." / (#+ Res)]}) diff --git a/stdlib/source/test/lux/world/file.lux b/stdlib/source/test/lux/world/file.lux index 86b031660..b72e8be82 100644 --- a/stdlib/source/test/lux/world/file.lux +++ b/stdlib/source/test/lux/world/file.lux @@ -5,11 +5,11 @@ ["_" test (#+ Test)] [abstract/monad (#+ do)] [control + ["." io (#+ IO)] [concurrency ["." promise]] [security ["!" capability]]] - ["." io (#+ IO)] [data ["." error (#+ Error)] ["." text] diff --git a/stdlib/source/test/lux/world/net/tcp.lux b/stdlib/source/test/lux/world/net/tcp.lux index b3f9a6d0d..fb4983302 100644 --- a/stdlib/source/test/lux/world/net/tcp.lux +++ b/stdlib/source/test/lux/world/net/tcp.lux @@ -4,9 +4,9 @@ ["r" math/random (#+ Random)] ["_" test (#+ Test)] ["." abstract/monad (#+ do)] - ["." io (#+ IO)] [control ["ex" exception (#+ exception:)] + ["." io (#+ IO)] [concurrency ["." promise (#+ Promise Resolver)] ["." frp ("#@." functor)]] diff --git a/stdlib/source/test/lux/world/net/udp.lux b/stdlib/source/test/lux/world/net/udp.lux index 2e61257ad..44765acab 100644 --- a/stdlib/source/test/lux/world/net/udp.lux +++ b/stdlib/source/test/lux/world/net/udp.lux @@ -5,6 +5,7 @@ ["_" test (#+ Test)] ["." abstract/monad (#+ do)] [control + ["." io] [concurrency ["." promise]] [security @@ -12,7 +13,6 @@ [data ["." error] ["." text]] - ["." io] [world ["." binary] ["." net]]] -- cgit v1.2.3