aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/aedifex/artifact
diff options
context:
space:
mode:
authorEduardo Julian2021-02-01 04:59:32 -0400
committerEduardo Julian2021-02-01 04:59:32 -0400
commit3d457763e34d4dd1992427b3918b351ac684adb7 (patch)
tree5e6ead8ab0c360d6c3eca5765b6be0be782709e2 /stdlib/source/test/aedifex/artifact
parent1797521191746640e761cc1b4973d46b8c403dee (diff)
Improved compilation of loops and pattern-matching for Python.
Diffstat (limited to 'stdlib/source/test/aedifex/artifact')
-rw-r--r--stdlib/source/test/aedifex/artifact/snapshot.lux4
-rw-r--r--stdlib/source/test/aedifex/artifact/snapshot/version/value.lux66
-rw-r--r--stdlib/source/test/aedifex/artifact/value.lux38
3 files changed, 69 insertions, 39 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!))))
+ )))
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))
- )))