mirror of
https://github.com/esphome/esphome.git
synced 2025-09-02 11:22:24 +01:00
88 lines
3.2 KiB
YAML
88 lines
3.2 KiB
YAML
esphome:
|
|
name: api-string-lambda-test
|
|
host:
|
|
|
|
api:
|
|
actions:
|
|
# Service that tests string lambda functionality
|
|
- action: test_string_lambda
|
|
variables:
|
|
input_string: string
|
|
then:
|
|
# Log the input to verify service was called
|
|
- logger.log:
|
|
format: "Service called with string: %s"
|
|
args: [input_string.c_str()]
|
|
|
|
# This is the key test - using a lambda that returns x.c_str()
|
|
# where x is already a string. This would fail to compile in 2025.7.0b5
|
|
# with "no matching function for call to 'to_string(std::string)'"
|
|
# This is the exact case from issue #9539
|
|
- homeassistant.tag_scanned: !lambda 'return input_string.c_str();'
|
|
|
|
# Also test with homeassistant.event to verify our fix works with data fields
|
|
- homeassistant.event:
|
|
event: esphome.test_string_lambda
|
|
data:
|
|
value: !lambda 'return input_string.c_str();'
|
|
|
|
# Service that tests int lambda functionality
|
|
- action: test_int_lambda
|
|
variables:
|
|
input_number: int
|
|
then:
|
|
# Log the input to verify service was called
|
|
- logger.log:
|
|
format: "Service called with int: %d"
|
|
args: [input_number]
|
|
|
|
# Test that int lambdas still work correctly with to_string
|
|
# The TemplatableStringValue should automatically convert int to string
|
|
- homeassistant.event:
|
|
event: esphome.test_int_lambda
|
|
data:
|
|
value: !lambda 'return input_number;'
|
|
|
|
# Service that tests float lambda functionality
|
|
- action: test_float_lambda
|
|
variables:
|
|
input_float: float
|
|
then:
|
|
# Log the input to verify service was called
|
|
- logger.log:
|
|
format: "Service called with float: %.2f"
|
|
args: [input_float]
|
|
|
|
# Test that float lambdas still work correctly with to_string
|
|
# The TemplatableStringValue should automatically convert float to string
|
|
- homeassistant.event:
|
|
event: esphome.test_float_lambda
|
|
data:
|
|
value: !lambda 'return input_float;'
|
|
|
|
# Service that tests char* lambda functionality (e.g., from itoa or sprintf)
|
|
- action: test_char_ptr_lambda
|
|
variables:
|
|
input_number: int
|
|
input_string: string
|
|
then:
|
|
# Log the input to verify service was called
|
|
- logger.log:
|
|
format: "Service called with number for char* test: %d"
|
|
args: [input_number]
|
|
|
|
# Test that char* lambdas work correctly
|
|
# This would fail in issue #9628 with "invalid conversion from 'char*' to 'long long unsigned int'"
|
|
- homeassistant.event:
|
|
event: esphome.test_char_ptr_lambda
|
|
data:
|
|
# Test snprintf returning char*
|
|
decimal_value: !lambda 'static char buffer[20]; snprintf(buffer, sizeof(buffer), "%d", input_number); return buffer;'
|
|
# Test strdup returning char* (dynamically allocated)
|
|
string_copy: !lambda 'return strdup(input_string.c_str());'
|
|
# Test string literal (const char*)
|
|
literal: !lambda 'return "test literal";'
|
|
|
|
logger:
|
|
level: DEBUG
|