From ef78c1f92ab29c4370193591b170535dd9e743f7 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Thu, 5 Nov 2020 22:54:05 -0400 Subject: Improved error reporting for syntax macros. --- stdlib/source/spec/aedifex/repository.lux | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 stdlib/source/spec/aedifex/repository.lux (limited to 'stdlib/source/spec/aedifex/repository.lux') diff --git a/stdlib/source/spec/aedifex/repository.lux b/stdlib/source/spec/aedifex/repository.lux new file mode 100644 index 000000000..613bbd407 --- /dev/null +++ b/stdlib/source/spec/aedifex/repository.lux @@ -0,0 +1,49 @@ +(.module: + [lux #* + ["_" test (#+ Test)] + [abstract + [monad (#+ do)]] + [control + ["." try (#+ Try)] + [concurrency + ["." promise (#+ Promise)]]] + [data + ["." binary + {[0 #test] + ["_#" /]}]] + [math + ["." random]]] + {#program + ["." / + ["/#" // #_ + ["#." artifact (#+ Artifact) + ["#/." extension]]]]} + {#test + ["_." // #_ + ["#." artifact]]}) + +(def: #export (spec valid-identity valid-artifact invalid-identity invalid-artifact subject) + (-> /.Identity Artifact /.Identity Artifact (/.Repository Promise) Test) + (do random.monad + [expected (_binary.random 100)] + (wrap ($_ _.and' + (do promise.monad + [upload!/good (:: subject upload valid-identity valid-artifact //artifact/extension.lux-library expected) + download!/good (:: subject download valid-artifact //artifact/extension.lux-library) + + upload!/bad (:: subject upload invalid-identity invalid-artifact //artifact/extension.lux-library expected) + download!/bad (:: subject download invalid-artifact //artifact/extension.lux-library)] + (_.claim [/.Repository] + (and (case [upload!/good download!/good] + [(#try.Success _) (#try.Success actual)] + (:: binary.equivalence = expected actual) + + _ + false) + (case [upload!/bad download!/bad] + [(#try.Failure _) (#try.Failure _)] + true + + _ + false)))) + )))) -- cgit v1.2.3