diff --git a/tests/components/light/common.yaml b/tests/components/light/common.yaml index 107df13894..06243439b5 100644 --- a/tests/components/light/common.yaml +++ b/tests/components/light/common.yaml @@ -3,19 +3,63 @@ esphome: then: # Test LightEffect::get_name() returns string_view - lambda: |- - // Test get_name() returns string_view + // Test LightEffect::get_name() returns std::string_view auto &effects = id(test_monochromatic_light).get_effects(); if (!effects.empty()) { + // Test: get_name() returns string_view std::string_view name = effects[0]->get_name(); - // Test comparison with string literal + + // Test: comparison with string literal works directly if (name == "Strobe") { ESP_LOGI("test", "Found Strobe effect"); } - // Safe logging with size-limited format + + // Test: safe logging with %.*s format ESP_LOGI("test", "Effect name: %.*s", (int) name.size(), name.data()); - // Test .data() for null-terminated functions (safe because names are from codegen) + + // Test: .data() for functions expecting const char* ESP_LOGI("test", "Effect: %s", name.data()); + + // Test: explicit conversion to std::string + std::string name_str(name); + ESP_LOGI("test", "As string: %s", name_str.c_str()); + + // Test: size() method + ESP_LOGI("test", "Name length: %d", (int) name.size()); } + + # Test LightState::get_effect_name() returns string_view + - lambda: |- + // Test LightState::get_effect_name() returns std::string_view + std::string_view current_effect = id(test_monochromatic_light).get_effect_name(); + + // Test: comparison with "None" works directly + if (current_effect == "None") { + ESP_LOGI("test", "No effect active"); + } + + // Test: safe logging + ESP_LOGI("test", "Current effect: %.*s", (int) current_effect.size(), current_effect.data()); + + # Test str_equals_case_insensitive with string_view + - lambda: |- + // Test str_equals_case_insensitive(string_view, string_view) + auto &effects = id(test_monochromatic_light).get_effects(); + if (!effects.empty()) { + std::string_view name = effects[0]->get_name(); + + // Test: case-insensitive comparison + if (str_equals_case_insensitive(name, "STROBE")) { + ESP_LOGI("test", "Case-insensitive match works"); + } + + // Test: case-insensitive with string_view from string + std::string search = "strobe"; + if (str_equals_case_insensitive(std::string_view(search), name)) { + ESP_LOGI("test", "Reverse comparison works"); + } + } + - light.toggle: test_binary_light - light.turn_off: test_rgb_light - light.turn_on: