aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/lux/data/name.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/test/lux/data/name.lux')
-rw-r--r--stdlib/source/test/lux/data/name.lux106
1 files changed, 48 insertions, 58 deletions
diff --git a/stdlib/source/test/lux/data/name.lux b/stdlib/source/test/lux/data/name.lux
index 32744ad5f..6582e68ff 100644
--- a/stdlib/source/test/lux/data/name.lux
+++ b/stdlib/source/test/lux/data/name.lux
@@ -1,73 +1,63 @@
(.module:
[lux #*
+ ["_" test (#+ Test)]
[control
- [monad (#+ do Monad)]
- pipe]
+ pipe
+ [monad (#+ do)]
+ {[0 #test]
+ [/
+ [".T" equivalence]
+ [".T" codec]]}]
[data
- ["&" name]
- ["." text ("#;." equivalence)
+ ["." text ("#@." equivalence)
format]]
[math
- ["r" random]]]
- lux/test)
+ ["r" random (#+ Random)]]]
+ {1
+ ["." /]})
-(def: (gen-part size)
+(def: (part size)
(-> Nat (r.Random Text))
(|> (r.unicode size) (r.filter (|>> (text.contains? ".") not))))
-(context: "Names"
- (<| (times 100)
- (do @
+(def: #export (name module-size short-size)
+ (-> Nat Nat (Random Name))
+ (r.and (..part module-size)
+ (..part short-size)))
+
+(def: #export test
+ Test
+ (<| (_.context (%name (name-of .Name)))
+ (do r.monad
[## First Name
sizeM1 (|> r.nat (:: @ map (n/% 100)))
- sizeN1 (|> r.nat (:: @ map (|>> (n/% 100) (n/max 1))))
- module1 (gen-part sizeM1)
- short1 (gen-part sizeN1)
- #let [name1 [module1 short1]]
+ sizeS1 (|> r.nat (:: @ map (|>> (n/% 100) (n/max 1))))
+ (^@ name1 [module1 short1]) (..name sizeM1 sizeS1)
## Second Name
sizeM2 (|> r.nat (:: @ map (n/% 100)))
- sizeN2 (|> r.nat (:: @ map (|>> (n/% 100) (n/max 1))))
- module2 (gen-part sizeM2)
- short2 (gen-part sizeN2)
- #let [name2 [module2 short2]]
- #let [(^open "&;.") &.equivalence
- (^open "&;.") &.codec]]
- ($_ seq
- (test "Can get the module & short parts of an name."
- (and (is? module1 (&.module name1))
- (is? short1 (&.short name1))))
-
- (test "Can compare names for equivalence."
- (and (&;= name1 name1)
- (if (&;= name1 name2)
- (and (text;= module1 module2)
- (text;= short1 short2))
- (or (not (text;= module1 module2))
- (not (text;= short1 short2))))))
-
- (test "Can encode names as text."
- (|> name1
- &;encode &;decode
- (case> (#.Right dec-name) (&;= name1 dec-name)
- _ #0)))
-
- (test "Encoding an name without a module component results in text equal to the short of the name."
- (if (text.empty? module1)
- (text;= short1 (&;encode name1))
- #1))
+ sizeS2 (|> r.nat (:: @ map (|>> (n/% 100) (n/max 1))))
+ (^@ name2 [module2 short2]) (..name sizeM2 sizeS2)]
+ ($_ _.and
+ (equivalenceT.test /.equivalence (..name sizeM1 sizeS1))
+ (codecT.test /.codec /.equivalence (..name sizeM1 sizeS1))
+ (_.test "Can get the module / short parts of an name."
+ (and (is? module1 (/.module name1))
+ (is? short1 (/.short name1))))
+ (let [(^open "/@.") /.codec]
+ (_.test "Encoding an name without a module component results in text equal to the short of the name."
+ (if (text.empty? module1)
+ (text@= short1 (/@encode name1))
+ #1)))
+ (let [(^open "/@.") /.equivalence]
+ ($_ _.and
+ (_.test "Can obtain Name from identifier."
+ (and (/@= ["lux" "yolo"] (name-of .yolo))
+ (/@= ["test/lux/data/name" "yolo"] (name-of ..yolo))
+ (/@= ["" "yolo"] (name-of yolo))
+ (/@= ["lux/test" "yolo"] (name-of lux/test.yolo))))
+ (_.test "Can obtain Name from tag."
+ (and (/@= ["lux" "yolo"] (name-of #.yolo))
+ (/@= ["test/lux/data/name" "yolo"] (name-of #..yolo))
+ (/@= ["" "yolo"] (name-of #yolo))
+ (/@= ["lux/test" "yolo"] (name-of #lux/test.yolo))))))
))))
-
-(context: "Name-related macros."
- (let [(^open "&;.") &.equivalence]
- ($_ seq
- (test "Can obtain Name from identifier."
- (and (&;= ["lux" "yolo"] (name-of .yolo))
- (&;= ["test/lux/data/name" "yolo"] (name-of ..yolo))
- (&;= ["" "yolo"] (name-of yolo))
- (&;= ["lux/test" "yolo"] (name-of lux/test.yolo))))
-
- (test "Can obtain Name from tag."
- (and (&;= ["lux" "yolo"] (name-of #.yolo))
- (&;= ["test/lux/data/name" "yolo"] (name-of #..yolo))
- (&;= ["" "yolo"] (name-of #yolo))
- (&;= ["lux/test" "yolo"] (name-of #lux/test.yolo)))))))