Skip to content

Fixed broken link to use absolute path to wiki #66

Fixed broken link to use absolute path to wiki

Fixed broken link to use absolute path to wiki #66

GitHub Actions / xUnit Tests succeeded Jul 1, 2024 in 1s

272 passed, 0 failed and 0 skipped

Tests passed successfully

✅ MiHomeUnitTests/TestResults/test-results.trx

272 tests were completed in 1s with 272 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
MiHomeUnitTests.AirHumidifierTests 29✅ 114ms
MiHomeUnitTests.Devices.SwitchTests 3✅ 6ms
MiHomeUnitTests.DevicesV3.AqaraDoorWindowSensorTests 2✅ 110ms
MiHomeUnitTests.DevicesV3.AqaraOneChannelRelayEuTests 13✅ 50ms
MiHomeUnitTests.DevicesV3.AqaraOppleFourButtonsWirelesSwitchTests 10✅ 18ms
MiHomeUnitTests.DevicesV3.AqaraOppleTwoButtonsWirelesSwitchTests 10✅ 13ms
MiHomeUnitTests.DevicesV3.AqaraThSensorTests 3✅ 6ms
MiHomeUnitTests.DevicesV3.AqaraTwoChannelsRelayTests 16✅ 33ms
MiHomeUnitTests.DevicesV3.AqaraWaterLeakSensorTests 2✅ 14ms
MiHomeUnitTests.DevicesV3.BleBatteryDeviceTests 2✅ 72ms
MiHomeUnitTests.DevicesV3.HoneywellSmokeAlarmTests 2✅ 10ms
MiHomeUnitTests.DevicesV3.HoneywellSmokeSensorTests 10✅ 12ms
MiHomeUnitTests.DevicesV3.MiThMonitor2Tests 4✅ 17ms
MiHomeUnitTests.DevicesV3.MiWirelessSwitchTests 7✅ 18ms
MiHomeUnitTests.DevicesV3.XiaomiDoorWindowSensor2Tests 5✅ 20ms
MiHomeUnitTests.DevicesV3.XiaomiDoorWindowSensorTests 2✅ 3ms
MiHomeUnitTests.DevicesV3.XiaomiMotionSensor2Tests 6✅ 29ms
MiHomeUnitTests.DevicesV3.XiaomiMotionSensorTests 4✅ 106ms
MiHomeUnitTests.DevicesV3.XiaomiPlugCnTests 12✅ 180ms
MiHomeUnitTests.DevicesV3.XiaomiThSensorTests 2✅ 5ms
MiHomeUnitTests.DevicesV3.ZigbeeDeviceTests 4✅ 20ms
MiHomeUnitTests.DoorWindowSensorTests 6✅ 14ms
MiHomeUnitTests.GatewayTests 6✅ 48ms
MiHomeUnitTests.MiHomeDeviceFactoryTests 14✅ 7ms
MiHomeUnitTests.MiioGatewayTests 41✅ 167ms
MiHomeUnitTests.MiioPacketTests 3✅ 9ms
MiHomeUnitTests.MiRobotV1Tests 13✅ 37ms
MiHomeUnitTests.MotionSensorTests 3✅ 4ms
MiHomeUnitTests.ResponseCommandTests 11✅ 14ms
MiHomeUnitTests.SmokeSensorTests 5✅ 6ms
MiHomeUnitTests.SockerPlugTests 4✅ 31ms
MiHomeUnitTests.ThSensorTests 4✅ 134ms
MiHomeUnitTests.WaterLeakSensorTests 4✅ 4ms
MiHomeUnitTests.XiaomiGateway3Tests 10✅ 142ms

✅ MiHomeUnitTests.AirHumidifierTests

