aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/test/lux/control.lux10
-rw-r--r--stdlib/source/test/lux/control/concatenative.lux87
-rw-r--r--stdlib/source/test/lux/control/concurrency/frp.lux2
-rw-r--r--stdlib/source/test/lux/control/concurrency/process.lux46
4 files changed, 137 insertions, 8 deletions
diff --git a/stdlib/source/test/lux/control.lux b/stdlib/source/test/lux/control.lux
index e90ab54f1..b393e1325 100644
--- a/stdlib/source/test/lux/control.lux
+++ b/stdlib/source/test/lux/control.lux
@@ -17,10 +17,11 @@
["#." thread]
["#." writer]
[concurrency
+ ["#." actor]
["#." atom]
- ["#." promise]
["#." frp]
- ["#." actor]
+ ["#." process]
+ ["#." promise]
["#." stm]]
["#." parser #_
["#/." text]
@@ -34,10 +35,11 @@
(def: concurrency
Test
($_ _.and
+ /actor.test
/atom.test
- /promise.test
/frp.test
- /actor.test
+ /process.test
+ /promise.test
/stm.test
))
diff --git a/stdlib/source/test/lux/control/concatenative.lux b/stdlib/source/test/lux/control/concatenative.lux
index 6701916fc..52cd5d214 100644
--- a/stdlib/source/test/lux/control/concatenative.lux
+++ b/stdlib/source/test/lux/control/concatenative.lux
@@ -146,11 +146,94 @@
|inc| (/.apply/1 inc)
|test| (/.apply/1 (|>> (n.- start) (n.< distance)))]]
($_ _.and
- (_.cover [/.call]
+ (_.cover [/.call /.apply/1]
(n.= (inc sample)
(||> (/.push sample)
(/.push (/.apply/1 inc))
/.call)))
+ (_.cover [/.apply/2]
+ (n.= (n.+ sample sample)
+ (||> (/.push sample)
+ (/.push sample)
+ (/.push (/.apply/2 n.+))
+ /.call)))
+ (_.cover [/.apply/3]
+ (n.= ($_ n.+ sample sample sample)
+ (||> (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push (/.apply/3 (function (_ i0 i1 i2)
+ ($_ n.+ i0 i1 i2))))
+ /.call)))
+ (_.cover [/.apply/4]
+ (n.= ($_ n.+ sample sample sample sample)
+ (||> (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push (/.apply/4 (function (_ i0 i1 i2 i3)
+ ($_ n.+ i0 i1 i2 i3))))
+ /.call)))
+ (_.cover [/.apply/5]
+ (n.= ($_ n.+ sample sample sample sample sample)
+ (||> (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push (/.apply/5 (function (_ i0 i1 i2 i3 i4)
+ ($_ n.+ i0 i1 i2 i3 i4))))
+ /.call)))
+ (_.cover [/.apply/6]
+ (n.= ($_ n.+ sample sample sample sample sample sample)
+ (||> (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push (/.apply/6 (function (_ i0 i1 i2 i3 i4 i5)
+ ($_ n.+ i0 i1 i2 i3 i4 i5))))
+ /.call)))
+ (_.cover [/.apply/7]
+ (n.= ($_ n.+ sample sample sample sample sample sample sample)
+ (||> (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push (/.apply/7 (function (_ i0 i1 i2 i3 i4 i5 i6)
+ ($_ n.+ i0 i1 i2 i3 i4 i5 i6))))
+ /.call)))
+ (_.cover [/.apply/8]
+ (n.= ($_ n.+ sample sample sample sample sample sample sample sample)
+ (||> (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push (/.apply/8 (function (_ i0 i1 i2 i3 i4 i5 i6 i7)
+ ($_ n.+ i0 i1 i2 i3 i4 i5 i6 i7))))
+ /.call)))
+ (_.cover [/.apply]
+ (n.= ($_ n.+ sample sample sample sample sample sample sample sample sample)
+ (||> (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push sample)
+ (/.push ((/.apply 9) (function (_ i0 i1 i2 i3 i4 i5 i6 i7 i8)
+ ($_ n.+ i0 i1 i2 i3 i4 i5 i6 i7 i8))))
+ /.call)))
(_.cover [/.if]
(n.= (if choice
(inc sample)
@@ -219,7 +302,7 @@
Test
(do random.monad
[sample random.nat]
- (_.cover [/.word:]
+ (_.cover [/.word: /.=> /.||>]
(n.= (n.* sample sample)
(||> (/.push sample)
..square)))))
diff --git a/stdlib/source/test/lux/control/concurrency/frp.lux b/stdlib/source/test/lux/control/concurrency/frp.lux
index f7f7427b6..8752a195f 100644
--- a/stdlib/source/test/lux/control/concurrency/frp.lux
+++ b/stdlib/source/test/lux/control/concurrency/frp.lux
@@ -13,8 +13,6 @@
["." exception]
["." io (#+ IO io)]]
[data
- [text
- ["%" format (#+ format)]]
[number
["n" nat]]
[collection
diff --git a/stdlib/source/test/lux/control/concurrency/process.lux b/stdlib/source/test/lux/control/concurrency/process.lux
new file mode 100644
index 000000000..165fbad93
--- /dev/null
+++ b/stdlib/source/test/lux/control/concurrency/process.lux
@@ -0,0 +1,46 @@
+(.module:
+ [lux #*
+ ["_" test (#+ Test)]
+ [abstract
+ [monad (#+ do)]]
+ [control
+ ["." io]]
+ [data
+ [number
+ ["n" nat]
+ ["i" int]]]
+ [time
+ ["." instant (#+ Instant)]
+ ["." duration]]
+ [math
+ ["." random]]]
+ {1
+ ["." /
+ [//
+ ["." atom (#+ Atom)]
+ ["." promise]]]})
+
+(def: #export test
+ Test
+ (<| (_.covering /._)
+ (do random.monad
+ [dummy random.nat
+ expected random.nat
+ delay (|> random.nat (:: @ map (n.% 100)))]
+ ($_ _.and
+ (_.cover [/.parallelism]
+ (n.> 0 /.parallelism))
+ (wrap (do promise.monad
+ [reference-time (promise.future instant.now)
+ #let [box (atom.atom [reference-time dummy])]
+ _ (promise.future
+ (/.schedule delay (do io.monad
+ [execution-time instant.now]
+ (atom.write [execution-time expected] box))))
+ _ (promise.wait delay)
+ [execution-time actual] (promise.future (atom.read box))]
+ (_.claim [/.schedule]
+ (and (i.>= (.int delay)
+ (duration.to-millis (instant.span reference-time execution-time)))
+ (n.= expected actual)))))
+ ))))