コード例 #1
0
        public async Task RemoveAllRadioChannelsAsync_Should_Not_Throw_ExceptionsAsync()
        {
            // Arrange
            var miioDevice  = new Mock <IMiioTransport>();
            var miioGateway = new MiioGateway(miioDevice.Object);

            miioDevice.Setup(x => x.SendMessageAsync(It.Is <string>(s => s.Contains("get_channels"))))
            .Returns(Task.FromResult("{\"result\":{\"chs\":[" +
                                     "{\"id\":1025,\"type\":0,\"url\":\"http://192.168.1.1/radio1.m3u8\"}," +
                                     "{\"id\":1026,\"type\":0,\"url\":\"http://192.168.1.1/radio2.m3u8\"}," +
                                     "{\"id\":1027,\"type\":0,\"url\":\"http://192.168.1.1/radio3.m3u8\"}," +
                                     "]}}"));

            miioDevice.Setup(x => x.SendMessageAsync(It.Is <string>(s => s.Contains("remove_channels"))))
            .Returns(Task.FromResult("{\"result\":[\"ok\"],\"id\":2}"));

            // Act
            await miioGateway.RemoveAllRadioChannelsAsync();

            // Assert
            var msg = "{\"id\": 2, \"method\": \"remove_channels\", \"params\": {\"chs\":[" +
                      "{\"id\":1025,\"url\":\"http://192.168.1.1/radio1.m3u8\",\"type\":0}," +
                      "{\"id\":1026,\"url\":\"http://192.168.1.1/radio2.m3u8\",\"type\":0}," +
                      "{\"id\":1027,\"url\":\"http://192.168.1.1/radio3.m3u8\",\"type\":0}" +
                      "]}}";

            miioDevice.Verify(x => x.SendMessageAsync(msg), Times.Once());
        }
コード例 #2
0
        public void GetRadioChannels_Returns_List_of_RadioChannel()
        {
            // Arrange
            var radioChannelsReference = new List <RadioChannel>()
            {
                new RadioChannel()
                {
                    Id = 1026, Url = "http://192.168.1.1/radio2.m3u8"
                },
                new RadioChannel()
                {
                    Id = 1027, Url = "http://192.168.1.1/radio3.m3u8"
                },
            };

            var miioDevice = new Mock <IMiioTransport>();

            var msg = "{\"result\":{\"chs\":[" +
                      "{\"id\":1025,\"type\":0,\"url\":\"http://192.168.1.1/radio1.m3u8\"}," +
                      "{\"id\":1026,\"type\":0,\"url\":\"http://192.168.1.1/radio2.m3u8\"}," +
                      "{\"id\":1027,\"type\":0,\"url\":\"http://192.168.1.1/radio3.m3u8\"}," +
                      "]}}";

            miioDevice.Setup(x => x.SendMessage(It.IsAny <string>())).Returns(msg);

            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            var radioChannels = miioGateway.GetRadioChannels();

            // Assert
            miioDevice.Verify(x => x.SendMessage("{\"id\": 1, \"method\": \"get_channels\", \"params\": {\"start\":0}}"), Times.Once());

            Assert.Equal(radioChannelsReference, radioChannels);
        }
コード例 #3
0
        public void AddRadioChannel_with_Id_less_than_1024_throws_exception()
        {
            // Arrange
            var miioGateway = new MiioGateway(new Mock <IMiioTransport>().Object);

            // Act
            Assert.Throws <ArgumentException>(() => miioGateway.AddRadioChannel(1000, "url here"));
        }
コード例 #4
0
        public void PlayRadio_Should_Throw_Exception_When_Wrong_Volume()
        {
            // Arrange
            var miioGateway = new MiioGateway(new Mock <IMiioTransport>().Object);

            // Act & Assert
            Assert.Throws <ArgumentException>(() => miioGateway.PlayRadio(1045, 120));
        }
コード例 #5
0
        public void SetArmingBlinkingTime_Should_Not_Throw_Exceptions()
        {
            // Arrange
            var miioDevice = new Mock <IMiioTransport>();

            miioDevice.Setup(x => x.SendMessage(It.IsAny <string>())).Returns("{\"result\":[\"ok\"],\"id\":1}");
            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            miioGateway.SetArmingBlinkingTime(40);

            // Assert
            miioDevice.Verify(x => x.SendMessage("{\"id\": 1, \"method\": \"set_device_prop\", \"params\": {\"sid\":\"lumi.0\", \"en_alarm_light\":40}}"), Times.Once());
        }
