public async void TestInterpretingWithHandler()
        {
            var moqChannel = new Mock <ILubalaChannel>();

            moqChannel.SetupGet(c => c.Resolver).Returns(TypeResolver.Resolver);

            var builder = new HubBuilder(moqChannel.Object);

            var moqPassive = new Mock <IPassiveMessage>();

            moqPassive
            .Setup(x => x.SerializeTo(It.IsAny <Stream>(), It.IsAny <HubContext>()))
            .Returns(new Task(() => { }));

            builder.RegisterMessageType <TestTextMessage>();
            builder.RegisterMessageHandler(typeof(TestTextMessage), new TestTextHandler());

            var ph = builder.BuildPushingHub();

            using (var t = StringStream.Create(testXml))
            {
                using (var fakeTargetStream = new MemoryStream())
                {
                    await ph.InterpretingAsync(t.Stream, fakeTargetStream, null);

                    fakeTargetStream.Position = 0;
                    using (var reader = new StreamReader(fakeTargetStream))
                    {
                        var result = reader.ReadToEnd();
                        Assert.Equal(result, "");
                    }
                    moqPassive.Verify(x => x.SerializeTo(It.IsAny <Stream>(), It.IsAny <HubContext>()), Times.Never);
                }
            }
        }
        public static IPushingHub CreatePushingHub(this ILubalaChannel channel, Action <IHubBuilder> configurer)
        {
            Log.Logger.Debug("creating pushing hub.");
            var builder = new HubBuilder(channel);

            configurer(builder);

            var pushingHub = builder.BuildPushingHub();

            Log.Logger.Debug("creating pushing hub done.");
            return(pushingHub);
        }
        public void TestRegisterMessageType()
        {
            var moqChannel = new Mock <ILubalaChannel>();

            moqChannel.SetupGet(c => c.Resolver).Returns(TypeResolver.Resolver);

            var builder = new HubBuilder(moqChannel.Object);

            Assert.Throws <InvalidOperationException>(() =>
            {
                builder.RegisterMessageType <FakeMessage>();
            });
        }
        public void TestRegisterMessageHandler()
        {
            var moqChannel = new Mock <ILubalaChannel>();

            moqChannel.SetupGet(c => c.Resolver).Returns(TypeResolver.Resolver);

            var builder = new HubBuilder(moqChannel.Object);

            Assert.Throws <ArgumentNullException>(() =>
            {
                builder.RegisterMessageHandler(typeof(FakeMessage), null);
            });

            var moqHandler = new Mock <IMessageHandler>();

            builder.RegisterMessageHandler(typeof(FakeMessage), moqHandler.Object);

            builder.BuildPushingHub();
        }