Files
allwpilib/hal/src/test/python/test_hal_simulation.py
Peter Johnson aad08b9ad1 [hal] Rename SimDevice constants to all caps
Also use enum class for SimDevice C++ wrapper.
2026-03-15 22:38:09 -07:00

42 lines
1.1 KiB
Python

import hal
import hal.simulation
import typing
def test_value_changed_callback():
recv: typing.Optional[typing.Tuple[bool, str, int]] = None
def created_cb(
name: str, handle: int, direction: hal.SimValueDirection, value: hal.Value
):
nonlocal recv
recv = (True, name, value.value)
def cb(name: str, handle: int, direction: hal.SimValueDirection, value: hal.Value):
nonlocal recv
recv = (False, name, value.value)
dev = hal.SimDevice("simd")
# Must keep the returned value alive or the callback will be unregistered
devunused = hal.simulation.registerSimValueCreatedCallback(dev, created_cb, True)
assert recv is None
val = dev.createInt("answer", hal.SimDevice.Direction.INPUT, 42)
assert recv == (True, "answer", 42)
recv = None
# Must keep the returned value alive or the callback will be unregistered
unused = hal.simulation.registerSimValueChangedCallback(val, cb, True)
assert recv == (False, "answer", 42)
recv = None
val.set(84)
assert recv == (False, "answer", 84)
recv = None