From 3d457763e34d4dd1992427b3918b351ac684adb7 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Mon, 1 Feb 2021 04:59:32 -0400 Subject: Improved compilation of loops and pattern-matching for Python. --- stdlib/source/test/aedifex/artifact/snapshot.lux | 4 +- .../aedifex/artifact/snapshot/version/value.lux | 66 ++++++++++++++++++++++ stdlib/source/test/aedifex/artifact/value.lux | 38 ------------- 3 files changed, 69 insertions(+), 39 deletions(-) create mode 100644 stdlib/source/test/aedifex/artifact/snapshot/version/value.lux delete mode 100644 stdlib/source/test/aedifex/artifact/value.lux (limited to 'stdlib/source/test/aedifex') diff --git a/stdlib/source/test/aedifex/artifact/snapshot.lux b/stdlib/source/test/aedifex/artifact/snapshot.lux index 371fde55e..192978ebf 100644 --- a/stdlib/source/test/aedifex/artifact/snapshot.lux +++ b/stdlib/source/test/aedifex/artifact/snapshot.lux @@ -16,7 +16,8 @@ ["#." build] ["#." time] ["#." stamp] - ["#." version]] + ["#." version + ["#/." value]]] {#program ["." /]}) @@ -47,4 +48,5 @@ $/time.test $/stamp.test $/version.test + $/version/value.test )))) diff --git a/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux b/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux new file mode 100644 index 000000000..dc3f754a2 --- /dev/null +++ b/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux @@ -0,0 +1,66 @@ +(.module: + [lux #* + ["_" test (#+ Test)] + [abstract + [monad (#+ do)] + {[0 #spec] + [/ + ["$." equivalence]]}] + [control + ["." try ("#\." functor)] + [parser + ["<.>" text]]] + [data + ["." text ("#\." equivalence) + ["%" format (#+ format)]]] + [math + ["." random (#+ Random) ("#\." monad)] + [number + ["n" nat] + ["i" int]]] + [time + ["." instant]]] + ["$." /// #_ + ["#." stamp]] + {#program + ["." / + ["//#" /// + ["#." stamp] + ["#." time]]]}) + +(def: #export random + (Random /.Value) + ($_ random.and + (random.ascii/alpha 5) + (random.or (random\wrap []) + $///stamp.random) + )) + +(def: #export test + Test + (<| (_.covering /._) + (_.for [/.Value]) + ($_ _.and + (_.for [/.equivalence] + ($equivalence.spec /.equivalence ..random)) + + (do random.monad + [sample random + stamp $///stamp.random] + (let [version (get@ #/.version sample) + + local! + (text\= version + (/.format (set@ #/.snapshot #///.Local sample))) + + remote_format (/.format {#/.version (format version /.snapshot) + #/.snapshot (#///.Remote stamp)}) + remote! + (and (text.starts_with? (format version (///time.format (get@ #///stamp.time stamp))) + remote_format) + (text.ends_with? (%.nat (get@ #///stamp.build stamp)) + remote_format))] + (_.cover [/.snapshot /.format] + (and local! + remote!)))) + ))) diff --git a/stdlib/source/test/aedifex/artifact/value.lux b/stdlib/source/test/aedifex/artifact/value.lux deleted file mode 100644 index 10e9016b1..000000000 --- a/stdlib/source/test/aedifex/artifact/value.lux +++ /dev/null @@ -1,38 +0,0 @@ -(.module: - [lux #* - ["_" test (#+ Test)] - [abstract - [monad (#+ do)] - {[0 #spec] - [/ - ["$." equivalence]]}] - [control - ["." try ("#\." functor)] - [parser - ["<.>" text]]] - [math - ["." random (#+ Random)] - [number - ["n" nat] - ["i" int]]] - [time - ["." instant]]] - {#program - ["." /]}) - -(def: #export random - (Random /.Value) - ($_ random.and - (random.ascii/alpha 5) - random.instant - random.nat - )) - -(def: #export test - Test - (<| (_.covering /._) - (_.for [/.Build /.Value]) - ($_ _.and - (_.for [/.equivalence] - ($equivalence.spec /.equivalence ..random)) - ))) -- cgit v1.2.3