✅ BuzzerOn_Should_Not_Throw_Exceptions
✅ BuzzerOnAsync_Should_Not_Throw_Exceptions
✅ ChildLockOn_Should_Not_Throw_Exceptions
✅ ChildLockOnAsync_Should_Not_Throw_Exceptions
✅ GetBrightness_Returns_Valid_Brightness
✅ GetBrightnessAsync_Returns_Valid_Brightness
✅ GetDeviceMode_Returns_Valid_Mode
✅ GetDeviceModeAsync_Returns_Valid_Mode
✅ GetHumidity_Returns_Valid_Humidity
✅ GetHumidityAsync_Returns_Valid_Humidity
✅ GetTargetHumidity_Returns_Valid_TargetHumidity
✅ GetTargetHumidityAsync_Returns_Valid_TargetHumidity
✅ GetTemperature_Returns_Valid_Temperature
✅ GetTemperatureAsync_Returns_Valid_Temperature
✅ IsBuzzerOn_Returns_Valid_BuzzerState
✅ IsBuzzerOnAsync_Returns_Valid_BuzzerState
✅ IsChildLockOn_Returns_Valid_ChildLockState
✅ IsChildLockOnAsync_Returns_Valid_ChildLockState
✅ IsTurnedOn_Returns_State_Power
✅ IsTurnedOnAsync_Returns_State_Power
✅ PowerOff_Should_Not_Throw_Exceptions
✅ PowerOffAsync_Should_Not_Throw_Exceptions
✅ PowerOn_Should_Not_Throw_Exceptions
✅ PowerOnAsync_Should_Not_Throw_Exceptions
✅ SetBrightness_Should_Not_Throw_Exceptions
✅ SetBrightnessAsync_Should_Not_Throw_Exceptions
✅ SetMode_Should_Not_Throw_Exceptions
✅ SetModeAsync_Should_Not_Throw_Exceptions
✅ ToString_Returns_Valid_State

✅ MiHomeUnitTests.Devices.SwitchTests

✅ Check_Switch_Click_Raised
✅ Check_Switch_DoubleClick_Raised
✅ Check_Switch_LongPressClick_Raised

✅ MiHomeUnitTests.DevicesV3.AqaraDoorWindowSensorTests

✅ Check_OnContactChange_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":0}]")
✅ Check_OnContactChange_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":1}]")

✅ MiHomeUnitTests.DevicesV3.AqaraOneChannelRelayEuTests

✅ Check_OnChannelStateChange_Event(data: "[{\"siid\":2,\"piid\":1,\"value\":true}]")
✅ Check_OnLoadPowerChange_Event(data: "[{\"siid\":3,\"piid\":2,\"value\":42.20}]")
✅ Check_OnPowerConsumptionChange_Event(data: "[{\"siid\":3,\"piid\":1,\"value\":1.30}]")
✅ Check_PowerOff_Works
✅ Check_PowerOn_Works
✅ Check_SetPowerMemoryState_Works(state: PowerOff, value: 0)
✅ Check_SetPowerMemoryState_Works(state: Previous, value: 1)
✅ Check_SetPowerMode_Works(mode: Momentary, value: 1)
✅ Check_SetPowerMode_Works(mode: Toggle, value: 2)
✅ Check_Toggle_Works(state: Off, value: 1)
✅ Check_Toggle_Works(state: On, value: 0)
✅ SetPowerOverloadThreshold_When_InvalidArgument_ThrowsException
✅ SetPowerOverloadThreshold_When_ValidArgument_Works

✅ MiHomeUnitTests.DevicesV3.AqaraOppleFourButtonsWirelesSwitchTests

✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.3.85\",\"value\":1}]", evt: SingleClick)
✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.3.85\",\"value\":16}]", evt: LongPressHold)
✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.3.85\",\"value\":17}]", evt: LongPressRelease)
✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.3.85\",\"value\":2}]", evt: DoubleClick)
✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.3.85\",\"value\":3}]", evt: TripleClick)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.4.85\",\"value\":1}]", evt: SingleClick)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.4.85\",\"value\":16}]", evt: LongPressHold)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.4.85\",\"value\":17}]", evt: LongPressRelease)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.4.85\",\"value\":2}]", evt: DoubleClick)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.4.85\",\"value\":3}]", evt: TripleClick)

