Add test for set_effect with const char* literal

Ensures the const char* overload resolves the ambiguous call
reported in #14728.
This commit is contained in:
J. Nick Koston
2026-03-12 07:54:14 -10:00
parent 8884a0d163
commit 2c087bc2e1
3 changed files with 8 additions and 2 deletions
@@ -33,7 +33,7 @@ class AddressableLightDisplay : public display::DisplayBuffer {
// - Save the current effect index.
this->last_effect_index_ = light_state_->get_current_effect_index();
// - Disable any current effect.
light_state_->make_call().set_effect(0).perform();
light_state_->make_call().set_effect(uint32_t{0}).perform();
}
}
enabled_ = enabled;
+1 -1
View File
@@ -506,7 +506,7 @@ color_mode_bitmask_t LightCall::get_suitable_color_modes_mask_() {
LightCall &LightCall::set_effect(const char *effect, size_t len) {
if (len == 4 && strncasecmp(effect, "none", 4) == 0) {
this->set_effect(0);
this->set_effect(uint32_t{0});
return *this;
}
+6
View File
@@ -60,6 +60,12 @@ esphome:
}
}
# Test set_effect with const char* doesn't cause ambiguous overload (issue #14728)
- lambda: |-
auto call = id(test_monochromatic_light).turn_on();
call.set_effect("None");
call.perform();
- light.toggle: test_binary_light
- light.turn_off: test_rgb_light
- light.turn_on: