From 44652fb0a11f89d38ee7119a91c7366febab9581 Mon Sep 17 00:00:00 2001 From: Tester23 Date: Fri, 23 Feb 2024 21:26:39 +0100 Subject: [PATCH] split selfttest http led, add more tests --- openBeken_win32_mvsc2017.vcxproj | 1 + openBeken_win32_mvsc2017.vcxproj.filters | 1829 ++++++---------------- src/selftest/selftest_http.c | 298 ---- src/selftest/selftest_http_led.c | 418 +++++ src/selftest/selftest_if.c | 12 +- src/win_main.c | 1 + 6 files changed, 886 insertions(+), 1673 deletions(-) create mode 100644 src/selftest/selftest_http_led.c diff --git a/openBeken_win32_mvsc2017.vcxproj b/openBeken_win32_mvsc2017.vcxproj index 7f521da8a..b65701c99 100644 --- a/openBeken_win32_mvsc2017.vcxproj +++ b/openBeken_win32_mvsc2017.vcxproj @@ -968,6 +968,7 @@ + diff --git a/openBeken_win32_mvsc2017.vcxproj.filters b/openBeken_win32_mvsc2017.vcxproj.filters index a3f67f8b2..014311d36 100644 --- a/openBeken_win32_mvsc2017.vcxproj.filters +++ b/openBeken_win32_mvsc2017.vcxproj.filters @@ -9,11 +9,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -24,6 +232,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -32,875 +325,149 @@ - - Simulator - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - Cmd - - - DGR - - - DGR - - - DGR - - - Simulator - - - Simulator - - - DGR - - - DGR - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - Simulator - - - Simulator - - - HTTP - - - HTTP - - - HTTP - - - HTTP - - - HTTP - - - HTTP - - - HTTP - - - LFS - - - LFS - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Drv - - - Simulator - - - Simulator - - - SelfTest - - - HAL - - - SelfTest - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - SelfTest - - - SelfTest - - - SelfTest - - - Drv - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - Drv - - - SelfTest - - - SelfTest - - - HTTP - - - SelfTest - - - Drv - - - Drv - - - SelfTest - - - Drv - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - SelfTest - - - Drv - - - Drv - - - SelfTest - - - Drv - - - SelfTest - - - SelfTest - - - Drv - - - SelfTest - - - Drv - - - Drv - - - SelfTest - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - SelfTest - - - SelfTest - - - SelfTest - - - Drv - - - SelfTest - - - SelfTest - - - SelfTest - - - Simulator - - - SelfTest - - - SelfTest - - - SelfTest - - - SelfTest - - - Drv - - - Drv - - - Cmd - - - Drv - - - Drv - - - SelfTest - - - Drv - - - Drv - - - Drv - - - Drv - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -910,525 +477,39 @@ - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HAL - - - HTTP - - - LFS - - - LFS - - - Simulator - - - Simulator - - - Simulator - - - SelfTest - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Simulator - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-old - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - IRRemote-ESP - - - Drv - - - Drv - - - Drv - - - Drv - - - LFS - - - - Drv - - - Drv - - - Drv - - - Drv - + + + + + + + + + + + + + + + + + + + + + - - Cmd - - - Cmd - - - DGR - - - DGR - - - DGR - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - Drv - - - HTTP - - - HTTP - - - HTTP - - - HTTP - - - - {9f4c6f6e-a873-459a-851f-f1d1765678cb} - - - {c80fadcc-89e7-4380-8c8e-262dfab4240c} - - - {b2359e07-df0d-4c96-990e-3c39516c8d34} - - - {542e4943-f31c-4550-978f-20adbb8d7933} - - - {e385d68c-eb29-44e3-bbb3-560d53712634} - - - {ea59e797-47c5-4aa4-b0df-13a40b08dd3c} - - - {0d71deec-4234-4353-b50a-d55394522055} - - - {b5fe6300-6717-4382-acc5-5d4736e28b25} - - - {553d6b46-d893-4259-b8b1-77e58da2a2ed} - - - {e980596d-3f72-423b-9b22-afc2901a273f} - - \ No newline at end of file diff --git a/src/selftest/selftest_http.c b/src/selftest/selftest_http.c index 3d61a1a72..5bbc5d6cb 100644 --- a/src/selftest/selftest_http.c +++ b/src/selftest/selftest_http.c @@ -803,308 +803,10 @@ bool SIM_HasHTTPDimmer() { } - -void Test_Http_LED_SingleChannel() { - - SIM_ClearOBK(0); - // Setup single PWM Device - PIN_SetPinRoleForPinIndex(24, IOR_PWM); - PIN_SetPinChannelForPinIndex(24, 1); - - CMD_ExecuteCommand("led_enableAll 1", 0); - CMD_ExecuteCommand("led_dimmer 100", 0); - - // HTML page must contains dimmer, but no RGB and no temeprature controls - Test_FakeHTTPClientPacket_GET("index"); - SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true); - SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false); - SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false); - // the green button is on the page - SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true); - SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false); - - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - - CMD_ExecuteCommand("led_enableAll 0", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); - - - // HTML page must contains dimmer, but no RGB and no temeprature controls - Test_FakeHTTPClientPacket_GET("index"); - SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true); - SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false); - SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false); - // the red button is on the page - SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false); - SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true); - - - CMD_ExecuteCommand("led_dimmer 61", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); - - - CMD_ExecuteCommand("led_enableAll 1", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - - - -} -void Test_Http_LED_CW() { - - SIM_ClearOBK(0); - PIN_SetPinRoleForPinIndex(24, IOR_PWM); - PIN_SetPinChannelForPinIndex(24, 1); - - PIN_SetPinRoleForPinIndex(26, IOR_PWM); - PIN_SetPinChannelForPinIndex(26, 2); - - CMD_ExecuteCommand("led_enableAll 1", 0); - CMD_ExecuteCommand("led_dimmer 100", 0); - CMD_ExecuteCommand("led_temperature 153", 0); - - SELFTEST_ASSERT_CHANNEL(1, 100); - SELFTEST_ASSERT_CHANNEL(2, 0); - - - // HTML page must contains dimmer and temperature control - Test_FakeHTTPClientPacket_GET("index"); - SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true); - SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(true); - SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false); - // the green button is on the page - SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true); - SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false); - - - - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); - - CMD_ExecuteCommand("led_enableAll 0", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); - - CMD_ExecuteCommand("led_dimmer 61", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); - - - CMD_ExecuteCommand("led_enableAll 1", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); - - CMD_ExecuteCommand("led_temperature 500", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500); - - - SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "100"); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500); -} -void Test_Http_LED_RGB() { - - SIM_ClearOBK(0); - PIN_SetPinRoleForPinIndex(24, IOR_PWM); - PIN_SetPinChannelForPinIndex(24, 1); - - PIN_SetPinRoleForPinIndex(26, IOR_PWM); - PIN_SetPinChannelForPinIndex(26, 2); - - PIN_SetPinRoleForPinIndex(9, IOR_PWM); - PIN_SetPinChannelForPinIndex(9, 3); - - CMD_ExecuteCommand("led_enableAll 1", 0); - CMD_ExecuteCommand("led_dimmer 100", 0); - CMD_ExecuteCommand("led_basecolor_rgb FF0000", 0); - - SELFTEST_ASSERT_CHANNEL(1, 100); - SELFTEST_ASSERT_CHANNEL(2, 0); - SELFTEST_ASSERT_CHANNEL(3, 0); - - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0"); - - - CMD_ExecuteCommand("led_basecolor_rgb FFFF00", 0); - - SELFTEST_ASSERT_CHANNEL(1, 100); - SELFTEST_ASSERT_CHANNEL(2, 100); - SELFTEST_ASSERT_CHANNEL(3, 0); - - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,255,0"); - - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - CMD_ExecuteCommand("led_dimmer 50", 0); - - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "55,55,0"); - - - CMD_ExecuteCommand("led_basecolor_rgb 0000FF", 0); - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,55"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - CMD_ExecuteCommand("led_dimmer 100", 0); - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255"); - - SIM_SendFakeMQTTAndRunSimFrame_CMND("POWER", "OFF"); - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,0"); - - SIM_SendFakeMQTTAndRunSimFrame_CMND("POWER", "1"); - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255"); - - - SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "50"); - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,55"); - - // dimmer back to 100 - SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "100"); - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255"); - - // check Tasmota HSBColor - /* - NOTE: - HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%200,100,100 - Return value: {"POWER":"ON","Dimmer":100,"Color":"FF00000000","HSBColor":"0,100,100","White":0,"CT":479,"Channel":[100,0,0,0,0]} - - */ - SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "0,100,100"); - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0"); - // check Tasmota HSBColor - /* - NOTE: - HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%2090,100,100 - Return value: {"POWER":"ON","Dimmer":100,"Color":"7FFF000000","HSBColor":"90,100,100","White":0,"CT":479,"Channel":[50,100,0,0,0]} - - */ - SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "90,100,100"); - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "127,255,0"); - // check Tasmota HSBColor - /* - NOTE: - HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%20180,100,100 - Return value: {"POWER":"ON","Dimmer":100,"Color":"00FFFF0000","HSBColor":"180,100,100","White":0,"CT":479,"Channel":[0,100,100,0,0]} - */ - SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "180,100,100"); - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - // Tasmota colors are scalled by Dimmer in this case. Confirmed. - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,255,255"); - - /* - CMD_ExecuteCommand("led_enableAll 0", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Color", "255,0,0"); - - CMD_ExecuteCommand("led_dimmer 61", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); - - - CMD_ExecuteCommand("led_enableAll 1", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); - - CMD_ExecuteCommand("led_temperature 500", 0); - // StatusSTS contains POWER and Dimmer - Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); - SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); - SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500); - */ - -} void Test_Http() { Test_Http_SingleRelayOnChannel1(); Test_Http_TwoRelays(); Test_Http_FourRelays(); - - - Test_Http_LED_SingleChannel(); - Test_Http_LED_CW(); - Test_Http_LED_RGB(); } diff --git a/src/selftest/selftest_http_led.c b/src/selftest/selftest_http_led.c new file mode 100644 index 000000000..a8cb78609 --- /dev/null +++ b/src/selftest/selftest_http_led.c @@ -0,0 +1,418 @@ +#ifdef WINDOWS + +#include "selftest_local.h" +#include "../httpserver/new_http.h" + + +void Test_Http_LED_CW() { + + SIM_ClearOBK(0); + PIN_SetPinRoleForPinIndex(24, IOR_PWM); + PIN_SetPinChannelForPinIndex(24, 1); + + PIN_SetPinRoleForPinIndex(26, IOR_PWM); + PIN_SetPinChannelForPinIndex(26, 2); + + CMD_ExecuteCommand("led_enableAll 1", 0); + CMD_ExecuteCommand("led_dimmer 100", 0); + CMD_ExecuteCommand("led_temperature 153", 0); + + SELFTEST_ASSERT_CHANNEL(1, 100); + SELFTEST_ASSERT_CHANNEL(2, 0); + + + // HTML page must contains dimmer and temperature control + Test_FakeHTTPClientPacket_GET("index"); + SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true); + SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(true); + SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false); + // the green button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false); + + + + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); + + CMD_ExecuteCommand("led_enableAll 0", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); + + CMD_ExecuteCommand("led_dimmer 61", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); + + // HTML page must contains dimmer, but no RGB and no temeprature controls + Test_FakeHTTPClientPacket_GET("index"); + SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true); + SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(true); + SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false); + // the green button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true); + + CMD_ExecuteCommand("led_enableAll 1", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); + + CMD_ExecuteCommand("led_temperature 500", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500); + + + SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "100"); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500); +} +void Test_Http_LED_RGB() { + + SIM_ClearOBK(0); + PIN_SetPinRoleForPinIndex(24, IOR_PWM); + PIN_SetPinChannelForPinIndex(24, 1); + + PIN_SetPinRoleForPinIndex(26, IOR_PWM); + PIN_SetPinChannelForPinIndex(26, 2); + + PIN_SetPinRoleForPinIndex(9, IOR_PWM); + PIN_SetPinChannelForPinIndex(9, 3); + + CMD_ExecuteCommand("led_enableAll 1", 0); + CMD_ExecuteCommand("led_dimmer 100", 0); + CMD_ExecuteCommand("led_basecolor_rgb FF0000", 0); + + + // HTML page must contains dimmer, but no RGB and no temeprature controls + Test_FakeHTTPClientPacket_GET("index"); + SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true); + SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false); + SELFTEST_ASSERT_HTTP_HAS_LED_RGB(true); + // the green button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false); + + + + SELFTEST_ASSERT_CHANNEL(1, 100); + SELFTEST_ASSERT_CHANNEL(2, 0); + SELFTEST_ASSERT_CHANNEL(3, 0); + + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0"); + + + CMD_ExecuteCommand("led_basecolor_rgb FFFF00", 0); + + SELFTEST_ASSERT_CHANNEL(1, 100); + SELFTEST_ASSERT_CHANNEL(2, 100); + SELFTEST_ASSERT_CHANNEL(3, 0); + + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,255,0"); + + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + CMD_ExecuteCommand("led_dimmer 50", 0); + + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "55,55,0"); + + + CMD_ExecuteCommand("led_basecolor_rgb 0000FF", 0); + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,55"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + CMD_ExecuteCommand("led_dimmer 100", 0); + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255"); + + SIM_SendFakeMQTTAndRunSimFrame_CMND("POWER", "OFF"); + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,0"); + + SIM_SendFakeMQTTAndRunSimFrame_CMND("POWER", "1"); + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255"); + + + SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "50"); + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,55"); + + // dimmer back to 100 + SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "100"); + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255"); + + // check Tasmota HSBColor + /* + NOTE: + HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%200,100,100 + Return value: {"POWER":"ON","Dimmer":100,"Color":"FF00000000","HSBColor":"0,100,100","White":0,"CT":479,"Channel":[100,0,0,0,0]} + + */ + SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "0,100,100"); + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0"); + // check Tasmota HSBColor + /* + NOTE: + HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%2090,100,100 + Return value: {"POWER":"ON","Dimmer":100,"Color":"7FFF000000","HSBColor":"90,100,100","White":0,"CT":479,"Channel":[50,100,0,0,0]} + + */ + SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "90,100,100"); + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "127,255,0"); + // check Tasmota HSBColor + /* + NOTE: + HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%20180,100,100 + Return value: {"POWER":"ON","Dimmer":100,"Color":"00FFFF0000","HSBColor":"180,100,100","White":0,"CT":479,"Channel":[0,100,100,0,0]} + */ + SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "180,100,100"); + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + // Tasmota colors are scalled by Dimmer in this case. Confirmed. + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,255,255"); + + + // HTML page must contains dimmer, but no RGB and no temeprature controls + Test_FakeHTTPClientPacket_GET("index"); + // the green button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false); + + + + CMD_ExecuteCommand("led_enableAll 0", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); + // color is now 0,0,0 because it's OFF? + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,0"); + + // HTML page must contains dimmer, but no RGB and no temeprature controls + Test_FakeHTTPClientPacket_GET("index"); + // the red button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true); + /* + CMD_ExecuteCommand("led_dimmer 61", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); + + + CMD_ExecuteCommand("led_enableAll 1", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153); + + CMD_ExecuteCommand("led_temperature 500", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500); + */ + +} + + +void Test_Http_LED_RGBCW() { + + SIM_ClearOBK(0); + PIN_SetPinRoleForPinIndex(24, IOR_PWM); + PIN_SetPinChannelForPinIndex(24, 1); + + PIN_SetPinRoleForPinIndex(26, IOR_PWM); + PIN_SetPinChannelForPinIndex(26, 2); + + PIN_SetPinRoleForPinIndex(9, IOR_PWM); + PIN_SetPinChannelForPinIndex(9, 3); + + PIN_SetPinRoleForPinIndex(8, IOR_PWM); + PIN_SetPinChannelForPinIndex(8, 4); + + PIN_SetPinRoleForPinIndex(7, IOR_PWM); + PIN_SetPinChannelForPinIndex(7, 5); + + CMD_ExecuteCommand("led_enableAll 1", 0); + CMD_ExecuteCommand("led_dimmer 100", 0); + CMD_ExecuteCommand("led_basecolor_rgb FF0000", 0); + + + // HTML page must contains dimmer, but no RGB and no temeprature controls + Test_FakeHTTPClientPacket_GET("index"); + SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true); + SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(true); + SELFTEST_ASSERT_HTTP_HAS_LED_RGB(true); + // the green button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false); + + + + SELFTEST_ASSERT_CHANNEL(1, 100); + SELFTEST_ASSERT_CHANNEL(2, 0); + SELFTEST_ASSERT_CHANNEL(3, 0); + + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0,0,0"); + + + CMD_ExecuteCommand("led_basecolor_rgb FFFF00", 0); + + SELFTEST_ASSERT_CHANNEL(1, 100); + SELFTEST_ASSERT_CHANNEL(2, 100); + SELFTEST_ASSERT_CHANNEL(3, 0); + + + + // HTML page must contains dimmer, but no RGB and no temeprature controls + Test_FakeHTTPClientPacket_GET("index"); + // the green button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false); + + + + CMD_ExecuteCommand("led_enableAll 0", 0); + + + // HTML page must contains dimmer, but no RGB and no temeprature controls + Test_FakeHTTPClientPacket_GET("index"); + // the red button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true); + + +} + + +void Test_Http_LED_SingleChannel() { + + SIM_ClearOBK(0); + // Setup single PWM Device + PIN_SetPinRoleForPinIndex(24, IOR_PWM); + PIN_SetPinChannelForPinIndex(24, 1); + + CMD_ExecuteCommand("led_enableAll 1", 0); + CMD_ExecuteCommand("led_dimmer 100", 0); + + // HTML page must contains dimmer, but no RGB and no temeprature controls + Test_FakeHTTPClientPacket_GET("index"); + SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true); + SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false); + SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false); + // the green button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false); + + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + + CMD_ExecuteCommand("led_enableAll 0", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); + + // HTML page must contains dimmer, but no RGB and no temeprature controls + Test_FakeHTTPClientPacket_GET("index"); + SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true); + SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false); + SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false); + // the red button is on the page + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false); + SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true); + + + CMD_ExecuteCommand("led_dimmer 61", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF"); + + + CMD_ExecuteCommand("led_enableAll 1", 0); + // StatusSTS contains POWER and Dimmer + Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS"); + SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61); + SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON"); + + + +} + +void Test_Http_LED() { + Test_Http_LED_SingleChannel(); + Test_Http_LED_CW(); + Test_Http_LED_RGB(); + Test_Http_LED_RGBCW(); +} + +#endif + diff --git a/src/selftest/selftest_if.c b/src/selftest/selftest_if.c index 4364a4e2c..27c7df625 100644 --- a/src/selftest/selftest_if.c +++ b/src/selftest/selftest_if.c @@ -76,9 +76,19 @@ void Test_Command_If() { SELFTEST_ASSERT_CHANNEL(23, 0); CMD_ExecuteCommand("if $CH7!=0 then setChannel 23 1234", 0); SELFTEST_ASSERT_CHANNEL(23, 1234); + + CMD_ExecuteCommand("setChannel 23 0", 0); + CMD_ExecuteCommand("setChannel 24 0", 0); + CMD_ExecuteCommand("setChannel 25 0", 0); + SELFTEST_ASSERT_CHANNEL(23, 0); + SELFTEST_ASSERT_CHANNEL(24, 0); + SELFTEST_ASSERT_CHANNEL(25, 0); + CMD_ExecuteCommand("if $CH7!=0 then backlog setChannel 23 1234; setChannel 24 4567; setChannel 25 6789", 0); + SELFTEST_ASSERT_CHANNEL(23, 1234); + SELFTEST_ASSERT_CHANNEL(24, 4567); + SELFTEST_ASSERT_CHANNEL(25, 6789); // cause error //SELFTEST_ASSERT_CHANNEL(1, 666); - } void Test_Command_If_Else() { diff --git a/src/win_main.c b/src/win_main.c index ef7f491a7..0af3c5ac6 100644 --- a/src/win_main.c +++ b/src/win_main.c @@ -184,6 +184,7 @@ void Win_DoUnitTests() { Test_Command_If(); Test_Tokenizer(); Test_Http(); + Test_Http_LED(); Test_DeviceGroups();