diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/test/lux/data/binary.lux | 27 |
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 )))) |