diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/SemanticDataRepository.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/SemanticDataRepository.kt index ed4022e3..156d10c6 100644 --- a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/SemanticDataRepository.kt +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/SemanticDataRepository.kt @@ -156,6 +156,7 @@ class SemanticDataRepository private constructor() { validatorMap.putAll(InAddrPrefixesOptionValue.validators) validatorMap.putAll(UIntOptionValues.validators) validatorMap.putAll(SimpleGrammarOptionValues.validators) + validatorMap.putAll(getAllAIGeneratedValidators()) fileClassToSectionNameToKeyValuesFromDoc["unit"]?.remove(SCOPE_KEYWORD) fileClassToSectionToKeyAndValidatorMap["unit"]?.remove(SCOPE_KEYWORD) } diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/AiGenerated.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/AiGenerated.kt new file mode 100644 index 00000000..aa4b20e6 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/AiGenerated.kt @@ -0,0 +1,190 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai.* + +/** + * This file is auto-generated by the install.sh script. + * It contains all AI-generated validators with their registration mappings. + */ +fun getAllAIGeneratedValidators(): Map { + val allValidators = mapOf( + Validator("config_parse_6rd_prefix", "0") to ConfigParse6rdPrefixOptionValue() as OptionValueInformation, + Validator("config_parse_ad_actor_sys_prio", "0") to ConfigParseAdActorSysPrioOptionValue() as OptionValueInformation, + Validator("config_parse_ad_user_port_key", "0") to ConfigParseAdUserPortKeyOptionValue() as OptionValueInformation, + Validator("config_parse_address_section", "ADDRESS_ADD_PREFIX_ROUTE") to ConfigParseAddressSectionOptionValue() as OptionValueInformation, + Validator("config_parse_address_section", "ADDRESS_AUTO_JOIN") to ConfigParseAddressSectionOptionValue() as OptionValueInformation, + Validator("config_parse_address_section", "ADDRESS_DAD") to ConfigParseAddressSectionOptionValue() as OptionValueInformation, + Validator("config_parse_address_section", "ADDRESS_HOME_ADDRESS") to ConfigParseAddressSectionOptionValue() as OptionValueInformation, + Validator("config_parse_address_section", "ADDRESS_MANAGE_TEMPORARY_ADDRESS") to ConfigParseAddressSectionOptionValue() as OptionValueInformation, + Validator("config_parse_address_section", "ADDRESS_PREFIX_ROUTE") to ConfigParseAddressSectionOptionValue() as OptionValueInformation, + Validator("config_parse_address_section", "ADDRESS_ROUTE_METRIC") to ConfigParseAddressSectionOptionValue() as OptionValueInformation, + Validator("config_parse_alternative_names_policy", "0") to ConfigParseAlternativeNamesPolicyOptionValue() as OptionValueInformation, + Validator("config_parse_arp_ip_target_address", "0") to ConfigParseArpIpTargetAddressOptionValue() as OptionValueInformation, + Validator("config_parse_bare_udp_iftype", "0") to ConfigParseBareUdpIftypeOptionValue() as OptionValueInformation, + Validator("config_parse_batadv_gateway_mode", "0") to ConfigParseBatadvGatewayModeOptionValue() as OptionValueInformation, + Validator("config_parse_batadv_routing_algorithm", "0") to ConfigParseBatadvRoutingAlgorithmOptionValue() as OptionValueInformation, + Validator("config_parse_bond_ad_select", "0") to ConfigParseBondAdSelectOptionValue() as OptionValueInformation, + Validator("config_parse_bond_arp_all_targets", "0") to ConfigParseBondArpAllTargetsOptionValue() as OptionValueInformation, + Validator("config_parse_bond_arp_validate", "0") to ConfigParseBondArpValidateOptionValue() as OptionValueInformation, + Validator("config_parse_bond_fail_over_mac", "0") to ConfigParseBondFailOverMacOptionValue() as OptionValueInformation, + Validator("config_parse_bond_lacp_rate", "0") to ConfigParseBondLacpRateOptionValue() as OptionValueInformation, + Validator("config_parse_bond_mode", "0") to ConfigParseBondModeOptionValue() as OptionValueInformation, + Validator("config_parse_bond_primary_reselect", "0") to ConfigParseBondPrimaryReselectOptionValue() as OptionValueInformation, + Validator("config_parse_bond_xmit_hash_policy", "0") to ConfigParseBondXmitHashPolicyOptionValue() as OptionValueInformation, + Validator("config_parse_boot", "0") to ConfigParseBootOptionValue() as OptionValueInformation, + Validator("config_parse_bridge_fdb_max_learned", "0") to ConfigParseBridgeFdbMaxLearnedOptionValue() as OptionValueInformation, + Validator("config_parse_bridge_igmp_version", "0") to ConfigParseBridgeIgmpVersionOptionValue() as OptionValueInformation, + Validator("config_parse_bridge_port_priority", "0") to ConfigParseBridgePortPriorityOptionValue() as OptionValueInformation, + Validator("config_parse_cake_compensation_mode", "QDISC_KIND_CAKE") to ConfigParseCakeCompensationModeOptionValue() as OptionValueInformation, + Validator("config_parse_cake_fwmark", "QDISC_KIND_CAKE") to ConfigParseCakeFwmarkOptionValue() as OptionValueInformation, + Validator("config_parse_cake_mpu", "QDISC_KIND_CAKE") to ConfigParseCakeMpuOptionValue() as OptionValueInformation, + Validator("config_parse_cake_overhead", "QDISC_KIND_CAKE") to ConfigParseCakeOverheadOptionValue() as OptionValueInformation, + Validator("config_parse_cake_tristate", "QDISC_KIND_CAKE") to ConfigParseCakeTristateOptionValue() as OptionValueInformation, + Validator("config_parse_can_control_mode", "CAN_CTRLMODE_3_SAMPLES") to ConfigParseCanControlModeOptionValue() as OptionValueInformation, + Validator("config_parse_can_control_mode", "CAN_CTRLMODE_BERR_REPORTING") to ConfigParseCanControlModeOptionValue() as OptionValueInformation, + Validator("config_parse_can_control_mode", "CAN_CTRLMODE_CC_LEN8_DLC") to ConfigParseCanControlModeOptionValue() as OptionValueInformation, + Validator("config_parse_can_control_mode", "CAN_CTRLMODE_FD") to ConfigParseCanControlModeOptionValue() as OptionValueInformation, + Validator("config_parse_can_control_mode", "CAN_CTRLMODE_FD_NON_ISO") to ConfigParseCanControlModeOptionValue() as OptionValueInformation, + Validator("config_parse_can_control_mode", "CAN_CTRLMODE_LISTENONLY") to ConfigParseCanControlModeOptionValue() as OptionValueInformation, + Validator("config_parse_can_control_mode", "CAN_CTRLMODE_LOOPBACK") to ConfigParseCanControlModeOptionValue() as OptionValueInformation, + Validator("config_parse_can_control_mode", "CAN_CTRLMODE_ONE_SHOT") to ConfigParseCanControlModeOptionValue() as OptionValueInformation, + Validator("config_parse_can_control_mode", "CAN_CTRLMODE_PRESUME_ACK") to ConfigParseCanControlModeOptionValue() as OptionValueInformation, + Validator("config_parse_can_termination", "0") to ConfigParseCanTerminationOptionValue() as OptionValueInformation, + Validator("config_parse_codel_bool", "QDISC_KIND_CODEL") to ConfigParseCodelBoolOptionValue() as OptionValueInformation, + Validator("config_parse_codel_u32", "QDISC_KIND_CODEL") to ConfigParseCodelU32OptionValue() as OptionValueInformation, + Validator("config_parse_collect_mode", "0") to ConfigParseCollectModeOptionValue() as OptionValueInformation, + Validator("config_parse_df", "0") to ConfigParseDfOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp6_client_start_mode", "0") to ConfigParseDhcp6ClientStartModeOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp6_pd_prefix_hint", "0") to ConfigParseDhcp6PdPrefixHintOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp", "0") to ConfigParseDhcpOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp_client_identifier", "0") to ConfigParseDhcpClientIdentifierOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp_ip_service_type", "0") to ConfigParseDhcpIpServiceTypeOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp_max_attempts", "0") to ConfigParseDhcpMaxAttemptsOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp_route_metric", "AF_INET") to ConfigParseDhcpRouteMetricOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp_send_hostname", "AF_INET6") to ConfigParseDhcpSendHostnameOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp_send_hostname", "AF_INET") to ConfigParseDhcpSendHostnameOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp_server_persist_leases", "0") to ConfigParseDhcpServerPersistLeasesOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp_server_relay_agent_suboption", "0") to ConfigParseDhcpServerRelayAgentSuboptionOptionValue() as OptionValueInformation, + Validator("config_parse_dhcp_static_lease_address", "0") to ConfigParseDhcpStaticLeaseAddressOptionValue() as OptionValueInformation, + Validator("config_parse_disable_controllers", "0") to ConfigParseDisableControllersOptionValue() as OptionValueInformation, + Validator("config_parse_duplex", "0") to ConfigParseDuplexOptionValue() as OptionValueInformation, + Validator("config_parse_encap_limit", "0") to ConfigParseEncapLimitOptionValue() as OptionValueInformation, + Validator("config_parse_erspan_direction", "0") to ConfigParseErspanDirectionOptionValue() as OptionValueInformation, + Validator("config_parse_erspan_hwid", "0") to ConfigParseErspanHwidOptionValue() as OptionValueInformation, + Validator("config_parse_erspan_index", "0") to ConfigParseErspanIndexOptionValue() as OptionValueInformation, + Validator("config_parse_erspan_version", "0") to ConfigParseErspanVersionOptionValue() as OptionValueInformation, + Validator("config_parse_ets_u8", "QDISC_KIND_ETS") to ConfigParseEtsU8OptionValue() as OptionValueInformation, + Validator("config_parse_exec_cpu_sched_prio", "0") to ConfigParseExecCpuSchedPrioOptionValue() as OptionValueInformation, + Validator("config_parse_exec_input_text", "0") to ConfigParseExecInputTextOptionValue() as OptionValueInformation, + Validator("config_parse_exec_io_priority", "0") to ConfigParseExecIoPriorityOptionValue() as OptionValueInformation, + Validator("config_parse_exec_mount_propagation_flag", "0") to ConfigParseExecMountPropagationFlagOptionValue() as OptionValueInformation, + Validator("config_parse_exec_nice", "0") to ConfigParseExecNiceOptionValue() as OptionValueInformation, + Validator("config_parse_exec_oom_score_adjust", "0") to ConfigParseExecOomScoreAdjustOptionValue() as OptionValueInformation, + Validator("config_parse_exec_preserve_mode", "0") to ConfigParseExecPreserveModeOptionValue() as OptionValueInformation, + Validator("config_parse_exit_status", "0") to ConfigParseExitStatusOptionValue() as OptionValueInformation, + Validator("config_parse_fdb_destination", "0") to ConfigParseFdbDestinationOptionValue() as OptionValueInformation, + Validator("config_parse_fdb_ntf_flags", "0") to ConfigParseFdbNtfFlagsOptionValue() as OptionValueInformation, + Validator("config_parse_fdb_vxlan_vni", "0") to ConfigParseFdbVxlanVniOptionValue() as OptionValueInformation, + Validator("config_parse_flow_label", "0") to ConfigParseFlowLabelOptionValue() as OptionValueInformation, + Validator("config_parse_fou_encap_type", "0") to ConfigParseFouEncapTypeOptionValue() as OptionValueInformation, + Validator("config_parse_fou_tunnel_address", "0") to ConfigParseFouTunnelAddressOptionValue() as OptionValueInformation, + Validator("config_parse_fq_pie_packet_limit", "QDISC_KIND_FQ_PIE") to ConfigParseFqPiePacketLimitOptionValue() as OptionValueInformation, + Validator("config_parse_geneve_df", "0") to ConfigParseGeneveDfOptionValue() as OptionValueInformation, + Validator("config_parse_geneve_flow_label", "0") to ConfigParseGeneveFlowLabelOptionValue() as OptionValueInformation, + Validator("config_parse_geneve_ttl", "0") to ConfigParseGeneveTtlOptionValue() as OptionValueInformation, + Validator("config_parse_geneve_vni", "0") to ConfigParseGeneveVniOptionValue() as OptionValueInformation, + Validator("config_parse_hhf_packet_limit", "QDISC_KIND_HHF") to ConfigParseHhfPacketLimitOptionValue() as OptionValueInformation, + Validator("config_parse_iaid", "AF_INET6") to ConfigParseIaidOptionValue() as OptionValueInformation, + Validator("config_parse_iaid", "AF_INET") to ConfigParseIaidOptionValue() as OptionValueInformation, + Validator("config_parse_in_addr_non_null", "AF_INET") to ConfigParseInAddrNonNullOptionValue() as OptionValueInformation, + Validator("config_parse_ip_masquerade", "0") to ConfigParseIpMasqueradeOptionValue() as OptionValueInformation, + Validator("config_parse_ip_reverse_path_filter", "0") to ConfigParseIpReversePathFilterOptionValue() as OptionValueInformation, + Validator("config_parse_ipoib_mode", "0") to ConfigParseIpoibModeOptionValue() as OptionValueInformation, + Validator("config_parse_ipv4_force_igmp_version", "0") to ConfigParseIpv4ForceIgmpVersionOptionValue() as OptionValueInformation, + Validator("config_parse_ipv6_link_local_address_gen_mode", "0") to ConfigParseIpv6LinkLocalAddressGenModeOptionValue() as OptionValueInformation, + Validator("config_parse_ipv6_privacy_extensions", "0") to ConfigParseIpv6PrivacyExtensionsOptionValue() as OptionValueInformation, + Validator("config_parse_ipvlan_flags", "0") to ConfigParseIpvlanFlagsOptionValue() as OptionValueInformation, + Validator("config_parse_ipvlan_mode", "0") to ConfigParseIpvlanModeOptionValue() as OptionValueInformation, + Validator("config_parse_job_mode_isolate", "0") to ConfigParseJobModeIsolateOptionValue() as OptionValueInformation, + Validator("config_parse_keep_configuration", "0") to ConfigParseKeepConfigurationOptionValue() as OptionValueInformation, + Validator("config_parse_l2tp_encap_type", "0") to ConfigParseL2tpEncapTypeOptionValue() as OptionValueInformation, + Validator("config_parse_l2tp_session_id", "0") to ConfigParseL2tpSessionIdOptionValue() as OptionValueInformation, + Validator("config_parse_l2tp_session_l2spec", "0") to ConfigParseL2tpSessionL2specOptionValue() as OptionValueInformation, + Validator("config_parse_l2tp_tunnel_id", "0") to ConfigParseL2tpTunnelIdOptionValue() as OptionValueInformation, + Validator("config_parse_link_local_address_family", "0") to ConfigParseLinkLocalAddressFamilyOptionValue() as OptionValueInformation, + Validator("config_parse_lldp_mode", "0") to ConfigParseLldpModeOptionValue() as OptionValueInformation, + Validator("config_parse_macsec_key", "0") to ConfigParseMacsecKeyOptionValue() as OptionValueInformation, + Validator("config_parse_macsec_packet_number", "0") to ConfigParseMacsecPacketNumberOptionValue() as OptionValueInformation, + Validator("config_parse_macsec_port", "0") to ConfigParseMacsecPortOptionValue() as OptionValueInformation, + Validator("config_parse_macsec_sa_activate", "0") to ConfigParseMacsecSaActivateOptionValue() as OptionValueInformation, + Validator("config_parse_macsec_use_for_encoding", "0") to ConfigParseMacsecUseForEncodingOptionValue() as OptionValueInformation, + Validator("config_parse_macvlan_broadcast_queue_size", "0") to ConfigParseMacvlanBroadcastQueueSizeOptionValue() as OptionValueInformation, + Validator("config_parse_macvlan_broadcast_queue_threshold", "0") to ConfigParseMacvlanBroadcastQueueThresholdOptionValue() as OptionValueInformation, + Validator("config_parse_macvlan_mode", "0") to ConfigParseMacvlanModeOptionValue() as OptionValueInformation, + Validator("config_parse_mdi", "0") to ConfigParseMdiOptionValue() as OptionValueInformation, + Validator("config_parse_memory_pressure_watch", "0") to ConfigParseMemoryPressureWatchOptionValue() as OptionValueInformation, + Validator("config_parse_mtu", "AF_INET6") to ConfigParseMtuOptionValue() as OptionValueInformation, + Validator("config_parse_multicast_router", "0") to ConfigParseMulticastRouterOptionValue() as OptionValueInformation, + Validator("config_parse_ndisc_start_dhcp6_client", "0") to ConfigParseNdiscStartDhcp6ClientOptionValue() as OptionValueInformation, + Validator("config_parse_netem_packet_limit", "QDISC_KIND_NETEM") to ConfigParseNetemPacketLimitOptionValue() as OptionValueInformation, + Validator("config_parse_nexthop_section", "NEXTHOP_BLACKHOLE") to ConfigParseNexthopSectionOptionValue() as OptionValueInformation, + Validator("config_parse_nexthop_section", "NEXTHOP_FAMILY") to ConfigParseNexthopSectionOptionValue() as OptionValueInformation, + Validator("config_parse_nexthop_section", "NEXTHOP_GROUP") to ConfigParseNexthopSectionOptionValue() as OptionValueInformation, + Validator("config_parse_nexthop_section", "NEXTHOP_ID") to ConfigParseNexthopSectionOptionValue() as OptionValueInformation, + Validator("config_parse_nexthop_section", "NEXTHOP_ONLINK") to ConfigParseNexthopSectionOptionValue() as OptionValueInformation, + Validator("config_parse_pfifo_size", "QDISC_KIND_PFIFO") to ConfigParsePfifoSizeOptionValue() as OptionValueInformation, + Validator("config_parse_pfifo_size", "QDISC_KIND_PFIFO_HEAD_DROP") to ConfigParsePfifoSizeOptionValue() as OptionValueInformation, + Validator("config_parse_pid2", "0") to ConfigParsePid2OptionValue() as OptionValueInformation, + Validator("config_parse_pref64_prefix", "0") to ConfigParsePref64PrefixOptionValue() as OptionValueInformation, + Validator("config_parse_prefix", "0") to ConfigParsePrefixOptionValue() as OptionValueInformation, + Validator("config_parse_prefix_boolean", "0") to ConfigParsePrefixBooleanOptionValue() as OptionValueInformation, + Validator("config_parse_prefix_boolean", "ND_OPT_PI_FLAG_AUTO") to ConfigParsePrefixBooleanOptionValue() as OptionValueInformation, + Validator("config_parse_prefix_boolean", "ND_OPT_PI_FLAG_ONLINK") to ConfigParsePrefixBooleanOptionValue() as OptionValueInformation, + Validator("config_parse_prefix_metric", "0") to ConfigParsePrefixMetricOptionValue() as OptionValueInformation, + Validator("config_parse_private_pids", "0") to ConfigParsePrivatePidsOptionValue() as OptionValueInformation, + Validator("config_parse_private_tmp", "0") to ConfigParsePrivateTmpOptionValue() as OptionValueInformation, + Validator("config_parse_protect_control_groups", "0") to ConfigParseProtectControlGroupsOptionValue() as OptionValueInformation, + Validator("config_parse_protect_home", "0") to ConfigParseProtectHomeOptionValue() as OptionValueInformation, + Validator("config_parse_protect_system", "0") to ConfigParseProtectSystemOptionValue() as OptionValueInformation, + Validator("config_parse_qfq_weight", "TCLASS_KIND_QFQ") to ConfigParseQfqWeightOptionValue() as OptionValueInformation, + Validator("config_parse_ring_buffer_or_channel", "0") to ConfigParseRingBufferOrChannelOptionValue() as OptionValueInformation, + Validator("config_parse_route_prefix_preference", "0") to ConfigParseRoutePrefixPreferenceOptionValue() as OptionValueInformation, + Validator("config_parse_route_section", "ROUTE_METRIC_FASTOPEN_NO_COOKIE") to ConfigParseRouteSectionOptionValue() as OptionValueInformation, + Validator("config_parse_route_section", "ROUTE_METRIC_HOPLIMIT") to ConfigParseRouteSectionOptionValue() as OptionValueInformation, + Validator("config_parse_route_section", "ROUTE_METRIC_INITRWND") to ConfigParseRouteSectionOptionValue() as OptionValueInformation, + Validator("config_parse_route_section", "ROUTE_METRIC_QUICKACK") to ConfigParseRouteSectionOptionValue() as OptionValueInformation, + Validator("config_parse_route_section", "ROUTE_NEXTHOP") to ConfigParseRouteSectionOptionValue() as OptionValueInformation, + Validator("config_parse_route_section", "ROUTE_PREFERENCE") to ConfigParseRouteSectionOptionValue() as OptionValueInformation, + Validator("config_parse_route_section", "ROUTE_PRIORITY") to ConfigParseRouteSectionOptionValue() as OptionValueInformation, + Validator("config_parse_route_section", "ROUTE_PROTOCOL") to ConfigParseRouteSectionOptionValue() as OptionValueInformation, + Validator("config_parse_route_section", "ROUTE_TYPE") to ConfigParseRouteSectionOptionValue() as OptionValueInformation, + Validator("config_parse_router_preference", "0") to ConfigParseRouterPreferenceOptionValue() as OptionValueInformation, + Validator("config_parse_rx_tx_queues", "0") to ConfigParseRxTxQueuesOptionValue() as OptionValueInformation, + Validator("config_parse_service_restart_mode", "0") to ConfigParseServiceRestartModeOptionValue() as OptionValueInformation, + Validator("config_parse_socket_defer_trigger", "0") to ConfigParseSocketDeferTriggerOptionValue() as OptionValueInformation, + Validator("config_parse_sr_iov_num_vfs", "0") to ConfigParseSrIovNumVfsOptionValue() as OptionValueInformation, + Validator("config_parse_sr_iov_vlan_proto", "0") to ConfigParseSrIovVlanProtoOptionValue() as OptionValueInformation, + Validator("config_parse_swap_priority", "0") to ConfigParseSwapPriorityOptionValue() as OptionValueInformation, + Validator("config_parse_tcp_window", "0") to ConfigParseTcpWindowOptionValue() as OptionValueInformation, + Validator("config_parse_timezone_mode", "0") to ConfigParseTimezoneModeOptionValue() as OptionValueInformation, + Validator("config_parse_tunnel_mode", "0") to ConfigParseTunnelModeOptionValue() as OptionValueInformation, + Validator("config_parse_txqueuelen", "0") to ConfigParseTxqueuelenOptionValue() as OptionValueInformation, + Validator("config_parse_unit_condition_string", "CONDITION_AC_POWER") to ConfigParseUnitConditionStringOptionValue() as OptionValueInformation, + Validator("config_parse_unit_condition_string", "CONDITION_CONTROL_GROUP_CONTROLLER") to ConfigParseUnitConditionStringOptionValue() as OptionValueInformation, + Validator("config_parse_unit_condition_string", "CONDITION_CPU_FEATURE") to ConfigParseUnitConditionStringOptionValue() as OptionValueInformation, + Validator("config_parse_unit_condition_string", "CONDITION_FIRST_BOOT") to ConfigParseUnitConditionStringOptionValue() as OptionValueInformation, + Validator("config_parse_use_domains", "0") to ConfigParseUseDomainsOptionValue() as OptionValueInformation, + Validator("config_parse_userns_chown", "0") to ConfigParseUsernsChownOptionValue() as OptionValueInformation, + Validator("config_parse_userns_ownership", "0") to ConfigParseUsernsOwnershipOptionValue() as OptionValueInformation, + Validator("config_parse_vlanid", "0") to ConfigParseVlanidOptionValue() as OptionValueInformation, + Validator("config_parse_vxlan_ttl", "0") to ConfigParseVxlanTtlOptionValue() as OptionValueInformation, + Validator("config_parse_wireguard_keepalive", "0") to ConfigParseWireguardKeepaliveOptionValue() as OptionValueInformation, + Validator("config_parse_wireguard_listen_port", "0") to ConfigParseWireguardListenPortOptionValue() as OptionValueInformation, + Validator("config_parse_wireguard_peer_route_priority", "0") to ConfigParseWireguardPeerRoutePriorityOptionValue() as OptionValueInformation, + Validator("config_parse_wireguard_route_priority", "0") to ConfigParseWireguardRoutePriorityOptionValue() as OptionValueInformation, + Validator("config_parse_wlan_iftype", "0") to ConfigParseWlanIftypeOptionValue() as OptionValueInformation, + ) + + return allValidators +} diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/SimpleGrammarOptionValues.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/SimpleGrammarOptionValues.kt index 6c292c23..d756044b 100644 --- a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/SimpleGrammarOptionValues.kt +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/SimpleGrammarOptionValues.kt @@ -5,7 +5,7 @@ import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.gram -class SimpleGrammarOptionValues(validatorName: String, grammar: Combinator) : GrammarOptionValue(validatorName, grammar) { +open class SimpleGrammarOptionValues(validatorName: String, grammar: Combinator) : GrammarOptionValue(validatorName, grammar) { companion object { diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParse6rdPrefixOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParse6rdPrefixOptionValue.kt new file mode 100644 index 00000000..ff1185fe --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParse6rdPrefixOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Tunnel.IPv6RapidDeploymentPrefix + * C Function: config_parse_6rd_prefix(0) + * Used by Options: Tunnel.IPv6RapidDeploymentPrefix + * + * Validates IPv6 addresses with a non-zero prefix length for 6rd (IPv6 Rapid Deployment). + * Format: IPv6_address/prefix_length where prefix_length must be 1-128. + */ +class ConfigParse6rdPrefixOptionValue : SimpleGrammarOptionValues( + "config_parse_6rd_prefix", + SequenceCombinator( + IPV6_ADDR, + CIDR_SEPARATOR, + IntegerTerminal(1, 129), // Non-zero prefix length: 1-128 inclusive (129 is exclusive upper bound) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAdActorSysPrioOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAdActorSysPrioOptionValue.kt new file mode 100644 index 00000000..c8e66d81 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAdActorSysPrioOptionValue.kt @@ -0,0 +1,17 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.AdActorSystemPriority + * C Function: config_parse_ad_actor_sys_prio(0) + * Used by Options: Bond.AdActorSystemPriority + */ +class ConfigParseAdActorSysPrioOptionValue : SimpleGrammarOptionValues( + "config_parse_ad_actor_sys_prio", + SequenceCombinator( + IntegerTerminal(1, 65536), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAdUserPortKeyOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAdUserPortKeyOptionValue.kt new file mode 100644 index 00000000..44020b97 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAdUserPortKeyOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.AdUserPortKey + * C Function: config_parse_ad_user_port_key(0) + * Used by Options: Bond.AdUserPortKey + * + * Validates the 802.3ad user defined portion of the port key. + * Accepts a number in the range 0–1023. + */ +class ConfigParseAdUserPortKeyOptionValue : SimpleGrammarOptionValues( + "config_parse_ad_user_port_key", + SequenceCombinator( + IntegerTerminal(0, 1024), // Range 0-1023 (maxExclusive is 1024) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAddressSectionOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAddressSectionOptionValue.kt new file mode 100644 index 00000000..909ac6d0 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAddressSectionOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Address.RouteMetric + * C Function: config_parse_address_section(ADDRESS_ROUTE_METRIC) + * Used by Options: Address.RouteMetric + * + * Validates unsigned 32-bit integers in the range 0 to 4294967295. + * This represents the metric of the prefix route for the configured IP address. + */ +class ConfigParseAddressSectionOptionValue : SimpleGrammarOptionValues( + "config_parse_address_section", + SequenceCombinator( + IntegerTerminal(0, 4294967296), // 0 to 4294967295 inclusive (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAlternativeNamesPolicyOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAlternativeNamesPolicyOptionValue.kt new file mode 100644 index 00000000..4a7b1003 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseAlternativeNamesPolicyOptionValue.kt @@ -0,0 +1,24 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Link.AlternativeNamesPolicy + * C Function: config_parse_alternative_names_policy(0) + * Used by Options: Link.AlternativeNamesPolicy + */ +class ConfigParseAlternativeNamesPolicyOptionValue : SimpleGrammarOptionValues( + "config_parse_alternative_names_policy", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("database", "onboard", "slot", "path", "mac"), + ZeroOrMore( + SequenceCombinator( + WhitespaceTerminal(), + FlexibleLiteralChoiceTerminal("database", "onboard", "slot", "path", "mac") + ) + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseArpIpTargetAddressOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseArpIpTargetAddressOptionValue.kt new file mode 100644 index 00000000..476cc86f --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseArpIpTargetAddressOptionValue.kt @@ -0,0 +1,19 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.ARPIPTargets + * C Function: config_parse_arp_ip_target_address(0) + * Used by Options: Bond.ARPIPTargets + */ +class ConfigParseArpIpTargetAddressOptionValue : SimpleGrammarOptionValues( + "config_parse_arp_ip_target_address", + SequenceCombinator( + IPV4_ADDR, + ZeroOrMore(SequenceCombinator(WhitespaceTerminal(), IPV4_ADDR)), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBareUdpIftypeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBareUdpIftypeOptionValue.kt new file mode 100644 index 00000000..276fc440 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBareUdpIftypeOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for BareUDP.EtherType + * C Function: config_parse_bare_udp_iftype(0) + * Used by Options: BareUDP.EtherType + * + * Validates the L3 protocol for BareUDP interfaces. + * Valid values: ipv4, ipv6, mpls-uc, mpls-mc + */ +class ConfigParseBareUdpIftypeOptionValue : SimpleGrammarOptionValues( + "config_parse_bare_udp_iftype", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("ipv4", "ipv6", "mpls-uc", "mpls-mc"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBatadvGatewayModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBatadvGatewayModeOptionValue.kt new file mode 100644 index 00000000..6a0e56f7 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBatadvGatewayModeOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for BatmanAdvanced.GatewayMode + * C Function: config_parse_batadv_gateway_mode(0) + * Used by Options: BatmanAdvanced.GatewayMode + * + * Valid values: off, client, server + */ +class ConfigParseBatadvGatewayModeOptionValue : SimpleGrammarOptionValues( + "config_parse_batadv_gateway_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("off", "client", "server"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBatadvRoutingAlgorithmOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBatadvRoutingAlgorithmOptionValue.kt new file mode 100644 index 00000000..04459b68 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBatadvRoutingAlgorithmOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for BatmanAdvanced.RoutingAlgorithm + * C Function: config_parse_batadv_routing_algorithm(0) + * Used by Options: BatmanAdvanced.RoutingAlgorithm + */ +class ConfigParseBatadvRoutingAlgorithmOptionValue : SimpleGrammarOptionValues( + "config_parse_batadv_routing_algorithm", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("batman-v", "batman-iv"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondAdSelectOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondAdSelectOptionValue.kt new file mode 100644 index 00000000..afc0fe0d --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondAdSelectOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.AdSelect + * C Function: config_parse_bond_ad_select(0) + * Used by Options: Bond.AdSelect + * + * Specifies the 802.3ad aggregation selection logic to use. + * Valid values: stable, bandwidth, count + */ +class ConfigParseBondAdSelectOptionValue : SimpleGrammarOptionValues( + "config_parse_bond_ad_select", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("stable", "bandwidth", "count"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondArpAllTargetsOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondArpAllTargetsOptionValue.kt new file mode 100644 index 00000000..ebfddb65 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondArpAllTargetsOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.ARPAllTargets + * C Function: config_parse_bond_arp_all_targets(0) + * Used by Options: Bond.ARPAllTargets + */ +class ConfigParseBondArpAllTargetsOptionValue : SimpleGrammarOptionValues( + "config_parse_bond_arp_all_targets", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("any", "all"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondArpValidateOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondArpValidateOptionValue.kt new file mode 100644 index 00000000..49a56c0c --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondArpValidateOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.ARPValidate + * C Function: config_parse_bond_arp_validate(0) + * Used by Options: Bond.ARPValidate + */ +class ConfigParseBondArpValidateOptionValue : SimpleGrammarOptionValues( + "config_parse_bond_arp_validate", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("none", "active", "backup", "all"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondFailOverMacOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondFailOverMacOptionValue.kt new file mode 100644 index 00000000..c3daedd7 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondFailOverMacOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.FailOverMACPolicy + * C Function: config_parse_bond_fail_over_mac(0) + * Used by Options: Bond.FailOverMACPolicy + * + * Validates the fail-over MAC policy for active-backup bonding mode. + * Valid values are: none, active, follow + */ +class ConfigParseBondFailOverMacOptionValue : SimpleGrammarOptionValues( + "config_parse_bond_fail_over_mac", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("none", "active", "follow"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondLacpRateOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondLacpRateOptionValue.kt new file mode 100644 index 00000000..8afee511 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondLacpRateOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.LACPTransmitRate + * C Function: config_parse_bond_lacp_rate(0) + * Used by Options: Bond.LACPTransmitRate + */ +class ConfigParseBondLacpRateOptionValue : SimpleGrammarOptionValues( + "config_parse_bond_lacp_rate", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("slow", "fast"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondModeOptionValue.kt new file mode 100644 index 00000000..419b818d --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondModeOptionValue.kt @@ -0,0 +1,26 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.Mode + * C Function: config_parse_bond_mode(0) + * Used by Options: Bond.Mode + */ +class ConfigParseBondModeOptionValue : SimpleGrammarOptionValues( + "config_parse_bond_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "balance-rr", + "active-backup", + "balance-xor", + "broadcast", + "802.3ad", + "balance-tlb", + "balance-alb" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondPrimaryReselectOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondPrimaryReselectOptionValue.kt new file mode 100644 index 00000000..8c42eaf9 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondPrimaryReselectOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.PrimaryReselectPolicy + * C Function: config_parse_bond_primary_reselect(0) + * Used by Options: Bond.PrimaryReselectPolicy + * + * Validates the reselection policy for the primary slave in bonding. + * Valid values: always, better, failure + */ +class ConfigParseBondPrimaryReselectOptionValue : SimpleGrammarOptionValues( + "config_parse_bond_primary_reselect", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("always", "better", "failure"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondXmitHashPolicyOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondXmitHashPolicyOptionValue.kt new file mode 100644 index 00000000..fa56fac7 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBondXmitHashPolicyOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bond.TransmitHashPolicy + * C Function: config_parse_bond_xmit_hash_policy(0) + * Used by Options: Bond.TransmitHashPolicy + */ +class ConfigParseBondXmitHashPolicyOptionValue : SimpleGrammarOptionValues( + "config_parse_bond_xmit_hash_policy", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("layer2", "layer3+4", "layer2+3", "encap2+3", "encap3+4"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBootOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBootOptionValue.kt new file mode 100644 index 00000000..e6bcc5eb --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBootOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Exec.Boot + * C Function: config_parse_boot(0) + * Used by Options: Exec.Boot + */ +class ConfigParseBootOptionValue : SimpleGrammarOptionValues( + "config_parse_boot", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBridgeFdbMaxLearnedOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBridgeFdbMaxLearnedOptionValue.kt new file mode 100644 index 00000000..3a483112 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBridgeFdbMaxLearnedOptionValue.kt @@ -0,0 +1,22 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bridge.FDBMaxLearned + * C Function: config_parse_bridge_fdb_max_learned(0) + * Used by Options: Bridge.FDBMaxLearned + * + * Validates an unsigned 32-bit integer value representing the maximum number of learned + * Ethernet addresses for the bridge. Valid range is 0 to 4294967295 (UINT32_MAX). + * A value of 0 disables the limit. + */ +class ConfigParseBridgeFdbMaxLearnedOptionValue : SimpleGrammarOptionValues( + "config_parse_bridge_fdb_max_learned", + SequenceCombinator( + IntegerTerminal(0, 4294967296), // 0 to UINT32_MAX (4294967295), max is exclusive + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBridgeIgmpVersionOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBridgeIgmpVersionOptionValue.kt new file mode 100644 index 00000000..50520cea --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBridgeIgmpVersionOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bridge.MulticastIGMPVersion + * C Function: config_parse_bridge_igmp_version(0) + * Used by Options: Bridge.MulticastIGMPVersion + */ +class ConfigParseBridgeIgmpVersionOptionValue : SimpleGrammarOptionValues( + "config_parse_bridge_igmp_version", + SequenceCombinator( + IntegerTerminal(2, 4), // Accepts 2 or 3 (upper bound is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBridgePortPriorityOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBridgePortPriorityOptionValue.kt new file mode 100644 index 00000000..b975f206 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseBridgePortPriorityOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bridge.Priority + * C Function: config_parse_bridge_port_priority(0) + * Used by Options: Bridge.Priority + */ +class ConfigParseBridgePortPriorityOptionValue : SimpleGrammarOptionValues( + "config_parse_bridge_port_priority", + SequenceCombinator( + IntegerTerminal(0, 64), // Range 0-63 inclusive (maxExclusive = 64) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeCompensationModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeCompensationModeOptionValue.kt new file mode 100644 index 00000000..be12da95 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeCompensationModeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for CAKE.CompensationMode + * C Function: config_parse_cake_compensation_mode(QDISC_KIND_CAKE) + * Used by Options: CAKE.CompensationMode + */ +class ConfigParseCakeCompensationModeOptionValue : SimpleGrammarOptionValues( + "config_parse_cake_compensation_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("none", "atm", "ptm"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeFwmarkOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeFwmarkOptionValue.kt new file mode 100644 index 00000000..ee41b192 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeFwmarkOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for CAKE.FirewallMark + * C Function: config_parse_cake_fwmark(QDISC_KIND_CAKE) + * Used by Options: CAKE.FirewallMark + * + * Validates firewall mark values for CAKE queueing discipline. + * Valid range: 1 to 4294967295 (positive 32-bit unsigned integer) + */ +class ConfigParseCakeFwmarkOptionValue : SimpleGrammarOptionValues( + "config_parse_cake_fwmark", + SequenceCombinator( + IntegerTerminal(1, 4294967296), // Range 1-4294967295 (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeMpuOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeMpuOptionValue.kt new file mode 100644 index 00000000..a197c7dd --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeMpuOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for CAKE.MPUBytes + * C Function: config_parse_cake_mpu(QDISC_KIND_CAKE) + * Used by Options: CAKE.MPUBytes + * + * Validates integer values in the range 1-256 (inclusive). + */ +class ConfigParseCakeMpuOptionValue : SimpleGrammarOptionValues( + "config_parse_cake_mpu", + SequenceCombinator( + IntegerTerminal(1, 257), // Range 1-256 inclusive (maxExclusive is 257) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeOverheadOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeOverheadOptionValue.kt new file mode 100644 index 00000000..5f2a0831 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeOverheadOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for CAKE.OverheadBytes + * C Function: config_parse_cake_overhead(QDISC_KIND_CAKE) + * Used by Options: CAKE.OverheadBytes + * + * Validates integer values in the range [-64, 256]. + * The overhead bytes can be negative to account for hardware offloading. + */ +class ConfigParseCakeOverheadOptionValue : SimpleGrammarOptionValues( + "config_parse_cake_overhead", + SequenceCombinator( + IntegerTerminal(-64, 257), // Max is exclusive, so 257 for inclusive 256 + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeTristateOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeTristateOptionValue.kt new file mode 100644 index 00000000..77dcf736 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCakeTristateOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for CAKE.UseRawPacketSize + * C Function: config_parse_cake_tristate(QDISC_KIND_CAKE) + * Used by Options: CAKE.UseRawPacketSize + * + * Accepts tristate boolean values: yes/no/true/false/on/off/1/0 + */ +class ConfigParseCakeTristateOptionValue : SimpleGrammarOptionValues( + "config_parse_cake_tristate", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("1", "yes", "y", "true", "t", "on", "0", "no", "n", "false", "f", "off"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCanControlModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCanControlModeOptionValue.kt new file mode 100644 index 00000000..bd847c8e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCanControlModeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for CAN.PresumeACK + * C Function: config_parse_can_control_mode(CAN_CTRLMODE_PRESUME_ACK) + * Used by Options: CAN.PresumeACK + */ +class ConfigParseCanControlModeOptionValue : SimpleGrammarOptionValues( + "config_parse_can_control_mode", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCanTerminationOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCanTerminationOptionValue.kt new file mode 100644 index 00000000..a250606b --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCanTerminationOptionValue.kt @@ -0,0 +1,28 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for CAN.Termination + * C Function: config_parse_can_termination(0) + * Used by Options: CAN.Termination + * + * Accepts: + * - Boolean values (yes/no/true/false/on/off/1/0) + * - Integer values from 0 to 65535 (ohm values) + * + * When a boolean true value is provided, it defaults to 120 ohm. + * When false or 0, termination is disabled. + */ +class ConfigParseCanTerminationOptionValue : SimpleGrammarOptionValues( + "config_parse_can_termination", + SequenceCombinator( + AlternativeCombinator( + IntegerTerminal(0, 65536), // 0-65535 inclusive (max is exclusive) + BOOLEAN + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCodelBoolOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCodelBoolOptionValue.kt new file mode 100644 index 00000000..bfade9ec --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCodelBoolOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for ControlledDelay.ECN + * C Function: config_parse_codel_bool(QDISC_KIND_CODEL) + * Used by Options: ControlledDelay.ECN + */ +class ConfigParseCodelBoolOptionValue : SimpleGrammarOptionValues( + "config_parse_codel_bool", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCodelU32OptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCodelU32OptionValue.kt new file mode 100644 index 00000000..d2942465 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCodelU32OptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for ControlledDelay.PacketLimit + * C Function: config_parse_codel_u32(QDISC_KIND_CODEL) + * Used by Options: ControlledDelay.PacketLimit + * + * Validates an unsigned 32-bit integer in the range 0 to 4294967294. + * This specifies the hard limit on the queue size in number of packets. + */ +class ConfigParseCodelU32OptionValue : SimpleGrammarOptionValues( + "config_parse_codel_u32", + SequenceCombinator( + IntegerTerminal(0, 4294967295), // Range 0 to 4294967294 inclusive (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCollectModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCollectModeOptionValue.kt new file mode 100644 index 00000000..0506e870 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseCollectModeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Unit.CollectMode + * C Function: config_parse_collect_mode(0) + * Used by Options: Unit.CollectMode + */ +class ConfigParseCollectModeOptionValue : SimpleGrammarOptionValues( + "config_parse_collect_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("inactive", "inactive-or-failed"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDfOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDfOptionValue.kt new file mode 100644 index 00000000..348b2cc2 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDfOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for VXLAN.IPDoNotFragment + * C Function: config_parse_df(0) + * Used by Options: VXLAN.IPDoNotFragment + * + * Validates the IPv4 Do not Fragment (DF) bit setting. + * Accepts boolean values (yes/no/1/0/true/false/on/off/y/n/t/f) or "inherit". + */ +class ConfigParseDfOptionValue : SimpleGrammarOptionValues( + "config_parse_df", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("1", "yes", "y", "true", "t", "on", "0", "no", "n", "false", "f", "off", "inherit"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcp6ClientStartModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcp6ClientStartModeOptionValue.kt new file mode 100644 index 00000000..bf673afe --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcp6ClientStartModeOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPv6.WithoutRA + * C Function: config_parse_dhcp6_client_start_mode(0) + * Used by Options: DHCPv6.WithoutRA + * + * Validates DHCPv6 client start mode values. + * Valid values: no, solicit, information-request + */ +class ConfigParseDhcp6ClientStartModeOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp6_client_start_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("no", "information-request", "solicit"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcp6PdPrefixHintOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcp6PdPrefixHintOptionValue.kt new file mode 100644 index 00000000..6145b9ff --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcp6PdPrefixHintOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPv6.PrefixDelegationHint + * C Function: config_parse_dhcp6_pd_prefix_hint(0) + * Used by Options: DHCPv6.PrefixDelegationHint + * + * Validates IPv6 addresses with prefix length in the format: 2001:db8::/64 + * Prefix length must be in the range 1-128 (inclusive). + */ +class ConfigParseDhcp6PdPrefixHintOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp6_pd_prefix_hint", + SequenceCombinator( + IPV6_ADDR, + CIDR_SEPARATOR, + IntegerTerminal(1, 129), // 1-128 inclusive (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpClientIdentifierOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpClientIdentifierOptionValue.kt new file mode 100644 index 00000000..b8bb6579 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpClientIdentifierOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPv4.ClientIdentifier + * C Function: config_parse_dhcp_client_identifier(0) + * Used by Options: DHCPv4.ClientIdentifier + */ +class ConfigParseDhcpClientIdentifierOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp_client_identifier", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("mac", "duid"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpIpServiceTypeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpIpServiceTypeOptionValue.kt new file mode 100644 index 00000000..302fa0f4 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpIpServiceTypeOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPv4.IPServiceType + * C Function: config_parse_dhcp_ip_service_type(0) + * Used by Options: DHCPv4.IPServiceType + * + * Validates IP service type values for DHCP packets. + * Valid values are: none, CS6, CS4 + */ +class ConfigParseDhcpIpServiceTypeOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp_ip_service_type", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("none", "CS6", "CS4"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpMaxAttemptsOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpMaxAttemptsOptionValue.kt new file mode 100644 index 00000000..a39917ac --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpMaxAttemptsOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPv4.MaxAttempts + * C Function: config_parse_dhcp_max_attempts(0) + * Used by Options: DHCPv4.MaxAttempts + */ +class ConfigParseDhcpMaxAttemptsOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp_max_attempts", + SequenceCombinator( + AlternativeCombinator( + FlexibleLiteralChoiceTerminal("infinity"), + IntegerTerminal(1, Long.MAX_VALUE) + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpOptionValue.kt new file mode 100644 index 00000000..013c40bb --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.DHCP + * C Function: config_parse_dhcp(0) + * Used by Options: Network.DHCP + * + * Enables DHCPv4 and/or DHCPv6 client support. + * Accepts: yes, no, ipv4, or ipv6 + */ +class ConfigParseDhcpOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("yes", "no", "ipv4", "ipv6"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpRouteMetricOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpRouteMetricOptionValue.kt new file mode 100644 index 00000000..850175d1 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpRouteMetricOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPv4.RouteMetric + * C Function: config_parse_dhcp_route_metric(AF_INET) + * Used by Options: DHCPv4.RouteMetric + */ +class ConfigParseDhcpRouteMetricOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp_route_metric", + SequenceCombinator( + IntegerTerminal(0, 4294967296L), // 0 to 4294967295 (uint32_t max), maxExclusive so 4294967296 + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpSendHostnameOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpSendHostnameOptionValue.kt new file mode 100644 index 00000000..fb0529d1 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpSendHostnameOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPv4.SendHostname + * C Function: config_parse_dhcp_send_hostname(AF_INET) + * Used by Options: DHCPv4.SendHostname + * + * This validator parses boolean values for the SendHostname option. + * Accepts: yes/no, true/false, on/off, 1/0, y/n, t/f + */ +class ConfigParseDhcpSendHostnameOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp_send_hostname", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpServerPersistLeasesOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpServerPersistLeasesOptionValue.kt new file mode 100644 index 00000000..63f44e92 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpServerPersistLeasesOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPServer.PersistLeases + * C Function: config_parse_dhcp_server_persist_leases(0) + * Used by Options: DHCPServer.PersistLeases + */ +class ConfigParseDhcpServerPersistLeasesOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp_server_persist_leases", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("runtime", "1", "yes", "y", "true", "t", "on", "0", "no", "n", "false", "f", "off"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpServerRelayAgentSuboptionOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpServerRelayAgentSuboptionOptionValue.kt new file mode 100644 index 00000000..0310728f --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpServerRelayAgentSuboptionOptionValue.kt @@ -0,0 +1,19 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPServer.RelayAgentRemoteId + * C Function: config_parse_dhcp_server_relay_agent_suboption(0) + * Used by Options: DHCPServer.RelayAgentRemoteId + */ +class ConfigParseDhcpServerRelayAgentSuboptionOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp_server_relay_agent_suboption", + SequenceCombinator( + LiteralChoiceTerminal("string:"), + RegexTerminal(".*", ".*"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpStaticLeaseAddressOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpStaticLeaseAddressOptionValue.kt new file mode 100644 index 00000000..b4340cc7 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDhcpStaticLeaseAddressOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPServerStaticLease.Address + * C Function: config_parse_dhcp_static_lease_address(0) + * Used by Options: DHCPServerStaticLease.Address + * + * Validates that the value is a valid IPv4 address. + * The C implementation uses in_addr_from_string with AF_INET to parse IPv4 addresses only. + * Note: The C code also checks that the address is not 0.0.0.0, but that semantic validation + * occurs after parsing and is not enforced by this grammar validator. + */ +class ConfigParseDhcpStaticLeaseAddressOptionValue : SimpleGrammarOptionValues( + "config_parse_dhcp_static_lease_address", + SequenceCombinator( + IPV4_ADDR, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDisableControllersOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDisableControllersOptionValue.kt new file mode 100644 index 00000000..4c0ad7a1 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDisableControllersOptionValue.kt @@ -0,0 +1,46 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.DisableControllers + * C Function: config_parse_disable_controllers(0) + * Used by Options: Swap.DisableControllers + */ +class ConfigParseDisableControllersOptionValue : SimpleGrammarOptionValues( + "config_parse_disable_controllers", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "cpu", + "cpuset", + "io", + "memory", + "pids", + "bpf-firewall", + "bpf-devices", + "bpf-foreign", + "bpf-socket-bind", + "bpf-restrict-network-interfaces" + ), + ZeroOrMore( + SequenceCombinator( + WhitespaceTerminal(), + FlexibleLiteralChoiceTerminal( + "cpu", + "cpuset", + "io", + "memory", + "pids", + "bpf-firewall", + "bpf-devices", + "bpf-foreign", + "bpf-socket-bind", + "bpf-restrict-network-interfaces" + ) + ) + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDuplexOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDuplexOptionValue.kt new file mode 100644 index 00000000..8ea8fdec --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseDuplexOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Link.Duplex + * C Function: config_parse_duplex(0) + * Used by Options: Link.Duplex + */ +class ConfigParseDuplexOptionValue : SimpleGrammarOptionValues( + "config_parse_duplex", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("full", "half"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseEncapLimitOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseEncapLimitOptionValue.kt new file mode 100644 index 00000000..dd3bf203 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseEncapLimitOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Tunnel.EncapsulationLimit + * C Function: config_parse_encap_limit(0) + * Used by Options: Tunnel.EncapsulationLimit + * + * Accepts either "none" or an integer from 0 to 255. + */ +class ConfigParseEncapLimitOptionValue : SimpleGrammarOptionValues( + "config_parse_encap_limit", + SequenceCombinator( + AlternativeCombinator( + FlexibleLiteralChoiceTerminal("none"), + IntegerTerminal(0, 256) // IntegerTerminal max is exclusive, so 256 means up to 255 + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanDirectionOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanDirectionOptionValue.kt new file mode 100644 index 00000000..446387d7 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanDirectionOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Tunnel.ERSPANDirection + * C Function: config_parse_erspan_direction(0) + * Used by Options: Tunnel.ERSPANDirection + */ +class ConfigParseErspanDirectionOptionValue : SimpleGrammarOptionValues( + "config_parse_erspan_direction", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("ingress", "egress"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanHwidOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanHwidOptionValue.kt new file mode 100644 index 00000000..e12eec72 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanHwidOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Tunnel.ERSPANHardwareId + * C Function: config_parse_erspan_hwid(0) + * Used by Options: Tunnel.ERSPANHardwareId + */ +class ConfigParseErspanHwidOptionValue : SimpleGrammarOptionValues( + "config_parse_erspan_hwid", + SequenceCombinator( + IntegerTerminal(0, 64), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanIndexOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanIndexOptionValue.kt new file mode 100644 index 00000000..45605357 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanIndexOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Tunnel.ERSPANIndex + * C Function: config_parse_erspan_index(0) + * Used by Options: Tunnel.ERSPANIndex + * + * Validates ERSPAN v1 index field values in the range 0-1048575. + */ +class ConfigParseErspanIndexOptionValue : SimpleGrammarOptionValues( + "config_parse_erspan_index", + SequenceCombinator( + IntegerTerminal(0, 1048576), // 0 to 1048575 inclusive (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanVersionOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanVersionOptionValue.kt new file mode 100644 index 00000000..5c767500 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseErspanVersionOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Tunnel.ERSPANVersion + * C Function: config_parse_erspan_version(0) + * Used by Options: Tunnel.ERSPANVersion + */ +class ConfigParseErspanVersionOptionValue : SimpleGrammarOptionValues( + "config_parse_erspan_version", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("0", "1", "2"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseEtsU8OptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseEtsU8OptionValue.kt new file mode 100644 index 00000000..bae6e8cb --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseEtsU8OptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for EnhancedTransmissionSelection.Bands + * C Function: config_parse_ets_u8(QDISC_KIND_ETS) + * Used by Options: EnhancedTransmissionSelection.Bands + * + * Validates that the value is an unsigned integer in the range 1-16. + */ +class ConfigParseEtsU8OptionValue : SimpleGrammarOptionValues( + "config_parse_ets_u8", + SequenceCombinator( + IntegerTerminal(1, 17), // Range 1-16 inclusive (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecCpuSchedPrioOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecCpuSchedPrioOptionValue.kt new file mode 100644 index 00000000..185f6284 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecCpuSchedPrioOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.CPUSchedulingPriority + * C Function: config_parse_exec_cpu_sched_prio(0) + * Used by Options: Swap.CPUSchedulingPriority + */ +class ConfigParseExecCpuSchedPrioOptionValue : SimpleGrammarOptionValues( + "config_parse_exec_cpu_sched_prio", + SequenceCombinator( + IntegerTerminal(0, 100), // 0-99 inclusive (maxExclusive=100) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecInputTextOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecInputTextOptionValue.kt new file mode 100644 index 00000000..bb2cdb45 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecInputTextOptionValue.kt @@ -0,0 +1,22 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.StandardInputText + * C Function: config_parse_exec_input_text(0) + * Used by Options: Swap.StandardInputText + * + * This validator accepts arbitrary textual data. The C implementation processes + * C-style escapes and %-specifiers, but does not reject input based on syntax. + * Any non-empty string is valid at the syntax level. + */ +class ConfigParseExecInputTextOptionValue : SimpleGrammarOptionValues( + "config_parse_exec_input_text", + SequenceCombinator( + RegexTerminal(".+", ".+"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecIoPriorityOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecIoPriorityOptionValue.kt new file mode 100644 index 00000000..f1a0eca4 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecIoPriorityOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.IOSchedulingPriority + * C Function: config_parse_exec_io_priority(0) + * Used by Options: Swap.IOSchedulingPriority + */ +class ConfigParseExecIoPriorityOptionValue : SimpleGrammarOptionValues( + "config_parse_exec_io_priority", + SequenceCombinator( + IntegerTerminal(0, 8), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecMountPropagationFlagOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecMountPropagationFlagOptionValue.kt new file mode 100644 index 00000000..3840787e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecMountPropagationFlagOptionValue.kt @@ -0,0 +1,22 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.MountFlags + * C Function: config_parse_exec_mount_propagation_flag(0) + * Used by Options: Swap.MountFlags + * + * Validates mount propagation settings: shared, slave, or private. + * These control whether file system mount points in the file system namespaces + * will receive or propagate mounts and unmounts from other file system namespaces. + */ +class ConfigParseExecMountPropagationFlagOptionValue : SimpleGrammarOptionValues( + "config_parse_exec_mount_propagation_flag", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("shared", "slave", "private"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecNiceOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecNiceOptionValue.kt new file mode 100644 index 00000000..b7070ce8 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecNiceOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.Nice + * C Function: config_parse_exec_nice(0) + * Used by Options: Swap.Nice + * + * Validates nice level (scheduling priority) values between -20 (highest priority) + * and 19 (lowest priority). + */ +class ConfigParseExecNiceOptionValue : SimpleGrammarOptionValues( + "config_parse_exec_nice", + SequenceCombinator( + IntegerTerminal(-20, 20), // -20 to 19 inclusive (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecOomScoreAdjustOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecOomScoreAdjustOptionValue.kt new file mode 100644 index 00000000..711b43f6 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecOomScoreAdjustOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.OOMScoreAdjust + * C Function: config_parse_exec_oom_score_adjust(0) + * Used by Options: Swap.OOMScoreAdjust + * + * Validates OOM score adjustment values, which must be integers between -1000 and 1000 (inclusive). + * -1000 disables OOM killing for processes of this unit, while 1000 makes killing very likely. + */ +class ConfigParseExecOomScoreAdjustOptionValue : SimpleGrammarOptionValues( + "config_parse_exec_oom_score_adjust", + SequenceCombinator( + IntegerTerminal(-1000, 1001), // -1000 to 1000 inclusive (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecPreserveModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecPreserveModeOptionValue.kt new file mode 100644 index 00000000..d3c6f46e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExecPreserveModeOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.RuntimeDirectoryPreserve + * C Function: config_parse_exec_preserve_mode(0) + * Used by Options: Swap.RuntimeDirectoryPreserve + * + * Validates the preserve mode for runtime directories: + * - no: directories always removed when service stops + * - restart: directories preserved on automatic and manual restart + * - yes: directories not removed when service stops + */ +class ConfigParseExecPreserveModeOptionValue : SimpleGrammarOptionValues( + "config_parse_exec_preserve_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("no", "restart", "yes"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExitStatusOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExitStatusOptionValue.kt new file mode 100644 index 00000000..8f7c232a --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseExitStatusOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Unit.FailureActionExitStatus, Unit.SuccessActionExitStatus + * C Function: config_parse_exit_status(0) + * Used by Options: Unit.FailureActionExitStatus, Unit.SuccessActionExitStatus + * + * Validates exit status values in the range 0-255 (uint8_t range). + * The C implementation uses safe_atou8() which parses an unsigned 8-bit integer. + */ +class ConfigParseExitStatusOptionValue : SimpleGrammarOptionValues( + "config_parse_exit_status", + SequenceCombinator( + IntegerTerminal(0, 256), // Range 0-255 (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFdbDestinationOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFdbDestinationOptionValue.kt new file mode 100644 index 00000000..e02d7653 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFdbDestinationOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for BridgeFDB.Destination + * C Function: config_parse_fdb_destination(0) + * Used by Options: BridgeFDB.Destination + */ +class ConfigParseFdbDestinationOptionValue : SimpleGrammarOptionValues( + "config_parse_fdb_destination", + SequenceCombinator( + AlternativeCombinator( + IPV4_ADDR, + IPV6_ADDR + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFdbNtfFlagsOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFdbNtfFlagsOptionValue.kt new file mode 100644 index 00000000..7888c6b3 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFdbNtfFlagsOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for BridgeFDB.AssociatedWith + * C Function: config_parse_fdb_ntf_flags(0) + * Used by Options: BridgeFDB.AssociatedWith + */ +class ConfigParseFdbNtfFlagsOptionValue : SimpleGrammarOptionValues( + "config_parse_fdb_ntf_flags", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("use", "self", "master", "router"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFdbVxlanVniOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFdbVxlanVniOptionValue.kt new file mode 100644 index 00000000..bba3e7c9 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFdbVxlanVniOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for BridgeFDB.VNI + * C Function: config_parse_fdb_vxlan_vni(0) + * Used by Options: BridgeFDB.VNI + * + * Validates VXLAN Network Identifier (VNI) values. + * Valid range: 1-16777215 (VXLAN_VID_MAX) + */ +class ConfigParseFdbVxlanVniOptionValue : SimpleGrammarOptionValues( + "config_parse_fdb_vxlan_vni", + SequenceCombinator( + IntegerTerminal(1, 16777216), // Range 1-16777215 (maxExclusive is 16777216) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFlowLabelOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFlowLabelOptionValue.kt new file mode 100644 index 00000000..f89120b1 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFlowLabelOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for VXLAN.FlowLabel + * C Function: config_parse_flow_label(0) + * Used by Options: VXLAN.FlowLabel + */ +class ConfigParseFlowLabelOptionValue : SimpleGrammarOptionValues( + "config_parse_flow_label", + SequenceCombinator( + IntegerTerminal(0, 1048576), // Range 0-1048575 (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFouEncapTypeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFouEncapTypeOptionValue.kt new file mode 100644 index 00000000..e1e3cdf7 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFouEncapTypeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for FooOverUDP.Encapsulation + * C Function: config_parse_fou_encap_type(0) + * Used by Options: FooOverUDP.Encapsulation + */ +class ConfigParseFouEncapTypeOptionValue : SimpleGrammarOptionValues( + "config_parse_fou_encap_type", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("FooOverUDP", "GenericUDPEncapsulation"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFouTunnelAddressOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFouTunnelAddressOptionValue.kt new file mode 100644 index 00000000..e45eca47 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFouTunnelAddressOptionValue.kt @@ -0,0 +1,24 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for FooOverUDP.Peer + * C Function: config_parse_fou_tunnel_address(0) + * Used by Options: FooOverUDP.Peer + * + * Validates peer IP address for FooOverUDP tunnel. + * Accepts both IPv4 and IPv6 addresses. + */ +class ConfigParseFouTunnelAddressOptionValue : SimpleGrammarOptionValues( + "config_parse_fou_tunnel_address", + SequenceCombinator( + AlternativeCombinator( + IPV4_ADDR, + IPV6_ADDR + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFqPiePacketLimitOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFqPiePacketLimitOptionValue.kt new file mode 100644 index 00000000..ecddd83f --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseFqPiePacketLimitOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for FlowQueuePIE.PacketLimit + * C Function: config_parse_fq_pie_packet_limit(QDISC_KIND_FQ_PIE) + * Used by Options: FlowQueuePIE.PacketLimit + */ +class ConfigParseFqPiePacketLimitOptionValue : SimpleGrammarOptionValues( + "config_parse_fq_pie_packet_limit", + SequenceCombinator( + IntegerTerminal(1, 4294967295), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveDfOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveDfOptionValue.kt new file mode 100644 index 00000000..b794f3dc --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveDfOptionValue.kt @@ -0,0 +1,27 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for GENEVE.IPDoNotFragment + * C Function: config_parse_geneve_df(0) + * Used by Options: GENEVE.IPDoNotFragment + * + * Validates the IPDoNotFragment setting for GENEVE tunnels. + * Accepts: "no", "yes", "inherit" and standard boolean values. + * The DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN macro allows boolean aliases + * in addition to the enumerated values. + */ +class ConfigParseGeneveDfOptionValue : SimpleGrammarOptionValues( + "config_parse_geneve_df", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "no", "yes", "inherit", + "1", "y", "true", "t", "on", + "0", "n", "false", "f", "off" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveFlowLabelOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveFlowLabelOptionValue.kt new file mode 100644 index 00000000..3caf517e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveFlowLabelOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for GENEVE.FlowLabel + * C Function: config_parse_geneve_flow_label(0) + * Used by Options: GENEVE.FlowLabel + * + * Validates a Geneve flow label, which must be an integer in the range [0-1048575]. + * The maximum value 1048575 is 0xFFFFF (20 bits), which is GENEVE_FLOW_LABEL_MAX_MASK. + */ +class ConfigParseGeneveFlowLabelOptionValue : SimpleGrammarOptionValues( + "config_parse_geneve_flow_label", + SequenceCombinator( + IntegerTerminal(0, 1048576), // [0, 1048575] - 20-bit flow label + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveTtlOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveTtlOptionValue.kt new file mode 100644 index 00000000..921a560d --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveTtlOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for GENEVE.TTL + * C Function: config_parse_geneve_ttl(0) + * Used by Options: GENEVE.TTL + * + * Accepts either "inherit" or an integer value from 0 to 255 (uint8). + */ +class ConfigParseGeneveTtlOptionValue : SimpleGrammarOptionValues( + "config_parse_geneve_ttl", + SequenceCombinator( + AlternativeCombinator( + LiteralChoiceTerminal("inherit"), + IntegerTerminal(0, 256) + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveVniOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveVniOptionValue.kt new file mode 100644 index 00000000..d7e7008b --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseGeneveVniOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for GENEVE.Id + * C Function: config_parse_geneve_vni(0) + * Used by Options: GENEVE.Id + * + * Validates GENEVE Virtual Network Identifier (VNI) values. + * Valid range: 0 to 16777215 (24-bit value) + */ +class ConfigParseGeneveVniOptionValue : SimpleGrammarOptionValues( + "config_parse_geneve_vni", + SequenceCombinator( + IntegerTerminal(0, 16777216), // 0 to 16777215 inclusive (max exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseHhfPacketLimitOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseHhfPacketLimitOptionValue.kt new file mode 100644 index 00000000..704eb320 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseHhfPacketLimitOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for HeavyHitterFilter.PacketLimit + * C Function: config_parse_hhf_packet_limit(QDISC_KIND_HHF) + * Used by Options: HeavyHitterFilter.PacketLimit + * + * Validates that the value is an unsigned integer in the range 0 to 4294967294. + * This specifies the hard limit on the queue size in number of packets. + */ +class ConfigParseHhfPacketLimitOptionValue : SimpleGrammarOptionValues( + "config_parse_hhf_packet_limit", + SequenceCombinator( + IntegerTerminal(0, 4294967295), // Range is 0 to 4294967294 inclusive (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIaidOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIaidOptionValue.kt new file mode 100644 index 00000000..206d610b --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIaidOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPv4.IAID + * C Function: config_parse_iaid(AF_INET) + * Used by Options: DHCPv4.IAID + * + * Validates a 32-bit unsigned integer (0 to 4,294,967,295). + */ +class ConfigParseIaidOptionValue : SimpleGrammarOptionValues( + "config_parse_iaid", + SequenceCombinator( + IntegerTerminal(0, 4294967296), // 32-bit unsigned: 0 to 2^32-1 (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseInAddrNonNullOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseInAddrNonNullOptionValue.kt new file mode 100644 index 00000000..97e7bfea --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseInAddrNonNullOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPServer.RelayTarget + * C Function: config_parse_in_addr_non_null(AF_INET) + * Used by Options: DHCPServer.RelayTarget + * + * Validates IPv4 addresses in inet_pton(3) format. The C implementation also rejects + * the ANY address (0.0.0.0) semantically, but syntactically it's a valid IPv4 address. + */ +class ConfigParseInAddrNonNullOptionValue : SimpleGrammarOptionValues( + "config_parse_in_addr_non_null", + SequenceCombinator( + IPV4_ADDR, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpMasqueradeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpMasqueradeOptionValue.kt new file mode 100644 index 00000000..5697ff18 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpMasqueradeOptionValue.kt @@ -0,0 +1,28 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.IPMasquerade + * C Function: config_parse_ip_masquerade(0) + * Used by Options: Network.IPMasquerade + * + * Accepts: ipv4, ipv6, both, no, and deprecated boolean values + * (yes/true/on/1 map to ipv4, no/false/off/0 map to no) + */ +class ConfigParseIpMasqueradeOptionValue : SimpleGrammarOptionValues( + "config_parse_ip_masquerade", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + // Primary values + "ipv4", "ipv6", "both", "no", + // Deprecated boolean true values (map to ipv4) + "1", "yes", "y", "true", "t", "on", + // Deprecated boolean false values (map to no) + "0", "n", "false", "f", "off" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpReversePathFilterOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpReversePathFilterOptionValue.kt new file mode 100644 index 00000000..ac342aeb --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpReversePathFilterOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.IPv4ReversePathFilter + * C Function: config_parse_ip_reverse_path_filter(0) + * Used by Options: Network.IPv4ReversePathFilter + */ +class ConfigParseIpReversePathFilterOptionValue : SimpleGrammarOptionValues( + "config_parse_ip_reverse_path_filter", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("no", "strict", "loose"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpoibModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpoibModeOptionValue.kt new file mode 100644 index 00000000..faf53cf8 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpoibModeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPoIB.Mode + * C Function: config_parse_ipoib_mode(0) + * Used by Options: IPoIB.Mode + */ +class ConfigParseIpoibModeOptionValue : SimpleGrammarOptionValues( + "config_parse_ipoib_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("datagram", "connected"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpv4ForceIgmpVersionOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpv4ForceIgmpVersionOptionValue.kt new file mode 100644 index 00000000..cb0a7b63 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpv4ForceIgmpVersionOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.MulticastIGMPVersion + * C Function: config_parse_ipv4_force_igmp_version(0) + * Used by Options: Network.MulticastIGMPVersion + * + * Validates IPv4 Multicast IGMP Version values. + * Valid values: no, v1, v2, v3 + */ +class ConfigParseIpv4ForceIgmpVersionOptionValue : SimpleGrammarOptionValues( + "config_parse_ipv4_force_igmp_version", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("no", "v1", "v2", "v3"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpv6LinkLocalAddressGenModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpv6LinkLocalAddressGenModeOptionValue.kt new file mode 100644 index 00000000..3b7fc9cb --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpv6LinkLocalAddressGenModeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.IPv6LinkLocalAddressGenerationMode + * C Function: config_parse_ipv6_link_local_address_gen_mode(0) + * Used by Options: Network.IPv6LinkLocalAddressGenerationMode + */ +class ConfigParseIpv6LinkLocalAddressGenModeOptionValue : SimpleGrammarOptionValues( + "config_parse_ipv6_link_local_address_gen_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("eui64", "none", "stable-privacy", "random"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpv6PrivacyExtensionsOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpv6PrivacyExtensionsOptionValue.kt new file mode 100644 index 00000000..18b42d96 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpv6PrivacyExtensionsOptionValue.kt @@ -0,0 +1,27 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.IPv6PrivacyExtensions + * C Function: config_parse_ipv6_privacy_extensions(0) + * Used by Options: Network.IPv6PrivacyExtensions + * + * Accepts boolean values (yes/no/true/false/on/off/1/0/y/n/t/f) or the special values + * "prefer-public" and "kernel". + */ +class ConfigParseIpv6PrivacyExtensionsOptionValue : SimpleGrammarOptionValues( + "config_parse_ipv6_privacy_extensions", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + // Boolean values + "1", "yes", "y", "true", "t", "on", + "0", "no", "n", "false", "f", "off", + // Special values + "prefer-public", "kernel" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpvlanFlagsOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpvlanFlagsOptionValue.kt new file mode 100644 index 00000000..bc6cdd2d --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpvlanFlagsOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPVLAN.Flags + * C Function: config_parse_ipvlan_flags(0) + * Used by Options: IPVLAN.Flags + * + * Validates IPVLAN flags. Valid values are: + * - bridge + * - private + * - vepa + */ +class ConfigParseIpvlanFlagsOptionValue : SimpleGrammarOptionValues( + "config_parse_ipvlan_flags", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("bridge", "private", "vepa"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpvlanModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpvlanModeOptionValue.kt new file mode 100644 index 00000000..96a2e88b --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseIpvlanModeOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPVLAN.Mode + * C Function: config_parse_ipvlan_mode(0) + * Used by Options: IPVLAN.Mode + * + * Validates IPVLAN mode values: L2, L3, or L3S + */ +class ConfigParseIpvlanModeOptionValue : SimpleGrammarOptionValues( + "config_parse_ipvlan_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("L2", "L3", "L3S"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseJobModeIsolateOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseJobModeIsolateOptionValue.kt new file mode 100644 index 00000000..a7b77568 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseJobModeIsolateOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Unit.OnFailureIsolate + * C Function: config_parse_job_mode_isolate(0) + * Used by Options: Unit.OnFailureIsolate + * + * This is a deprecated option that has been renamed to OnFailureJobMode. + * It accepts boolean values that determine the job mode: + * - true/yes/on/1/y/t → JOB_ISOLATE + * - false/no/off/0/n/f → JOB_REPLACE + */ +class ConfigParseJobModeIsolateOptionValue : SimpleGrammarOptionValues( + "config_parse_job_mode_isolate", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseKeepConfigurationOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseKeepConfigurationOptionValue.kt new file mode 100644 index 00000000..8a17ee71 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseKeepConfigurationOptionValue.kt @@ -0,0 +1,31 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.KeepConfiguration + * C Function: config_parse_keep_configuration(0) + * Used by Options: Network.KeepConfiguration + * + * Accepts: + * - Boolean values: 1, yes, y, true, t, on, 0, no, n, false, f, off + * - Specific values: static, dynamic-on-stop, dynamic + * - Backward compatibility: dhcp, dhcp-on-stop + */ +class ConfigParseKeepConfigurationOptionValue : SimpleGrammarOptionValues( + "config_parse_keep_configuration", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + // Boolean values (map to yes/no) + "1", "yes", "y", "true", "t", "on", + "0", "no", "n", "false", "f", "off", + // Explicit enum values + "static", "dynamic-on-stop", "dynamic", + // Backward compatibility + "dhcp", "dhcp-on-stop" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpEncapTypeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpEncapTypeOptionValue.kt new file mode 100644 index 00000000..8ce88830 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpEncapTypeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for L2TP.EncapsulationType + * C Function: config_parse_l2tp_encap_type(0) + * Used by Options: L2TP.EncapsulationType + */ +class ConfigParseL2tpEncapTypeOptionValue : SimpleGrammarOptionValues( + "config_parse_l2tp_encap_type", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("udp", "ip"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpSessionIdOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpSessionIdOptionValue.kt new file mode 100644 index 00000000..c41e6fc7 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpSessionIdOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for L2TPSession.PeerSessionId + * C Function: config_parse_l2tp_session_id(0) + * Used by Options: L2TPSession.PeerSessionId + * + * Validates a session identifier in the range 1 to 4294967295 (UINT32_MAX). + */ +class ConfigParseL2tpSessionIdOptionValue : SimpleGrammarOptionValues( + "config_parse_l2tp_session_id", + SequenceCombinator( + IntegerTerminal(1, 4294967296), // Range is 1 to UINT32_MAX (4294967295), max is exclusive + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpSessionL2specOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpSessionL2specOptionValue.kt new file mode 100644 index 00000000..260fba36 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpSessionL2specOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for L2TPSession.Layer2SpecificHeader + * C Function: config_parse_l2tp_session_l2spec(0) + * Used by Options: L2TPSession.Layer2SpecificHeader + */ +class ConfigParseL2tpSessionL2specOptionValue : SimpleGrammarOptionValues( + "config_parse_l2tp_session_l2spec", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("none", "default"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpTunnelIdOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpTunnelIdOptionValue.kt new file mode 100644 index 00000000..58db6db5 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseL2tpTunnelIdOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for L2TP.TunnelId + * C Function: config_parse_l2tp_tunnel_id(0) + * Used by Options: L2TP.TunnelId + * + * Validates tunnel identifier in the range 1 to 4294967295 (UINT32_MAX). + */ +class ConfigParseL2tpTunnelIdOptionValue : SimpleGrammarOptionValues( + "config_parse_l2tp_tunnel_id", + SequenceCombinator( + IntegerTerminal(1, 4294967296), // 1 to UINT32_MAX (4294967295) inclusive + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseLinkLocalAddressFamilyOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseLinkLocalAddressFamilyOptionValue.kt new file mode 100644 index 00000000..5d560510 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseLinkLocalAddressFamilyOptionValue.kt @@ -0,0 +1,22 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.LinkLocalAddressing + * C Function: config_parse_link_local_address_family(0) + * Used by Options: Network.LinkLocalAddressing + */ +class ConfigParseLinkLocalAddressFamilyOptionValue : SimpleGrammarOptionValues( + "config_parse_link_local_address_family", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "yes", "no", "true", "false", "1", "0", "on", "off", "y", "n", "t", "f", + "ipv4", "ipv6", + "fallback", "fallback-ipv4" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseLldpModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseLldpModeOptionValue.kt new file mode 100644 index 00000000..bdc4ba5c --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseLldpModeOptionValue.kt @@ -0,0 +1,24 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.LLDP + * C Function: config_parse_lldp_mode(0) + * Used by Options: Network.LLDP + * + * Accepts boolean values (yes/no/true/false/on/off/1/0) or the special value "routers-only". + */ +class ConfigParseLldpModeOptionValue : SimpleGrammarOptionValues( + "config_parse_lldp_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "yes", "y", "true", "t", "on", "1", + "no", "n", "false", "f", "off", "0", + "routers-only" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecKeyOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecKeyOptionValue.kt new file mode 100644 index 00000000..f9a99160 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecKeyOptionValue.kt @@ -0,0 +1,22 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for MACsecTransmitAssociation.Key + * C Function: config_parse_macsec_key(0) + * Used by Options: MACsecTransmitAssociation.Key + * + * Validates a 128-bit MACsec encryption key encoded as a hexadecimal string. + * The key must be exactly 32 hexadecimal characters (16 bytes = 128 bits). + */ +class ConfigParseMacsecKeyOptionValue : SimpleGrammarOptionValues( + "config_parse_macsec_key", + SequenceCombinator( + RegexTerminal("[0-9a-fA-F]{32}", "[0-9a-fA-F]{32}"), + ZeroOrMore(WhitespaceTerminal()), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecPacketNumberOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecPacketNumberOptionValue.kt new file mode 100644 index 00000000..b676d83b --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecPacketNumberOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for MACsecTransmitAssociation.PacketNumber + * C Function: config_parse_macsec_packet_number(0) + * Used by Options: MACsecTransmitAssociation.PacketNumber + */ +class ConfigParseMacsecPacketNumberOptionValue : SimpleGrammarOptionValues( + "config_parse_macsec_packet_number", + SequenceCombinator( + IntegerTerminal(1, 4294967296), // 1 to 4,294,967,295 (2^32-1) inclusive + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecPortOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecPortOptionValue.kt new file mode 100644 index 00000000..fa77bf21 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecPortOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for MACsecReceiveChannel.Port + * C Function: config_parse_macsec_port(0) + * Used by Options: MACsecReceiveChannel.Port + * + * Validates port numbers for MACsec receive channels. The port is used to make + * secure channel identifier (SCI). Valid range is 1-65535. + */ +class ConfigParseMacsecPortOptionValue : SimpleGrammarOptionValues( + "config_parse_macsec_port", + SequenceCombinator( + IntegerTerminal(1, 65536), // 1 to 65535 inclusive (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecSaActivateOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecSaActivateOptionValue.kt new file mode 100644 index 00000000..b1d0bc8e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecSaActivateOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for MACsecTransmitAssociation.Activate + * C Function: config_parse_macsec_sa_activate(0) + * Used by Options: MACsecTransmitAssociation.Activate + */ +class ConfigParseMacsecSaActivateOptionValue : SimpleGrammarOptionValues( + "config_parse_macsec_sa_activate", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecUseForEncodingOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecUseForEncodingOptionValue.kt new file mode 100644 index 00000000..cd92476e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacsecUseForEncodingOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for MACsecTransmitAssociation.UseForEncoding + * C Function: config_parse_macsec_use_for_encoding(0) + * Used by Options: MACsecTransmitAssociation.UseForEncoding + */ +class ConfigParseMacsecUseForEncodingOptionValue : SimpleGrammarOptionValues( + "config_parse_macsec_use_for_encoding", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacvlanBroadcastQueueSizeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacvlanBroadcastQueueSizeOptionValue.kt new file mode 100644 index 00000000..b549231e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacvlanBroadcastQueueSizeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for MACVLAN.BroadcastMulticastQueueLength + * C Function: config_parse_macvlan_broadcast_queue_size(0) + * Used by Options: MACVLAN.BroadcastMulticastQueueLength + */ +class ConfigParseMacvlanBroadcastQueueSizeOptionValue : SimpleGrammarOptionValues( + "config_parse_macvlan_broadcast_queue_size", + SequenceCombinator( + IntegerTerminal(0, 4294967295), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacvlanBroadcastQueueThresholdOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacvlanBroadcastQueueThresholdOptionValue.kt new file mode 100644 index 00000000..bddbd7de --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacvlanBroadcastQueueThresholdOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for MACVLAN.BroadcastQueueThreshold + * C Function: config_parse_macvlan_broadcast_queue_threshold(0) + * Used by Options: MACVLAN.BroadcastQueueThreshold + */ +class ConfigParseMacvlanBroadcastQueueThresholdOptionValue : SimpleGrammarOptionValues( + "config_parse_macvlan_broadcast_queue_threshold", + SequenceCombinator( + AlternativeCombinator( + FlexibleLiteralChoiceTerminal("no"), + IntegerTerminal(0, 2147483648) // 0 to 2147483647 inclusive (max exclusive) + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacvlanModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacvlanModeOptionValue.kt new file mode 100644 index 00000000..6ec8a73f --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMacvlanModeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for MACVLAN.Mode + * C Function: config_parse_macvlan_mode(0) + * Used by Options: MACVLAN.Mode + */ +class ConfigParseMacvlanModeOptionValue : SimpleGrammarOptionValues( + "config_parse_macvlan_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("private", "vepa", "bridge", "passthru", "source"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMdiOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMdiOptionValue.kt new file mode 100644 index 00000000..876c5385 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMdiOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Link.MDI + * C Function: config_parse_mdi(0) + * Used by Options: Link.MDI + */ +class ConfigParseMdiOptionValue : SimpleGrammarOptionValues( + "config_parse_mdi", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("mdi", "straight", "mdi-x", "mdix", "crossover", "auto"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMemoryPressureWatchOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMemoryPressureWatchOptionValue.kt new file mode 100644 index 00000000..24ccb4e3 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMemoryPressureWatchOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.MemoryPressureWatch + * C Function: config_parse_memory_pressure_watch(0) + * Used by Options: Swap.MemoryPressureWatch + * + * Accepts boolean values (yes/no/1/0/true/false/on/off/y/n/t/f) or special values (auto/skip). + */ +class ConfigParseMemoryPressureWatchOptionValue : SimpleGrammarOptionValues( + "config_parse_memory_pressure_watch", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("yes", "no", "1", "0", "true", "false", "on", "off", "y", "n", "t", "f", "auto", "skip"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMtuOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMtuOptionValue.kt new file mode 100644 index 00000000..721c7408 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMtuOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.IPv6MTUBytes + * C Function: config_parse_mtu(AF_INET6) + * Used by Options: Network.IPv6MTUBytes + * + * Validates IPv6 MTU values. For IPv6, the minimum MTU is 1280 bytes (IPV6_MIN_MTU) + * and the maximum is UINT32_MAX (4294967295). + */ +class ConfigParseMtuOptionValue : SimpleGrammarOptionValues( + "config_parse_mtu", + SequenceCombinator( + IntegerTerminal(1280, 4294967296), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMulticastRouterOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMulticastRouterOptionValue.kt new file mode 100644 index 00000000..3a9a8901 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseMulticastRouterOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Bridge.MulticastRouter + * C Function: config_parse_multicast_router(0) + * Used by Options: Bridge.MulticastRouter + */ +class ConfigParseMulticastRouterOptionValue : SimpleGrammarOptionValues( + "config_parse_multicast_router", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("no", "query", "permanent", "temporary"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseNdiscStartDhcp6ClientOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseNdiscStartDhcp6ClientOptionValue.kt new file mode 100644 index 00000000..5533679d --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseNdiscStartDhcp6ClientOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPv6AcceptRA.DHCPv6Client + * C Function: config_parse_ndisc_start_dhcp6_client(0) + * Used by Options: IPv6AcceptRA.DHCPv6Client + * + * Accepts boolean values (yes/no/true/false/on/off/1/0/y/n/t/f) or the special value "always". + */ +class ConfigParseNdiscStartDhcp6ClientOptionValue : SimpleGrammarOptionValues( + "config_parse_ndisc_start_dhcp6_client", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("always", "yes", "no", "true", "false", "on", "off", "1", "0", "y", "n", "t", "f"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseNetemPacketLimitOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseNetemPacketLimitOptionValue.kt new file mode 100644 index 00000000..57f3189e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseNetemPacketLimitOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for NetworkEmulator.PacketLimit + * C Function: config_parse_netem_packet_limit(QDISC_KIND_NETEM) + * Used by Options: NetworkEmulator.PacketLimit + * + * Validates an unsigned integer in the range 0…4294967294 representing + * the maximum number of packets the qdisc may hold queued at a time. + */ +class ConfigParseNetemPacketLimitOptionValue : SimpleGrammarOptionValues( + "config_parse_netem_packet_limit", + SequenceCombinator( + IntegerTerminal(0, 4294967295), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseNexthopSectionOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseNexthopSectionOptionValue.kt new file mode 100644 index 00000000..b19e3db3 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseNexthopSectionOptionValue.kt @@ -0,0 +1,22 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for NextHop.OnLink + * C Function: config_parse_nexthop_section(NEXTHOP_ONLINK) + * Used by Options: NextHop.OnLink + * + * Takes a boolean value. If set to true, the kernel does not have to check if the gateway is + * reachable directly by the current machine (i.e., attached to the local network), so that we + * can insert the nexthop in the kernel table without it being complained about. Defaults to no. + */ +class ConfigParseNexthopSectionOptionValue : SimpleGrammarOptionValues( + "config_parse_nexthop_section", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePfifoSizeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePfifoSizeOptionValue.kt new file mode 100644 index 00000000..81b65a93 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePfifoSizeOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for PFIFOHeadDrop.PacketLimit + * C Function: config_parse_pfifo_size(QDISC_KIND_PFIFO_HEAD_DROP) + * Used by Options: PFIFOHeadDrop.PacketLimit + * + * Parses a packet limit value as an unsigned 32-bit integer. + * Valid range: 0 to 4294967295 (2^32 - 1) + */ +class ConfigParsePfifoSizeOptionValue : SimpleGrammarOptionValues( + "config_parse_pfifo_size", + SequenceCombinator( + IntegerTerminal(0, 4294967296), // 0 to 2^32-1 (max exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePid2OptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePid2OptionValue.kt new file mode 100644 index 00000000..9d4eb843 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePid2OptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Exec.ProcessTwo + * C Function: config_parse_pid2(0) + * Used by Options: Exec.ProcessTwo + */ +class ConfigParsePid2OptionValue : SimpleGrammarOptionValues( + "config_parse_pid2", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) \ No newline at end of file diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePref64PrefixOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePref64PrefixOptionValue.kt new file mode 100644 index 00000000..ddfdcded --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePref64PrefixOptionValue.kt @@ -0,0 +1,24 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPv6PREF64Prefix.Prefix + * C Function: config_parse_pref64_prefix(0) + * Used by Options: IPv6PREF64Prefix.Prefix + * + * Validates IPv6 PREF64 (NAT64) prefix configuration. + * Format: IPv6_address/prefix_length + * Valid prefix lengths: 96, 64, 56, 48, 40, 32 + */ +class ConfigParsePref64PrefixOptionValue : SimpleGrammarOptionValues( + "config_parse_pref64_prefix", + SequenceCombinator( + IPV6_ADDR, + CIDR_SEPARATOR, + FlexibleLiteralChoiceTerminal("96", "64", "56", "48", "40", "32"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrefixBooleanOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrefixBooleanOptionValue.kt new file mode 100644 index 00000000..7d931b94 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrefixBooleanOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPv6Prefix.OnLink + * C Function: config_parse_prefix_boolean(ND_OPT_PI_FLAG_ONLINK) + * Used by Options: IPv6Prefix.OnLink + * + * Validates boolean values for IPv6 prefix configuration options. + * The C implementation uses parse_boolean() which accepts standard boolean values. + */ +class ConfigParsePrefixBooleanOptionValue : SimpleGrammarOptionValues( + "config_parse_prefix_boolean", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrefixMetricOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrefixMetricOptionValue.kt new file mode 100644 index 00000000..91c850bc --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrefixMetricOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPv6Prefix.RouteMetric + * C Function: config_parse_prefix_metric(0) + * Used by Options: IPv6Prefix.RouteMetric + */ +class ConfigParsePrefixMetricOptionValue : SimpleGrammarOptionValues( + "config_parse_prefix_metric", + SequenceCombinator( + IntegerTerminal(0, 4294967296), // 0 to 4294967295 (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrefixOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrefixOptionValue.kt new file mode 100644 index 00000000..75d08fa2 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrefixOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPv6Prefix.Prefix + * C Function: config_parse_prefix(0) + * Used by Options: IPv6Prefix.Prefix + * + * Validates IPv6 prefix in the format: IPv6_address/prefix_length + * Example: 2001:db8::/32 + */ +class ConfigParsePrefixOptionValue : SimpleGrammarOptionValues( + "config_parse_prefix", + SequenceCombinator( + IPV6_ADDR, + CIDR_SEPARATOR, + IntegerTerminal(0, 129), // IPv6 prefix length: 0-128 (129 is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrivatePidsOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrivatePidsOptionValue.kt new file mode 100644 index 00000000..09c85428 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrivatePidsOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.PrivatePIDs + * C Function: config_parse_private_pids(0) + * Used by Options: Swap.PrivatePIDs + * + * Takes a boolean argument. When enabled, sets up a new PID namespace + * for the executed processes. + */ +class ConfigParsePrivatePidsOptionValue : SimpleGrammarOptionValues( + "config_parse_private_pids", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrivateTmpOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrivateTmpOptionValue.kt new file mode 100644 index 00000000..f172964e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParsePrivateTmpOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.PrivateTmp + * C Function: config_parse_private_tmp(0) + * Used by Options: Swap.PrivateTmp + * + * Takes a boolean argument, or disconnected. Valid values are: + * - Boolean true: 1, yes, y, true, t, on + * - Boolean false: 0, no, n, false, f, off + * - disconnected + */ +class ConfigParsePrivateTmpOptionValue : SimpleGrammarOptionValues( + "config_parse_private_tmp", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("1", "yes", "y", "true", "t", "on", "0", "no", "n", "false", "f", "off", "disconnected"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseProtectControlGroupsOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseProtectControlGroupsOptionValue.kt new file mode 100644 index 00000000..375bede2 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseProtectControlGroupsOptionValue.kt @@ -0,0 +1,24 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.ProtectControlGroups + * C Function: config_parse_protect_control_groups(0) + * Used by Options: Swap.ProtectControlGroups + * + * Accepts boolean values (true/false/yes/no/1/0/on/off/y/n/t/f) or special values "private" and "strict". + */ +class ConfigParseProtectControlGroupsOptionValue : SimpleGrammarOptionValues( + "config_parse_protect_control_groups", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "1", "yes", "y", "true", "t", "on", + "0", "no", "n", "false", "f", "off", + "private", "strict" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseProtectHomeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseProtectHomeOptionValue.kt new file mode 100644 index 00000000..9ef92965 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseProtectHomeOptionValue.kt @@ -0,0 +1,28 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.ProtectHome + * C Function: config_parse_protect_home(0) + * Used by Options: Swap.ProtectHome + * + * Validates values for ProtectHome= option which accepts: + * - Boolean values (yes, no, true, false, on, off, 1, 0, y, n, t, f) + * - Special values: read-only, tmpfs + */ +class ConfigParseProtectHomeOptionValue : SimpleGrammarOptionValues( + "config_parse_protect_home", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + // Boolean values + "1", "yes", "y", "true", "t", "on", + "0", "no", "n", "false", "f", "off", + // Special values + "read-only", "tmpfs" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseProtectSystemOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseProtectSystemOptionValue.kt new file mode 100644 index 00000000..c93a2d10 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseProtectSystemOptionValue.kt @@ -0,0 +1,24 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.ProtectSystem + * C Function: config_parse_protect_system(0) + * Used by Options: Swap.ProtectSystem + * + * Accepts boolean values or the special values "full" or "strict". + */ +class ConfigParseProtectSystemOptionValue : SimpleGrammarOptionValues( + "config_parse_protect_system", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "1", "yes", "y", "true", "t", "on", + "0", "no", "n", "false", "f", "off", + "full", "strict" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseQfqWeightOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseQfqWeightOptionValue.kt new file mode 100644 index 00000000..e24ec3d8 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseQfqWeightOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for QuickFairQueueingClass.Weight + * C Function: config_parse_qfq_weight(TCLASS_KIND_QFQ) + * Used by Options: QuickFairQueueingClass.Weight + */ +class ConfigParseQfqWeightOptionValue : SimpleGrammarOptionValues( + "config_parse_qfq_weight", + SequenceCombinator( + IntegerTerminal(1, 1024), // Range 1-1023 (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRingBufferOrChannelOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRingBufferOrChannelOptionValue.kt new file mode 100644 index 00000000..8a3ab1b6 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRingBufferOrChannelOptionValue.kt @@ -0,0 +1,25 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Link.RxMiniBufferSize + * C Function: config_parse_ring_buffer_or_channel(0) + * Used by Options: Link.RxMiniBufferSize + * + * Accepts either: + * - The literal string "max" + * - An unsigned integer in the range 1 to 4294967295 + */ +class ConfigParseRingBufferOrChannelOptionValue : SimpleGrammarOptionValues( + "config_parse_ring_buffer_or_channel", + SequenceCombinator( + AlternativeCombinator( + LiteralChoiceTerminal("max"), + IntegerTerminal(1, 4294967296) // max exclusive, so 4294967295 is the highest valid value + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRoutePrefixPreferenceOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRoutePrefixPreferenceOptionValue.kt new file mode 100644 index 00000000..f4cbf4bb --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRoutePrefixPreferenceOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPv6RoutePrefix.Preference + * C Function: config_parse_route_prefix_preference(0) + * Used by Options: IPv6RoutePrefix.Preference + */ +class ConfigParseRoutePrefixPreferenceOptionValue : SimpleGrammarOptionValues( + "config_parse_route_prefix_preference", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("high", "medium", "low"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRouteSectionOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRouteSectionOptionValue.kt new file mode 100644 index 00000000..720ecfd9 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRouteSectionOptionValue.kt @@ -0,0 +1,36 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Route.Type + * C Function: config_parse_route_section(ROUTE_TYPE) + * Used by Options: Route.Type + * + * Validates route type values which specify how the route should behave. + * Valid values include unicast (regular route), local, broadcast, anycast, + * multicast, blackhole (discard silently), unreachable (discard with ICMP), + * prohibit (discard with admin prohibited ICMP), throw (fail lookup), + * nat, and xresolve. + */ +class ConfigParseRouteSectionOptionValue : SimpleGrammarOptionValues( + "config_parse_route_section", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "unicast", + "unreachable", + "blackhole", + "prohibit", + "broadcast", + "multicast", + "xresolve", + "anycast", + "throw", + "local", + "nat" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRouterPreferenceOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRouterPreferenceOptionValue.kt new file mode 100644 index 00000000..74be25e3 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRouterPreferenceOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for IPv6SendRA.RouterPreference + * C Function: config_parse_router_preference(0) + * Used by Options: IPv6SendRA.RouterPreference + */ +class ConfigParseRouterPreferenceOptionValue : SimpleGrammarOptionValues( + "config_parse_router_preference", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("high", "medium", "normal", "default", "low"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRxTxQueuesOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRxTxQueuesOptionValue.kt new file mode 100644 index 00000000..a866c5b8 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseRxTxQueuesOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Link.ReceiveQueues + * C Function: config_parse_rx_tx_queues(0) + * Used by Options: Link.ReceiveQueues + * + * Accepts an integer in the range 1-4096. + */ +class ConfigParseRxTxQueuesOptionValue : SimpleGrammarOptionValues( + "config_parse_rx_tx_queues", + SequenceCombinator( + IntegerTerminal(1, 4097), // min inclusive, max exclusive + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseServiceRestartModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseServiceRestartModeOptionValue.kt new file mode 100644 index 00000000..c7c49ede --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseServiceRestartModeOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Service.RestartMode + * C Function: config_parse_service_restart_mode(0) + * Used by Options: Service.RestartMode + * + * Validates restart mode values: + * - normal: Service restarts through failed/inactive state (default) + * - direct: Service transitions directly to activating state, skipping failed/inactive + * - debug: Service logs debug messages during automated restarts + */ +class ConfigParseServiceRestartModeOptionValue : SimpleGrammarOptionValues( + "config_parse_service_restart_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("normal", "direct", "debug"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSocketDeferTriggerOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSocketDeferTriggerOptionValue.kt new file mode 100644 index 00000000..07153f4c --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSocketDeferTriggerOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Socket.DeferTrigger + * C Function: config_parse_socket_defer_trigger(0) + * Used by Options: Socket.DeferTrigger + */ +class ConfigParseSocketDeferTriggerOptionValue : SimpleGrammarOptionValues( + "config_parse_socket_defer_trigger", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("patient", "yes", "y", "true", "t", "on", "1", "no", "n", "false", "f", "off", "0"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSrIovNumVfsOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSrIovNumVfsOptionValue.kt new file mode 100644 index 00000000..2a8d9331 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSrIovNumVfsOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Link.SR-IOVVirtualFunctions + * C Function: config_parse_sr_iov_num_vfs(0) + * Used by Options: Link.SR-IOVVirtualFunctions + */ +class ConfigParseSrIovNumVfsOptionValue : SimpleGrammarOptionValues( + "config_parse_sr_iov_num_vfs", + SequenceCombinator( + IntegerTerminal(0, 2147483648), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSrIovVlanProtoOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSrIovVlanProtoOptionValue.kt new file mode 100644 index 00000000..c141221e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSrIovVlanProtoOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for SR-IOV.VLANProtocol + * C Function: config_parse_sr_iov_vlan_proto(0) + * Used by Options: SR-IOV.VLANProtocol + */ +class ConfigParseSrIovVlanProtoOptionValue : SimpleGrammarOptionValues( + "config_parse_sr_iov_vlan_proto", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("802.1Q", "802.1ad"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSwapPriorityOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSwapPriorityOptionValue.kt new file mode 100644 index 00000000..ee50df6e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseSwapPriorityOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Swap.Priority + * C Function: config_parse_swap_priority(0) + * Used by Options: Swap.Priority + * + * Validates swap priority values which must be integers in the range [-1, 32767]. + * Values less than -1 or greater than 32767 are rejected. + */ +class ConfigParseSwapPriorityOptionValue : SimpleGrammarOptionValues( + "config_parse_swap_priority", + SequenceCombinator( + IntegerTerminal(-1, 32768), // Max is exclusive, so 32768 allows up to 32767 + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTcpWindowOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTcpWindowOptionValue.kt new file mode 100644 index 00000000..f86be810 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTcpWindowOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for DHCPv4.InitialAdvertisedReceiveWindow + * C Function: config_parse_tcp_window(0) + * Used by Options: DHCPv4.InitialAdvertisedReceiveWindow + * + * Validates TCP window size values. The value must be an integer in the range [1, 1023]. + * Values of 0 or >= 1024 are rejected by the C implementation. + */ +class ConfigParseTcpWindowOptionValue : SimpleGrammarOptionValues( + "config_parse_tcp_window", + SequenceCombinator( + IntegerTerminal(1, 1024), // min=1 inclusive, max=1024 exclusive, so range is [1, 1023] + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTimezoneModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTimezoneModeOptionValue.kt new file mode 100644 index 00000000..f2db33b4 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTimezoneModeOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Exec.Timezone + * C Function: config_parse_timezone_mode(0) + * Used by Options: Exec.Timezone + */ +class ConfigParseTimezoneModeOptionValue : SimpleGrammarOptionValues( + "config_parse_timezone_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("off", "copy", "bind"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTunnelModeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTunnelModeOptionValue.kt new file mode 100644 index 00000000..5beccd46 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTunnelModeOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Tunnel.Mode + * C Function: config_parse_tunnel_mode(0) + * Used by Options: Tunnel.Mode + * + * Validates tunnel mode values based on the tunnel_mode_table in systemd. + * Valid values: any, ipip, ip6ip, ipip6, ip6ip6 + */ +class ConfigParseTunnelModeOptionValue : SimpleGrammarOptionValues( + "config_parse_tunnel_mode", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("any", "ipip", "ip6ip", "ipip6", "ip6ip6"), + EOF() + ) +) \ No newline at end of file diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTxqueuelenOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTxqueuelenOptionValue.kt new file mode 100644 index 00000000..8f1b943f --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseTxqueuelenOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Link.TransmitQueueLength + * C Function: config_parse_txqueuelen(0) + * Used by Options: Link.TransmitQueueLength + * + * Validates unsigned integers in the range 0 to 4294967294 (UINT32_MAX - 1). + * The value UINT32_MAX (4294967295) is explicitly rejected by the C implementation. + */ +class ConfigParseTxqueuelenOptionValue : SimpleGrammarOptionValues( + "config_parse_txqueuelen", + SequenceCombinator( + IntegerTerminal(0, 4294967295), // 0 to 4294967294 (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUnitConditionStringOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUnitConditionStringOptionValue.kt new file mode 100644 index 00000000..e27e3d3e --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUnitConditionStringOptionValue.kt @@ -0,0 +1,32 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Unit.AssertFirstBoot, Unit.ConditionFirstBoot + * C Function: config_parse_unit_condition_string(CONDITION_FIRST_BOOT) + * Used by Options: Unit.AssertFirstBoot, Unit.ConditionFirstBoot + * + * Accepts boolean values with optional trigger (|) and negate (!) prefixes. + * Format: [|] [!] + */ +class ConfigParseUnitConditionStringOptionValue : SimpleGrammarOptionValues( + "config_parse_unit_condition_string", + SequenceCombinator( + // Optional trigger prefix: | + ZeroOrOne(SequenceCombinator( + LiteralChoiceTerminal("|"), + ZeroOrMore(WhitespaceTerminal()) + )), + // Optional negate prefix: ! + ZeroOrOne(SequenceCombinator( + LiteralChoiceTerminal("!"), + ZeroOrMore(WhitespaceTerminal()) + )), + // Boolean value + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUseDomainsOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUseDomainsOptionValue.kt new file mode 100644 index 00000000..4c8bb05a --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUseDomainsOptionValue.kt @@ -0,0 +1,20 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Network.UseDomains + * C Function: config_parse_use_domains(0) + * Used by Options: Network.UseDomains + * + * Accepts boolean values (yes/no/true/false/1/0/on/off/y/n/t/f) or the special value "route". + */ +class ConfigParseUseDomainsOptionValue : SimpleGrammarOptionValues( + "config_parse_use_domains", + SequenceCombinator( + FlexibleLiteralChoiceTerminal("yes", "no", "true", "false", "1", "0", "on", "off", "y", "n", "t", "f", "route"), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUsernsChownOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUsernsChownOptionValue.kt new file mode 100644 index 00000000..c2574209 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUsernsChownOptionValue.kt @@ -0,0 +1,23 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Files.PrivateUsersChown + * C Function: config_parse_userns_chown(0) + * Used by Options: Files.PrivateUsersChown + * + * This is a deprecated option that has been renamed to PrivateUsersOwnership. + * It accepts boolean values and maps them to user namespace ownership modes: + * - true/yes/on/1/y/t → USER_NAMESPACE_OWNERSHIP_CHOWN + * - false/no/off/0/n/f → USER_NAMESPACE_OWNERSHIP_OFF + */ +class ConfigParseUsernsChownOptionValue : SimpleGrammarOptionValues( + "config_parse_userns_chown", + SequenceCombinator( + BOOLEAN, + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUsernsOwnershipOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUsernsOwnershipOptionValue.kt new file mode 100644 index 00000000..4294edfa --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseUsernsOwnershipOptionValue.kt @@ -0,0 +1,41 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for Files.PrivateUsersOwnership + * C Function: config_parse_userns_ownership(0) + * Used by Options: Files.PrivateUsersOwnership + * + * Validates user namespace ownership modes: + * - off: Disable ownership adjustment + * - chown: Change ownership of files + * - map: Map ownership via user namespaces + * + * Also accepts boolean values (yes/no/true/false/on/off/1/0) due to + * DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN macro. + */ +class ConfigParseUsernsOwnershipOptionValue : SimpleGrammarOptionValues( + "config_parse_userns_ownership", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "off", + "chown", + "map", + "yes", + "no", + "true", + "false", + "on", + "1", + "0", + "y", + "n", + "t", + "f" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseVlanidOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseVlanidOptionValue.kt new file mode 100644 index 00000000..10136bf3 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseVlanidOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for VLAN.Id + * C Function: config_parse_vlanid(0) + * Used by Options: VLAN.Id + */ +class ConfigParseVlanidOptionValue : SimpleGrammarOptionValues( + "config_parse_vlanid", + SequenceCombinator( + IntegerTerminal(0, 4095), // Range 0-4094 (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseVxlanTtlOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseVxlanTtlOptionValue.kt new file mode 100644 index 00000000..0c73f7b4 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseVxlanTtlOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for VXLAN.TTL + * C Function: config_parse_vxlan_ttl(0) + * Used by Options: VXLAN.TTL + */ +class ConfigParseVxlanTtlOptionValue : SimpleGrammarOptionValues( + "config_parse_vxlan_ttl", + SequenceCombinator( + AlternativeCombinator( + LiteralChoiceTerminal("inherit"), + IntegerTerminal(0, 256) + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardKeepaliveOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardKeepaliveOptionValue.kt new file mode 100644 index 00000000..f67bdb84 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardKeepaliveOptionValue.kt @@ -0,0 +1,24 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for WireGuardPeer.PersistentKeepalive + * C Function: config_parse_wireguard_keepalive(0) + * Used by Options: WireGuardPeer.PersistentKeepalive + * + * Accepts either "off" to disable keepalive, or an integer value between 0 and 65535 + * representing the keepalive interval in seconds. + */ +class ConfigParseWireguardKeepaliveOptionValue : SimpleGrammarOptionValues( + "config_parse_wireguard_keepalive", + SequenceCombinator( + AlternativeCombinator( + FlexibleLiteralChoiceTerminal("off"), + IntegerTerminal(0, 65536) // max is exclusive, so 65536 to include 65535 + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardListenPortOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardListenPortOptionValue.kt new file mode 100644 index 00000000..41ada396 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardListenPortOptionValue.kt @@ -0,0 +1,21 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for WireGuard.ListenPort + * C Function: config_parse_wireguard_listen_port(0) + * Used by Options: WireGuard.ListenPort + */ +class ConfigParseWireguardListenPortOptionValue : SimpleGrammarOptionValues( + "config_parse_wireguard_listen_port", + SequenceCombinator( + AlternativeCombinator( + FlexibleLiteralChoiceTerminal("auto"), + IntegerTerminal(1, 65536) // Port range 1-65535 (max is exclusive) + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardPeerRoutePriorityOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardPeerRoutePriorityOptionValue.kt new file mode 100644 index 00000000..c5395289 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardPeerRoutePriorityOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for WireGuardPeer.RouteMetric + * C Function: config_parse_wireguard_peer_route_priority(0) + * Used by Options: WireGuardPeer.RouteMetric + */ +class ConfigParseWireguardPeerRoutePriorityOptionValue : SimpleGrammarOptionValues( + "config_parse_wireguard_peer_route_priority", + SequenceCombinator( + IntegerTerminal(0, 4294967296), // 0 to 4294967295 (max is exclusive) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardRoutePriorityOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardRoutePriorityOptionValue.kt new file mode 100644 index 00000000..1f607a3b --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWireguardRoutePriorityOptionValue.kt @@ -0,0 +1,18 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for WireGuard.RouteMetric + * C Function: config_parse_wireguard_route_priority(0) + * Used by Options: WireGuard.RouteMetric + */ +class ConfigParseWireguardRoutePriorityOptionValue : SimpleGrammarOptionValues( + "config_parse_wireguard_route_priority", + SequenceCombinator( + IntegerTerminal(0, 4294967296), // 0 to 4294967295 (maxExclusive is 4294967296) + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWlanIftypeOptionValue.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWlanIftypeOptionValue.kt new file mode 100644 index 00000000..6aafe0d2 --- /dev/null +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/ai/ConfigParseWlanIftypeOptionValue.kt @@ -0,0 +1,31 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.Validator +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar.* +import net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.SimpleGrammarOptionValues + +/** + * Validator for WLAN.Type + * C Function: config_parse_wlan_iftype(0) + * Used by Options: WLAN.Type + */ +class ConfigParseWlanIftypeOptionValue : SimpleGrammarOptionValues( + "config_parse_wlan_iftype", + SequenceCombinator( + FlexibleLiteralChoiceTerminal( + "ad-hoc", + "station", + "ap", + "ap-vlan", + "wds", + "monitor", + "mesh-point", + "p2p-client", + "p2p-go", + "p2p-device", + "ocb", + "nan" + ), + EOF() + ) +) diff --git a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/Combinators.kt b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/Combinators.kt index 23c47383..5bf6141c 100644 --- a/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/Combinators.kt +++ b/src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/grammar/Combinators.kt @@ -1,5 +1,6 @@ package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.grammar +val BOOLEAN = FlexibleLiteralChoiceTerminal("1", "yes", "y", "true", "t", "on", "0", "no", "n", "false", "f", "off") val BYTES = RegexTerminal("[0-9]+[a-zA-Z]*\\s*", "[0-9]+[KMGT]?\\s*") val DEVICE = RegexTerminal("\\S+\\s*", "/[^\\u0000. ]+\\s*") val IOPS = RegexTerminal("[0-9]+[a-zA-Z]*\\s*", "[0-9]+[KMGT]?\\s*") diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParse6rdPrefixOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParse6rdPrefixOptionValueTest.kt new file mode 100644 index 00000000..2c02094a --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParse6rdPrefixOptionValueTest.kt @@ -0,0 +1,110 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParse6rdPrefixOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + IPv6RapidDeploymentPrefix=2001:db8::/32 + IPv6RapidDeploymentPrefix=2001:0db8:85a3::8a2e:0370:7334/64 + IPv6RapidDeploymentPrefix=fe80::1/128 + IPv6RapidDeploymentPrefix=::1/1 + IPv6RapidDeploymentPrefix=2001:db8::/48 + IPv6RapidDeploymentPrefix=fd00::/8 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + IPv6RapidDeploymentPrefix=2001:db8::/0 + IPv6RapidDeploymentPrefix=2001:db8:: + IPv6RapidDeploymentPrefix=192.168.1.0/24 + IPv6RapidDeploymentPrefix=not-an-address/32 + IPv6RapidDeploymentPrefix=2001:db8::/129 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testMissingPrefixLength() { + // Fixture Setup - IPv6 address without prefix length should be invalid + // language="unit file (systemd)" + val file = """ + [Tunnel] + IPv6RapidDeploymentPrefix=2001:db8::1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testZeroPrefixLength() { + // Fixture Setup - Prefix length of 0 is explicitly invalid per C code + // language="unit file (systemd)" + val file = """ + [Tunnel] + IPv6RapidDeploymentPrefix=fe80::/0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testVariousValidPrefixLengths() { + // Fixture Setup - Test boundary values for prefix length + // language="unit file (systemd)" + val file = """ + [Tunnel] + IPv6RapidDeploymentPrefix=2001:db8::/1 + IPv6RapidDeploymentPrefix=2001:db8::/64 + IPv6RapidDeploymentPrefix=2001:db8::/127 + IPv6RapidDeploymentPrefix=2001:db8::/128 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAdActorSysPrioOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAdActorSysPrioOptionValueTest.kt new file mode 100644 index 00000000..9a9a2ef9 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAdActorSysPrioOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseAdActorSysPrioOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + AdActorSystemPriority=1 + AdActorSystemPriority=100 + AdActorSystemPriority=32768 + AdActorSystemPriority=65535 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + AdActorSystemPriority=0 + AdActorSystemPriority=65536 + AdActorSystemPriority=100000 + AdActorSystemPriority=-1 + AdActorSystemPriority=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAdUserPortKeyOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAdUserPortKeyOptionValueTest.kt new file mode 100644 index 00000000..17e5d8e7 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAdUserPortKeyOptionValueTest.kt @@ -0,0 +1,69 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseAdUserPortKeyOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + AdUserPortKey=0 + AdUserPortKey=512 + AdUserPortKey=1023 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + AdUserPortKey=1024 + AdUserPortKey=-1 + AdUserPortKey=2000 + AdUserPortKey=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + AdUserPortKey=0 + AdUserPortKey=1023 + AdUserPortKey=1024 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAddressSectionOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAddressSectionOptionValueTest.kt new file mode 100644 index 00000000..55b409b4 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAddressSectionOptionValueTest.kt @@ -0,0 +1,70 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseAddressSectionOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Address] + RouteMetric=0 + RouteMetric=100 + RouteMetric=1000 + RouteMetric=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Address] + RouteMetric=4294967296 + RouteMetric=-1 + RouteMetric=invalid + RouteMetric=1.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Address] + RouteMetric=0 + RouteMetric=4294967295 + RouteMetric=4294967296 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAlternativeNamesPolicyOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAlternativeNamesPolicyOptionValueTest.kt new file mode 100644 index 00000000..d7a8fd15 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseAlternativeNamesPolicyOptionValueTest.kt @@ -0,0 +1,125 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseAlternativeNamesPolicyOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidSinglePolicies() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + AlternativeNamesPolicy=database + AlternativeNamesPolicy=onboard + AlternativeNamesPolicy=slot + AlternativeNamesPolicy=path + AlternativeNamesPolicy=mac + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidMultiplePolicies() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + AlternativeNamesPolicy=database onboard + AlternativeNamesPolicy=slot path mac + AlternativeNamesPolicy=database slot + AlternativeNamesPolicy=onboard path + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidAllPolicies() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + AlternativeNamesPolicy=database onboard slot path mac + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidSinglePolicy() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + AlternativeNamesPolicy=invalid + AlternativeNamesPolicy=unknown + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } + + @Test + fun testInvalidMixedPolicies() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + AlternativeNamesPolicy=database invalid + AlternativeNamesPolicy=onboard bad slot + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } + + @Test + fun testInvalidNoWhitespace() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + AlternativeNamesPolicy=database,onboard + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseArpIpTargetAddressOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseArpIpTargetAddressOptionValueTest.kt new file mode 100644 index 00000000..7ed6516d --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseArpIpTargetAddressOptionValueTest.kt @@ -0,0 +1,152 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseArpIpTargetAddressOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidSingleAddress() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPIPTargets=192.168.1.1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidMultipleAddresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPIPTargets=192.168.1.1 10.0.0.1 172.16.0.1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidEdgeCaseAddresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPIPTargets=0.0.0.0 255.255.255.255 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidIPv6Address() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPIPTargets=2001:db8::1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testInvalidOctetTooLarge() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPIPTargets=192.168.1.256 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testInvalidHostname() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPIPTargets=gateway.example.com + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testInvalidIncompleteAddress() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPIPTargets=192.168.1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testMixedValidAndInvalid() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPIPTargets=192.168.1.1 invalid 10.0.0.1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBareUdpIftypeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBareUdpIftypeOptionValueTest.kt new file mode 100644 index 00000000..d37d261f --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBareUdpIftypeOptionValueTest.kt @@ -0,0 +1,70 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBareUdpIftypeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BareUDP] + EtherType=ipv4 + EtherType=ipv6 + EtherType=mpls-uc + EtherType=mpls-mc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BareUDP] + EtherType=ipv8 + EtherType=tcp + EtherType=mpls + EtherType=ethernet + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testPartialMatches() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BareUDP] + EtherType=ipv + EtherType=mpls- + EtherType=uc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBatadvGatewayModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBatadvGatewayModeOptionValueTest.kt new file mode 100644 index 00000000..58577134 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBatadvGatewayModeOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBatadvGatewayModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BatmanAdvanced] + GatewayMode=off + GatewayMode=client + GatewayMode=server + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BatmanAdvanced] + GatewayMode=on + GatewayMode=disabled + GatewayMode=enable + GatewayMode=gateway + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBatadvRoutingAlgorithmOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBatadvRoutingAlgorithmOptionValueTest.kt new file mode 100644 index 00000000..39c37572 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBatadvRoutingAlgorithmOptionValueTest.kt @@ -0,0 +1,48 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBatadvRoutingAlgorithmOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BatmanAdvanced] + RoutingAlgorithm=batman-v + RoutingAlgorithm=batman-iv + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BatmanAdvanced] + RoutingAlgorithm=batman-iii + RoutingAlgorithm=batman + RoutingAlgorithm=v + RoutingAlgorithm=batman-V + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondAdSelectOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondAdSelectOptionValueTest.kt new file mode 100644 index 00000000..d574c24e --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondAdSelectOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBondAdSelectOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + AdSelect=stable + AdSelect=bandwidth + AdSelect=count + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + AdSelect=invalid + AdSelect=random + AdSelect=stable-bandwidth + AdSelect=1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondArpAllTargetsOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondArpAllTargetsOptionValueTest.kt new file mode 100644 index 00000000..912d66c8 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondArpAllTargetsOptionValueTest.kt @@ -0,0 +1,48 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBondArpAllTargetsOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPAllTargets=any + ARPAllTargets=all + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPAllTargets=invalid + ARPAllTargets=some + ARPAllTargets=none + ARPAllTargets=one + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondArpValidateOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondArpValidateOptionValueTest.kt new file mode 100644 index 00000000..2aa28c70 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondArpValidateOptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBondArpValidateOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPValidate=none + ARPValidate=active + ARPValidate=backup + ARPValidate=all + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + ARPValidate=invalid + ARPValidate=yes + ARPValidate=no + ARPValidate=all-backup + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondFailOverMacOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondFailOverMacOptionValueTest.kt new file mode 100644 index 00000000..53deadf4 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondFailOverMacOptionValueTest.kt @@ -0,0 +1,70 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBondFailOverMacOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + FailOverMACPolicy=none + FailOverMACPolicy=active + FailOverMACPolicy=follow + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + FailOverMACPolicy=invalid + FailOverMACPolicy=yes + FailOverMACPolicy=no + FailOverMACPolicy=true + FailOverMACPolicy=enabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testPartialMatches() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + FailOverMACPolicy=non + FailOverMACPolicy=act + FailOverMACPolicy=following + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondLacpRateOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondLacpRateOptionValueTest.kt new file mode 100644 index 00000000..ddfb084e --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondLacpRateOptionValueTest.kt @@ -0,0 +1,47 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBondLacpRateOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + LACPTransmitRate=slow + LACPTransmitRate=fast + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + LACPTransmitRate=medium + LACPTransmitRate=rapid + LACPTransmitRate=normal + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondModeOptionValueTest.kt new file mode 100644 index 00000000..6dc9538c --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondModeOptionValueTest.kt @@ -0,0 +1,53 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBondModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + Mode=balance-rr + Mode=active-backup + Mode=balance-xor + Mode=broadcast + Mode=802.3ad + Mode=balance-tlb + Mode=balance-alb + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + Mode=invalid-mode + Mode=round-robin + Mode=balance + Mode=802.3ax + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondPrimaryReselectOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondPrimaryReselectOptionValueTest.kt new file mode 100644 index 00000000..cddb2fd8 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondPrimaryReselectOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBondPrimaryReselectOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + PrimaryReselectPolicy=always + PrimaryReselectPolicy=better + PrimaryReselectPolicy=failure + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + PrimaryReselectPolicy=never + PrimaryReselectPolicy=worst + PrimaryReselectPolicy=random + PrimaryReselectPolicy=immediate + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondXmitHashPolicyOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondXmitHashPolicyOptionValueTest.kt new file mode 100644 index 00000000..7176c2cb --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBondXmitHashPolicyOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBondXmitHashPolicyOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + TransmitHashPolicy=layer2 + TransmitHashPolicy=layer3+4 + TransmitHashPolicy=layer2+3 + TransmitHashPolicy=encap2+3 + TransmitHashPolicy=encap3+4 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bond] + TransmitHashPolicy=layer1 + TransmitHashPolicy=layer4 + TransmitHashPolicy=invalid + TransmitHashPolicy=encap4+3 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBootOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBootOptionValueTest.kt new file mode 100644 index 00000000..298a9702 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBootOptionValueTest.kt @@ -0,0 +1,75 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBootOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Exec] + Boot=yes + Boot=no + Boot=1 + Boot=0 + Boot=true + Boot=false + Boot=on + Boot=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBooleanValuesAllVariants() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Exec] + Boot=y + Boot=n + Boot=t + Boot=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Exec] + Boot=invalid + Boot=2 + Boot=maybe + Boot=yep + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBridgeFdbMaxLearnedOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBridgeFdbMaxLearnedOptionValueTest.kt new file mode 100644 index 00000000..344e126b --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBridgeFdbMaxLearnedOptionValueTest.kt @@ -0,0 +1,90 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBridgeFdbMaxLearnedOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + FDBMaxLearned=0 + FDBMaxLearned=1 + FDBMaxLearned=100 + FDBMaxLearned=1000 + FDBMaxLearned=65535 + FDBMaxLearned=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + FDBMaxLearned=-1 + FDBMaxLearned=4294967296 + FDBMaxLearned=abc + FDBMaxLearned=1.5 + FDBMaxLearned=0x100 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + FDBMaxLearned=0 + FDBMaxLearned=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidBoundary() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + FDBMaxLearned=4294967296 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBridgeIgmpVersionOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBridgeIgmpVersionOptionValueTest.kt new file mode 100644 index 00000000..e43c9bbd --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBridgeIgmpVersionOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBridgeIgmpVersionOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + MulticastIGMPVersion=2 + MulticastIGMPVersion=3 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + MulticastIGMPVersion=1 + MulticastIGMPVersion=4 + MulticastIGMPVersion=0 + MulticastIGMPVersion=10 + MulticastIGMPVersion=two + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBridgePortPriorityOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBridgePortPriorityOptionValueTest.kt new file mode 100644 index 00000000..c9e85c4d --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseBridgePortPriorityOptionValueTest.kt @@ -0,0 +1,68 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseBridgePortPriorityOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + Priority=0 + Priority=32 + Priority=63 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + Priority=64 + Priority=-1 + Priority=100 + Priority=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + Priority=0 + Priority=63 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeCompensationModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeCompensationModeOptionValueTest.kt new file mode 100644 index 00000000..a051041f --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeCompensationModeOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCakeCompensationModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + CompensationMode=none + CompensationMode=atm + CompensationMode=ptm + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + CompensationMode=invalid + CompensationMode=ethernet + CompensationMode=yes + CompensationMode=no + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeFwmarkOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeFwmarkOptionValueTest.kt new file mode 100644 index 00000000..18aec647 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeFwmarkOptionValueTest.kt @@ -0,0 +1,72 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCakeFwmarkOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + FirewallMark=1 + FirewallMark=42 + FirewallMark=1000 + FirewallMark=65535 + FirewallMark=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + FirewallMark=0 + FirewallMark=-1 + FirewallMark=4294967296 + FirewallMark=abc + FirewallMark=1.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + FirewallMark=1 + FirewallMark=4294967295 + FirewallMark=4294967296 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeMpuOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeMpuOptionValueTest.kt new file mode 100644 index 00000000..6c01967e --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeMpuOptionValueTest.kt @@ -0,0 +1,71 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCakeMpuOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + MPUBytes=1 + MPUBytes=128 + MPUBytes=256 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + MPUBytes=0 + MPUBytes=257 + MPUBytes=300 + MPUBytes=-1 + MPUBytes=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + MPUBytes=1 + MPUBytes=256 + MPUBytes=0 + MPUBytes=257 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeOverheadOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeOverheadOptionValueTest.kt new file mode 100644 index 00000000..ada3d792 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeOverheadOptionValueTest.kt @@ -0,0 +1,73 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCakeOverheadOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + OverheadBytes=-64 + OverheadBytes=-1 + OverheadBytes=0 + OverheadBytes=1 + OverheadBytes=38 + OverheadBytes=256 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + OverheadBytes=-65 + OverheadBytes=257 + OverheadBytes=1000 + OverheadBytes=-100 + OverheadBytes=abc + OverheadBytes=12.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + OverheadBytes=-64 + OverheadBytes=256 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeTristateOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeTristateOptionValueTest.kt new file mode 100644 index 00000000..b12e95ce --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCakeTristateOptionValueTest.kt @@ -0,0 +1,59 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCakeTristateOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + UseRawPacketSize=yes + UseRawPacketSize=no + UseRawPacketSize=true + UseRawPacketSize=false + UseRawPacketSize=on + UseRawPacketSize=off + UseRawPacketSize=1 + UseRawPacketSize=0 + UseRawPacketSize=y + UseRawPacketSize=n + UseRawPacketSize=t + UseRawPacketSize=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAKE] + UseRawPacketSize=auto + UseRawPacketSize=maybe + UseRawPacketSize=invalid + UseRawPacketSize=2 + UseRawPacketSize=enabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCanControlModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCanControlModeOptionValueTest.kt new file mode 100644 index 00000000..74cf1a58 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCanControlModeOptionValueTest.kt @@ -0,0 +1,53 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCanControlModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAN] + PresumeACK=yes + PresumeACK=no + PresumeACK=true + PresumeACK=false + PresumeACK=1 + PresumeACK=0 + PresumeACK=on + PresumeACK=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAN] + PresumeACK=invalid + PresumeACK=2 + PresumeACK=maybe + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCanTerminationOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCanTerminationOptionValueTest.kt new file mode 100644 index 00000000..31caa344 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCanTerminationOptionValueTest.kt @@ -0,0 +1,97 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCanTerminationOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAN] + Termination=yes + Termination=no + Termination=true + Termination=false + Termination=on + Termination=off + Termination=1 + Termination=0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidIntegerValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAN] + Termination=0 + Termination=120 + Termination=1 + Termination=65535 + Termination=1000 + Termination=50 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAN] + Termination=65536 + Termination=-1 + Termination=invalid + Termination=yesno + Termination=120ohm + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testEdgeCases() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [CAN] + Termination=0 + Termination=65535 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCodelBoolOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCodelBoolOptionValueTest.kt new file mode 100644 index 00000000..0ec0bb57 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCodelBoolOptionValueTest.kt @@ -0,0 +1,59 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCodelBoolOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [ControlledDelay] + ECN=yes + ECN=no + ECN=true + ECN=false + ECN=1 + ECN=0 + ECN=on + ECN=off + ECN=y + ECN=n + ECN=t + ECN=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [ControlledDelay] + ECN=invalid + ECN=yesno + ECN=2 + ECN=enabled + ECN=disabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCodelU32OptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCodelU32OptionValueTest.kt new file mode 100644 index 00000000..9e37bee2 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCodelU32OptionValueTest.kt @@ -0,0 +1,89 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCodelU32OptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [ControlledDelay] + PacketLimit=0 + PacketLimit=1 + PacketLimit=100 + PacketLimit=1000 + PacketLimit=4294967294 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [ControlledDelay] + PacketLimit=-1 + PacketLimit=4294967295 + PacketLimit=5000000000 + PacketLimit=abc + PacketLimit=12.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [ControlledDelay] + PacketLimit=0 + PacketLimit=4294967294 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testJustOverMaximum() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [ControlledDelay] + PacketLimit=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCollectModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCollectModeOptionValueTest.kt new file mode 100644 index 00000000..b7a16cf5 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseCollectModeOptionValueTest.kt @@ -0,0 +1,47 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseCollectModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + CollectMode=inactive + CollectMode=inactive-or-failed + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + CollectMode=failed + CollectMode=active + CollectMode=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDfOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDfOptionValueTest.kt new file mode 100644 index 00000000..31339fe8 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDfOptionValueTest.kt @@ -0,0 +1,73 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDfOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [VXLAN] + IPDoNotFragment=yes + IPDoNotFragment=no + IPDoNotFragment=1 + IPDoNotFragment=0 + IPDoNotFragment=true + IPDoNotFragment=false + IPDoNotFragment=on + IPDoNotFragment=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidInheritValue() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [VXLAN] + IPDoNotFragment=inherit + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [VXLAN] + IPDoNotFragment=invalid + IPDoNotFragment=maybe + IPDoNotFragment=2 + IPDoNotFragment=INHERIT + IPDoNotFragment=inherit_ + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcp6ClientStartModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcp6ClientStartModeOptionValueTest.kt new file mode 100644 index 00000000..590c978b --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcp6ClientStartModeOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcp6ClientStartModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv6] + WithoutRA=no + WithoutRA=solicit + WithoutRA=information-request + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv6] + WithoutRA=yes + WithoutRA=auto + WithoutRA=request + WithoutRA=information + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcp6PdPrefixHintOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcp6PdPrefixHintOptionValueTest.kt new file mode 100644 index 00000000..c781210f --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcp6PdPrefixHintOptionValueTest.kt @@ -0,0 +1,96 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcp6PdPrefixHintOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv6] + PrefixDelegationHint=2001:db8::/64 + PrefixDelegationHint=fe80::1/128 + PrefixDelegationHint=::1/1 + PrefixDelegationHint=2001:db8:1234:5678::/64 + PrefixDelegationHint=2001:db8::1/48 + PrefixDelegationHint=fd00::/8 + PrefixDelegationHint=::/1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv6] + PrefixDelegationHint=2001:db8::/0 + PrefixDelegationHint=fe80::1/129 + PrefixDelegationHint=192.168.1.0/24 + PrefixDelegationHint=2001:db8:: + PrefixDelegationHint=not-an-address/64 + PrefixDelegationHint=2001:db8::/ + PrefixDelegationHint=2001:db8::/256 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(7, highlights) + } + + @Test + fun testEdgeCasePrefixLengths() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv6] + PrefixDelegationHint=2001:db8::/1 + PrefixDelegationHint=2001:db8::/128 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testIPv6WithZeroCompression() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv6] + PrefixDelegationHint=2001:db8::1/64 + PrefixDelegationHint=::ffff:192.0.2.1/96 + PrefixDelegationHint=fe80::/10 + PrefixDelegationHint=ff00::/8 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpClientIdentifierOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpClientIdentifierOptionValueTest.kt new file mode 100644 index 00000000..8974161a --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpClientIdentifierOptionValueTest.kt @@ -0,0 +1,48 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcpClientIdentifierOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + ClientIdentifier=mac + ClientIdentifier=duid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + ClientIdentifier=invalid + ClientIdentifier=MAC + ClientIdentifier=duid-only + ClientIdentifier=123 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpIpServiceTypeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpIpServiceTypeOptionValueTest.kt new file mode 100644 index 00000000..b8b89d36 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpIpServiceTypeOptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcpIpServiceTypeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + IPServiceType=none + IPServiceType=CS6 + IPServiceType=CS4 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + IPServiceType=CS0 + IPServiceType=cs6 + IPServiceType=CS7 + IPServiceType=default + IPServiceType=0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpMaxAttemptsOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpMaxAttemptsOptionValueTest.kt new file mode 100644 index 00000000..5cfd62cc --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpMaxAttemptsOptionValueTest.kt @@ -0,0 +1,54 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcpMaxAttemptsOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + MaxAttempts=infinity + MaxAttempts=1 + MaxAttempts=5 + MaxAttempts=100 + MaxAttempts=999999999999 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + MaxAttempts=0 + MaxAttempts=-1 + MaxAttempts=-5 + MaxAttempts=infinite + MaxAttempts=INFINITY + MaxAttempts=foo + MaxAttempts=1.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(7, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpOptionValueTest.kt new file mode 100644 index 00000000..52b87fb9 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpOptionValueTest.kt @@ -0,0 +1,175 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcpOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValueYes() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + DHCP=yes + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidValueNo() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + DHCP=no + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidValueIpv4() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + DHCP=ipv4 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidValueIpv6() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + DHCP=ipv6 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValueBoth() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + DHCP=both + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testInvalidValueTrue() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + DHCP=true + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testInvalidValueV4() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + DHCP=v4 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testMultipleValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + DHCP=yes + DHCP=no + DHCP=ipv4 + DHCP=ipv6 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testMultipleInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + DHCP=enabled + DHCP=all + DHCP=v6 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpRouteMetricOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpRouteMetricOptionValueTest.kt new file mode 100644 index 00000000..68d502f8 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpRouteMetricOptionValueTest.kt @@ -0,0 +1,71 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcpRouteMetricOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + RouteMetric=0 + RouteMetric=1024 + RouteMetric=4294967295 + RouteMetric=1 + RouteMetric=65536 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + RouteMetric=-1 + RouteMetric=4294967296 + RouteMetric=abc + RouteMetric=1.5 + RouteMetric=1024x + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + RouteMetric=0 + RouteMetric=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpSendHostnameOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpSendHostnameOptionValueTest.kt new file mode 100644 index 00000000..a6c65189 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpSendHostnameOptionValueTest.kt @@ -0,0 +1,78 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcpSendHostnameOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + SendHostname=yes + SendHostname=no + SendHostname=true + SendHostname=false + SendHostname=on + SendHostname=off + SendHostname=1 + SendHostname=0 + SendHostname=y + SendHostname=n + SendHostname=t + SendHostname=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + SendHostname=invalid + SendHostname=maybe + SendHostname=2 + SendHostname=enabled + SendHostname=disabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBooleanValuesWithWhitespace() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + SendHostname=yes + SendHostname=true + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpServerPersistLeasesOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpServerPersistLeasesOptionValueTest.kt new file mode 100644 index 00000000..569f28a7 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpServerPersistLeasesOptionValueTest.kt @@ -0,0 +1,72 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcpServerPersistLeasesOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServer] + PersistLeases=yes + PersistLeases=no + PersistLeases=true + PersistLeases=false + PersistLeases=1 + PersistLeases=0 + PersistLeases=on + PersistLeases=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidRuntimeValue() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServer] + PersistLeases=runtime + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServer] + PersistLeases=invalid + PersistLeases=maybe + PersistLeases=persistent + PersistLeases=2 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpServerRelayAgentSuboptionOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpServerRelayAgentSuboptionOptionValueTest.kt new file mode 100644 index 00000000..217bcd5a --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpServerRelayAgentSuboptionOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcpServerRelayAgentSuboptionOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServer] + RelayAgentRemoteId=string:some-remote-id + RelayAgentRemoteId=string:12345 + RelayAgentRemoteId=string: + RelayAgentRemoteId=string:value with spaces + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServer] + RelayAgentRemoteId=invalid + RelayAgentRemoteId=str:value + RelayAgentRemoteId=STRING:value + RelayAgentRemoteId=123 + RelayAgentRemoteId=value:string + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpStaticLeaseAddressOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpStaticLeaseAddressOptionValueTest.kt new file mode 100644 index 00000000..adae8419 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDhcpStaticLeaseAddressOptionValueTest.kt @@ -0,0 +1,89 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDhcpStaticLeaseAddressOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidIPv4Addresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServerStaticLease] + Address=192.168.1.100 + Address=10.0.0.1 + Address=172.16.0.254 + Address=1.2.3.4 + Address=255.255.255.255 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServerStaticLease] + Address=256.1.2.3 + Address=192.168.1 + Address=192.168.1.1.1 + Address=not-an-ip + Address=2001:db8::1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testInvalidSpecialValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServerStaticLease] + Address=any + Address=localhost + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } + + @Test + fun testInvalidWithPrefixLength() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServerStaticLease] + Address=192.168.1.1/24 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDisableControllersOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDisableControllersOptionValueTest.kt new file mode 100644 index 00000000..37c58956 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDisableControllersOptionValueTest.kt @@ -0,0 +1,156 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDisableControllersOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidSingleController() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + DisableControllers=cpu + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidMultipleControllers() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + DisableControllers=cpu memory io + DisableControllers=pids cpuset + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBpfControllers() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + DisableControllers=bpf-firewall bpf-devices + DisableControllers=bpf-foreign bpf-socket-bind bpf-restrict-network-interfaces + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidAllControllers() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + DisableControllers=cpu cpuset io memory pids bpf-firewall bpf-devices bpf-foreign bpf-socket-bind bpf-restrict-network-interfaces + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidController() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + DisableControllers=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testMixedValidAndInvalidControllers() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + DisableControllers=cpu invalid memory + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testInvalidMultipleControllers() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + DisableControllers=foo bar + DisableControllers=baz + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } + + @Test + fun testInvalidTypo() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + DisableControllers=cpuu + DisableControllers=bpf_firewall + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDuplexOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDuplexOptionValueTest.kt new file mode 100644 index 00000000..04f7f977 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseDuplexOptionValueTest.kt @@ -0,0 +1,48 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseDuplexOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + Duplex=full + Duplex=half + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + Duplex=auto + Duplex=simplex + Duplex=FULL + Duplex=Half + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseEncapLimitOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseEncapLimitOptionValueTest.kt new file mode 100644 index 00000000..b154e691 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseEncapLimitOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseEncapLimitOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + EncapsulationLimit=none + EncapsulationLimit=0 + EncapsulationLimit=4 + EncapsulationLimit=128 + EncapsulationLimit=255 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + EncapsulationLimit=256 + EncapsulationLimit=-1 + EncapsulationLimit=invalid + EncapsulationLimit=None + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanDirectionOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanDirectionOptionValueTest.kt new file mode 100644 index 00000000..430a8501 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanDirectionOptionValueTest.kt @@ -0,0 +1,48 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseErspanDirectionOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + ERSPANDirection=ingress + ERSPANDirection=egress + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + ERSPANDirection=input + ERSPANDirection=output + ERSPANDirection=both + ERSPANDirection=INGRESS + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanHwidOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanHwidOptionValueTest.kt new file mode 100644 index 00000000..190323ad --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanHwidOptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseErspanHwidOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + ERSPANHardwareId=0 + ERSPANHardwareId=1 + ERSPANHardwareId=32 + ERSPANHardwareId=63 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + ERSPANHardwareId=64 + ERSPANHardwareId=100 + ERSPANHardwareId=-1 + ERSPANHardwareId=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanIndexOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanIndexOptionValueTest.kt new file mode 100644 index 00000000..d8b1a5ed --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanIndexOptionValueTest.kt @@ -0,0 +1,72 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseErspanIndexOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + ERSPANIndex=0 + ERSPANIndex=1 + ERSPANIndex=100 + ERSPANIndex=1048575 + ERSPANIndex=500000 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + ERSPANIndex=1048576 + ERSPANIndex=2000000 + ERSPANIndex=-1 + ERSPANIndex=invalid + ERSPANIndex=12.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + ERSPANIndex=0 + ERSPANIndex=1048575 + ERSPANIndex=1048576 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanVersionOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanVersionOptionValueTest.kt new file mode 100644 index 00000000..7a556ee6 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseErspanVersionOptionValueTest.kt @@ -0,0 +1,55 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseErspanVersionOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NetDev] + Kind=erspan + + [Tunnel] + ERSPANVersion=0 + ERSPANVersion=1 + ERSPANVersion=2 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NetDev] + Kind=erspan + + [Tunnel] + ERSPANVersion=3 + ERSPANVersion=-1 + ERSPANVersion=10 + ERSPANVersion=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseEtsU8OptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseEtsU8OptionValueTest.kt new file mode 100644 index 00000000..b1824550 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseEtsU8OptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseEtsU8OptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [EnhancedTransmissionSelection] + Bands=1 + Bands=8 + Bands=16 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [EnhancedTransmissionSelection] + Bands=0 + Bands=17 + Bands=100 + Bands=abc + Bands=-1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecCpuSchedPrioOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecCpuSchedPrioOptionValueTest.kt new file mode 100644 index 00000000..4ea1547f --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecCpuSchedPrioOptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseExecCpuSchedPrioOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + CPUSchedulingPriority=0 + CPUSchedulingPriority=1 + CPUSchedulingPriority=50 + CPUSchedulingPriority=99 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + CPUSchedulingPriority=-1 + CPUSchedulingPriority=100 + CPUSchedulingPriority=200 + CPUSchedulingPriority=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecInputTextOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecInputTextOptionValueTest.kt new file mode 100644 index 00000000..eb869672 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecInputTextOptionValueTest.kt @@ -0,0 +1,126 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseExecInputTextOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidArbitraryText() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + StandardInputText=Hello World + StandardInputText=Some text with spaces + StandardInputText=Text with numbers 12345 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidTextWithEscapes() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + StandardInputText=Line with\nnewline + StandardInputText=Tab\there + StandardInputText=Quote\"test + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidTextWithSpecifiers() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + StandardInputText=%n + StandardInputText=%p-%i + StandardInputText=Unit: %N + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidSpecialCharacters() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + StandardInputText=!@#$%^&*() + StandardInputText=[]{};:',.<>?/ + StandardInputText=Mixed-123_ABC + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidSingleCharacter() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + StandardInputText=A + StandardInputText=1 + StandardInputText=. + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidLongText() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + StandardInputText=This is a very long line of text that contains many words and could span quite far across the configuration file but should still be valid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecIoPriorityOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecIoPriorityOptionValueTest.kt new file mode 100644 index 00000000..f8e62a8a --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecIoPriorityOptionValueTest.kt @@ -0,0 +1,68 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseExecIoPriorityOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + IOSchedulingPriority=0 + IOSchedulingPriority=4 + IOSchedulingPriority=7 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + IOSchedulingPriority=8 + IOSchedulingPriority=-1 + IOSchedulingPriority=10 + IOSchedulingPriority=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + IOSchedulingPriority=0 + IOSchedulingPriority=7 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecMountPropagationFlagOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecMountPropagationFlagOptionValueTest.kt new file mode 100644 index 00000000..a71df55e --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecMountPropagationFlagOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseExecMountPropagationFlagOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + MountFlags=shared + MountFlags=slave + MountFlags=private + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + MountFlags=public + MountFlags=master + MountFlags=readonly + MountFlags=unbindable + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecNiceOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecNiceOptionValueTest.kt new file mode 100644 index 00000000..67e151fb --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecNiceOptionValueTest.kt @@ -0,0 +1,90 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseExecNiceOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + Nice=-20 + Nice=-10 + Nice=0 + Nice=10 + Nice=19 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + Nice=-21 + Nice=20 + Nice=100 + Nice=-100 + Nice=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + Nice=-20 + Nice=19 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testOutOfBoundsBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + Nice=-21 + Nice=20 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecOomScoreAdjustOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecOomScoreAdjustOptionValueTest.kt new file mode 100644 index 00000000..48bccbbb --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecOomScoreAdjustOptionValueTest.kt @@ -0,0 +1,74 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseExecOomScoreAdjustOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + OOMScoreAdjust=-1000 + OOMScoreAdjust=0 + OOMScoreAdjust=500 + OOMScoreAdjust=1000 + OOMScoreAdjust=-500 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + OOMScoreAdjust=-1001 + OOMScoreAdjust=1001 + OOMScoreAdjust=2000 + OOMScoreAdjust=-2000 + OOMScoreAdjust=abc + OOMScoreAdjust=100.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + OOMScoreAdjust=-1000 + OOMScoreAdjust=1000 + OOMScoreAdjust=-1001 + OOMScoreAdjust=1001 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecPreserveModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecPreserveModeOptionValueTest.kt new file mode 100644 index 00000000..bce896c3 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExecPreserveModeOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseExecPreserveModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + RuntimeDirectoryPreserve=no + RuntimeDirectoryPreserve=restart + RuntimeDirectoryPreserve=yes + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + RuntimeDirectoryPreserve=invalid + RuntimeDirectoryPreserve=true + RuntimeDirectoryPreserve=false + RuntimeDirectoryPreserve=always + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExitStatusOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExitStatusOptionValueTest.kt new file mode 100644 index 00000000..7235d83b --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseExitStatusOptionValueTest.kt @@ -0,0 +1,73 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseExitStatusOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + FailureActionExitStatus=0 + FailureActionExitStatus=1 + FailureActionExitStatus=127 + FailureActionExitStatus=255 + SuccessActionExitStatus=0 + SuccessActionExitStatus=42 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + FailureActionExitStatus=256 + FailureActionExitStatus=-1 + FailureActionExitStatus=300 + SuccessActionExitStatus=1000 + SuccessActionExitStatus=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + FailureActionExitStatus=0 + FailureActionExitStatus=255 + SuccessActionExitStatus=256 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFdbDestinationOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFdbDestinationOptionValueTest.kt new file mode 100644 index 00000000..07aa545a --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFdbDestinationOptionValueTest.kt @@ -0,0 +1,97 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseFdbDestinationOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidIPv4Addresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BridgeFDB] + Destination=192.168.1.1 + Destination=10.0.0.1 + Destination=172.16.0.1 + Destination=255.255.255.255 + Destination=0.0.0.0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidIPv6Addresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BridgeFDB] + Destination=fe80::1 + Destination=2001:db8::1 + Destination=::1 + Destination=2001:0db8:0000:0000:0000:0000:0000:0001 + Destination=2001:db8:85a3::8a2e:370:7334 + Destination=:: + Destination=2001:db8::8a2e:370:7334 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BridgeFDB] + Destination=256.1.1.1 + Destination=192.168.1 + Destination=not-an-ip + Destination=192.168.1.1.1 + Destination=gggg::1 + Destination=fe80::gggg + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } + + @Test + fun testInvalidIPv4Components() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BridgeFDB] + Destination=300.168.1.1 + Destination=192.999.1.1 + Destination=192.168.500.1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFdbNtfFlagsOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFdbNtfFlagsOptionValueTest.kt new file mode 100644 index 00000000..736dd34a --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFdbNtfFlagsOptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseFdbNtfFlagsOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BridgeFDB] + AssociatedWith=use + AssociatedWith=self + AssociatedWith=master + AssociatedWith=router + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BridgeFDB] + AssociatedWith=invalid + AssociatedWith=user + AssociatedWith=device + AssociatedWith=Self + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFdbVxlanVniOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFdbVxlanVniOptionValueTest.kt new file mode 100644 index 00000000..b3bdeff2 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFdbVxlanVniOptionValueTest.kt @@ -0,0 +1,72 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseFdbVxlanVniOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BridgeFDB] + VNI=1 + VNI=100 + VNI=16777215 + VNI=8388608 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BridgeFDB] + VNI=0 + VNI=16777216 + VNI=99999999 + VNI=-1 + VNI=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [BridgeFDB] + VNI=1 + VNI=16777215 + VNI=0 + VNI=16777216 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFlowLabelOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFlowLabelOptionValueTest.kt new file mode 100644 index 00000000..d704a252 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFlowLabelOptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseFlowLabelOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [VXLAN] + FlowLabel=0 + FlowLabel=1 + FlowLabel=100 + FlowLabel=1048575 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [VXLAN] + FlowLabel=1048576 + FlowLabel=2000000 + FlowLabel=-1 + FlowLabel=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFouEncapTypeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFouEncapTypeOptionValueTest.kt new file mode 100644 index 00000000..a109c17d --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFouEncapTypeOptionValueTest.kt @@ -0,0 +1,48 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseFouEncapTypeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FooOverUDP] + Encapsulation=FooOverUDP + Encapsulation=GenericUDPEncapsulation + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FooOverUDP] + Encapsulation=InvalidValue + Encapsulation=GUE + Encapsulation=UDP + Encapsulation=direct + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFouTunnelAddressOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFouTunnelAddressOptionValueTest.kt new file mode 100644 index 00000000..c278531a --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFouTunnelAddressOptionValueTest.kt @@ -0,0 +1,133 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseFouTunnelAddressOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidIPv4Addresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FooOverUDP] + Peer=192.168.1.1 + Peer=10.0.0.1 + Peer=172.16.0.1 + Peer=255.255.255.255 + Peer=0.0.0.0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidIPv6Addresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FooOverUDP] + Peer=2001:db8::1 + Peer=fe80::1 + Peer=::1 + Peer=:: + Peer=2001:db8:85a3::8a2e:370:7334 + Peer=2001:db8:85a3:0:0:8a2e:370:7334 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidIPv6WithIPv4Suffix() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FooOverUDP] + Peer=::ffff:192.168.1.1 + Peer=64:ff9b::192.0.2.1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidIPAddresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FooOverUDP] + Peer=256.1.1.1 + Peer=192.168.1 + Peer=192.168.1.1.1 + Peer=not-an-ip + Peer=localhost + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testInvalidIPv6Addresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FooOverUDP] + Peer=gggg::1 + Peer=2001:db8::1::2 + Peer=2001:db8:: + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } + + @Test + fun testInvalidWithPrefixLength() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FooOverUDP] + Peer=192.168.1.1/24 + Peer=2001:db8::1/64 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFqPiePacketLimitOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFqPiePacketLimitOptionValueTest.kt new file mode 100644 index 00000000..d6223dfe --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseFqPiePacketLimitOptionValueTest.kt @@ -0,0 +1,52 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseFqPiePacketLimitOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FlowQueuePIE] + PacketLimit=1 + PacketLimit=100 + PacketLimit=1000 + PacketLimit=4294967294 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [FlowQueuePIE] + PacketLimit=0 + PacketLimit=-1 + PacketLimit=4294967295 + PacketLimit=4294967296 + PacketLimit=abc + PacketLimit=123.45 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveDfOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveDfOptionValueTest.kt new file mode 100644 index 00000000..26b56481 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveDfOptionValueTest.kt @@ -0,0 +1,76 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseGeneveDfOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidEnumValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [GENEVE] + IPDoNotFragment=no + IPDoNotFragment=yes + IPDoNotFragment=inherit + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [GENEVE] + IPDoNotFragment=1 + IPDoNotFragment=0 + IPDoNotFragment=true + IPDoNotFragment=false + IPDoNotFragment=on + IPDoNotFragment=off + IPDoNotFragment=y + IPDoNotFragment=n + IPDoNotFragment=t + IPDoNotFragment=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [GENEVE] + IPDoNotFragment=maybe + IPDoNotFragment=auto + IPDoNotFragment=2 + IPDoNotFragment=never + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveFlowLabelOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveFlowLabelOptionValueTest.kt new file mode 100644 index 00000000..22aae789 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveFlowLabelOptionValueTest.kt @@ -0,0 +1,79 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseGeneveFlowLabelOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NetDev] + Kind=geneve + + [GENEVE] + FlowLabel=0 + FlowLabel=1 + FlowLabel=100 + FlowLabel=1048575 + """.trimIndent() + + // Execute SUT + setupFileInEditor("test.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NetDev] + Kind=geneve + + [GENEVE] + FlowLabel=1048576 + FlowLabel=2000000 + FlowLabel=-1 + FlowLabel=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("test.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NetDev] + Kind=geneve + + [GENEVE] + FlowLabel=0 + FlowLabel=1048575 + FlowLabel=1048576 + """.trimIndent() + + // Execute SUT + setupFileInEditor("test.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveTtlOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveTtlOptionValueTest.kt new file mode 100644 index 00000000..cf2511de --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveTtlOptionValueTest.kt @@ -0,0 +1,54 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseGeneveTtlOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [GENEVE] + TTL=inherit + TTL=0 + TTL=1 + TTL=64 + TTL=128 + TTL=255 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [GENEVE] + TTL=Inherit + TTL=INHERIT + TTL=256 + TTL=-1 + TTL=1000 + TTL=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveVniOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveVniOptionValueTest.kt new file mode 100644 index 00000000..380817d0 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseGeneveVniOptionValueTest.kt @@ -0,0 +1,71 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseGeneveVniOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [GENEVE] + Id=0 + Id=1 + Id=12345 + Id=16777215 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [GENEVE] + Id=16777216 + Id=99999999 + Id=-1 + Id=abc + Id=0x1000 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [GENEVE] + Id=0 + Id=16777215 + Id=16777216 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseHhfPacketLimitOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseHhfPacketLimitOptionValueTest.kt new file mode 100644 index 00000000..ab08efb1 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseHhfPacketLimitOptionValueTest.kt @@ -0,0 +1,70 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseHhfPacketLimitOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [HeavyHitterFilter] + PacketLimit=0 + PacketLimit=1 + PacketLimit=1000 + PacketLimit=4294967294 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [HeavyHitterFilter] + PacketLimit=-1 + PacketLimit=4294967295 + PacketLimit=5000000000 + PacketLimit=abc + PacketLimit=12.34 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [HeavyHitterFilter] + PacketLimit=0 + PacketLimit=4294967294 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIaidOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIaidOptionValueTest.kt new file mode 100644 index 00000000..8949ba81 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIaidOptionValueTest.kt @@ -0,0 +1,71 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseIaidOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + IAID=0 + IAID=1 + IAID=12345 + IAID=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + IAID=-1 + IAID=4294967296 + IAID=abc + IAID=12.34 + IAID=0x1234 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + IAID=0 + IAID=4294967295 + IAID=4294967296 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseInAddrNonNullOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseInAddrNonNullOptionValueTest.kt new file mode 100644 index 00000000..3f86e570 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseInAddrNonNullOptionValueTest.kt @@ -0,0 +1,99 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseInAddrNonNullOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidIPv4Addresses() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServer] + RelayTarget=192.168.1.1 + RelayTarget=10.0.0.1 + RelayTarget=172.16.0.1 + RelayTarget=8.8.8.8 + RelayTarget=255.255.255.255 + RelayTarget=1.2.3.4 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServer] + RelayTarget=192.168.1 + RelayTarget=256.1.1.1 + RelayTarget=192.168.1.1.1 + RelayTarget=not-an-ip + RelayTarget=192.168.-1.1 + RelayTarget=192.168.1.1/24 + RelayTarget=::1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(7, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServer] + RelayTarget=0.0.0.0 + RelayTarget=127.0.0.1 + RelayTarget=255.0.0.0 + RelayTarget=0.0.0.1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + // All are syntactically valid IPv4 addresses + // Note: 0.0.0.0 would be rejected semantically by the C code, but is syntactically valid + assertSize(0, highlights) + } + + @Test + fun testInvalidOctetRanges() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPServer] + RelayTarget=256.0.0.1 + RelayTarget=192.256.1.1 + RelayTarget=192.168.256.1 + RelayTarget=192.168.1.256 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpMasqueradeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpMasqueradeOptionValueTest.kt new file mode 100644 index 00000000..77109785 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpMasqueradeOptionValueTest.kt @@ -0,0 +1,79 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseIpMasqueradeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidPrimaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPMasquerade=ipv4 + IPMasquerade=ipv6 + IPMasquerade=both + IPMasquerade=no + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidDeprecatedBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPMasquerade=yes + IPMasquerade=true + IPMasquerade=on + IPMasquerade=1 + IPMasquerade=y + IPMasquerade=t + IPMasquerade=false + IPMasquerade=off + IPMasquerade=0 + IPMasquerade=n + IPMasquerade=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPMasquerade=invalid + IPMasquerade=maybe + IPMasquerade=ipv4-only + IPMasquerade=2 + IPMasquerade=all + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpReversePathFilterOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpReversePathFilterOptionValueTest.kt new file mode 100644 index 00000000..9438d0db --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpReversePathFilterOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseIpReversePathFilterOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv4ReversePathFilter=no + IPv4ReversePathFilter=strict + IPv4ReversePathFilter=loose + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv4ReversePathFilter=yes + IPv4ReversePathFilter=invalid + IPv4ReversePathFilter=true + IPv4ReversePathFilter=1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpoibModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpoibModeOptionValueTest.kt new file mode 100644 index 00000000..e23a6503 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpoibModeOptionValueTest.kt @@ -0,0 +1,48 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseIpoibModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPoIB] + Mode=datagram + Mode=connected + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPoIB] + Mode=unreliable + Mode=reliable + Mode=dgram + Mode=conn + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpv4ForceIgmpVersionOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpv4ForceIgmpVersionOptionValueTest.kt new file mode 100644 index 00000000..9f45c382 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpv4ForceIgmpVersionOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseIpv4ForceIgmpVersionOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + MulticastIGMPVersion=no + MulticastIGMPVersion=v1 + MulticastIGMPVersion=v2 + MulticastIGMPVersion=v3 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + MulticastIGMPVersion=v4 + MulticastIGMPVersion=v0 + MulticastIGMPVersion=yes + MulticastIGMPVersion=igmpv3 + MulticastIGMPVersion=1 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpv6LinkLocalAddressGenModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpv6LinkLocalAddressGenModeOptionValueTest.kt new file mode 100644 index 00000000..b0d0dced --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpv6LinkLocalAddressGenModeOptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseIpv6LinkLocalAddressGenModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv6LinkLocalAddressGenerationMode=eui64 + IPv6LinkLocalAddressGenerationMode=none + IPv6LinkLocalAddressGenerationMode=stable-privacy + IPv6LinkLocalAddressGenerationMode=random + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv6LinkLocalAddressGenerationMode=invalid + IPv6LinkLocalAddressGenerationMode=eui-64 + IPv6LinkLocalAddressGenerationMode=stable_privacy + IPv6LinkLocalAddressGenerationMode=randomize + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpv6PrivacyExtensionsOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpv6PrivacyExtensionsOptionValueTest.kt new file mode 100644 index 00000000..d1f675d4 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpv6PrivacyExtensionsOptionValueTest.kt @@ -0,0 +1,78 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseIpv6PrivacyExtensionsOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv6PrivacyExtensions=yes + IPv6PrivacyExtensions=no + IPv6PrivacyExtensions=true + IPv6PrivacyExtensions=false + IPv6PrivacyExtensions=on + IPv6PrivacyExtensions=off + IPv6PrivacyExtensions=1 + IPv6PrivacyExtensions=0 + IPv6PrivacyExtensions=y + IPv6PrivacyExtensions=n + IPv6PrivacyExtensions=t + IPv6PrivacyExtensions=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidSpecialValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv6PrivacyExtensions=prefer-public + IPv6PrivacyExtensions=kernel + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv6PrivacyExtensions=invalid + IPv6PrivacyExtensions=maybe + IPv6PrivacyExtensions=prefer-private + IPv6PrivacyExtensions=2 + IPv6PrivacyExtensions=enabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpvlanFlagsOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpvlanFlagsOptionValueTest.kt new file mode 100644 index 00000000..84f02848 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpvlanFlagsOptionValueTest.kt @@ -0,0 +1,69 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseIpvlanFlagsOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPVLAN] + Flags=bridge + Flags=private + Flags=vepa + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPVLAN] + Flags=invalid + Flags=ipvlan + Flags=bond + Flags=mode + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testPartialMatch() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPVLAN] + Flags=bridg + Flags=privat + Flags=vep + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpvlanModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpvlanModeOptionValueTest.kt new file mode 100644 index 00000000..2fb632af --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseIpvlanModeOptionValueTest.kt @@ -0,0 +1,69 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseIpvlanModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPVLAN] + Mode=L2 + Mode=L3 + Mode=L3S + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPVLAN] + Mode=L1 + Mode=L4 + Mode=invalid + Mode=l2s + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testPartialMatches() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPVLAN] + Mode=L + Mode=L3X + Mode=3S + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseJobModeIsolateOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseJobModeIsolateOptionValueTest.kt new file mode 100644 index 00000000..9482ebd2 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseJobModeIsolateOptionValueTest.kt @@ -0,0 +1,75 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseJobModeIsolateOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanTrueValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + OnFailureIsolate=yes + OnFailureIsolate=true + OnFailureIsolate=1 + OnFailureIsolate=on + OnFailureIsolate=y + OnFailureIsolate=t + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBooleanFalseValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + OnFailureIsolate=no + OnFailureIsolate=false + OnFailureIsolate=0 + OnFailureIsolate=off + OnFailureIsolate=n + OnFailureIsolate=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + OnFailureIsolate=invalid + OnFailureIsolate=maybe + OnFailureIsolate=2 + OnFailureIsolate=yesno + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseKeepConfigurationOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseKeepConfigurationOptionValueTest.kt new file mode 100644 index 00000000..fa858f20 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseKeepConfigurationOptionValueTest.kt @@ -0,0 +1,98 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseKeepConfigurationOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidEnumValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + KeepConfiguration=no + KeepConfiguration=static + KeepConfiguration=dynamic-on-stop + KeepConfiguration=dynamic + KeepConfiguration=yes + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + KeepConfiguration=1 + KeepConfiguration=yes + KeepConfiguration=y + KeepConfiguration=true + KeepConfiguration=t + KeepConfiguration=on + KeepConfiguration=0 + KeepConfiguration=n + KeepConfiguration=false + KeepConfiguration=f + KeepConfiguration=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBackwardCompatibilityValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + KeepConfiguration=dhcp + KeepConfiguration=dhcp-on-stop + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + KeepConfiguration=invalid + KeepConfiguration=maybe + KeepConfiguration=always + KeepConfiguration=never + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpEncapTypeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpEncapTypeOptionValueTest.kt new file mode 100644 index 00000000..6785ad83 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpEncapTypeOptionValueTest.kt @@ -0,0 +1,47 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseL2tpEncapTypeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [L2TP] + EncapsulationType=udp + EncapsulationType=ip + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [L2TP] + EncapsulationType=tcp + EncapsulationType=sctp + EncapsulationType=UDP + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpSessionIdOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpSessionIdOptionValueTest.kt new file mode 100644 index 00000000..85a63b67 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpSessionIdOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseL2tpSessionIdOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [L2TPSession] + PeerSessionId=1 + PeerSessionId=100 + PeerSessionId=4294967295 + PeerSessionId=2147483647 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [L2TPSession] + PeerSessionId=0 + PeerSessionId=4294967296 + PeerSessionId=-1 + PeerSessionId=abc + PeerSessionId=1.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpSessionL2specOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpSessionL2specOptionValueTest.kt new file mode 100644 index 00000000..96d218a1 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpSessionL2specOptionValueTest.kt @@ -0,0 +1,47 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseL2tpSessionL2specOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [L2TPSession] + Layer2SpecificHeader=none + Layer2SpecificHeader=default + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [L2TPSession] + Layer2SpecificHeader=invalid + Layer2SpecificHeader=yes + Layer2SpecificHeader=always + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpTunnelIdOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpTunnelIdOptionValueTest.kt new file mode 100644 index 00000000..6437125a --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseL2tpTunnelIdOptionValueTest.kt @@ -0,0 +1,70 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseL2tpTunnelIdOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [L2TP] + TunnelId=1 + TunnelId=100 + TunnelId=65535 + TunnelId=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [L2TP] + TunnelId=0 + TunnelId=4294967296 + TunnelId=-1 + TunnelId=abc + TunnelId=12.34 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [L2TP] + TunnelId=1 + TunnelId=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseLinkLocalAddressFamilyOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseLinkLocalAddressFamilyOptionValueTest.kt new file mode 100644 index 00000000..4096a0f2 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseLinkLocalAddressFamilyOptionValueTest.kt @@ -0,0 +1,92 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseLinkLocalAddressFamilyOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + LinkLocalAddressing=yes + LinkLocalAddressing=no + LinkLocalAddressing=true + LinkLocalAddressing=false + LinkLocalAddressing=1 + LinkLocalAddressing=0 + LinkLocalAddressing=on + LinkLocalAddressing=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidAddressFamilyValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + LinkLocalAddressing=ipv4 + LinkLocalAddressing=ipv6 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidCompatibilityNames() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + LinkLocalAddressing=fallback + LinkLocalAddressing=fallback-ipv4 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + LinkLocalAddressing=invalid + LinkLocalAddressing=both + LinkLocalAddressing=ipv4-ipv6 + LinkLocalAddressing=2 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseLldpModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseLldpModeOptionValueTest.kt new file mode 100644 index 00000000..78f1da66 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseLldpModeOptionValueTest.kt @@ -0,0 +1,92 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseLldpModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + LLDP=yes + LLDP=no + LLDP=true + LLDP=false + LLDP=on + LLDP=off + LLDP=1 + LLDP=0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidRoutersOnlyValue() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + LLDP=routers-only + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + LLDP=invalid + LLDP=router + LLDP=maybe + LLDP=2 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testPartialMatches() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + LLDP=routers + LLDP=only + LLDP=routers- + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecKeyOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecKeyOptionValueTest.kt new file mode 100644 index 00000000..5c918dd1 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecKeyOptionValueTest.kt @@ -0,0 +1,107 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMacsecKeyOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + Key=dffafc8d7b9a43d5b9a3dfbbf6a30c16 + Key=0123456789ABCDEF0123456789ABCDEF + Key=ffffffffffffffffffffffffffffffff + Key=00000000000000000000000000000000 + Key=aAbBcCdDeEfF00112233445566778899 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + Key=dffafc8d7b9a43d5b9a3dfbbf6a30c1 + Key=dffafc8d7b9a43d5b9a3dfbbf6a30c167 + Key=notahexstring123456789012345678 + Key=dffafc8d7b9a43d5b9a3dfbbf6a30c1g + Key=short + Key=toolongkeytoolongkeytoolongkeytoolongkey + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } + + @Test + fun testInvalidTooShort() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + Key=abc123 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testInvalidTooLong() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + Key=dffafc8d7b9a43d5b9a3dfbbf6a30c16ff + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testInvalidNonHexCharacters() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + Key=dffafc8d7b9a43d5b9a3dfbbf6a30cXX + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecPacketNumberOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecPacketNumberOptionValueTest.kt new file mode 100644 index 00000000..2ba35b23 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecPacketNumberOptionValueTest.kt @@ -0,0 +1,70 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMacsecPacketNumberOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + PacketNumber=1 + PacketNumber=100 + PacketNumber=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + PacketNumber=0 + PacketNumber=4294967296 + PacketNumber=-1 + PacketNumber=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + PacketNumber=1 + PacketNumber=4294967295 + PacketNumber=0 + PacketNumber=4294967296 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecPortOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecPortOptionValueTest.kt new file mode 100644 index 00000000..4e9b32c1 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecPortOptionValueTest.kt @@ -0,0 +1,52 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMacsecPortOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecReceiveChannel] + Port=1 + Port=80 + Port=443 + Port=8080 + Port=65535 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecReceiveChannel] + Port=0 + Port=65536 + Port=-1 + Port=abc + Port=123.456 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecSaActivateOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecSaActivateOptionValueTest.kt new file mode 100644 index 00000000..b6457dbd --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecSaActivateOptionValueTest.kt @@ -0,0 +1,54 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMacsecSaActivateOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + Activate=yes + Activate=no + Activate=true + Activate=false + Activate=on + Activate=off + Activate=1 + Activate=0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + Activate=invalid + Activate=2 + Activate=maybe + Activate=enabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecUseForEncodingOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecUseForEncodingOptionValueTest.kt new file mode 100644 index 00000000..077fdbf6 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacsecUseForEncodingOptionValueTest.kt @@ -0,0 +1,53 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMacsecUseForEncodingOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + UseForEncoding=yes + UseForEncoding=no + UseForEncoding=true + UseForEncoding=false + UseForEncoding=1 + UseForEncoding=0 + UseForEncoding=on + UseForEncoding=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACsecTransmitAssociation] + UseForEncoding=invalid + UseForEncoding=maybe + UseForEncoding=2 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacvlanBroadcastQueueSizeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacvlanBroadcastQueueSizeOptionValueTest.kt new file mode 100644 index 00000000..3afd3a48 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacvlanBroadcastQueueSizeOptionValueTest.kt @@ -0,0 +1,52 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMacvlanBroadcastQueueSizeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACVLAN] + BroadcastMulticastQueueLength=0 + BroadcastMulticastQueueLength=1 + BroadcastMulticastQueueLength=100 + BroadcastMulticastQueueLength=1000 + BroadcastMulticastQueueLength=4294967294 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACVLAN] + BroadcastMulticastQueueLength=-1 + BroadcastMulticastQueueLength=4294967295 + BroadcastMulticastQueueLength=5000000000 + BroadcastMulticastQueueLength=abc + BroadcastMulticastQueueLength=12.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacvlanBroadcastQueueThresholdOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacvlanBroadcastQueueThresholdOptionValueTest.kt new file mode 100644 index 00000000..df033876 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacvlanBroadcastQueueThresholdOptionValueTest.kt @@ -0,0 +1,52 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMacvlanBroadcastQueueThresholdOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACVLAN] + BroadcastQueueThreshold=no + BroadcastQueueThreshold=0 + BroadcastQueueThreshold=1 + BroadcastQueueThreshold=100 + BroadcastQueueThreshold=2147483647 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACVLAN] + BroadcastQueueThreshold=-1 + BroadcastQueueThreshold=2147483648 + BroadcastQueueThreshold=yes + BroadcastQueueThreshold=invalid + BroadcastQueueThreshold=3000000000 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacvlanModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacvlanModeOptionValueTest.kt new file mode 100644 index 00000000..83dc8d34 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMacvlanModeOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMacvlanModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACVLAN] + Mode=private + Mode=vepa + Mode=bridge + Mode=passthru + Mode=source + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [MACVLAN] + Mode=invalid + Mode=pub + Mode=Public + Mode=privatebadge + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMdiOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMdiOptionValueTest.kt new file mode 100644 index 00000000..9cb7c8dd --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMdiOptionValueTest.kt @@ -0,0 +1,52 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMdiOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + MDI=mdi + MDI=straight + MDI=mdi-x + MDI=mdix + MDI=crossover + MDI=auto + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + MDI=invalid + MDI=mdi-auto + MDI=Auto + MDI=straight-through + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMemoryPressureWatchOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMemoryPressureWatchOptionValueTest.kt new file mode 100644 index 00000000..f8cb76cc --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMemoryPressureWatchOptionValueTest.kt @@ -0,0 +1,94 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMemoryPressureWatchOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + MemoryPressureWatch=yes + MemoryPressureWatch=no + MemoryPressureWatch=1 + MemoryPressureWatch=0 + MemoryPressureWatch=true + MemoryPressureWatch=false + MemoryPressureWatch=on + MemoryPressureWatch=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidSpecialValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + MemoryPressureWatch=auto + MemoryPressureWatch=skip + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidShortBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + MemoryPressureWatch=y + MemoryPressureWatch=n + MemoryPressureWatch=t + MemoryPressureWatch=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + MemoryPressureWatch=invalid + MemoryPressureWatch=maybe + MemoryPressureWatch=2 + MemoryPressureWatch=automatic + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMtuOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMtuOptionValueTest.kt new file mode 100644 index 00000000..0f5ede66 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMtuOptionValueTest.kt @@ -0,0 +1,90 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMtuOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv6MTUBytes=1280 + IPv6MTUBytes=1500 + IPv6MTUBytes=9000 + IPv6MTUBytes=65536 + IPv6MTUBytes=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValuesBelowMinimum() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv6MTUBytes=0 + IPv6MTUBytes=1279 + IPv6MTUBytes=576 + IPv6MTUBytes=1000 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testInvalidValuesAboveMaximum() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv6MTUBytes=4294967296 + IPv6MTUBytes=5000000000 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } + + @Test + fun testInvalidNonNumericValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + IPv6MTUBytes=abc + IPv6MTUBytes=12.5 + IPv6MTUBytes=-1500 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMulticastRouterOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMulticastRouterOptionValueTest.kt new file mode 100644 index 00000000..6901795d --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseMulticastRouterOptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseMulticastRouterOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + MulticastRouter=no + MulticastRouter=query + MulticastRouter=permanent + MulticastRouter=temporary + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Bridge] + MulticastRouter=invalid + MulticastRouter=yes + MulticastRouter=router + MulticastRouter=enable + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseNdiscStartDhcp6ClientOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseNdiscStartDhcp6ClientOptionValueTest.kt new file mode 100644 index 00000000..b558361d --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseNdiscStartDhcp6ClientOptionValueTest.kt @@ -0,0 +1,76 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseNdiscStartDhcp6ClientOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6AcceptRA] + DHCPv6Client=yes + DHCPv6Client=no + DHCPv6Client=true + DHCPv6Client=false + DHCPv6Client=on + DHCPv6Client=off + DHCPv6Client=1 + DHCPv6Client=0 + DHCPv6Client=y + DHCPv6Client=n + DHCPv6Client=t + DHCPv6Client=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidSpecialValue() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6AcceptRA] + DHCPv6Client=always + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6AcceptRA] + DHCPv6Client=never + DHCPv6Client=sometimes + DHCPv6Client=maybe + DHCPv6Client=2 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseNetemPacketLimitOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseNetemPacketLimitOptionValueTest.kt new file mode 100644 index 00000000..9de67e8b --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseNetemPacketLimitOptionValueTest.kt @@ -0,0 +1,52 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseNetemPacketLimitOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NetworkEmulator] + PacketLimit=0 + PacketLimit=1 + PacketLimit=1000 + PacketLimit=1000000 + PacketLimit=4294967294 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NetworkEmulator] + PacketLimit=-1 + PacketLimit=4294967295 + PacketLimit=4294967296 + PacketLimit=abc + PacketLimit=1.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseNexthopSectionOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseNexthopSectionOptionValueTest.kt new file mode 100644 index 00000000..ff7bfb74 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseNexthopSectionOptionValueTest.kt @@ -0,0 +1,75 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseNexthopSectionOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NextHop] + OnLink=yes + OnLink=no + OnLink=true + OnLink=false + OnLink=1 + OnLink=0 + OnLink=on + OnLink=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBooleanValuesAlternativeForms() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NextHop] + OnLink=y + OnLink=n + OnLink=t + OnLink=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [NextHop] + OnLink=invalid + OnLink=maybe + OnLink=2 + OnLink=enabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePfifoSizeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePfifoSizeOptionValueTest.kt new file mode 100644 index 00000000..2ebf394f --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePfifoSizeOptionValueTest.kt @@ -0,0 +1,72 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParsePfifoSizeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [PFIFOHeadDrop] + PacketLimit=0 + PacketLimit=1 + PacketLimit=100 + PacketLimit=1000 + PacketLimit=65535 + PacketLimit=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [PFIFOHeadDrop] + PacketLimit=-1 + PacketLimit=4294967296 + PacketLimit=abc + PacketLimit=10.5 + PacketLimit=0x100 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [PFIFOHeadDrop] + PacketLimit=0 + PacketLimit=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePid2OptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePid2OptionValueTest.kt new file mode 100644 index 00000000..b55a7f31 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePid2OptionValueTest.kt @@ -0,0 +1,75 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParsePid2OptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Exec] + ProcessTwo=yes + ProcessTwo=no + ProcessTwo=1 + ProcessTwo=0 + ProcessTwo=true + ProcessTwo=false + ProcessTwo=on + ProcessTwo=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Exec] + ProcessTwo=invalid + ProcessTwo=maybe + ProcessTwo=2 + ProcessTwo=enabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testAdditionalBooleanVariations() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Exec] + ProcessTwo=y + ProcessTwo=n + ProcessTwo=t + ProcessTwo=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} \ No newline at end of file diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePref64PrefixOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePref64PrefixOptionValueTest.kt new file mode 100644 index 00000000..3bca827d --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePref64PrefixOptionValueTest.kt @@ -0,0 +1,111 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParsePref64PrefixOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6PREF64Prefix] + Prefix=2001:db8::/32 + Prefix=2001:db8::/40 + Prefix=2001:db8::/48 + Prefix=2001:db8::/56 + Prefix=2001:db8::/64 + Prefix=2001:db8::/96 + Prefix=64:ff9b::/96 + Prefix=::ffff:0:0/96 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidPrefixLengths() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6PREF64Prefix] + Prefix=2001:db8::/128 + Prefix=2001:db8::/24 + Prefix=2001:db8::/16 + Prefix=2001:db8::/8 + Prefix=2001:db8::/80 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testMissingPrefixLength() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6PREF64Prefix] + Prefix=2001:db8:: + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } + + @Test + fun testInvalidIPv6Address() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6PREF64Prefix] + Prefix=192.168.1.0/96 + Prefix=not-an-address/96 + Prefix=gggg::/96 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } + + @Test + fun testMissingSeparator() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6PREF64Prefix] + Prefix=2001:db8::96 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrefixBooleanOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrefixBooleanOptionValueTest.kt new file mode 100644 index 00000000..b1ed241a --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrefixBooleanOptionValueTest.kt @@ -0,0 +1,75 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParsePrefixBooleanOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6Prefix] + OnLink=yes + OnLink=no + OnLink=true + OnLink=false + OnLink=1 + OnLink=0 + OnLink=on + OnLink=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidValuesWithVariousFormats() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6Prefix] + OnLink=y + OnLink=n + OnLink=t + OnLink=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6Prefix] + OnLink=invalid + OnLink=maybe + OnLink=2 + OnLink=enabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrefixMetricOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrefixMetricOptionValueTest.kt new file mode 100644 index 00000000..9ec38707 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrefixMetricOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParsePrefixMetricOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6Prefix] + RouteMetric=0 + RouteMetric=1 + RouteMetric=100 + RouteMetric=65535 + RouteMetric=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6Prefix] + RouteMetric=4294967296 + RouteMetric=-1 + RouteMetric=abc + RouteMetric=12.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrefixOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrefixOptionValueTest.kt new file mode 100644 index 00000000..9133897c --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrefixOptionValueTest.kt @@ -0,0 +1,96 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParsePrefixOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6Prefix] + Prefix=2001:db8::/32 + Prefix=fe80::/64 + Prefix=2001:0db8:85a3:0000:0000:8a2e:0370:7334/128 + Prefix=::1/128 + Prefix=::/0 + Prefix=fd00::/8 + Prefix=2001:db8::1/64 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6Prefix] + Prefix=2001:db8:: + Prefix=fe80::/ + Prefix=2001:db8::/129 + Prefix=192.168.1.0/24 + Prefix=/64 + Prefix=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } + + @Test + fun testEdgeCasePrefixLengths() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6Prefix] + Prefix=2001:db8::/0 + Prefix=2001:db8::/64 + Prefix=2001:db8::/128 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testCompressedIPv6Formats() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6Prefix] + Prefix=::/0 + Prefix=::1/128 + Prefix=::ffff:192.0.2.1/96 + Prefix=2001:db8::1:0:0:1/64 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrivatePidsOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrivatePidsOptionValueTest.kt new file mode 100644 index 00000000..40d636b7 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrivatePidsOptionValueTest.kt @@ -0,0 +1,75 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParsePrivatePidsOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + PrivatePIDs=yes + PrivatePIDs=no + PrivatePIDs=true + PrivatePIDs=false + PrivatePIDs=on + PrivatePIDs=off + PrivatePIDs=1 + PrivatePIDs=0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + PrivatePIDs=invalid + PrivatePIDs=maybe + PrivatePIDs=2 + PrivatePIDs=enable + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testValidBooleanVariants() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + PrivatePIDs=y + PrivatePIDs=n + PrivatePIDs=t + PrivatePIDs=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrivateTmpOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrivateTmpOptionValueTest.kt new file mode 100644 index 00000000..9bfa04a0 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParsePrivateTmpOptionValueTest.kt @@ -0,0 +1,94 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParsePrivateTmpOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanTrueValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + PrivateTmp=yes + PrivateTmp=true + PrivateTmp=1 + PrivateTmp=on + PrivateTmp=t + PrivateTmp=y + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBooleanFalseValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + PrivateTmp=no + PrivateTmp=false + PrivateTmp=0 + PrivateTmp=off + PrivateTmp=f + PrivateTmp=n + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidDisconnectedValue() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + PrivateTmp=disconnected + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + PrivateTmp=invalid + PrivateTmp=maybe + PrivateTmp=2 + PrivateTmp=disconnect + PrivateTmp=enabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseProtectControlGroupsOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseProtectControlGroupsOptionValueTest.kt new file mode 100644 index 00000000..db1dad1e --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseProtectControlGroupsOptionValueTest.kt @@ -0,0 +1,94 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseProtectControlGroupsOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectControlGroups=true + ProtectControlGroups=false + ProtectControlGroups=yes + ProtectControlGroups=no + ProtectControlGroups=1 + ProtectControlGroups=0 + ProtectControlGroups=on + ProtectControlGroups=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidSpecialValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectControlGroups=private + ProtectControlGroups=strict + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectControlGroups=invalid + ProtectControlGroups=2 + ProtectControlGroups=public + ProtectControlGroups=enabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testValidShortBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectControlGroups=y + ProtectControlGroups=n + ProtectControlGroups=t + ProtectControlGroups=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseProtectHomeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseProtectHomeOptionValueTest.kt new file mode 100644 index 00000000..3ea19c35 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseProtectHomeOptionValueTest.kt @@ -0,0 +1,93 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseProtectHomeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectHome=yes + ProtectHome=no + ProtectHome=true + ProtectHome=false + ProtectHome=on + ProtectHome=off + ProtectHome=1 + ProtectHome=0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidSpecialValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectHome=read-only + ProtectHome=tmpfs + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectHome=readonly + ProtectHome=temp + ProtectHome=invalid + ProtectHome=readOnly + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testInvalidBooleanLikeValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectHome=2 + ProtectHome=enabled + ProtectHome=disabled + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseProtectSystemOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseProtectSystemOptionValueTest.kt new file mode 100644 index 00000000..c433bc31 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseProtectSystemOptionValueTest.kt @@ -0,0 +1,94 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseProtectSystemOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectSystem=yes + ProtectSystem=no + ProtectSystem=true + ProtectSystem=false + ProtectSystem=on + ProtectSystem=off + ProtectSystem=1 + ProtectSystem=0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidSpecialValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectSystem=full + ProtectSystem=strict + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectSystem=partial + ProtectSystem=maybe + ProtectSystem=2 + ProtectSystem=complete + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testShortBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + ProtectSystem=y + ProtectSystem=n + ProtectSystem=t + ProtectSystem=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseQfqWeightOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseQfqWeightOptionValueTest.kt new file mode 100644 index 00000000..f48f6eb0 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseQfqWeightOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseQfqWeightOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [QuickFairQueueingClass] + Weight=1 + Weight=500 + Weight=1023 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [QuickFairQueueingClass] + Weight=0 + Weight=1024 + Weight=-1 + Weight=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRingBufferOrChannelOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRingBufferOrChannelOptionValueTest.kt new file mode 100644 index 00000000..ea2e09ef --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRingBufferOrChannelOptionValueTest.kt @@ -0,0 +1,52 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseRingBufferOrChannelOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + RxMiniBufferSize=max + RxMiniBufferSize=1 + RxMiniBufferSize=100 + RxMiniBufferSize=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + RxMiniBufferSize=0 + RxMiniBufferSize=-1 + RxMiniBufferSize=4294967296 + RxMiniBufferSize=Max + RxMiniBufferSize=MAX + RxMiniBufferSize=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRoutePrefixPreferenceOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRoutePrefixPreferenceOptionValueTest.kt new file mode 100644 index 00000000..57bc235d --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRoutePrefixPreferenceOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseRoutePrefixPreferenceOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6RoutePrefix] + Preference=high + Preference=medium + Preference=low + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6RoutePrefix] + Preference=invalid + Preference=normal + Preference=highest + Preference=lowest + Preference=1 + Preference=yes + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRouteSectionOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRouteSectionOptionValueTest.kt new file mode 100644 index 00000000..a3fa8465 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRouteSectionOptionValueTest.kt @@ -0,0 +1,97 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseRouteSectionOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Route] + Type=unicast + Type=local + Type=broadcast + Type=anycast + Type=multicast + Type=blackhole + Type=unreachable + Type=prohibit + Type=throw + Type=nat + Type=xresolve + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Route] + Type=invalid + Type=unknown + Type=UNICAST + Type=multi-cast + Type=drop + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testDefaultValue() { + // Fixture Setup - testing that 'unicast' is the default (implicit valid value) + // language="unit file (systemd)" + val file = """ + [Route] + Type=unicast + Destination=192.168.1.0/24 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testSpecialRouteTypes() { + // Fixture Setup - testing special route types + // language="unit file (systemd)" + val file = """ + [Route] + Type=blackhole + Type=unreachable + Type=prohibit + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRouterPreferenceOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRouterPreferenceOptionValueTest.kt new file mode 100644 index 00000000..7b875ea0 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRouterPreferenceOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseRouterPreferenceOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6SendRA] + RouterPreference=high + RouterPreference=medium + RouterPreference=normal + RouterPreference=default + RouterPreference=low + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [IPv6SendRA] + RouterPreference=invalid + RouterPreference=very-high + RouterPreference=HIGHEST + RouterPreference=0 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRxTxQueuesOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRxTxQueuesOptionValueTest.kt new file mode 100644 index 00000000..1e2cd8f3 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseRxTxQueuesOptionValueTest.kt @@ -0,0 +1,72 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseRxTxQueuesOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + ReceiveQueues=1 + ReceiveQueues=100 + ReceiveQueues=1024 + ReceiveQueues=4096 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + ReceiveQueues=0 + ReceiveQueues=4097 + ReceiveQueues=5000 + ReceiveQueues=-1 + ReceiveQueues=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + ReceiveQueues=1 + ReceiveQueues=4096 + ReceiveQueues=0 + ReceiveQueues=4097 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseServiceRestartModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseServiceRestartModeOptionValueTest.kt new file mode 100644 index 00000000..c0ebffdd --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseServiceRestartModeOptionValueTest.kt @@ -0,0 +1,103 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseServiceRestartModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Service] + RestartMode=normal + RestartMode=direct + RestartMode=debug + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Service] + RestartMode=invalid + RestartMode=auto + RestartMode=restart + RestartMode=immediate + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testValidNormalMode() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Service] + RestartMode=normal + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidDirectMode() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Service] + RestartMode=direct + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidDebugMode() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Service] + RestartMode=debug + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseSocketDeferTriggerOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseSocketDeferTriggerOptionValueTest.kt new file mode 100644 index 00000000..4cd956bc --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseSocketDeferTriggerOptionValueTest.kt @@ -0,0 +1,72 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseSocketDeferTriggerOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Socket] + DeferTrigger=yes + DeferTrigger=no + DeferTrigger=true + DeferTrigger=false + DeferTrigger=1 + DeferTrigger=0 + DeferTrigger=on + DeferTrigger=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.socket", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidPatientValue() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Socket] + DeferTrigger=patient + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.socket", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Socket] + DeferTrigger=invalid + DeferTrigger=maybe + DeferTrigger=2 + DeferTrigger=Patient + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.socket", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseSrIovNumVfsOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseSrIovNumVfsOptionValueTest.kt new file mode 100644 index 00000000..54753ca9 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseSrIovNumVfsOptionValueTest.kt @@ -0,0 +1,50 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseSrIovNumVfsOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + SR-IOVVirtualFunctions=0 + SR-IOVVirtualFunctions=1 + SR-IOVVirtualFunctions=100 + SR-IOVVirtualFunctions=2147483647 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + SR-IOVVirtualFunctions=2147483648 + SR-IOVVirtualFunctions=-1 + SR-IOVVirtualFunctions=abc + SR-IOVVirtualFunctions=1.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseSwapPriorityOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseSwapPriorityOptionValueTest.kt new file mode 100644 index 00000000..5534e299 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseSwapPriorityOptionValueTest.kt @@ -0,0 +1,71 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseSwapPriorityOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + Priority=-1 + Priority=0 + Priority=100 + Priority=32767 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + Priority=-2 + Priority=-100 + Priority=32768 + Priority=100000 + Priority=invalid + Priority=1.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } + + @Test + fun testEdgeCases() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Swap] + Priority=-1 + Priority=32767 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.swap", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTcpWindowOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTcpWindowOptionValueTest.kt new file mode 100644 index 00000000..18efbb46 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTcpWindowOptionValueTest.kt @@ -0,0 +1,71 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseTcpWindowOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + InitialAdvertisedReceiveWindow=1 + InitialAdvertisedReceiveWindow=500 + InitialAdvertisedReceiveWindow=1023 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + InitialAdvertisedReceiveWindow=0 + InitialAdvertisedReceiveWindow=1024 + InitialAdvertisedReceiveWindow=2000 + InitialAdvertisedReceiveWindow=-1 + InitialAdvertisedReceiveWindow=abc + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [DHCPv4] + InitialAdvertisedReceiveWindow=1 + InitialAdvertisedReceiveWindow=1023 + InitialAdvertisedReceiveWindow=0 + InitialAdvertisedReceiveWindow=1024 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(2, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTimezoneModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTimezoneModeOptionValueTest.kt new file mode 100644 index 00000000..20002bea --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTimezoneModeOptionValueTest.kt @@ -0,0 +1,49 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseTimezoneModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Exec] + Timezone=off + Timezone=copy + Timezone=bind + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Exec] + Timezone=invalid + Timezone=on + Timezone=unbind + Timezone=auto + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTunnelModeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTunnelModeOptionValueTest.kt new file mode 100644 index 00000000..182eae78 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTunnelModeOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseTunnelModeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + Mode=any + Mode=ipip + Mode=ip6ip + Mode=ipip6 + Mode=ip6ip6 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Tunnel] + Mode=gre + Mode=sit + Mode=invalid + Mode=ip4ip4 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} \ No newline at end of file diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTxqueuelenOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTxqueuelenOptionValueTest.kt new file mode 100644 index 00000000..974fea59 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseTxqueuelenOptionValueTest.kt @@ -0,0 +1,71 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseTxqueuelenOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + TransmitQueueLength=0 + TransmitQueueLength=1 + TransmitQueueLength=100 + TransmitQueueLength=1000 + TransmitQueueLength=4294967294 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + TransmitQueueLength=4294967295 + TransmitQueueLength=4294967296 + TransmitQueueLength=-1 + TransmitQueueLength=abc + TransmitQueueLength=1.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Link] + TransmitQueueLength=4294967294 + TransmitQueueLength=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.link", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUnitConditionStringOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUnitConditionStringOptionValueTest.kt new file mode 100644 index 00000000..aaac854b --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUnitConditionStringOptionValueTest.kt @@ -0,0 +1,154 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseUnitConditionStringOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + ConditionFirstBoot=yes + ConditionFirstBoot=no + ConditionFirstBoot=true + ConditionFirstBoot=false + ConditionFirstBoot=1 + ConditionFirstBoot=0 + ConditionFirstBoot=on + ConditionFirstBoot=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidWithNegatePrefix() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + ConditionFirstBoot=!yes + ConditionFirstBoot=!no + ConditionFirstBoot=! yes + ConditionFirstBoot=! no + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidWithTriggerPrefix() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + ConditionFirstBoot=|yes + ConditionFirstBoot=|no + ConditionFirstBoot=| yes + ConditionFirstBoot=| no + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidWithBothPrefixes() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + ConditionFirstBoot=|!yes + ConditionFirstBoot=| !no + ConditionFirstBoot=| ! yes + ConditionFirstBoot=| ! no + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidNonBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + ConditionFirstBoot=maybe + ConditionFirstBoot=2 + ConditionFirstBoot=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } + + @Test + fun testInvalidPrefixWithoutValue() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + ConditionFirstBoot=| + ConditionFirstBoot=! + ConditionFirstBoot=|! + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(3, highlights) + } + + @Test + fun testInvalidReversedPrefixes() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Unit] + ConditionFirstBoot=!|yes + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.service", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(1, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUseDomainsOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUseDomainsOptionValueTest.kt new file mode 100644 index 00000000..6ee78e39 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUseDomainsOptionValueTest.kt @@ -0,0 +1,77 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseUseDomainsOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + UseDomains=yes + UseDomains=no + UseDomains=true + UseDomains=false + UseDomains=1 + UseDomains=0 + UseDomains=on + UseDomains=off + UseDomains=y + UseDomains=n + UseDomains=t + UseDomains=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidRouteValue() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + UseDomains=route + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Network] + UseDomains=maybe + UseDomains=routing + UseDomains=2 + UseDomains=yesno + UseDomains=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.network", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUsernsChownOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUsernsChownOptionValueTest.kt new file mode 100644 index 00000000..38d0b32c --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUsernsChownOptionValueTest.kt @@ -0,0 +1,76 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseUsernsChownOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidBooleanTrueValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Files] + PrivateUsersChown=1 + PrivateUsersChown=yes + PrivateUsersChown=y + PrivateUsersChown=true + PrivateUsersChown=t + PrivateUsersChown=on + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBooleanFalseValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Files] + PrivateUsersChown=0 + PrivateUsersChown=no + PrivateUsersChown=n + PrivateUsersChown=false + PrivateUsersChown=f + PrivateUsersChown=off + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Files] + PrivateUsersChown=maybe + PrivateUsersChown=2 + PrivateUsersChown=enabled + PrivateUsersChown=disabled + PrivateUsersChown=chown + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUsernsOwnershipOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUsernsOwnershipOptionValueTest.kt new file mode 100644 index 00000000..b1f5c778 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseUsernsOwnershipOptionValueTest.kt @@ -0,0 +1,77 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseUsernsOwnershipOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidEnumValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Files] + PrivateUsersOwnership=off + PrivateUsersOwnership=chown + PrivateUsersOwnership=map + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testValidBooleanValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Files] + PrivateUsersOwnership=yes + PrivateUsersOwnership=no + PrivateUsersOwnership=true + PrivateUsersOwnership=false + PrivateUsersOwnership=on + PrivateUsersOwnership=1 + PrivateUsersOwnership=0 + PrivateUsersOwnership=y + PrivateUsersOwnership=n + PrivateUsersOwnership=t + PrivateUsersOwnership=f + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [Files] + PrivateUsersOwnership=invalid + PrivateUsersOwnership=auto + PrivateUsersOwnership=chmod + PrivateUsersOwnership=own + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.nspawn", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseVxlanTtlOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseVxlanTtlOptionValueTest.kt new file mode 100644 index 00000000..21a4cf5c --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseVxlanTtlOptionValueTest.kt @@ -0,0 +1,53 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseVxlanTtlOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [VXLAN] + TTL=inherit + TTL=0 + TTL=1 + TTL=128 + TTL=255 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [VXLAN] + TTL=256 + TTL=300 + TTL=-1 + TTL=Inherit + TTL=INHERIT + TTL=yes + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(6, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardKeepaliveOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardKeepaliveOptionValueTest.kt new file mode 100644 index 00000000..5c2c18dd --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardKeepaliveOptionValueTest.kt @@ -0,0 +1,72 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseWireguardKeepaliveOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuardPeer] + PersistentKeepalive=off + PersistentKeepalive=0 + PersistentKeepalive=1 + PersistentKeepalive=25 + PersistentKeepalive=1000 + PersistentKeepalive=65535 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuardPeer] + PersistentKeepalive=65536 + PersistentKeepalive=-1 + PersistentKeepalive=disabled + PersistentKeepalive=100000 + PersistentKeepalive=yes + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(5, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuardPeer] + PersistentKeepalive=0 + PersistentKeepalive=65535 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardListenPortOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardListenPortOptionValueTest.kt new file mode 100644 index 00000000..33c7ff28 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardListenPortOptionValueTest.kt @@ -0,0 +1,54 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseWireguardListenPortOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuard] + ListenPort=auto + ListenPort=1 + ListenPort=80 + ListenPort=8080 + ListenPort=65535 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuard] + ListenPort=0 + ListenPort=65536 + ListenPort=99999 + ListenPort=-1 + ListenPort=Auto + ListenPort=AUTO + ListenPort=invalid + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(7, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardPeerRoutePriorityOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardPeerRoutePriorityOptionValueTest.kt new file mode 100644 index 00000000..3e66e198 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardPeerRoutePriorityOptionValueTest.kt @@ -0,0 +1,69 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseWireguardPeerRoutePriorityOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuardPeer] + RouteMetric=0 + RouteMetric=100 + RouteMetric=1000 + RouteMetric=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuardPeer] + RouteMetric=4294967296 + RouteMetric=-1 + RouteMetric=abc + RouteMetric=10.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } + + @Test + fun testBoundaryValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuardPeer] + RouteMetric=0 + RouteMetric=4294967295 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardRoutePriorityOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardRoutePriorityOptionValueTest.kt new file mode 100644 index 00000000..6ee28595 --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWireguardRoutePriorityOptionValueTest.kt @@ -0,0 +1,51 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseWireguardRoutePriorityOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuard] + RouteMetric=0 + RouteMetric=1024 + RouteMetric=100 + RouteMetric=4294967295 + RouteMetric=2147483647 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WireGuard] + RouteMetric=-1 + RouteMetric=4294967296 + RouteMetric=not_a_number + RouteMetric=10.5 + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +} diff --git a/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWlanIftypeOptionValueTest.kt b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWlanIftypeOptionValueTest.kt new file mode 100644 index 00000000..3f90073f --- /dev/null +++ b/src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/ai/ConfigParseWlanIftypeOptionValueTest.kt @@ -0,0 +1,58 @@ +package net.sjrx.intellij.plugins.systemdunitfiles.inspections.ai + +import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest +import net.sjrx.intellij.plugins.systemdunitfiles.inspections.InvalidValueInspection +import org.junit.Test + +class ConfigParseWlanIftypeOptionValueTest : AbstractUnitFileTest() { + + @Test + fun testValidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WLAN] + Type=ad-hoc + Type=station + Type=ap + Type=ap-vlan + Type=wds + Type=monitor + Type=mesh-point + Type=p2p-client + Type=p2p-go + Type=p2p-device + Type=ocb + Type=nan + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(0, highlights) + } + + @Test + fun testInvalidValues() { + // Fixture Setup + // language="unit file (systemd)" + val file = """ + [WLAN] + Type=invalid + Type=managed + Type=adhoc + Type=p2p + """.trimIndent() + + // Execute SUT + setupFileInEditor("file.netdev", file) + enableInspection(InvalidValueInspection::class.java) + val highlights = myFixture.doHighlighting() + + // Verification + assertSize(4, highlights) + } +}