✅ MiHomeUnitTests.DevicesV3.AqaraOppleTwoButtonsWirelesSwitchTests

✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":1}]", evt: SingleClick)
✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":16}]", evt: LongPressHold)
✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":17}]", evt: LongPressRelease)
✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":2}]", evt: DoubleClick)
✅ Check_Switch_OnButton1Click_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":3}]", evt: TripleClick)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.2.85\",\"value\":1}]", evt: SingleClick)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.2.85\",\"value\":16}]", evt: LongPressHold)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.2.85\",\"value\":17}]", evt: LongPressRelease)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.2.85\",\"value\":2}]", evt: DoubleClick)
✅ Check_Switch_OnButton2Click_Event(data: "[{\"res_name\":\"13.2.85\",\"value\":3}]", evt: TripleClick)

✅ MiHomeUnitTests.DevicesV3.AqaraThSensorTests

✅ Check_OnHumidityChange_Event(data: "[{\"res_name\":\"0.2.85\",\"value\":4343}]")
✅ Check_OnPressureChange_Event(data: "[{\"res_name\":\"0.3.85\",\"value\":99120}]")
✅ Check_OnTemperatureChange_Event(data: "[{\"res_name\":\"0.1.85\",\"value\":2515}]")

✅ MiHomeUnitTests.DevicesV3.AqaraTwoChannelsRelayTests

✅ Check_Channel1PowerOn_Works
✅ Check_Channel1ToggleState_Works(state: Off, value: 1)
✅ Check_Channel1ToggleState_Works(state: On, value: 0)
✅ Check_Channel2PowerOn_Works
✅ Check_Channel2ToggleState_Works(state: Off, value: 1)
✅ Check_Channel2ToggleState_Works(state: On, value: 0)
✅ Check_OnChannel1StateChange_Event(data: "[{\"res_name\":\"4.1.85\",\"value\":1}]")
✅ Check_OnChannel2StateChange_Event(data: "[{\"res_name\":\"4.2.85\",\"value\":1}]")
✅ Check_OnCurrentChange_Event(data: "[{\"res_name\":\"0.14.85\",\"value\":153.24}]")
✅ Check_OnEnergyChange_Event(data: "[{\"res_name\":\"0.13.85\",\"value\":3163.13}]")
✅ Check_OnLoadPowerChange_Event(data: "[{\"res_name\":\"0.12.85\",\"value\":42.2}]")
✅ Check_OnVoltageChange_Event(data: "[{\"res_name\":\"0.11.85\",\"value\":212512}]")
✅ Check_SetInterlock_Works(state: Disabled, value: 0)
✅ Check_SetInterlock_Works(state: Enabled, value: 1)
✅ Check_SetPowerMemoryState_Works(state: PowerOff, value: 0)
✅ Check_SetPowerMemoryState_Works(state: Previous, value: 1)

✅ MiHomeUnitTests.DevicesV3.AqaraWaterLeakSensorTests

✅ Check_OnMoistureChange_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":0}]")
✅ Check_OnMoistureChange_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":1}]")

✅ MiHomeUnitTests.DevicesV3.BleBatteryDeviceTests

✅ Check_OnBatteryPercentChange_Event(eid: 4106, edata: "62", oldBatteryPercent: 41)
✅ Check_OnBatteryPercentChange_Event(eid: 4106, edata: "63", oldBatteryPercent: 95)

✅ MiHomeUnitTests.DevicesV3.HoneywellSmokeAlarmTests

✅ Check_OnSmokeChange_Event(eid: 4117, edata: "00", oldState: Unknown)
✅ Check_OnSmokeChange_Event(eid: 4117, edata: "01", oldState: NoSmokeDetected)

✅ MiHomeUnitTests.DevicesV3.HoneywellSmokeSensorTests

