aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/lux/world/net/uri/scheme.lux
blob: 868f2cddf384ae04b52b09c6f012d3bac89d7956 (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
(.require
 [library
  [lux (.except)
   [abstract
    [monad (.only do)]
    [\\specification
     ["$[0]" equivalence]
     ["$[0]" hash]]]
   [data
    [collection
     ["[0]" list]
     ["[0]" set]]]
   [math
    ["[0]" random (.only Random) (.use "[1]#[0]" monad)]
    [number
     ["n" nat]]]
   [test
    ["_" property (.only Test)]]]]
 [\\library
  ["[0]" /]])

(def .public random
  (Random /.Scheme)
  (all random.either
       (random#in /.about)
       (random#in /.acap)
       (random#in /.user_account)
       (random#in /.anonymous_customer_reference)
       (random#in /.attachment)

       (random#in /.bitcoin)
       (random#in /.blob)

       (random#in /.calendar_access_protocol)

       (random#in /.data)
       (random#in /.dns)
       (random#in /.dntp)
       (random#in /.digital_object_identifier)
       (random#in /.drm)

       (random#in /.feed)
       (random#in /.file)
       (random#in /.finger)
       (random#in /.fish)
       (random#in /.fm)
       (random#in /.ftp)

       (random#in /.geo)
       (random#in /.git)
       
       (random#in /.http)
       (random#in /.https)
       
       (random#in /.imap)
       (random#in /.ipp)
       (random#in /.ipps)
       (random#in /.irc)
       (random#in /.irc6)
       (random#in /.ircs)
       
       (random#in /.jar)
       
       (random#in /.ldap)
       (random#in /.ldaps)
       
       (random#in /.magnet)
       (random#in /.mail_to)
       (random#in /.apache_maven)
       
       (random#in /.pop)
       
       (random#in /.sip)
       (random#in /.sips)
       (random#in /.sms)
       (random#in /.snmp)
       (random#in /.ssh)
       (random#in /.stun)
       (random#in /.stuns)
       
       (random#in /.telephone_number)
       (random#in /.turn)
       (random#in /.turns)
       
       (random#in /.xmpp)
       ))

(def .public test
  Test
  (<| (_.covering /._)
      (do [! random.monad]
        [expected ..random])
      (_.for [/.Scheme])
      (`` (all _.and
               (_.for [/.equivalence]
                      ($equivalence.spec /.equivalence ..random))
               (_.for [/.hash]
                      ($hash.spec /.hash ..random))

               (_.coverage [/.name /.scheme]
                 (|> expected
                     /.name
                     /.scheme
                     (at /.equivalence = expected)))
               (with_expansions [<schemes> (these /.about /.acap /.user_account /.anonymous_customer_reference /.attachment
                                                  /.bitcoin /.blob
                                                  /.calendar_access_protocol
                                                  /.data /.dns /.dntp /.digital_object_identifier /.drm
                                                  /.feed /.file /.finger /.fish /.fm /.ftp
                                                  /.geo /.git
                                                  /.http /.https
                                                  /.imap /.ipp /.ipps /.irc /.irc6 /.ircs
                                                  /.jar
                                                  /.ldap /.ldaps
                                                  /.magnet /.mail_to /.apache_maven
                                                  /.pop
                                                  /.sip /.sips /.sms /.snmp /.ssh /.stun /.stuns
                                                  /.telephone_number /.turn /.turns
                                                  /.xmpp)]
                 (_.coverage [<schemes>]
                   (let [options (list <schemes>)
                         uniques (set.of_list /.hash options)]
                     (n.= (list.size options)
                          (set.size uniques)))))
               (,, (with_template [<original> <alias>]
                     [(_.coverage [<alias>]
                        (at /.equivalence = <original> <alias>))]

                     [/.acap /.application_configuration_access_protocol]

                     [/.dns /.domain_name_system]
                     [/.dntp /.direct_network_transfer_protocol]

                     [/.ftp /.file_transfer_protocol]

                     [/.http /.hypertext_transfer_protocol]
                     [/.https /.hypertext_transfer_protocol_secure]

                     [/.imap /.internet_message_access_protocol]
                     [/.ipp /.internet_printing_protocol]
                     [/.ipps /.internet_printing_protocol_secure]
                     [/.irc /.internet_relay_chat]
                     [/.ircs /.internet_relay_chat_secure]

                     [/.ldap /.lightweight_directory_access_protocol]
                     [/.ldaps /.lightweight_directory_access_protocol_secure]

                     [/.pop /.post_office_protocol]

                     [/.sip /.session_initiation_protocol]
                     [/.sips /.session_initiation_protocol_secure]
                     [/.sms /.short_message_service]
                     [/.snmp /.simple_network_management_protocol]
                     [/.ssh /.secure_shell_protocol]

                     [/.stun /.session_traversal_utilities_for_nat]
                     [/.stuns /.session_traversal_utilities_for_nat_secure]

                     [/.turn /.traversal_using_relays_around_nat]
                     [/.turns /.traversal_using_relays_around_nat_secure]

                     [/.xmpp /.extensible_messaging_and_presence_protocol]))
               ))))