< Summary

Class:Azure.Messaging.ServiceBus.Management.RuleProperties
Assembly:Azure.Messaging.ServiceBus
File(s):C:\Git\azure-sdk-for-net\sdk\servicebus\Azure.Messaging.ServiceBus\src\Management\Rules\RuleProperties.cs
Covered lines:28
Uncovered lines:11
Coverable lines:39
Total lines:156
Line coverage:71.7% (28 of 39)
Covered branches:12
Total branches:26
Branch coverage:46.1% (12 of 26)

Metrics

MethodCyclomatic complexity Line coverage Branch coverage
.ctor()-100%100%
.ctor(...)-0%100%
.ctor(...)-100%100%
.ctor(...)-100%100%
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%58.33%
op_Equality(...)-80%83.33%
op_Inequality(...)-100%100%

File(s)

C:\Git\azure-sdk-for-net\sdk\servicebus\Azure.Messaging.ServiceBus\src\Management\Rules\RuleProperties.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 properties of a rule.
 11    /// </summary>
 12    public sealed class RuleProperties : IEquatable<RuleProperties>
 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="RuleProperties" /> class with default values.
 26        /// </summary>
 27        public RuleProperties()
 4828            : this(DefaultRuleName, TrueRuleFilter.Default)
 29        {
 4830        }
 31
 32        /// <summary>
 33        /// Initializes a new instance of the <see cref="RuleProperties" /> class with the specified name.
 34        /// </summary>
 35        public RuleProperties(string name)
 036            : this(name, TrueRuleFilter.Default)
 37        {
 038        }
 39
 40        /// <summary>
 41        /// Initializes a new instance of the <see cref="RuleProperties" /> class with the specified name and filter exp
 42        /// </summary>
 43        /// <param name="name"></param>
 44        /// <param name="filter">The filter expression used to match messages.</param>
 4845        public RuleProperties(string name, RuleFilter filter)
 46        {
 4847            Argument.AssertNotNull(filter, nameof(filter));
 4848            Filter = filter;
 4849            Name = name;
 4850        }
 51
 4452        internal RuleProperties(CreateRuleOptions options)
 53        {
 4454            Filter = options.Filter;
 4455            Action = options.Action;
 4456            Name = options.Name;
 4457        }
 58
 59        /// <summary>
 60        /// Gets or sets the filter expression used to match messages.
 61        /// </summary>
 62        /// <value>The filter expression used to match messages.</value>
 63        /// <exception cref="System.ArgumentNullException">null (Nothing in Visual Basic) is assigned.</exception>
 64        public RuleFilter Filter
 65        {
 9666            get => _filter;
 67
 68            set
 69            {
 14070                Argument.AssertNotNull(value, nameof(Filter));
 14071                _filter = value;
 14072            }
 73        }
 74
 75        /// <summary>
 76        /// Gets or sets the action to perform if the message satisfies the filtering expression.
 77        /// </summary>
 78        /// <value>The action to perform if the message satisfies the filtering expression.</value>
 16879        public RuleAction Action { get; set; }
 80
 81        /// <summary>
 82        /// Gets or sets the name of the rule.
 83        /// </summary>
 84        /// <value>Returns a <see cref="System.String" /> Representing the name of the rule.</value>
 85        /// <remarks>Max allowed length of rule name is 50 chars.</remarks>
 24086        public string Name { get; internal set; }
 87
 88        // TODO: Implement for AMQP
 089        internal DateTime CreatedAt { get; set; }
 90
 91        /// <inheritdoc/>
 92        public override int GetHashCode()
 93        {
 094            int hash = 13;
 95            unchecked
 96            {
 097                hash = (hash * 7) + _filter?.GetHashCode() ?? 0;
 098                hash = (hash * 7) + Action?.GetHashCode() ?? 0;
 99            }
 0100            return hash;
 101        }
 102
 103        /// <inheritdoc/>
 104        public override bool Equals(object obj)
 105        {
 0106            var other = obj as RuleProperties;
 0107            return Equals(other);
 108        }
 109
 110        /// <inheritdoc/>
 111        public bool Equals(RuleProperties other)
 112        {
 4113            if (other is RuleProperties otherProperties
 4114                && string.Equals(Name, otherProperties.Name, StringComparison.OrdinalIgnoreCase)
 4115                && (Filter == null || Filter.Equals(otherProperties.Filter))
 4116                && (Action == null || Action.Equals(otherProperties.Action)))
 117            {
 4118                return true;
 119            }
 120
 0121            return false;
 122        }
 123
 124        /// <summary>
 125        ///
 126        /// </summary>
 127        /// <param name="left"></param>
 128        /// <param name="right"></param>
 129        /// <returns></returns>
 130        public static bool operator ==(RuleProperties left, RuleProperties right)
 131        {
 36132            if (ReferenceEquals(left, right))
 133            {
 8134                return true;
 135            }
 136
 28137            if (ReferenceEquals(left, null) || ReferenceEquals(right, null))
 138            {
 28139                return false;
 140            }
 141
 0142            return left.Equals(right);
 143        }
 144
 145        /// <summary>
 146        ///
 147        /// </summary>
 148        /// <param name="left"></param>
 149        /// <param name="right"></param>
 150        /// <returns></returns>
 151        public static bool operator !=(RuleProperties left, RuleProperties right)
 152        {
 36153            return !(left == right);
 154        }
 155    }
 156}