public static EntityStatus ConvertState(ServiceBusMessageState state)
        {
            switch (state)
            {
            case ServiceBusMessageState.Active:
                return(EntityStatus.Active);

            case ServiceBusMessageState.Disabled:
                return(EntityStatus.Disabled);

            case ServiceBusMessageState.ReceiveDisabled:
                return(EntityStatus.ReceiveDisabled);

            case ServiceBusMessageState.Restoring:
                return(EntityStatus.Restoring);

            case ServiceBusMessageState.SendDisabled:
                return(EntityStatus.SendDisabled);

            default:
                return(EntityStatus.Disabled);
            }
        }
        /// <summary>
        /// Creates a new ServiceBusReceivedMessage instance for mocking.
        /// </summary>
        public static ServiceBusReceivedMessage ServiceBusReceivedMessage(
            BinaryData body         = default,
            string messageId        = default,
            string partitionKey     = default,
            string viaPartitionKey  = default,
            string sessionId        = default,
            string replyToSessionId = default,
            TimeSpan timeToLive     = default,
            string correlationId    = default,
            string subject          = default,
            string to          = default,
            string contentType = default,
            string replyTo     = default,
            DateTimeOffset scheduledEnqueueTime     = default,
            IDictionary <string, object> properties = default,
            Guid lockTokenGuid          = default,
            int deliveryCount           = default,
            DateTimeOffset lockedUntil  = default,
            long sequenceNumber         = -1,
            string deadLetterSource     = default,
            long enqueuedSequenceNumber = default,
            DateTimeOffset enqueuedTime = default,
            ServiceBusMessageState serviceBusMessageState = default)
        {
            var amqpMessage = new AmqpAnnotatedMessage(new AmqpMessageBody(new ReadOnlyMemory <byte>[] { body }));

            if (correlationId != default)
            {
                amqpMessage.Properties.CorrelationId = new AmqpMessageId(correlationId);
            }
            amqpMessage.Properties.Subject = subject;
            if (to != default)
            {
                amqpMessage.Properties.To = new AmqpAddress(to);
            }
            amqpMessage.Properties.ContentType = contentType;
            if (replyTo != default)
            {
                amqpMessage.Properties.ReplyTo = new AmqpAddress(replyTo);
            }
            amqpMessage.MessageAnnotations[AmqpMessageConstants.ScheduledEnqueueTimeUtcName] = scheduledEnqueueTime.UtcDateTime;

            if (messageId != default)
            {
                amqpMessage.Properties.MessageId = new AmqpMessageId(messageId);
            }
            if (partitionKey != default)
            {
                amqpMessage.MessageAnnotations[AmqpMessageConstants.PartitionKeyName] = partitionKey;
            }
            if (viaPartitionKey != default)
            {
                amqpMessage.MessageAnnotations[AmqpMessageConstants.ViaPartitionKeyName] = viaPartitionKey;
            }
            if (sessionId != default)
            {
                amqpMessage.Properties.GroupId = sessionId;
            }
            if (replyToSessionId != default)
            {
                amqpMessage.Properties.ReplyToGroupId = replyToSessionId;
            }
            if (timeToLive != default)
            {
                amqpMessage.Header.TimeToLive = timeToLive;
            }
            if (properties != default)
            {
                foreach (KeyValuePair <string, object> kvp in properties)
                {
                    amqpMessage.ApplicationProperties.Add(kvp);
                }
            }
            amqpMessage.Header.DeliveryCount = (uint)deliveryCount;
            amqpMessage.MessageAnnotations[AmqpMessageConstants.LockedUntilName]           = lockedUntil.UtcDateTime;
            amqpMessage.MessageAnnotations[AmqpMessageConstants.SequenceNumberName]        = sequenceNumber;
            amqpMessage.MessageAnnotations[AmqpMessageConstants.DeadLetterSourceName]      = deadLetterSource;
            amqpMessage.MessageAnnotations[AmqpMessageConstants.EnqueueSequenceNumberName] = enqueuedSequenceNumber;
            amqpMessage.MessageAnnotations[AmqpMessageConstants.EnqueuedTimeUtcName]       = enqueuedTime.UtcDateTime;
            amqpMessage.MessageAnnotations[AmqpMessageConstants.MessageStateName]          = serviceBusMessageState;

            return(new ServiceBusReceivedMessage(amqpMessage)
            {
                LockTokenGuid = lockTokenGuid,
            });
        }