mirror of
https://github.com/esphome/esphome.git
synced 2026-10-06 19:06:37 +00:00
stringref
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
esphome:
|
||||
on_boot:
|
||||
then:
|
||||
# Test LightEffect::get_name() returns string_view
|
||||
# Test LightEffect::get_name() returns StringRef
|
||||
- lambda: |-
|
||||
// Test LightEffect::get_name() returns std::string_view
|
||||
// Test LightEffect::get_name() returns StringRef
|
||||
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: get_name() returns StringRef
|
||||
StringRef name = effects[0]->get_name();
|
||||
|
||||
// Test: comparison with string literal works directly
|
||||
if (name == "Strobe") {
|
||||
@@ -15,23 +15,23 @@ esphome:
|
||||
}
|
||||
|
||||
// Test: safe logging with %.*s format
|
||||
ESP_LOGI("test", "Effect name: %.*s", (int) name.size(), name.data());
|
||||
ESP_LOGI("test", "Effect name: %.*s", (int) name.size(), name.c_str());
|
||||
|
||||
// Test: .data() for functions expecting const char*
|
||||
ESP_LOGI("test", "Effect: %s", name.data());
|
||||
// Test: .c_str() for functions expecting const char*
|
||||
ESP_LOGI("test", "Effect: %s", name.c_str());
|
||||
|
||||
// Test: explicit conversion to std::string
|
||||
std::string name_str(name);
|
||||
std::string name_str(name.c_str(), name.size());
|
||||
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
|
||||
# Test LightState::get_effect_name() returns StringRef
|
||||
- lambda: |-
|
||||
// Test LightState::get_effect_name() returns std::string_view
|
||||
std::string_view current_effect = id(test_monochromatic_light).get_effect_name();
|
||||
// Test LightState::get_effect_name() returns StringRef
|
||||
StringRef current_effect = id(test_monochromatic_light).get_effect_name();
|
||||
|
||||
// Test: comparison with "None" works directly
|
||||
if (current_effect == "None") {
|
||||
@@ -39,23 +39,23 @@ esphome:
|
||||
}
|
||||
|
||||
// Test: safe logging
|
||||
ESP_LOGI("test", "Current effect: %.*s", (int) current_effect.size(), current_effect.data());
|
||||
ESP_LOGI("test", "Current effect: %.*s", (int) current_effect.size(), current_effect.c_str());
|
||||
|
||||
# Test str_equals_case_insensitive with string_view
|
||||
# Test str_equals_case_insensitive with StringRef
|
||||
- lambda: |-
|
||||
// Test str_equals_case_insensitive(string_view, string_view)
|
||||
// Test str_equals_case_insensitive(StringRef, StringRef)
|
||||
auto &effects = id(test_monochromatic_light).get_effects();
|
||||
if (!effects.empty()) {
|
||||
std::string_view name = effects[0]->get_name();
|
||||
StringRef 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
|
||||
// Test: case-insensitive with StringRef from string
|
||||
std::string search = "strobe";
|
||||
if (str_equals_case_insensitive(std::string_view(search), name)) {
|
||||
if (str_equals_case_insensitive(StringRef(search.c_str(), search.size()), name)) {
|
||||
ESP_LOGI("test", "Reverse comparison works");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user