示例#1
0
        public void TestAttachChannel_AttachesSuccessfuly()
        {
            // Arrange
            var       client = GetRealtimeClient();
            Semaphore signal = new Semaphore(0, 2);
            var       args   = new List <Realtime.ChannelStateChangedEventArgs>();

            Realtime.IRealtimeChannel target = client.Channels.Get("test");
            target.ChannelStateChanged += (s, e) =>
            {
                args.Add(e);
                signal.Release();
            };

            // Act
            target.Attach();

            // Assert
            signal.WaitOne(10000);
            args.Count.ShouldBeEquivalentTo(1);
            args[0].NewState.ShouldBeEquivalentTo(Realtime.ChannelState.Attaching);
            args[0].Reason.ShouldBeEquivalentTo(null);
            target.State.ShouldBeEquivalentTo(Realtime.ChannelState.Attaching);

            signal.WaitOne(10000);
            args.Count.ShouldBeEquivalentTo(2);
            args[1].NewState.ShouldBeEquivalentTo(Realtime.ChannelState.Attached);
            args[1].Reason.ShouldBeEquivalentTo(null);
            target.State.ShouldBeEquivalentTo(Realtime.ChannelState.Attached);
        }
示例#2
0
        public void TestAttachChannel_SendingMessage_EchoesItBack()
        {
            // Arrange
            var            client = GetRealtimeClient();
            AutoResetEvent signal = new AutoResetEvent(false);

            Realtime.IRealtimeChannel target = client.Channels.Get("test");
            target.Attach();
            List <Message> messagesReceived = new List <Message>();

            target.MessageReceived += (messages) =>
            {
                messagesReceived.AddRange(messages);
                signal.Set();
            };

            // Act
            target.Publish("test", "test data");
            signal.WaitOne(10000);

            // Assert
            messagesReceived.Count.ShouldBeEquivalentTo(1);
            messagesReceived[0].Name.ShouldBeEquivalentTo("test");
            messagesReceived[0].Data.ShouldBeEquivalentTo("test data");
        }
示例#3
0
        public void TestGetChannel_ReturnsValidChannel()
        {
            // Arrange
            var            client = GetRealtimeClient();
            AutoResetEvent signal = new AutoResetEvent(false);

            // Act
            Realtime.IRealtimeChannel target = client.Channels.Get("test");

            // Assert
            target.Name.ShouldBeEquivalentTo("test");
            target.State.ShouldBeEquivalentTo(Realtime.ChannelState.Initialised);
        }