// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. // using System; using System.Threading.Tasks; using Microsoft.SqlTools.Hosting.Protocol; using Microsoft.SqlTools.Hosting.Protocol.Channel; using Microsoft.SqlTools.Hosting.Protocol.Contracts; using Moq; using Xunit; namespace Microsoft.SqlTools.ServiceLayer.UnitTests.Messaging { public class MessageDispatcherTests { [Fact] public void SetRequestHandlerWithOverrideTest() { RequestType requestType = RequestType.Create("test/requestType"); var dispatcher = new MessageDispatcher(new Mock().Object); dispatcher.SetRequestHandler( requestType, (i, j) => { return Task.FromResult(0); }, true); Assert.True(dispatcher.requestHandlers.Count > 0); } [Fact] public void SetEventHandlerTest() { EventType eventType = EventType.Create("test/eventType"); var dispatcher = new MessageDispatcher(new Mock().Object); dispatcher.SetEventHandler( eventType, (i, j) => { return Task.FromResult(0); }); Assert.True(dispatcher.eventHandlers.Count > 0); } [Fact] public void SetEventHandlerWithOverrideTest() { EventType eventType = EventType.Create("test/eventType"); var dispatcher = new MessageDispatcher(new Mock().Object); dispatcher.SetEventHandler( eventType, (i, j) => { return Task.FromResult(0); }, true); Assert.True(dispatcher.eventHandlers.Count > 0); } [Fact] public void OnListenTaskCompletedFaultedTaskTest() { Task t = null; try { t = Task.Run(() => { throw new Exception(); }); t.Wait(); } catch { } finally { bool handlerCalled = false; var dispatcher = new MessageDispatcher(new Mock().Object); dispatcher.UnhandledException += (s, e) => handlerCalled = true; dispatcher.OnListenTaskCompleted(t); Assert.True(handlerCalled); } } } }