public void OnMessageAsync(Func <IBrokeredMessage, Task> onMessageAsync, IOnMessageOptions options) { if (onMessageAsync == null) { throw new ArgumentNullException(nameof(onMessageAsync)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } // For now, assume the only implementation is the wrapper type. if (!(options is OnMessageOptionsWrapper optionsWrapper)) { throw new ArgumentException( $"Options must be of type {nameof(OnMessageOptionsWrapper)}", nameof(options)); } var onMessageOptions = optionsWrapper.GetOptions(); onMessageOptions.ExceptionReceived += OnMessageException; _client.OnMessageAsync( CreateOnMessageAsyncCallback(onMessageAsync), onMessageOptions); }
public void PassesMaxConcurrentCallsFurther() { IOnMessageOptions capturedOptions = null; _client .Setup(c => c.OnMessageAsync(It.IsAny <Func <IBrokeredMessage, Task> >(), It.IsAny <IOnMessageOptions>())) .Callback <Func <IBrokeredMessage, Task>, IOnMessageOptions>((_, opt) => capturedOptions = opt); const int expectedConcurrentCalls = 42; _target.Start(expectedConcurrentCalls); _client .Verify(c => c.OnMessageAsync(It.IsAny <Func <IBrokeredMessage, Task> >(), It.IsAny <IOnMessageOptions>()), Times.Once); Assert.NotNull(capturedOptions); Assert.Equal(expectedConcurrentCalls, capturedOptions.MaxConcurrentCalls); }