aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/aedifex/artifact/extension.lux
blob: b71b0c001f12d4d0ca8c6c517ac24b55cb84af8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(.using
 [library
  [lux "*"
   ["_" test {"+" Test}]
   [abstract
    [monad {"+" do}]]
   [data
    ["[0]" text ("[1]#[0]" equivalence)]
    [collection
     ["[0]" set]
     ["[0]" list]]]
   [math
    ["[0]" random {"+" Random}]
    [number
     ["n" nat]]]]]
 [\\program
  ["[0]" /
   ["/[1]" // "_"
    ["[1]" type]]]])

(def: .public test
  Test
  (<| (_.covering /._)
      (_.for [/.Extension]
             (all _.and
                  (_.cover [/.lux_library /.jvm_library /.pom
                            /.sha-1 /.md5]
                           (let [options (list /.lux_library /.jvm_library /.pom /.sha-1 /.md5)
                                 uniques (set.of_list text.hash options)]
                             (n.= (list.size options)
                                  (set.size uniques))))
                  (_.cover [/.extension /.type]
                           (`` (and (~~ (template [<type> <extension>]
                                          [(and (text#= <extension>
                                                        (/.extension <type>))
                                                (text#= <type>
                                                        (/.type (/.extension <type>))))]

                                          [//.lux_library /.lux_library]
                                          [//.jvm_library /.jvm_library]
                                          [//.pom /.pom]
                                          )))))
                  ))))