diff options
author | Eduardo Julian | 2021-02-01 04:59:32 -0400 |
---|---|---|
committer | Eduardo Julian | 2021-02-01 04:59:32 -0400 |
commit | 3d457763e34d4dd1992427b3918b351ac684adb7 (patch) | |
tree | 5e6ead8ab0c360d6c3eca5765b6be0be782709e2 /stdlib/source/test/aedifex/artifact/snapshot | |
parent | 1797521191746640e761cc1b4973d46b8c403dee (diff) |
Improved compilation of loops and pattern-matching for Python.
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/test/aedifex/artifact/snapshot.lux | 4 | ||||
-rw-r--r-- | stdlib/source/test/aedifex/artifact/snapshot/version/value.lux | 66 |
2 files changed, 69 insertions, 1 deletions
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!)))) + ))) |