... This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. ... If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. (.require [library [lux (.except) [abstract [monad (.only do)] ["[0]" equivalence ["[1]T" \\test]]] [control ["[0]" try]] [math ["[0]" random (.only Random)] [number ["n" nat]]] [test ["_" property (.only Test)]]]] [\\library ["[0]" / (.only) [//// ["[0]" code ["<[1]>" \\parser]]]]]) (def .public random (Random /.Declaration) (let [word (random.alphabetic 10)] (all random.and word (do [! random.monad] [size (of ! each (n.% 10) random.nat)] (random.list size word)) ))) (def .public test Test (<| (_.covering /._) (_.for [/.Declaration /.#name /.#arguments]) (all _.and (_.for [/.equivalence] (equivalenceT.spec /.equivalence ..random)) (do random.monad [expected ..random] (_.coverage [/.format /.parser] (when (.result /.parser (list (/.format expected))) {try.#Failure _} false {try.#Success actual} (of /.equivalence = expected actual)))))))