< Summary

Class:Azure.Messaging.ServiceBus.Management.CreateRuleOptions
Assembly:Azure.Messaging.ServiceBus
File(s):C:\Git\azure-sdk-for-net\sdk\servicebus\Azure.Messaging.ServiceBus\src\Management\Rules\CreateRuleOptions.cs
Covered lines:23
Uncovered lines:16
Coverable lines:39
Total lines:165
Line coverage:58.9% (23 of 39)
Covered branches:11
Total branches:30
Branch coverage:36.6% (11 of 30)

Metrics

MethodCyclomatic complexity Line coverage Branch coverage
.ctor()-100%100%
.ctor(...)-0%100%
.ctor(...)-100%100%
.ctor(...)-100%75%
get_Filter()-100%100%
set_Filter(...)-100%100%
get_Action()-100%100%
get_Name()-100%100%
get_CreatedAt()-0%100%
GetHashCode()-0%0%
Equals(...)-0%100%
Equals(...)-83.33%66.67%
op_Equality(...)-0%0%
op_Inequality(...)-0%100%

File(s)

C:\Git\azure-sdk-for-net\sdk\servicebus\Azure.Messaging.ServiceBus\src\Management\Rules\CreateRuleOptions.cs

#LineLine coverage
 1// Copyright (c) Microsoft Corporation. All rights reserved.
 2// Licensed under the MIT License.
 3
 4using System;
 5using Azure.Core;
 6
 7namespace Azure.Messaging.ServiceBus.Management
 8{
 9    /// <summary>
 10    /// Represents the set of options that can be specified for the creation of a rule.
 11    /// </summary>
 12    public sealed class CreateRuleOptions : IEquatable<CreateRuleOptions>
 13    {
 14        /// <summary>
 15        /// Gets the name of the default rule on the subscription.
 16        /// </summary>
 17        /// <remarks>
 18        /// Whenever a new subscription is created, a default rule is always added.
 19        /// The default rule is a <see cref="TrueRuleFilter"/> which will enable all messages in the topic to reach subs
 20        /// </remarks>
 21        public const string DefaultRuleName = "$Default";
 22        private RuleFilter _filter;
 23
 24        /// <summary>
 25        /// Initializes a new instance of the <see cref="CreateRuleOptions" /> class with default values.
 26        /// </summary>
 27        public CreateRuleOptions()
 3628            : this(DefaultRuleName, TrueRuleFilter.Default)
 29        {
 3630        }
 31
 32        /// <summary>
 33        /// Initializes a new instance of the <see cref="CreateRuleOptions" /> class with the specified name.
 34        /// </summary>
 35        public CreateRuleOptions(string name)
 036            : this(name, TrueRuleFilter.Default)
 37        {
 038        }
 39
 40        /// <summary>
 41        /// Initializes a new instance of the <see cref="CreateRuleOptions" /> class with the specified name and filter 
 42        /// </summary>
 43        /// <param name="name"></param>
 44        /// <param name="filter">The filter expression used to match messages.</param>
 4445        public CreateRuleOptions(string name, RuleFilter filter)
 46        {
 4447            Argument.AssertNotNull(filter, nameof(filter));
 4448            Filter = filter;
 4449            Name = name;
 4450        }
 51
 52        /// <summary>
 53        /// Initializes a new instance of <see cref="CreateRuleOptions"/> based on the
 54        /// specified <see cref="RuleProperties"/> instance. This is useful for creating a new rule based
 55        /// on the properties of an existing rule.
 56        /// </summary>
 57        /// <param name="rule">Existing rule to create options from.</param>
 2458        public CreateRuleOptions(RuleProperties rule)
 59        {
 2460            Filter = rule.Filter?.Clone();
 2461            Action = rule.Action?.Clone();
 2462            Name = rule.Name;
 2463        }
 64
 65        /// <summary>
 66        /// Gets or sets the filter expression used to match messages.
 67        /// </summary>
 68        /// <value>The filter expression used to match messages.</value>
 69        /// <exception cref="System.ArgumentNullException">null (Nothing in Visual Basic) is assigned.</exception>
 70        public RuleFilter Filter
 71        {
 11672            get => _filter;
 73
 74            set
 75            {
 8076                Argument.AssertNotNull(value, nameof(Filter));
 8077                _filter = value;
 8078            }
 79        }
 80
 81        /// <summary>
 82        /// Gets or sets the action to perform if the message satisfies the filtering expression.
 83        /// </summary>
 84        /// <value>The action to perform if the message satisfies the filtering expression.</value>
 11685        public RuleAction Action { get; set; }
 86
 87        /// <summary>
 88        /// Gets or sets the name of the rule.
 89        /// </summary>
 90        /// <value>Returns a <see cref="System.String" /> Representing the name of the rule.</value>
 91        /// <remarks>Max allowed length of rule name is 50 chars.</remarks>
 18092        public string Name { get; set; }
 93
 94        // TODO: Implement for AMQP
 95        internal DateTime CreatedAt
 96        {
 097            get; set;
 98        }
 99
 100        /// <inheritdoc/>
 101        public override int GetHashCode()
 102        {
 0103            int hash = 13;
 104            unchecked
 105            {
 0106                hash = (hash * 7) + _filter?.GetHashCode() ?? 0;
 0107                hash = (hash * 7) + Action?.GetHashCode() ?? 0;
 108            }
 0109            return hash;
 110        }
 111
 112        /// <inheritdoc/>
 113        public override bool Equals(object obj)
 114        {
 0115            var other = obj as CreateRuleOptions;
 0116            return Equals(other);
 117        }
 118
 119        /// <inheritdoc/>
 120        public bool Equals(CreateRuleOptions other)
 121        {
 24122            if (other is CreateRuleOptions otherOptions
 24123                && string.Equals(Name, otherOptions.Name, StringComparison.OrdinalIgnoreCase)
 24124                && (Filter == null || Filter.Equals(otherOptions.Filter))
 24125                && (Action == null || Action.Equals(otherOptions.Action)))
 126            {
 24127                return true;
 128            }
 129
 0130            return false;
 131        }
 132
 133        /// <summary>
 134        ///
 135        /// </summary>
 136        /// <param name="left"></param>
 137        /// <param name="right"></param>
 138        /// <returns></returns>
 139        public static bool operator ==(CreateRuleOptions left, CreateRuleOptions right)
 140        {
 0141            if (ReferenceEquals(left, right))
 142            {
 0143                return true;
 144            }
 145
 0146            if (ReferenceEquals(left, null) || ReferenceEquals(right, null))
 147            {
 0148                return false;
 149            }
 150
 0151            return left.Equals(right);
 152        }
 153
 154        /// <summary>
 155        ///
 156        /// </summary>
 157        /// <param name="left"></param>
 158        /// <param name="right"></param>
 159        /// <returns></returns>
 160        public static bool operator !=(CreateRuleOptions left, CreateRuleOptions right)
 161        {
 0162            return !(left == right);
 163        }
 164    }
 165}