From ae4c0a4746d59b552ebeba166a43ce756dd265af Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sun, 6 Nov 2022 20:52:21 -0400 Subject: More efficient code-generation for text composition. --- stdlib/source/test/lux/control.lux | 2 - stdlib/source/test/lux/control/remember.lux | 130 --------- stdlib/source/test/lux/data/text.lux | 2 +- stdlib/source/test/lux/documentation.lux | 6 +- stdlib/source/test/lux/documentation/remember.lux | 130 +++++++++ stdlib/source/test/lux/world/net.lux | 4 +- stdlib/source/test/lux/world/net/http/request.lux | 226 +++++++++++++++ stdlib/source/test/lux/world/net/mime.lux | 3 + stdlib/source/test/lux/world/net/uri/port.lux | 327 +++++++++++----------- 9 files changed, 538 insertions(+), 292 deletions(-) delete mode 100644 stdlib/source/test/lux/control/remember.lux create mode 100644 stdlib/source/test/lux/documentation/remember.lux create mode 100644 stdlib/source/test/lux/world/net/http/request.lux (limited to 'stdlib/source/test') diff --git a/stdlib/source/test/lux/control.lux b/stdlib/source/test/lux/control.lux index 67903a051..1643a541d 100644 --- a/stdlib/source/test/lux/control.lux +++ b/stdlib/source/test/lux/control.lux @@ -30,7 +30,6 @@ ["[1][0]" pipe] ["[1][0]" reader] ["[1][0]" region] - ["[1][0]" remember] [security ["[1][0]" policy] ["[1][0]" capability]] @@ -80,7 +79,6 @@ /pipe.test /reader.test /region.test - /remember.test ..security /state.test /thread.test diff --git a/stdlib/source/test/lux/control/remember.lux b/stdlib/source/test/lux/control/remember.lux deleted file mode 100644 index 963b3fbc1..000000000 --- a/stdlib/source/test/lux/control/remember.lux +++ /dev/null @@ -1,130 +0,0 @@ -(.require - [library - [lux (.except) - [abstract - ["[0]" monad (.only do)]] - [control - ["[0]" io] - ["[0]" try (.only Try)] - ["[0]" exception]] - [data - ["[0]" product] - ["[0]" text (.only) - ["%" \\format (.only format)]]] - [math - [number (.only hex)] - ["[0]" random (.only Random) (.use "[1]#[0]" monad)]] - ["[0]" meta (.only) - ["[0]" code (.only) - ["<[1]>" \\parser]] - [macro - ["[0]" syntax (.only syntax)] - ["[0]" expansion]]] - [world - [time - ["[0]" date (.only Date)] - ["[0]" instant] - ["[0]" duration]]] - [test - ["_" property (.only Test)]]]] - [\\library - ["[0]" /]]) - -(def deadline (Random Date) random.date) -(def message (Random Text) (random#each %.bit random.bit)) -(def focus (Random Code) (random#each code.bit random.bit)) - -(def (memory macro deadline message focus) - (-> Symbol Date Text (Maybe Code) Code) - (` ((, (code.symbol macro)) - (, (code.text (%.date deadline))) - (, (code.text message)) - (,* (when focus - {.#None} (list) - {.#Some focus} (list focus)))))) - -(def (attempt computation) - (All (_ a) (-> (Meta a) (Meta (Try a)))) - (function (_ compiler) - (when (computation compiler) - {try.#Success [compiler output]} - {try.#Success [compiler {try.#Success output}]} - - {try.#Failure error} - {try.#Success [compiler {try.#Failure error}]}))) - -(def (test_failure deadline message focus failure) - (-> Date Text (Maybe Code) Text Bit) - (and (text.contains? (%.date deadline) failure) - (text.contains? message failure) - (when focus - {.#None} - true - - {.#Some focus} - (text.contains? (%.code focus) failure)))) - -(def test_macro - (syntax (_ [macro .symbol - extra .text]) - (let [now (io.run! instant.now) - today (instant.date now) - yesterday (instant.date (instant.after (duration.inverse duration.week) now)) - tomorrow (instant.date (instant.after duration.week now)) - prng (random.pcg_32 [(hex "0123456789ABCDEF") - (instant.millis now)]) - message (product.right (random.result prng ..message)) - expected (product.right (random.result prng ..focus))] - (do meta.monad - [should_fail0 (..attempt (expansion.complete (..memory macro yesterday message {.#None}))) - should_fail1 (..attempt (expansion.complete (..memory macro yesterday message {.#Some expected}))) - should_succeed0 (..attempt (expansion.complete (..memory macro tomorrow message {.#None}))) - should_succeed1 (..attempt (expansion.complete (..memory macro tomorrow message {.#Some expected})))] - (in (list (code.bit (and (when should_fail0 - {try.#Failure error} - (and (test_failure yesterday message {.#None} error) - (text.contains? extra error)) - - _ - false) - (when should_fail1 - {try.#Failure error} - (and (test_failure yesterday message {.#Some expected} error) - (text.contains? extra error)) - - _ - false) - (when should_succeed0 - {try.#Success (list)} - true - - _ - false) - (when should_succeed1 - {try.#Success (list actual)} - (same? expected actual) - - _ - false) - )))))))) - -(def .public test - Test - (<| (_.covering /._) - (do random.monad - [deadline ..deadline - message ..message - focus ..focus] - (all _.and - (_.coverage [/.must_remember] - (and (test_failure deadline message {.#None} - (exception.error /.must_remember [deadline deadline message {.#None}])) - (test_failure deadline message {.#Some focus} - (exception.error /.must_remember [deadline deadline message {.#Some focus}])))) - (_.coverage [/.remember] - (..test_macro /.remember "")) - (_.coverage [/.to_do] - (..test_macro /.to_do "TODO")) - (_.coverage [/.fix_me] - (..test_macro /.fix_me "FIXME")) - )))) diff --git a/stdlib/source/test/lux/data/text.lux b/stdlib/source/test/lux/data/text.lux index d192289cf..1ee5a2bf0 100644 --- a/stdlib/source/test/lux/data/text.lux +++ b/stdlib/source/test/lux/data/text.lux @@ -166,7 +166,7 @@ right (random.unicode 5)] (_.coverage [\\format.format] (/#= (\\format.format left mid right) - (all .text_composite# left mid right)))) + (.text_composite# left mid right)))) ..codec (,, (with_template [ ] [(do random.monad diff --git a/stdlib/source/test/lux/documentation.lux b/stdlib/source/test/lux/documentation.lux index 6308232c7..83fe198e3 100644 --- a/stdlib/source/test/lux/documentation.lux +++ b/stdlib/source/test/lux/documentation.lux @@ -20,7 +20,9 @@ [test ["_" property (.only Test)]]]] [\\library - ["[0]" /]]) + ["[0]" /]] + ["[0]" / + ["[1][0]" remember]]) (def macro_error (syntax (_ [macro .any]) @@ -81,4 +83,6 @@ [(/.definition g!default (,, (template.text ['definition_description'])))] ))))) + + /remember.test ))))) diff --git a/stdlib/source/test/lux/documentation/remember.lux b/stdlib/source/test/lux/documentation/remember.lux new file mode 100644 index 000000000..963b3fbc1 --- /dev/null +++ b/stdlib/source/test/lux/documentation/remember.lux @@ -0,0 +1,130 @@ +(.require + [library + [lux (.except) + [abstract + ["[0]" monad (.only do)]] + [control + ["[0]" io] + ["[0]" try (.only Try)] + ["[0]" exception]] + [data + ["[0]" product] + ["[0]" text (.only) + ["%" \\format (.only format)]]] + [math + [number (.only hex)] + ["[0]" random (.only Random) (.use "[1]#[0]" monad)]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]] + [macro + ["[0]" syntax (.only syntax)] + ["[0]" expansion]]] + [world + [time + ["[0]" date (.only Date)] + ["[0]" instant] + ["[0]" duration]]] + [test + ["_" property (.only Test)]]]] + [\\library + ["[0]" /]]) + +(def deadline (Random Date) random.date) +(def message (Random Text) (random#each %.bit random.bit)) +(def focus (Random Code) (random#each code.bit random.bit)) + +(def (memory macro deadline message focus) + (-> Symbol Date Text (Maybe Code) Code) + (` ((, (code.symbol macro)) + (, (code.text (%.date deadline))) + (, (code.text message)) + (,* (when focus + {.#None} (list) + {.#Some focus} (list focus)))))) + +(def (attempt computation) + (All (_ a) (-> (Meta a) (Meta (Try a)))) + (function (_ compiler) + (when (computation compiler) + {try.#Success [compiler output]} + {try.#Success [compiler {try.#Success output}]} + + {try.#Failure error} + {try.#Success [compiler {try.#Failure error}]}))) + +(def (test_failure deadline message focus failure) + (-> Date Text (Maybe Code) Text Bit) + (and (text.contains? (%.date deadline) failure) + (text.contains? message failure) + (when focus + {.#None} + true + + {.#Some focus} + (text.contains? (%.code focus) failure)))) + +(def test_macro + (syntax (_ [macro .symbol + extra .text]) + (let [now (io.run! instant.now) + today (instant.date now) + yesterday (instant.date (instant.after (duration.inverse duration.week) now)) + tomorrow (instant.date (instant.after duration.week now)) + prng (random.pcg_32 [(hex "0123456789ABCDEF") + (instant.millis now)]) + message (product.right (random.result prng ..message)) + expected (product.right (random.result prng ..focus))] + (do meta.monad + [should_fail0 (..attempt (expansion.complete (..memory macro yesterday message {.#None}))) + should_fail1 (..attempt (expansion.complete (..memory macro yesterday message {.#Some expected}))) + should_succeed0 (..attempt (expansion.complete (..memory macro tomorrow message {.#None}))) + should_succeed1 (..attempt (expansion.complete (..memory macro tomorrow message {.#Some expected})))] + (in (list (code.bit (and (when should_fail0 + {try.#Failure error} + (and (test_failure yesterday message {.#None} error) + (text.contains? extra error)) + + _ + false) + (when should_fail1 + {try.#Failure error} + (and (test_failure yesterday message {.#Some expected} error) + (text.contains? extra error)) + + _ + false) + (when should_succeed0 + {try.#Success (list)} + true + + _ + false) + (when should_succeed1 + {try.#Success (list actual)} + (same? expected actual) + + _ + false) + )))))))) + +(def .public test + Test + (<| (_.covering /._) + (do random.monad + [deadline ..deadline + message ..message + focus ..focus] + (all _.and + (_.coverage [/.must_remember] + (and (test_failure deadline message {.#None} + (exception.error /.must_remember [deadline deadline message {.#None}])) + (test_failure deadline message {.#Some focus} + (exception.error /.must_remember [deadline deadline message {.#Some focus}])))) + (_.coverage [/.remember] + (..test_macro /.remember "")) + (_.coverage [/.to_do] + (..test_macro /.to_do "TODO")) + (_.coverage [/.fix_me] + (..test_macro /.fix_me "FIXME")) + )))) diff --git a/stdlib/source/test/lux/world/net.lux b/stdlib/source/test/lux/world/net.lux index 885a918e7..ad3a3fa1e 100644 --- a/stdlib/source/test/lux/world/net.lux +++ b/stdlib/source/test/lux/world/net.lux @@ -17,7 +17,8 @@ ["[1]/[0]" header] ["[1]/[0]" status] ["[1]/[0]" version] - ["[1]/[0]" response]] + ["[1]/[0]" response] + ["[1]/[0]" request]] ["[1][0]" uri ["[1]/[0]" encoding] ["[1]/[0]" scheme] @@ -46,6 +47,7 @@ /http/status.test /http/version.test /http/response.test + /http/request.test /uri/encoding.test /uri/scheme.test diff --git a/stdlib/source/test/lux/world/net/http/request.lux b/stdlib/source/test/lux/world/net/http/request.lux new file mode 100644 index 000000000..0d117920f --- /dev/null +++ b/stdlib/source/test/lux/world/net/http/request.lux @@ -0,0 +1,226 @@ +(.require + [library + [lux (.except) + [abstract + [monad (.only do)]] + [control + ["|" pipe] + ["[0]" try]] + [data + ["[0]" identity (.only Identity)] + ["[0]" binary (.use "[1]#[0]" equivalence)] + [text + [encoding + ["[0]" utf8 (.use "[1]#[0]" codec)]]] + [format + ["[0]" json (.use "[1]#[0]" codec) + ["[1]T" \\test]]]] + [math + ["[0]" random (.only Random)] + [number + ["n" nat]]] + [test + ["_" property (.only Test)]]]] + [\\library + ["[0]" / (.only) + ["/[1]" // (.only) + ["[0]" header] + [// + ["[0]" mime (.use "[1]#[0]" equivalence)] + [uri + ["[0]" scheme (.use "[1]#[0]" equivalence)] + ["[0]" query (.use "[1]#[0]" codec) + ["[1]T" \\test]]]]]]]) + +(def .public test + Test + (<| (_.covering /._) + (do [! random.monad] + [expected_text (random.upper_cased 3) + expected_json jsonT.random + expected_form (queryT.random 2) + expected_uri (random.upper_cased 4) + expected_content_length random.nat]) + (_.for [/.Request + /.#identification /.#message /.#protocol /.#resource]) + (`` (all _.and + (_.coverage [/.utf8 /.text] + (and (same? /.utf8 /.text) + (let [it (/.utf8 identity.monad expected_text)] + (and (|> it + (the [/.#message //.#headers]) + (header.one header.content_type) + (|.when + {try.#Success actual} + (mime#= mime.utf_8 actual) + + {try.#Failure error} + false)) + (when ((the [/.#message //.#body] it) {.#None}) + {try.#Success [_ actual]} + (binary#= (utf8#encoded expected_text) + actual) + + {try.#Failure error} + false) + )))) + (_.coverage [/.json] + (let [it (/.json identity.monad expected_json)] + (and (|> it + (the [/.#message //.#headers]) + (header.one header.content_type) + (|.when + {try.#Success actual} + (mime#= mime.json actual) + + {try.#Failure error} + false)) + (when ((the [/.#message //.#body] it) {.#None}) + {try.#Success [_ actual]} + (binary#= (utf8#encoded (json#encoded expected_json)) + actual) + + {try.#Failure error} + false) + ))) + (_.coverage [/.form] + (let [it (/.form identity.monad expected_form)] + (and (|> it + (the [/.#message //.#headers]) + (header.one header.content_type) + (|.when + {try.#Success actual} + (mime#= mime.form actual) + + {try.#Failure error} + false)) + (when ((the [/.#message //.#body] it) {.#None}) + {try.#Success [_ actual]} + (binary#= (utf8#encoded (query#encoded expected_form)) + actual) + + {try.#Failure error} + false) + ))) + (,, (with_template [ ] + [(_.coverage [] + (let [it (is (/.Request Identity) + ( (/.utf8 identity.monad expected_text)))] + (and (|> it + (the [/.#protocol //.#scheme]) + (scheme#= )) + (|> it + (the [/.#message //.#headers]) + (header.one header.content_type) + (|.when + {try.#Success actual} + (mime#= mime.utf_8 actual) + + {try.#Failure error} + false)) + (when ((the [/.#message //.#body] it) {.#None}) + {try.#Success [_ actual]} + (binary#= (utf8#encoded expected_text) + actual) + + {try.#Failure error} + false) + )))] + + [/.http scheme.http] + [/.https scheme.https] + )) + (,, (with_template [ ] + [(_.coverage [] + (let [it (is (/.Request Identity) + ( (/.utf8 identity.monad expected_text)))] + (and (|> it + (the [/.#resource //.#method]) + (|.when + {} + true + + _ + false)) + (|> it + (the [/.#message //.#headers]) + (header.one header.content_type) + (|.when + {try.#Success actual} + (mime#= mime.utf_8 actual) + + {try.#Failure error} + false)) + (when ((the [/.#message //.#body] it) {.#None}) + {try.#Success [_ actual]} + (binary#= (utf8#encoded expected_text) + actual) + + {try.#Failure error} + false) + )))] + + [/.post //.#Post] + [/.get //.#Get] + [/.put //.#Put] + [/.patch //.#Patch] + [/.delete //.#Delete] + [/.head //.#Head] + [/.connect //.#Connect] + [/.options //.#Options] + [/.trace //.#Trace] + )) + (_.coverage [/.uri] + (let [it (is (/.Request Identity) + (/.uri expected_uri (/.utf8 identity.monad expected_text)))] + (and (|> it + (the [/.#resource //.#uri]) + (same? expected_uri)) + (|> it + (the [/.#message //.#headers]) + (header.one header.content_type) + (|.when + {try.#Success actual} + (mime#= mime.utf_8 actual) + + {try.#Failure error} + false)) + (when ((the [/.#message //.#body] it) {.#None}) + {try.#Success [_ actual]} + (binary#= (utf8#encoded expected_text) + actual) + + {try.#Failure error} + false) + ))) + (_.coverage [/.with_header] + (let [it (is (/.Request Identity) + (|> (/.utf8 identity.monad expected_text) + (/.with_header header.content_length expected_content_length)))] + (and (|> it + (the [/.#message //.#headers]) + (header.one header.content_length) + (|.when + {try.#Success actual} + (n.= expected_content_length actual) + + {try.#Failure error} + false)) + (|> it + (the [/.#message //.#headers]) + (header.one header.content_type) + (|.when + {try.#Success actual} + (mime#= mime.utf_8 actual) + + {try.#Failure error} + false)) + (when ((the [/.#message //.#body] it) {.#None}) + {try.#Success [_ actual]} + (binary#= (utf8#encoded expected_text) + actual) + + {try.#Failure error} + false) + ))) + )))) diff --git a/stdlib/source/test/lux/world/net/mime.lux b/stdlib/source/test/lux/world/net/mime.lux index 8c5c84033..c1116ad5a 100644 --- a/stdlib/source/test/lux/world/net/mime.lux +++ b/stdlib/source/test/lux/world/net/mime.lux @@ -89,6 +89,9 @@ [/.video_3gpp2] [/.compressed_7z] + [/.form] + [/.multi_part_form] + [/.utf_8]) (with_template [] [] diff --git a/stdlib/source/test/lux/world/net/uri/port.lux b/stdlib/source/test/lux/world/net/uri/port.lux index 14ffa5059..d91dc1d5d 100644 --- a/stdlib/source/test/lux/world/net/uri/port.lux +++ b/stdlib/source/test/lux/world/net/uri/port.lux @@ -8,7 +8,7 @@ ["[0]" list] ["[0]" set]]] [math - ["[0]" random (.only Random)] + ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number ["[0]" nat]]] [test @@ -16,162 +16,175 @@ [\\library ["[0]" /]]) -(def .public test - Test - (<| (_.covering /._) - (do [! random.monad] - []) - (`` (all _.and - (with_expansions [ (these /.echo_protocol - /.discard_protocol - /.daytime_protocol - /.quote_of_the_day - /.message_send_protocol - /.character_generator_protocol - /.file_transfer_protocol_data_transfer - /.file_transfer_protocol_control - /.telnet - /.simple_mail_transfer_protocol - /.time_protocol - /.host_name_server_protocol - /.whois - /.domain_name_system - /.gopher - /.finger - /.hypertext_transfer_protocol - /.kerberos - - /.digital_imaging_and_communications_in_medicine - /.remote_user_telnet_service - /.post_office_protocol_2 - /.post_office_protocol_3 - /.open_network_computing_remote_procedure_call - /.simple_file_transfer_protocol - /.network_news_transfer_protocol - /.network_time_protocol - /.internet_message_access_protocol - /.simple_gateway_monitoring_protocol - /.structured_query_language - /.simple_network_management_protocol - /.simple_network_management_protocol_trap - /.secure_neighbor_discovery - /.x_display_manager_control_protocol - /.border_gateway_protocol - /.internet_relay_chat - /.snmp_unix_multiplexer - - /.border_gateway_multicast_protocol - - /.precision_time_protocol_event_messages - /.precision_time_protocol_general_messages - /.lightweight_directory_access_protocol - - /.uninterruptible_power_supply - /.service_location_protocol - /.hypertext_transfer_protocol_secure - /.simple_network_paging_protocol - /.kerberos_change/set_password - - /.remote_procedure_call - /.real_time_streaming_protocol - /.dynamic_host_configuration_protocol/6_client - /.dynamic_host_configuration_protocol/6_server - /.network_news_transfer_protocol_secure - - /.internet_printing_protocol - /.lightweight_directory_access_protocol_secure - /.multicast_source_discovery_protocol - /.label_distribution_protocol - /.application_configuration_access_protocol - /.optimized_link_state_routing_protocol - - /.extensible_provisioning_protocol - /.link_management_protocol - /.secure_internet_live_conferencing_protocol - /.kerberos_administration - - /.certificate_management_protocol - /.network_configuration_protocol/ssh - /.network_configuration_protocol/beep - /.network_configuration_protocol/soap/https - /.network_configuration_protocol/soap/beep - - /.file_transfer_protocol_secure_data_transfer - /.file_transfer_protocol_secure_control - /.telnet/tls - /.internet_message_access_protocol_secure - /.post_office_protocol_3_secure)] - (_.coverage [] +(with_expansions [ (these [/.echo_protocol] + [/.discard_protocol] + [/.daytime_protocol] + [/.quote_of_the_day] + [/.message_send_protocol] + [/.character_generator_protocol] + [/.file_transfer_protocol_data_transfer] + [/.file_transfer_protocol_control] + [/.telnet] + [/.simple_mail_transfer_protocol] + [/.time_protocol] + [/.host_name_server_protocol] + [/.whois] + [/.domain_name_system] + [/.gopher] + [/.finger] + [/.hypertext_transfer_protocol] + [/.kerberos] + + [/.digital_imaging_and_communications_in_medicine] + [/.remote_user_telnet_service] + [/.post_office_protocol_2] + [/.post_office_protocol_3] + [/.open_network_computing_remote_procedure_call] + [/.simple_file_transfer_protocol] + [/.network_news_transfer_protocol] + [/.network_time_protocol] + [/.internet_message_access_protocol] + [/.simple_gateway_monitoring_protocol] + [/.structured_query_language] + [/.simple_network_management_protocol] + [/.simple_network_management_protocol_trap] + [/.secure_neighbor_discovery] + [/.x_display_manager_control_protocol] + [/.border_gateway_protocol] + [/.internet_relay_chat] + [/.snmp_unix_multiplexer] + + [/.border_gateway_multicast_protocol] + + [/.precision_time_protocol_event_messages] + [/.precision_time_protocol_general_messages] + [/.lightweight_directory_access_protocol] + + [/.uninterruptible_power_supply] + [/.service_location_protocol] + [/.hypertext_transfer_protocol_secure] + [/.simple_network_paging_protocol] + [/.kerberos_change/set_password] + + [/.remote_procedure_call] + [/.real_time_streaming_protocol] + [/.dynamic_host_configuration_protocol/6_client] + [/.dynamic_host_configuration_protocol/6_server] + [/.network_news_transfer_protocol_secure] + + [/.internet_printing_protocol] + [/.lightweight_directory_access_protocol_secure] + [/.multicast_source_discovery_protocol] + [/.label_distribution_protocol] + [/.application_configuration_access_protocol] + [/.optimized_link_state_routing_protocol] + + [/.extensible_provisioning_protocol] + [/.link_management_protocol] + [/.secure_internet_live_conferencing_protocol] + [/.kerberos_administration] + + [/.certificate_management_protocol] + [/.network_configuration_protocol/ssh] + [/.network_configuration_protocol/beep] + [/.network_configuration_protocol/soap/https] + [/.network_configuration_protocol/soap/beep] + + [/.file_transfer_protocol_secure_data_transfer] + [/.file_transfer_protocol_secure_control] + [/.telnet/tls] + [/.internet_message_access_protocol_secure] + [/.post_office_protocol_3_secure])] + (def .public random + (Random /.Port) + (`` (all random.either + (,, (with_template [] + [(random#in )] + + + ))))) + + (def .public test + Test + (<| (_.covering /._) + (do [! random.monad] + []) + (`` (all _.and + (_.coverage [(,, (with_template [] + [] + + + ))] (let [options (list ) uniques (set.of_list nat.hash options)] (nat.= (list.size options) - (set.size uniques))))) - (,, (with_template [ ] - [(_.coverage [] - (same? ))] - - [/.file_transfer_protocol_data_transfer /.ftp_data_transfer] - [/.file_transfer_protocol_control /.ftp_control] - [/.simple_mail_transfer_protocol /.smtp] - [/.domain_name_system /.dns] - [/.hypertext_transfer_protocol /.http] - - [/.digital_imaging_and_communications_in_medicine /.dicom] - [/.remote_user_telnet_service /.rtelnet] - [/.post_office_protocol_2 /.pop2] - [/.post_office_protocol_3 /.pop3] - [/.open_network_computing_remote_procedure_call /.onc_rpc] - [/.simple_file_transfer_protocol /.simple_ftp] - [/.network_news_transfer_protocol /.nntp] - [/.network_time_protocol /.ntp] - [/.internet_message_access_protocol /.imap] - [/.simple_gateway_monitoring_protocol /.sgmp] - [/.structured_query_language /.sql] - [/.simple_network_management_protocol /.snmp] - [/.simple_network_management_protocol_trap /.snmp_trap] - [/.secure_neighbor_discovery /.send] - [/.x_display_manager_control_protocol /.xdmcp] - [/.border_gateway_protocol /.bgp] - [/.internet_relay_chat /.irc] - [/.snmp_unix_multiplexer /.smux] - - [/.border_gateway_multicast_protocol /.bgmp] - - [/.precision_time_protocol_event_messages /.ptp_event_messages] - [/.precision_time_protocol_general_messages /.ptp_general_messages] - [/.lightweight_directory_access_protocol /.ldap] - - [/.uninterruptible_power_supply /.ups] - [/.service_location_protocol /.slp] - [/.hypertext_transfer_protocol_secure /.https] - [/.simple_network_paging_protocol /.snpp] - - [/.remote_procedure_call /.rpc] - [/.real_time_streaming_protocol /.rtsp] - [/.dynamic_host_configuration_protocol/6_client /.dhcp/6_client] - [/.dynamic_host_configuration_protocol/6_server /.dhcp/6_server] - [/.network_news_transfer_protocol_secure /.nntps] - - [/.internet_printing_protocol /.ipp] - [/.lightweight_directory_access_protocol_secure /.ldaps] - [/.multicast_source_discovery_protocol /.msdp] - [/.label_distribution_protocol /.ldp] - [/.application_configuration_access_protocol /.acap] - [/.optimized_link_state_routing_protocol /.olsr] - - [/.extensible_provisioning_protocol /.epp] - [/.link_management_protocol /.lmp] - [/.secure_internet_live_conferencing_protocol /.silc] - - [/.certificate_management_protocol /.cmp] - [/.network_configuration_protocol/ssh /.netconf/ssh] - [/.network_configuration_protocol/beep /.netconf/beep] - [/.network_configuration_protocol/soap/https /.netconf/soap/https] - [/.network_configuration_protocol/soap/beep /.netconf/soap/beep] - - [/.file_transfer_protocol_secure_data_transfer /.ftps_data_transfer] - [/.file_transfer_protocol_secure_control /.ftps_control] - [/.internet_message_access_protocol_secure /.imaps] - [/.post_office_protocol_3_secure /.pop3s] - )) - )))) + (set.size uniques)))) + (,, (with_template [ ] + [(_.coverage [] + (same? ))] + + [/.file_transfer_protocol_data_transfer /.ftp_data_transfer] + [/.file_transfer_protocol_control /.ftp_control] + [/.simple_mail_transfer_protocol /.smtp] + [/.domain_name_system /.dns] + [/.hypertext_transfer_protocol /.http] + + [/.digital_imaging_and_communications_in_medicine /.dicom] + [/.remote_user_telnet_service /.rtelnet] + [/.post_office_protocol_2 /.pop2] + [/.post_office_protocol_3 /.pop3] + [/.open_network_computing_remote_procedure_call /.onc_rpc] + [/.simple_file_transfer_protocol /.simple_ftp] + [/.network_news_transfer_protocol /.nntp] + [/.network_time_protocol /.ntp] + [/.internet_message_access_protocol /.imap] + [/.simple_gateway_monitoring_protocol /.sgmp] + [/.structured_query_language /.sql] + [/.simple_network_management_protocol /.snmp] + [/.simple_network_management_protocol_trap /.snmp_trap] + [/.secure_neighbor_discovery /.send] + [/.x_display_manager_control_protocol /.xdmcp] + [/.border_gateway_protocol /.bgp] + [/.internet_relay_chat /.irc] + [/.snmp_unix_multiplexer /.smux] + + [/.border_gateway_multicast_protocol /.bgmp] + + [/.precision_time_protocol_event_messages /.ptp_event_messages] + [/.precision_time_protocol_general_messages /.ptp_general_messages] + [/.lightweight_directory_access_protocol /.ldap] + + [/.uninterruptible_power_supply /.ups] + [/.service_location_protocol /.slp] + [/.hypertext_transfer_protocol_secure /.https] + [/.simple_network_paging_protocol /.snpp] + + [/.remote_procedure_call /.rpc] + [/.real_time_streaming_protocol /.rtsp] + [/.dynamic_host_configuration_protocol/6_client /.dhcp/6_client] + [/.dynamic_host_configuration_protocol/6_server /.dhcp/6_server] + [/.network_news_transfer_protocol_secure /.nntps] + + [/.internet_printing_protocol /.ipp] + [/.lightweight_directory_access_protocol_secure /.ldaps] + [/.multicast_source_discovery_protocol /.msdp] + [/.label_distribution_protocol /.ldp] + [/.application_configuration_access_protocol /.acap] + [/.optimized_link_state_routing_protocol /.olsr] + + [/.extensible_provisioning_protocol /.epp] + [/.link_management_protocol /.lmp] + [/.secure_internet_live_conferencing_protocol /.silc] + + [/.certificate_management_protocol /.cmp] + [/.network_configuration_protocol/ssh /.netconf/ssh] + [/.network_configuration_protocol/beep /.netconf/beep] + [/.network_configuration_protocol/soap/https /.netconf/soap/https] + [/.network_configuration_protocol/soap/beep /.netconf/soap/beep] + + [/.file_transfer_protocol_secure_data_transfer /.ftps_data_transfer] + [/.file_transfer_protocol_secure_control /.ftps_control] + [/.internet_message_access_protocol_secure /.imaps] + [/.post_office_protocol_3_secure /.pop3s] + )) + ))))) -- cgit v1.2.3