Merge branch 'kamilcuk/use-placement-new' into integration

This commit is contained in:
J. Nick Koston
2026-03-22 13:58:24 -10:00
7 changed files with 21 additions and 37 deletions
@@ -8,7 +8,7 @@ def test_deep_sleep_setup(generate_main):
main_cpp = generate_main("tests/component_tests/deep_sleep/test_deep_sleep1.yaml")
assert (
"static deep_sleep::DeepSleepComponent *const deepsleep = deepsleep_storage_.get();"
"static deep_sleep::DeepSleepComponent *const deepsleep = reinterpret_cast<deep_sleep::DeepSleepComponent *>(deepsleep_storage_);"
in main_cpp
)
assert "new(deepsleep) deep_sleep::DeepSleepComponent();" in main_cpp
@@ -16,12 +16,12 @@ def test_globals_placement_new_with_template_args(
# Globals uses Pvariable with Type.new(template_args, initial_value)
# which exercises the template_args preservation in placement new.
assert "static globals::GlobalsComponent<int> *const my_global_int" in main_cpp
assert "PlacementStorage<globals::GlobalsComponent<int>>" in main_cpp
assert "sizeof(globals::GlobalsComponent<int>)" in main_cpp
assert "new(my_global_int) globals::GlobalsComponent<int>" in main_cpp
# Verify initial value is passed as constructor arg
assert "42" in main_cpp
# Check other globals are also generated
assert "PlacementStorage<globals::GlobalsComponent<float>>" in main_cpp
assert "PlacementStorage<globals::GlobalsComponent<bool>>" in main_cpp
assert "sizeof(globals::GlobalsComponent<float>)" in main_cpp
assert "sizeof(globals::GlobalsComponent<bool>)" in main_cpp
+6 -2
View File
@@ -242,9 +242,13 @@ def test_image_generation(
main_cpp = generate_main(component_config_path("image_test.yaml"))
assert "uint8_t_id[] PROGMEM = {0x24, 0x21, 0x24, 0x21" in main_cpp
assert (
"static esphome::PlacementStorage<image::Image> cat_img_storage_;" in main_cpp
"alignas(image::Image) static unsigned char cat_img_storage_[sizeof(image::Image)];"
in main_cpp
)
assert (
"static image::Image *const cat_img = reinterpret_cast<image::Image *>(cat_img_storage_);"
in main_cpp
)
assert "static image::Image *const cat_img = cat_img_storage_.get();" in main_cpp
assert (
"new(cat_img) image::Image(uint8_t_id, 32, 24, image::IMAGE_TYPE_RGB565, image::TRANSPARENCY_OPAQUE);"
in main_cpp
@@ -119,11 +119,12 @@ def test_code_generation(
main_cpp = generate_main(component_fixture_path("mipi_dsi.yaml"))
assert (
"static esphome::PlacementStorage<mipi_dsi::MIPI_DSI> p4_nano_storage_;"
"alignas(mipi_dsi::MIPI_DSI) static unsigned char p4_nano_storage_[sizeof(mipi_dsi::MIPI_DSI)];"
in main_cpp
)
assert (
"static mipi_dsi::MIPI_DSI *const p4_nano = p4_nano_storage_.get();" in main_cpp
"static mipi_dsi::MIPI_DSI *const p4_nano = reinterpret_cast<mipi_dsi::MIPI_DSI *>(p4_nano_storage_);"
in main_cpp
)
assert (
"new(p4_nano) mipi_dsi::MIPI_DSI(800, 1280, display::COLOR_BITNESS_565, 16);"
@@ -13,11 +13,11 @@ def test_status_led_generation(
"""Test status_led generation."""
main_cpp = generate_main(component_config_path("status_led_test.yaml"))
assert (
"static esphome::PlacementStorage<status_led::StatusLED> status_led_statusled_id_storage_;"
"alignas(status_led::StatusLED) static unsigned char status_led_statusled_id_storage_[sizeof(status_led::StatusLED)];"
in main_cpp
)
assert (
"static status_led::StatusLED *const status_led_statusled_id = status_led_statusled_id_storage_.get();"
"static status_led::StatusLED *const status_led_statusled_id = reinterpret_cast<status_led::StatusLED *>(status_led_statusled_id_storage_);"
in main_cpp
)
assert "new(status_led_statusled_id) status_led::StatusLED(" in main_cpp