aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/spec/lux/abstract/equivalence.lux
diff options
context:
space:
mode:
authorEduardo Julian2020-07-01 22:28:36 -0400
committerEduardo Julian2020-07-01 22:28:36 -0400
commit7853d890ac72cd96851caedadd8525404705286c (patch)
tree7bf7d484b0830a7dec16be914beb5817a89ec072 /stdlib/source/spec/lux/abstract/equivalence.lux
parent23ad698f1ad87f9e9838c1e7df1809991c6a1d18 (diff)
Moved all spec(ifications) from under "test/" to under "spec/".
Diffstat (limited to '')
-rw-r--r--stdlib/source/spec/lux/abstract/equivalence.lux23
1 files changed, 23 insertions, 0 deletions
diff --git a/stdlib/source/spec/lux/abstract/equivalence.lux b/stdlib/source/spec/lux/abstract/equivalence.lux
new file mode 100644
index 000000000..b511ba176
--- /dev/null
+++ b/stdlib/source/spec/lux/abstract/equivalence.lux
@@ -0,0 +1,23 @@
+(.module:
+ [lux #*
+ ["_" test (#+ Test)]
+ [abstract
+ [monad (#+ do)]]
+ [math
+ ["." random (#+ Random)]]]
+ {1
+ ["." / (#+ Equivalence)]})
+
+(def: #export (spec (^open "_@.") generator)
+ (All [a] (-> (Equivalence a) (Random a) Test))
+ (do random.monad
+ [left generator
+ right generator]
+ (<| (_.with-cover [/.Equivalence])
+ ($_ _.and
+ (_.test "Reflexivity."
+ (_@= left left))
+ (_.test "Symmetry."
+ (if (_@= left right)
+ (_@= right left)
+ (not (_@= right left))))))))