aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/lux/data/binary.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/test/lux/data/binary.lux27
1 files changed, 25 insertions, 2 deletions
diff --git a/stdlib/source/test/lux/data/binary.lux b/stdlib/source/test/lux/data/binary.lux
index dd5949cab..50a3f786f 100644
--- a/stdlib/source/test/lux/data/binary.lux
+++ b/stdlib/source/test/lux/data/binary.lux
@@ -4,6 +4,7 @@
[ffi (.only)]
["_" test (.only Test)]
[abstract
+ [equivalence (.only Equivalence)]
["[0]" monad (.only do)]
["[0]" enum]
[\\specification
@@ -23,8 +24,29 @@
["n" nat]
["[0]" i64]]]]]
[\\library
- ["[0]" / (.only)
- ["!" \\unsafe]]])
+ ["[0]" / (.only) (.open: "[1]#[0]" equivalence)
+ ["!" \\unsafe]
+ ["[0]" \\format]]])
+
+(def: equivalence
+ (Equivalence \\format.Specification)
+ (implementation
+ (def: (= reference subject)
+ (/#= (\\format.instance reference)
+ (\\format.instance subject)))))
+
+(def: random_specification
+ (Random \\format.Specification)
+ (at random.monad each \\format.nat random.nat))
+
+(def: \\format
+ Test
+ (<| (_.covering \\format._)
+ (_.for [\\format.Mutation \\format.Specification \\format.Writer])
+ (all _.and
+ (_.for [\\format.monoid]
+ ($monoid.spec ..equivalence \\format.monoid ..random_specification))
+ )))
(def: (succeed result)
(-> (Try Bit) Bit)
@@ -240,4 +262,5 @@
(/.copy! size 0 sample offset (/.empty size)))))
..test|unsafe
+ ..\\format
))))