(.using [library [lux (.except) ["_" test (.only Test)] [abstract [monad (.only do)]] [data ["[0]" text (.open: "[1]#[0]" equivalence) ["%" \\format (.only format)]]] [math ["[0]" random (.only Random)] [number ["n" nat]]]]] [\\library ["[0]" /]]) (def: part (Random Text) (do [! random.monad] [size (at ! each (|>> (n.% 10) ++) random.nat)] (random.alphabetic size))) (def: .public test Test (<| (_.covering /._) (_.for [/.Buffer]) (do random.monad [left ..part mid ..part right ..part] (all _.and (_.coverage [/.empty] (n.= 0(/.size /.empty))) (_.coverage [/.size /.then] (n.= (text.size left) (/.size (/.then left /.empty)))) (_.coverage [/.text] (text#= (format left mid right) (|> /.empty (/.then left) (/.then mid) (/.then right) /.text))) ))))