From 0abd5bd3c0e38e352e9ba38268e04e1c858ab01e Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Thu, 15 Jul 2021 00:45:15 -0400 Subject: Re-named "spec" hierarchy to "specification". --- .../compositor/generation/reference.lux | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 stdlib/source/specification/compositor/generation/reference.lux (limited to 'stdlib/source/specification/compositor/generation/reference.lux') diff --git a/stdlib/source/specification/compositor/generation/reference.lux b/stdlib/source/specification/compositor/generation/reference.lux new file mode 100644 index 000000000..665175ab4 --- /dev/null +++ b/stdlib/source/specification/compositor/generation/reference.lux @@ -0,0 +1,60 @@ +(.module: + [lux #* + ["_" test (#+ Test)] + [abstract + [monad (#+ do)]] + [control + [pipe (#+ case>)] + ["." try]] + [data + [number + ["n" nat] + ["f" frac]]] + [tool + [compiler + ["." reference] + ["." synthesis]]] + [math + ["r" random (#+ Random)]]] + [/// + [common (#+ Runner Definer)]]) + +(def: name + (Random Name) + (let [name-part (r.ascii/upper-alpha 5)] + [(r.and name-part name-part)])) + +(def: (definition define) + (-> Definer Test) + (do r.monad + [name ..name + expected r.safe-frac] + (_.test "Definitions." + (|> (define name (synthesis.f64 expected)) + (case> (#try.Success actual) + (f.= expected (:as Frac actual)) + + (#try.Failure _) + false))))) + +(def: (variable run) + (-> Runner Test) + (do {! r.monad} + [register (|> r.nat (\ ! map (n.% 100))) + expected r.safe-frac] + (_.test "Local variables." + (|> (synthesis.branch/let [(synthesis.f64 expected) + register + (synthesis.variable/local register)]) + (run "variable") + (case> (#try.Success actual) + (f.= expected (:as Frac actual)) + + (#try.Failure _) + false))))) + +(def: #export (spec runner definer) + (-> Runner Definer Test) + ($_ _.and + (..definition definer) + (..variable runner))) -- cgit v1.2.3