✅ Check_OnSmokeDensityChanged_Event(data: "[{\"res_name\":\"0.1.85\",\"value\":15}]")
✅ Check_OnSmokeDetected_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":0}]")
✅ Check_OnSmokeDetected_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":1}]")
✅ Check_OnSmokeSensivityModeChanged_Event(data: "[{\"res_name\":\"14.1.85\",\"value\":67174400}]")
✅ Check_OnSmokeSensivityModeChanged_Event(data: "[{\"res_name\":\"14.1.85\",\"value\":67239936}]")
✅ Check_OnSmokeSensivityModeChanged_Event(data: "[{\"res_name\":\"14.1.85\",\"value\":67305472}]")
✅ Check_RunSelfTest_Works
✅ Check_SetSensivity_Works(mode: LowSmoke, value: 67239936)
✅ Check_SetSensivity_Works(mode: MiddleSmoke, value: 67305472)
✅ Check_SetSensivity_Works(mode: NoSmoke, value: 67174400)

✅ MiHomeUnitTests.DevicesV3.MiThMonitor2Tests

✅ Check_OnHumidityChange_Event(eid: 4102, edata: "e301", oldHumidity: 33.2000008)
✅ Check_OnHumidityChange_Event(eid: 4102, edata: "E601", oldHumidity: 44.0999985)
✅ Check_OnTemperatureChange_Event(eid: 4100, edata: "E500", oldTemperature: 24.1000004)
✅ Check_OnTemperatureChange_Event(eid: 4100, edata: "fb00", oldTemperature: 22)

✅ MiHomeUnitTests.DevicesV3.MiWirelessSwitchTests

✅ Check_Switch_OnClick_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":1}]", evt: SingleClick)
✅ Check_Switch_OnClick_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":128}]", evt: ManyClicks)
✅ Check_Switch_OnClick_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":16}]", evt: LongPressHold)
✅ Check_Switch_OnClick_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":17}]", evt: LongPressRelease)
✅ Check_Switch_OnClick_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":2}]", evt: DoubleClick)
✅ Check_Switch_OnClick_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":3}]", evt: TripleClick)
✅ Check_Switch_OnClick_Event(data: "[{\"res_name\":\"13.1.85\",\"value\":4}]", evt: QuadrupleClick)

✅ MiHomeUnitTests.DevicesV3.XiaomiDoorWindowSensor2Tests

✅ Check_OnContactChange_Event(eid: 4121, edata: "00", oldState: Unknown)
✅ Check_OnContactChange_Event(eid: 4121, edata: "01", oldState: Open)
✅ Check_OnContactChange_Event(eid: 4121, edata: "02", oldState: Unknown)
✅ Check_OnLightChange_Event(eid: 4120, edata: "00", oldState: LightDiscovered)
✅ Check_OnLightChange_Event(eid: 4120, edata: "01", oldState: NoLight)

✅ MiHomeUnitTests.DevicesV3.XiaomiDoorWindowSensorTests

✅ Check_OnContactChange_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":0}]")
✅ Check_OnContactChange_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":1}]")

✅ MiHomeUnitTests.DevicesV3.XiaomiMotionSensor2Tests

✅ Check_OnLightChange_Event(eid: 4120, edata: "00", oldState: Unknown)
✅ Check_OnLightChange_Event(eid: 4120, edata: "01", oldState: Unknown)
✅ Check_OnMotionDetected_Event(eid: 15, edata: "000000", oldState: Unknown)
✅ Check_OnMotionDetected_Event(eid: 15, edata: "000100", oldState: Unknown)
✅ Check_OnNoMotionDetected_Event(eid: 4119, edata: "2C010000", state: Idle300Seconds)
✅ Check_OnNoMotionDetected_Event(eid: 4119, edata: "78000000", state: Idle120Seconds)

✅ MiHomeUnitTests.DevicesV3.XiaomiMotionSensorTests