コード例 #6
0
        public void SetArmingOn_Should_Not_Throw_Exceptions()
        {
            // Arrange
            var miioDevice = new Mock <IMiioTransport>();

            miioDevice.Setup(x => x.SendMessage(It.IsAny <string>())).Returns("{\"result\":[\"ok\"],\"id\":1}");
            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            miioGateway.SetArmingOn();

            // Assert
            miioDevice.Verify(x => x.SendMessage("{\"id\": 1, \"method\": \"set_arming\", \"params\": [\"on\"]}"), Times.Once());
        }
コード例 #7
0
        public async Task SetArmingOffAsync_Should_Not_Throw_ExceptionsAsync()
        {
            // Arrange
            var miioDevice = new Mock <IMiioTransport>();

            miioDevice.Setup(x => x.SendMessageAsync(It.IsAny <string>())).Returns(Task.FromResult("{\"result\":[\"ok\"],\"id\":1}"));
            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            await miioGateway.SetArmingOffAsync();

            // Assert
            miioDevice.Verify(x => x.SendMessageAsync("{\"id\": 1, \"method\": \"set_arming\", \"params\": [\"off\"]}"), Times.Once());
        }
コード例 #8
0
        public void IsArmingOn_Returns_Arming_State()
        {
            // Arrange
            var miioDevice = new Mock <IMiioTransport>();

            miioDevice.Setup(x => x.SendMessage(It.IsAny <string>())).Returns("{\"result\":[\"on\"],\"id\":1}");
            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            var arming = miioGateway.IsArmingOn();

            // Assert
            miioDevice.Verify(x => x.SendMessage("{\"id\": 1, \"method\": \"get_arming\", \"params\": []}"), Times.Once());
            Assert.True(arming);
        }
コード例 #9
0
        public void GetArmingVolume_Returns_Integer()
        {
            // Arrange
            var miioDevice = new Mock <IMiioTransport>();

            miioDevice.Setup(x => x.SendMessage(It.IsAny <string>())).Returns("{\"result\":[10],\"id\":1}");
            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            var armingVolume = miioGateway.GetArmingVolume();

            // Assert
            miioDevice.Verify(x => x.SendMessage("{\"id\": 1, \"method\": \"get_alarming_volume\", \"params\": []}"), Times.Once());
            Assert.Equal(10, armingVolume);
        }
コード例 #10
0
        public async Task IsArmingOnAsync_Returns_Arming_StateAsync()
        {
            // Arrange
            var miioDevice = new Mock <IMiioTransport>();

            miioDevice.Setup(x => x.SendMessageAsync(It.IsAny <string>())).Returns(Task.FromResult("{\"result\":[\"off\"],\"id\":1}"));
            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            var arming = await miioGateway.IsArmingOnAsync();

            // Assert
            miioDevice.Verify(x => x.SendMessageAsync("{\"id\": 1, \"method\": \"get_arming\", \"params\": []}"), Times.Once());
            Assert.False(arming);
        }
コード例 #11
0
        public async Task GetArmingVolumeAsync_Returns_IntegerAsync()
        {
            // Arrange
            var miioDevice = new Mock <IMiioTransport>();

            miioDevice.Setup(x => x.SendMessageAsync(It.IsAny <string>())).Returns(Task.FromResult("{\"result\":[20],\"id\":1}"));
            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            var armingVolume = await miioGateway.GetArmingVolumeAsync();

            // Assert
            miioDevice.Verify(x => x.SendMessageAsync("{\"id\": 1, \"method\": \"get_alarming_volume\", \"params\": []}"), Times.Once());
            Assert.Equal(20, armingVolume);
        }
コード例 #12
0
        public void GetArmingBlinkingTime_Returns_Integer()
        {
            // Arrange
            var miioDevice = new Mock <IMiioTransport>();

            miioDevice.Setup(x => x.SendMessage(It.IsAny <string>())).Returns("{\"result\":[15],\"id\":1}");
            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            var armingBlinkingTime = miioGateway.GetArmingBlinkingTime();

            // Assert
            miioDevice.Verify(x => x.SendMessage("{\"id\": 1, \"method\": \"get_device_prop\", \"params\": [\"lumi.0\",\"en_alarm_light\"]}"), Times.Once());
            Assert.Equal(15, armingBlinkingTime);
        }
