mirror of
https://github.com/esphome/esphome.git
synced 2026-10-05 18:41:32 +00:00
globals is special
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
esphome:
|
||||
name: test
|
||||
|
||||
esp32:
|
||||
board: esp32dev
|
||||
|
||||
globals:
|
||||
- id: my_global_int
|
||||
type: int
|
||||
initial_value: "42"
|
||||
- id: my_global_float
|
||||
type: float
|
||||
initial_value: "1.5"
|
||||
- id: my_global_bool
|
||||
type: bool
|
||||
initial_value: "true"
|
||||
@@ -0,0 +1,27 @@
|
||||
"""Tests for the globals component."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Callable
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def test_globals_placement_new_with_template_args(
|
||||
generate_main: Callable[[str | Path], str],
|
||||
component_config_path: Callable[[str], Path],
|
||||
) -> None:
|
||||
"""Test that globals uses placement new with template arguments preserved."""
|
||||
main_cpp = generate_main(component_config_path("globals_test.yaml"))
|
||||
|
||||
# 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 "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
|
||||
Reference in New Issue
Block a user