✅ Check_OnMotionDetected_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":0}]")
✅ Check_OnMotionDetected_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":1}]")
✅ Check_OnNoMotionDetected_For_One_Minute_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":1}]")
✅ Check_OnNoMotionDetected_For_Two_Minutes_Event(data: "[{\"res_name\":\"3.1.85\",\"value\":1}]")

✅ MiHomeUnitTests.DevicesV3.XiaomiPlugCnTests

✅ Check_ChargeProtection_Works(state: Off, value: 0)
✅ Check_ChargeProtection_Works(state: On, value: 1)
✅ Check_OnLoadPowerChange_Event(data: "[{\"res_name\":\"0.12.85\",\"value\":42.2}]")
✅ Check_OnStateChange_Event(data: "[{\"res_name\":\"4.1.85\",\"value\":1}]")
✅ Check_PowerOff_Works
✅ Check_PowerOn_Works
✅ Check_PowerOnState_Works(state: PowerOff, value: 0)
✅ Check_PowerOnState_Works(state: Previous, value: 1)
✅ Check_SetLedState_Works(state: AlwaysOn, value: 1)
✅ Check_SetLedState_Works(state: TurnOffAtNightTime, value: 0)
✅ Check_Toggle_Works(state: Off, value: 1)
✅ Check_Toggle_Works(state: On, value: 0)

✅ MiHomeUnitTests.DevicesV3.XiaomiThSensorTests

✅ Check_OnHumidityChange_Event(data: "[{\"res_name\":\"0.2.85\",\"value\":4343}]")
✅ Check_OnTemperatureChange_Event(data: "[{\"res_name\":\"0.1.85\",\"value\":2515}]")

✅ MiHomeUnitTests.DevicesV3.ZigbeeDeviceTests

✅ Check_OnBatteryPercentChange_Event(data: "[{\"res_name\":\"8.0.2001\",\"value\":95}]")
✅ Check_OnChipTemperatureChange_Event(data: "[{\"res_name\":\"8.0.2006\",\"value\":81}]")
✅ Check_OnLinqQualityChange_Event(data: "[{\"res_name\":\"8.0.2007\",\"value\":181}]")
✅ Check_OnVoltageChange_Event(data: "[{\"res_name\":\"8.0.2008\",\"value\":3025}]")

✅ MiHomeUnitTests.DoorWindowSensorTests

✅ Check_DoorWindowSensor_Hearbeat_Data
✅ Check_DoorWindowSensor_Raised_Closed_Event
✅ Check_DoorWindowSensor_Raised_NotClosedFor1Minute_Event
✅ Check_DoorWindowSensor_Raised_NotClosedFor5Minutes_Event
✅ Check_DoorWindowSensor_Raised_Open_Event
✅ Check_DoorWindowSensor_Report_Data

✅ MiHomeUnitTests.GatewayTests

✅ Check_Gateway_DisableLight_Command
✅ Check_Gateway_EnableLight_Command
✅ Check_Gateway_Hearbeat_Data
✅ Check_Gateway_PlaySound_Command
✅ Check_Gateway_Report_Data
✅ Check_Gateway_SoundsOff_Command

✅ MiHomeUnitTests.MiHomeDeviceFactoryTests

✅ CheckCreateByModelMethod(model: "ctrl_neutral2", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.WiredDualWallSwitch))
✅ CheckCreateByModelMethod(model: "magnet", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.DoorWindowSensor))
✅ CheckCreateByModelMethod(model: "motion", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.MotionSensor))
✅ CheckCreateByModelMethod(model: "plug", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.SocketPlug))
✅ CheckCreateByModelMethod(model: "remote.b286acn01", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.WirelessDualWallSwitch))
✅ CheckCreateByModelMethod(model: "sensor_cube.aqgl01", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.AqaraCubeSensor))
✅ CheckCreateByModelMethod(model: "sensor_ht", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.ThSensor))
✅ CheckCreateByModelMethod(model: "sensor_magnet.aq2", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.AqaraOpenCloseSensor))
✅ CheckCreateByModelMethod(model: "sensor_motion.aq2", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.AqaraMotionSensor))
✅ CheckCreateByModelMethod(model: "sensor_wleak.aq1", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.WaterLeakSensor))
✅ CheckCreateByModelMethod(model: "smoke", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.SmokeSensor))
✅ CheckCreateByModelMethod(model: "switch", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.Switch))
✅ CheckCreateByModelMethod(model: "weather.v1", sid: "34ce0088db36", type: typeof(MiHomeLib.Devices.WeatherSensor))
✅ CreateByModel_With_UnknownModel_ShouldThrowException

