windows_firewall 0.7.0

A crate for managing Windows Firewall rules and settings.
Documentation
use windows_firewall::FirewallRule;

pub fn assert_firewall_rule_eq(actual: &FirewallRule, expected: &FirewallRule) {
    assert_eq!(actual.name(), expected.name(), "Rule name mismatch");
    assert_eq!(
        actual.direction(),
        expected.direction(),
        "Direction mismatch"
    );
    assert_eq!(
        actual.enabled(),
        expected.enabled(),
        "Enabled flag mismatch"
    );
    assert_eq!(actual.action(), expected.action(), "Action mismatch");

    if let Some(desc) = expected.description() {
        assert_eq!(
            actual.description(),
            &Some(desc.clone()),
            "Description mismatch"
        );
    }
    if let Some(app) = expected.application_name() {
        assert_eq!(
            actual.application_name(),
            &Some(app.clone()),
            "Application name mismatch"
        );
    }
    if let Some(service) = expected.service_name() {
        assert_eq!(
            actual.service_name(),
            &Some(service.clone()),
            "Service name mismatch"
        );
    }
    if let Some(protocol) = expected.protocol() {
        assert_eq!(actual.protocol(), &Some(*protocol), "Protocol mismatch");
    }
    if let Some(local_ports) = expected.local_ports() {
        assert_eq!(
            actual.local_ports(),
            &Some(local_ports.clone()),
            "Local ports mismatch"
        );
    }
    if let Some(remote_ports) = expected.remote_ports() {
        assert_eq!(
            actual.remote_ports(),
            &Some(remote_ports.clone()),
            "Remote ports mismatch"
        );
    }
    if let Some(local_addrs) = expected.local_addresses() {
        assert_eq!(
            actual.local_addresses(),
            &Some(local_addrs.clone()),
            "Local addresses mismatch"
        );
    }
    if let Some(remote_addrs) = expected.remote_addresses() {
        assert_eq!(
            actual.remote_addresses(),
            &Some(remote_addrs.clone()),
            "Remote addresses mismatch"
        );
    }
    if let Some(icmp) = expected.icmp_types_and_codes() {
        assert_eq!(
            actual.icmp_types_and_codes(),
            &Some(icmp.clone()),
            "ICMP types and codes mismatch"
        );
    }
    if let Some(interface) = expected.interfaces() {
        assert_eq!(
            actual.interfaces(),
            &Some(interface.clone()),
            "Interfaces mismatch"
        );
    }
    if let Some(interface_types) = expected.interface_types() {
        assert_eq!(
            actual.interface_types(),
            &Some(interface_types.clone()),
            "Interface types mismatch"
        );
    }
    if let Some(grouping) = expected.grouping() {
        assert_eq!(
            actual.grouping(),
            &Some(grouping.clone()),
            "Grouping mismatch"
        );
    }
    if let Some(profiles) = expected.profiles() {
        assert_eq!(actual.profiles(), &Some(*profiles), "Profiles mismatch");
    }
    if let Some(edge) = expected.edge_traversal() {
        assert_eq!(
            actual.edge_traversal(),
            &Some(*edge),
            "Edge traversal mismatch"
        );
    }
}