コード例 #13
0
        public async Task GetArmingLastTimeTriggeredTimestampAsync_Returns_IntegerAsync()
        {
            // Arrange
            var miioDevice = new Mock <IMiioTransport>();

            miioDevice.Setup(x => x.SendMessageAsync(It.IsAny <string>())).Returns(Task.FromResult("{\"result\":[1609150074],\"id\":1}"));
            var miioGateway = new MiioGateway(miioDevice.Object);

            // Act
            var timestamp = await miioGateway.GetArmingLastTimeTriggeredTimestampAsync();

            // Assert
            miioDevice.Verify(x => x.SendMessageAsync("{\"id\": 1, \"method\": \"get_arming_time\", \"params\": []}"), Times.Once());
            Assert.Equal(1609150074, timestamp);
        }
コード例 #14
0
        public void PlayRadio_Should_Throw_Exception_When_Wrong_ChannelId()
        {
            // Arrange
            var miioDevice  = new Mock <IMiioTransport>();
            var miioGateway = new MiioGateway(miioDevice.Object);

            miioDevice.Setup(x => x.SendMessage(It.Is <string>(s => s.Contains("get_channels"))))
            .Returns("{\"result\":{\"chs\":[" +
                     "{\"id\":1025,\"type\":0,\"url\":\"http://192.168.1.1/radio1.m3u8\"}," +
                     "{\"id\":1026,\"type\":0,\"url\":\"http://192.168.1.1/radio2.m3u8\"}," +
                     "{\"id\":1027,\"type\":0,\"url\":\"http://192.168.1.1/radio3.m3u8\"}," +
                     "]}}");

            // Act & Assert
            Assert.Throws <ArgumentException>(() => miioGateway.PlayRadio(1045, 50));
        }
コード例 #15
0
        public async Task StopRadioAsync_Should_Not_Throw_ExceptionsAsync()
        {
            // Arrange
            var miioDevice  = new Mock <IMiioTransport>();
            var miioGateway = new MiioGateway(miioDevice.Object);

            miioDevice.Setup(x => x.SendMessageAsync(It.Is <string>(s => s.Contains("play_fm"))))
            .Returns(Task.FromResult("{\"result\":[\"ok\"],\"id\":1}"));

            // Act
            await miioGateway.StopRadioAsync();

            // Assert
            var msg = "{\"id\": 1, \"method\": \"play_fm\", \"params\": [\"off\"]}";

            miioDevice.Verify(x => x.SendMessageAsync(msg), Times.Once());
        }
コード例 #16
0
        public void AddRadioChannel_with_existing_Id_throws_exception()
        {
            // Arrange
            var miioDevice  = new Mock <IMiioTransport>();
            var miioGateway = new MiioGateway(miioDevice.Object);

            var msg = "{\"result\":{\"chs\":[" +
                      "{\"id\":1025,\"type\":0,\"url\":\"http://192.168.1.1/radio1.m3u8\"}," +
                      "{\"id\":1045,\"type\":0,\"url\":\"http://192.168.1.1/radio.m3u8\"}," +
                      "{\"id\":1027,\"type\":0,\"url\":\"http://192.168.1.1/radio3.m3u8\"}," +
                      "]}}";

            miioDevice.Setup(x => x.SendMessage(It.IsAny <string>())).Returns(msg);

            // Act
            Assert.Throws <ArgumentException>(() => miioGateway.AddRadioChannel(1045, "http://192.168.1.1/radio.m3u8"));
        }
コード例 #17
0
        public void AddRadioChannel_Should_Not_Throw_Exceptions()
        {
            // Arrange
            var miioDevice  = new Mock <IMiioTransport>();
            var miioGateway = new MiioGateway(miioDevice.Object);
            var msg         = "{\"id\": 2, \"method\": \"add_channels\", \"params\": {\"chs\":[{\"id\":1045,\"url\":\"http://192.168.1.1/radio4.m3u8\",\"type\":0}]}}";

            miioDevice.Setup(x => x.SendMessage(It.Is <string>(s => s.Contains("get_channels"))))
            .Returns("{\"result\":{\"chs\":[" +
                     "{\"id\":1025,\"type\":0,\"url\":\"http://192.168.1.1/radio1.m3u8\"}," +
                     "{\"id\":1026,\"type\":0,\"url\":\"http://192.168.1.1/radio2.m3u8\"}," +
                     "{\"id\":1027,\"type\":0,\"url\":\"http://192.168.1.1/radio3.m3u8\"}," +
                     "]}}");

            miioDevice.Setup(x => x.SendMessage(It.Is <string>(s => s.Contains("add_channels"))))
            .Returns("{\"result\":[\"ok\"],\"id\":2}");

            // Act
            miioGateway.AddRadioChannel(1045, "http://192.168.1.1/radio4.m3u8");

            // Assert
            miioDevice.Verify(x => x.SendMessage(msg), Times.Once());
        }