✅ MiHomeUnitTests.MiioGatewayTests

✅ AddRadioChannel_Should_Not_Throw_Exceptions
✅ AddRadioChannel_with_existing_Id_throws_exception
✅ AddRadioChannel_with_Id_less_than_1024_throws_exception
✅ AddRadioChannelAsync_Should_Not_Throw_ExceptionsAsync
✅ GetArmingBlinkingTime_Returns_Integer
✅ GetArmingBlinkingTimeAsync_Returns_IntegerAsync
✅ GetArmingLastTimeTriggeredTimestamp_Returns_Integer
✅ GetArmingLastTimeTriggeredTimestampAsync_Returns_IntegerAsync
✅ GetArmingOffTime_Returns_Integer
✅ GetArmingOffTimeAsync_Returns_IntegerAsync
✅ GetArmingVolume_Returns_Integer
✅ GetArmingVolumeAsync_Returns_IntegerAsync
✅ GetArmingWaitTime_Returns_Integer
✅ GetArmingWaitTimeAsync_Returns_IntegerAsync
✅ GetRadioChannels_Returns_List_of_RadioChannel
✅ GetRadioChannels_Returns_List_of_RadioChannelAsync
✅ IsArmingOn_Returns_Arming_State
✅ IsArmingOnAsync_Returns_Arming_StateAsync
✅ PlayRadio_Should_Not_Throw_Exceptions
✅ PlayRadio_Should_Throw_Exception_When_Wrong_ChannelId
✅ PlayRadio_Should_Throw_Exception_When_Wrong_Volume
✅ PlayRadioAsync_Should_Not_Throw_ExceptionsAsync
✅ RemoveAllRadioChannels_Should_Not_Throw_Exceptions
✅ RemoveAllRadioChannelsAsync_Should_Not_Throw_ExceptionsAsync
✅ RemoveRadioChannel_Should_Not_Throw_Exceptions
✅ RemoveRadioChannel_Should_Throw_Exception_When_Non_Existing_Id
✅ RemoveRadioChannelAsync_Should_Not_Throw_ExceptionsAsync
✅ SetArmingBlinkingTime_Should_Not_Throw_Exceptions
✅ SetArmingBlinkingTimeAsync_Should_Not_Throw_ExceptionsAsync
✅ SetArmingOff_Should_Not_Throw_Exceptions
✅ SetArmingOffAsync_Should_Not_Throw_ExceptionsAsync
✅ SetArmingOffTime_Should_Not_Throw_Exceptions
✅ SetArmingOffTimeAsync_Should_Not_Throw_ExceptionsAsync
✅ SetArmingOn_Should_Not_Throw_Exceptions
✅ SetArmingOnAsync_Should_Not_Throw_ExceptionsAsync
✅ SetArmingVolume_Should_Not_Throw_Exceptions
✅ SetArmingVolumeAsync_Should_Not_Throw_ExceptionsAsync
✅ SetArmingWaitTime_Should_Not_Throw_Exceptions
✅ SetWaitTimeAsync_Should_Not_Throw_ExceptionsAsync
✅ StopRadio_Should_Not_Throw_Exceptions
✅ StopRadioAsync_Should_Not_Throw_ExceptionsAsync

✅ MiHomeUnitTests.MiioPacketTests

✅ BuildMessage_Returns_Valid_Hex_String
✅ GetResponseData_Returns_Valid_Response
✅ MiioPacket_Returns_Valid_Props

