示例#1
0
        public void TestMethodRouting()
        {
            var client = new Mock <IMqttClient>();

            client.Setup(client => client.SubscribeAsync(It.IsAny <MqttClientSubscribeOptions>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(new MqttClientSubscribeResult()
            {
                Items =
                {
                    new MqttClientSubscribeResultItem(new TopicFilter(), MqttClientSubscribeResultCode.GrantedQoS0)
                }
            }));

            var mqtt = new MqttClientService("qwerty", client.Object);

            bool didCall = false;

            mqtt.Subscribe("a/b/c", (MqttClientService.NotificationMessage message) =>
            {
                didCall = true;
                return(null);
            }).Wait();

            var payload = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(new[] { "test" }));

            mqtt.HandleApplicationMessageReceivedAsync(new MqttApplicationMessageReceivedEventArgs("qwerty",
                                                                                                   new MqttApplicationMessage()
            {
                Payload = payload, Topic = "a/b/c"
            })).Wait();

            Assert.That(didCall);
        }
示例#2
0
        public void TestSubscribe()
        {
            var client = new Mock <IMqttClient>();

            client.Setup(client => client.SubscribeAsync(It.IsAny <MqttClientSubscribeOptions>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(new MqttClientSubscribeResult()
            {
                Items =
                {
                    new MqttClientSubscribeResultItem(new TopicFilter(), MqttClientSubscribeResultCode.GrantedQoS0)
                }
            }));

            var mqtt = new MqttClientService("qwerty", client.Object);

            mqtt.Subscribe("a/b/c", (MqttClientService.NotificationMessage message) =>
            {
                return(null);
            });

            client.Verify(client => client.SubscribeAsync(It.IsAny <MqttClientSubscribeOptions>(), It.IsAny <CancellationToken>()));
        }
示例#3
0
        public void TestParameterSpreadTooManyArguments()
        {
            var client = new Mock <IMqttClient>();

            client.Setup(client => client.SubscribeAsync(It.IsAny <MqttClientSubscribeOptions>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(new MqttClientSubscribeResult()
            {
                Items =
                {
                    new MqttClientSubscribeResultItem(new TopicFilter(), MqttClientSubscribeResultCode.GrantedQoS0)
                }
            }));

            var mqtt = new MqttClientService("qwerty", client.Object);

            var mock = new Mock <IMockCapability>();

            mock.Setup(cap =>
                       cap.MethodB(It.IsAny <string>(),
                                   It.IsAny <string>(),
                                   It.IsAny <int>()));

            var methodInfo = typeof(IMockCapability).GetMethod(nameof(IMockCapability.MethodB));

            Assume.That(methodInfo, Is.Not.Null);

            mqtt.Subscribe("a/b/c", methodInfo, mock.Object).Wait();

            var payload = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(new object[] { "test", "test", "42", "testytest" }));

            mqtt.HandleApplicationMessageReceivedAsync(new MqttApplicationMessageReceivedEventArgs("qwerty",
                                                                                                   new MqttApplicationMessage()
            {
                Payload = payload, Topic = "a/b/c"
            })).Wait();

            mock.Verify(cap =>
                        cap.MethodB(It.Is <string>(s => s == "test"),
                                    It.Is <string>(s => s == "test"),
                                    It.Is <int>(s => s == 42)));
        }