mirror of
https://github.com/esphome/esphome.git
synced 2025-09-01 10:52:19 +01:00
[test] Add integration test for light effect memory corruption fix (#10417)
This commit is contained in:
@@ -56,10 +56,29 @@ light:
|
||||
warm_white_color_temperature: 2000 K
|
||||
constant_brightness: true
|
||||
effects:
|
||||
# Use default parameters:
|
||||
- random:
|
||||
name: "Random Effect"
|
||||
# Customize parameters - use longer names to potentially trigger buffer issues
|
||||
- random:
|
||||
name: "My Very Slow Random Effect With Long Name"
|
||||
transition_length: 30ms
|
||||
update_interval: 30ms
|
||||
- random:
|
||||
name: "My Fast Random Effect That Changes Quickly"
|
||||
transition_length: 4ms
|
||||
update_interval: 5ms
|
||||
- random:
|
||||
name: "Random Effect With Medium Length Name Here"
|
||||
transition_length: 100ms
|
||||
update_interval: 200ms
|
||||
- random:
|
||||
name: "Another Random Effect With Different Parameters"
|
||||
transition_length: 2ms
|
||||
update_interval: 3ms
|
||||
- random:
|
||||
name: "Yet Another Random Effect To Test Memory"
|
||||
transition_length: 15ms
|
||||
update_interval: 20ms
|
||||
- strobe:
|
||||
name: "Strobe Effect"
|
||||
- pulse:
|
||||
@@ -73,6 +92,17 @@ light:
|
||||
red: test_red
|
||||
green: test_green
|
||||
blue: test_blue
|
||||
effects:
|
||||
# Same random effects to test for cross-contamination
|
||||
- random:
|
||||
- random:
|
||||
name: "RGB Slow Random"
|
||||
transition_length: 20ms
|
||||
update_interval: 25ms
|
||||
- random:
|
||||
name: "RGB Fast Random"
|
||||
transition_length: 2ms
|
||||
update_interval: 3ms
|
||||
|
||||
- platform: binary
|
||||
name: "Test Binary Light"
|
||||
|
@@ -108,14 +108,51 @@ async def test_light_calls(
|
||||
# Wait for flash to end
|
||||
state = await wait_for_state_change(rgbcw_light.key)
|
||||
|
||||
# Test 13: effect only
|
||||
# Test 13: effect only - test all random effects
|
||||
# First ensure light is on
|
||||
client.light_command(key=rgbcw_light.key, state=True)
|
||||
state = await wait_for_state_change(rgbcw_light.key)
|
||||
# Now set effect
|
||||
client.light_command(key=rgbcw_light.key, effect="Random Effect")
|
||||
|
||||
# Test 13a: Default random effect (no name, gets default name "Random")
|
||||
client.light_command(key=rgbcw_light.key, effect="Random")
|
||||
state = await wait_for_state_change(rgbcw_light.key)
|
||||
assert state.effect == "Random Effect"
|
||||
assert state.effect == "Random"
|
||||
|
||||
# Test 13b: Slow random effect with long name
|
||||
client.light_command(
|
||||
key=rgbcw_light.key, effect="My Very Slow Random Effect With Long Name"
|
||||
)
|
||||
state = await wait_for_state_change(rgbcw_light.key)
|
||||
assert state.effect == "My Very Slow Random Effect With Long Name"
|
||||
|
||||
# Test 13c: Fast random effect with long name
|
||||
client.light_command(
|
||||
key=rgbcw_light.key, effect="My Fast Random Effect That Changes Quickly"
|
||||
)
|
||||
state = await wait_for_state_change(rgbcw_light.key)
|
||||
assert state.effect == "My Fast Random Effect That Changes Quickly"
|
||||
|
||||
# Test 13d: Random effect with medium length name
|
||||
client.light_command(
|
||||
key=rgbcw_light.key, effect="Random Effect With Medium Length Name Here"
|
||||
)
|
||||
state = await wait_for_state_change(rgbcw_light.key)
|
||||
assert state.effect == "Random Effect With Medium Length Name Here"
|
||||
|
||||
# Test 13e: Another random effect
|
||||
client.light_command(
|
||||
key=rgbcw_light.key,
|
||||
effect="Another Random Effect With Different Parameters",
|
||||
)
|
||||
state = await wait_for_state_change(rgbcw_light.key)
|
||||
assert state.effect == "Another Random Effect With Different Parameters"
|
||||
|
||||
# Test 13f: Yet another random effect
|
||||
client.light_command(
|
||||
key=rgbcw_light.key, effect="Yet Another Random Effect To Test Memory"
|
||||
)
|
||||
state = await wait_for_state_change(rgbcw_light.key)
|
||||
assert state.effect == "Yet Another Random Effect To Test Memory"
|
||||
|
||||
# Test 14: stop effect
|
||||
client.light_command(key=rgbcw_light.key, effect="None")
|
||||
|
Reference in New Issue
Block a user