Example #1
0
        public async Task <DeviceCapabilityDescriptor> RegisterCapability(ICapability capability)
        {
            var descriptor = CapabilityDescriber.Describe(capability);

            foreach (var action in descriptor.Actions)
            {
                action.MqttTopic = $"action/+/{_mqttClientService.DeviceId}/{capability.CapabilityId}/{action.Name}";
                if (!await _mqttClientService.Subscribe(
                        action.MqttTopic,
                        action.Method,
                        capability))
                {
                    //TODO: Failure to subscribe??
                }
            }

            foreach (var property in descriptor.Properties)
            {
                property.MqttTopic = $"value/+/{_mqttClientService.DeviceId}/{capability.CapabilityId}/{property.Name}";

                if (!await _mqttClientService.Subscribe(
                        property.MqttTopic,
                        property.Property.GetMethod,
                        capability))
                //TODO: What about set method?
                {
                    //TODO: fialure
                }
            }
            //TODO: Register events

            return(descriptor);
        }
Example #2
0
        public void TestPropertyCapabilityDescriber()
        {
            var capability = new Mock <IPropertyMockCapability>();
            var descriptor = CapabilityDescriber.Describe(capability.Object);

            Assert.That(descriptor.Actions, Is.Empty);
            Assert.That(descriptor.Properties, Has.Length.EqualTo(2));
        }
Example #3
0
        public void TestCapabilityBTypesDescriber()
        {
            var capability = new Mock <IActionBMockCapability>();
            var descriptor = CapabilityDescriber.Describe(capability.Object);

            Assume.That(descriptor.Actions, Has.Length.EqualTo(1));

            Assert.That(descriptor.Actions.First().Method, Is.Not.Null);
            Assert.That(descriptor.Actions.First().Name, Is.EqualTo(nameof(IActionBMockCapability.Foo)));
            Assert.That(descriptor.Actions.First().TypeName, Is.EqualTo("String"));
            Assert.That(descriptor.Actions.First().Parameters, Is.Empty);
        }
Example #4
0
        public void TestEmptyCapabilityDescriber()
        {
            var capability = new Mock <ICapability>();

            capability.SetupGet(capability => capability.CapabilityId).Returns("MyCapability");
            capability.SetupGet(capability => capability.CapabilityTypeId).Returns("MyCapabilityType");

            var descriptor = CapabilityDescriber.Describe(capability.Object);

            Assert.That(descriptor.CapabilityId, Is.EqualTo("MyCapability"));
            Assert.That(descriptor.CapabilityTypeId, Is.EqualTo("MyCapabilityType"));
            Assert.That(descriptor.Actions, Is.Empty);
            Assert.That(descriptor.Properties, Is.Empty);
        }