✅ MiHomeUnitTests.MiRobotV1Tests

✅ FindMe_Should_Now_Throw_Exceptions
✅ FindMeAsync_Should_Now_Throw_ExceptionsAsync
✅ Home_Should_Now_Throw_Exceptions
✅ HomeAsync_Should_Now_Throw_ExceptionsAsync
✅ Pause_Should_Now_Throw_Exceptions
✅ PauseAsync_Should_Now_Throw_ExceptionsAsync
✅ Spot_Should_Now_Throw_Exceptions
✅ SpotAsync_Should_Now_Throw_ExceptionsAsync
✅ Start_Should_Now_Throw_Exceptions
✅ StartAsync_Should_Now_Throw_ExceptionsAsync
✅ Stop_Should_Now_Throw_Exceptions
✅ StopAsync_Should_Now_Throw_ExceptionsAsync
✅ ToString_Returns_Valid_State

✅ MiHomeUnitTests.MotionSensorTests

✅ Check_MotionSensor_ReadAck_Data
✅ Check_MotionSensor_Reports_Motion_Data
✅ Check_MotionSensor_Reports_NoMotion_Data

✅ MiHomeUnitTests.ResponseCommandTests

✅ CheckCommandType(cmd: "aaa", expected: Unknown)
✅ CheckCommandType(cmd: "get_id_list_ack", expected: GetIdListAck)
✅ CheckCommandType(cmd: "heartbeat", expected: Hearbeat)
✅ CheckCommandType(cmd: "read_ack", expected: ReadAck)
✅ CheckCommandType(cmd: "report", expected: Report)
✅ CheckData
✅ CheckModel
✅ CheckShortId
✅ CheckSid
✅ CheckToken(str: "{\"cmd\":\"heartbeat\",\"model\":\"gateway\",\"sid"···, token: "VPNvuBhwmeWHCbyG")
✅ CheckToken(str: "{\"cmd\":\"report\",\"model\":\"plug\",\"sid\":\"1"···, token: null)

✅ MiHomeUnitTests.SmokeSensorTests

✅ Check_SmokeSensor_Alarm_Event_Raised
✅ Check_SmokeSensor_Heartbeat_Data
✅ Check_SmokeSensor_NoAlarm_Event_Raised
✅ Check_SmokeSensor_ReadAck_Data
✅ Check_SmokeSensor_Report_Data

✅ MiHomeUnitTests.SockerPlugTests

✅ Check_SocketPlug_Hearbeat_Data
✅ Check_SocketPlug_Report_Data
✅ Check_SocketPlug_TurnOff_Command
✅ Check_SocketPlug_TurnOn_Command

✅ MiHomeUnitTests.ThSensorTests

✅ Check_ThSensor_Hearbeat_Data
✅ Check_ThSensor_Humidity_Report_Data
✅ Check_ThSensor_Raised_Temperature_And_Humdity_Change
✅ Check_ThSensor_Temperature_Report_Data

✅ MiHomeUnitTests.WaterLeakSensorTests

✅ Check_WaterLeakSensor_Heartbeat_Data
✅ Check_WaterLeakSensor_Raised_Leak
✅ Check_WaterLeakSensor_Raised_NoLeak
✅ Check_WaterLeakSensor_Report_Data

✅ MiHomeUnitTests.XiaomiGateway3Tests

✅ AsyncBleEventMethod_Works
✅ GetDeviceByDid_When_NotFound_Returns_Null
✅ GetDeviceByDid_WhenExistsAndHasCorrectType_Returns_Device
✅ GetDeviceByDid_WhenHasWrongType_Returns_Null
✅ GetDevices_When_Any_Returns_DiscoveredDevicesList
✅ GetDevices_When_NoOne_Returns_EmptyList
✅ OnDeviceDiscovered_Works
✅ ZigbeeHeartbeatCommand_Works
✅ ZigbeeReportCommand_Works
✅ ZigbeeReportCommandWithMiSpec_Works