public void RxTextTest() { //Setup var objWebSocketBehavior = Substitute.For <IWebSocketBehavior>(); var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>(); var objClient = new WebsocketSharp.Server.Client(objWebSocketBehavior, objKeepAliveMonitor); var objHandler = Substitute.For <EventHandler <byte[]> >(); var objEventArgs = Substitute.For <IMessageEventArgs>(); objEventArgs.IsBinary.Returns(false); objEventArgs.IsText.Returns(true); objEventArgs.IsPing.Returns(false); objEventArgs.Data.Returns("MyString"); objClient.Rx += objHandler; //Act objWebSocketBehavior.OnMessageReceived += Raise.Event <EventHandler <IMessageEventArgs> >(objClient, objEventArgs); //Assert var data = System.Text.Encoding.UTF32.GetBytes("MyString"); objHandler .Received(1) .Invoke( Arg.Is <IConnection.IConnection>(c => c.Equals(objClient)), Arg.Is <byte[]>(b => b.SequenceEqual(data)) ) ; }
public void DisconnectTest() { //Setup var objWebSocketBehavior = Substitute.For <IWebSocketBehavior>(); var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>(); var objClient = new WebsocketSharp.Server.Client(objWebSocketBehavior, objKeepAliveMonitor); var objHandler = Substitute.For <EventHandler <IConnection.IConnection> >(); objClient.Disconnected += objHandler; //Act objClient.Disconnect(); //Assert objKeepAliveMonitor.Received(1).TimeOut -= Arg.Any <EventHandler>(); objKeepAliveMonitor.Received(1).UnResponsive -= Arg.Any <EventHandler>(); objWebSocketBehavior.Received(1).OnCloseReceived -= Arg.Any <EventHandler <ICloseEventArgs> >(); objWebSocketBehavior.Received(1).OnErrorReceived -= Arg.Any <EventHandler <IErrorEventArgs> >(); objWebSocketBehavior.Received(1).OnMessageReceived -= Arg.Any <EventHandler <IMessageEventArgs> >(); objKeepAliveMonitor.Received(1).Stop(); objWebSocketBehavior.Received(1).Close(); objHandler .Received(1) .Invoke( Arg.Is <IConnection.IConnection>(c => c.Equals(objClient)), Arg.Is(objClient) ) ; }
public void TransmitTest() { //Setup var objWebSocketBehavior = Substitute.For <IWebSocketBehavior>(); var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>(); var objClient = new WebsocketSharp.Server.Client(objWebSocketBehavior, objKeepAliveMonitor); //Act objClient.Transmit(new byte[] { 1, 2, 3, 4 }); System.Threading.Thread.Sleep(50); // wait a bit, data is being transmitted to IWebSocketBehavior on a separate thread //Assert objWebSocketBehavior.Received(1).SendAsync(Arg.Is <byte[]>(b => b.SequenceEqual(new byte[] { 1, 2, 3, 4 }))); }
public void KeepAliveTimeOutPingOKTest() { //Arrange var objWebSocketBehavior = Substitute.For <IWebSocketBehavior>(); var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>(); var objClient = new WebsocketSharp.Server.Client(objWebSocketBehavior, objKeepAliveMonitor); objWebSocketBehavior.Ping().Returns(true); //Act objKeepAliveMonitor.TimeOut += Raise.EventWith(this, new EventArgs()); //Assert objKeepAliveMonitor.Received(1).StartCountDown(); objWebSocketBehavior.Received(1).Ping(); objKeepAliveMonitor.Received(1).Reset(); }
public void CreateTest() { //Setup var objWebSocketBehavior = Substitute.For <IWebSocketBehavior>(); var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>(); //Act var objClient = new WebsocketSharp.Server.Client(objWebSocketBehavior, objKeepAliveMonitor); //Assert objKeepAliveMonitor.Received(1).TimeOut += Arg.Any <EventHandler>(); objKeepAliveMonitor.Received(1).UnResponsive += Arg.Any <EventHandler>(); objWebSocketBehavior.Received(1).OnCloseReceived += Arg.Any <EventHandler <ICloseEventArgs> >(); objWebSocketBehavior.Received(1).OnErrorReceived += Arg.Any <EventHandler <IErrorEventArgs> >(); objWebSocketBehavior.Received(1).OnMessageReceived += Arg.Any <EventHandler <IMessageEventArgs> >(); objKeepAliveMonitor.Received(1).Start(); Assert.IsTrue(Guid.TryParse(objClient.ID, out Guid objGuid)); }
public void DisconnectedOnErrorTest() { //Setup var objWebSocketBehavior = Substitute.For <IWebSocketBehavior>(); var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>(); var objClient = new WebsocketSharp.Server.Client(objWebSocketBehavior, objKeepAliveMonitor); var objEventArgs = Substitute.For <IErrorEventArgs>(); var objHandler = Substitute.For <EventHandler <IConnection.IConnection> >(); objClient.Disconnected += objHandler; //Act objWebSocketBehavior.OnErrorReceived += Raise.Event <EventHandler <IErrorEventArgs> >(objClient, objEventArgs); //Assert objWebSocketBehavior.Received().OnCloseReceived -= Arg.Any <EventHandler <ICloseEventArgs> >(); objWebSocketBehavior.Received().OnErrorReceived -= Arg.Any <EventHandler <IErrorEventArgs> >(); objWebSocketBehavior.Received().OnMessageReceived -= Arg.Any <EventHandler <IMessageEventArgs> >(); objHandler .Received(1) .Invoke(Arg.Is(objClient), Arg.Is(objClient)); }
public void RxPingTest() { //Setup var objWebSocketBehavior = Substitute.For <IWebSocketBehavior>(); var objKeepAliveMonitor = Substitute.For <IKeepAliveMonitor>(); var objClient = new WebsocketSharp.Server.Client(objWebSocketBehavior, objKeepAliveMonitor); var objEventArgs = Substitute.For <IMessageEventArgs>(); objEventArgs.IsBinary.Returns(false); objEventArgs.IsText.Returns(false); objEventArgs.IsPing.Returns(true); var eventReceived = false; objClient.Rx += delegate(object sender, byte[] data) { eventReceived = true; }; //Act objWebSocketBehavior.OnMessageReceived += Raise.Event <EventHandler <IMessageEventArgs> >(objClient, objEventArgs); //Assert Assert.IsFalse(eventReceived, "Event received for ping while this should have been ignored"); }