aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/aedifex/input.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/test/aedifex/input.lux')
-rw-r--r--stdlib/source/test/aedifex/input.lux51
1 files changed, 51 insertions, 0 deletions
diff --git a/stdlib/source/test/aedifex/input.lux b/stdlib/source/test/aedifex/input.lux
new file mode 100644
index 000000000..39a71eb81
--- /dev/null
+++ b/stdlib/source/test/aedifex/input.lux
@@ -0,0 +1,51 @@
+(.module:
+ [lux #*
+ ["_" test (#+ Test)]
+ [abstract
+ [monad (#+ do)]]
+ [control
+ ["." try (#+ Try) ("#@." functor)]
+ [concurrency
+ ["." promise (#+ Promise)]]
+ [security
+ ["!" capability]]]
+ [data
+ ["." binary]
+ ["." text ("#@." equivalence)
+ ["%" format]
+ ["." encoding]]]
+ [math
+ ["." random (#+ Random)]]
+ [world
+ ["." file (#+ File)]]]
+ [//
+ ["@." profile]]
+ {#program
+ ["." /
+ ["/#" // #_
+ ["#" profile (#+ Profile)]
+ ["#." project]
+ ["#." action]
+ ["#." format]]]})
+
+(def: #export test
+ Test
+ (<| (_.covering /._)
+ (do {@ random.monad}
+ [expected (:: @ map (set@ #//.parents (list)) @profile.random)
+ #let [fs (: (file.System Promise)
+ (file.mock (:: file.system separator)))]]
+ (wrap (do promise.monad
+ [verdict (do //action.monad
+ [file (: (Promise (Try (File Promise)))
+ (file.get-file promise.monad fs //project.file))
+ _ (|> expected
+ //format.profile
+ %.code
+ encoding.to-utf8
+ (!.use (:: file over-write)))
+ actual (: (Promise (Try Profile))
+ (/.read promise.monad fs //.default))]
+ (wrap (:: //.equivalence = expected actual)))]
+ (_.claim [/.read]
+ (try.default false verdict)))))))