Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions tests/fake_machine/i2c.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,18 @@ def __init__(self, registers=None, address=None):
else:
self._registers[reg] = bytes(value)

def readfrom_mem(self, addr, reg, nbytes):
def readfrom_mem(self, addr, reg, nbytes, **kwargs):
self._check_address(addr)
data = self._registers.get(reg, b"\x00" * nbytes)
return data[:nbytes]

def readfrom_mem_into(self, addr, reg, buf):
def readfrom_mem_into(self, addr, reg, buf, **kwargs):
self._check_address(addr)
data = self._registers.get(reg, b"\x00" * len(buf))
for i in range(len(buf)):
buf[i] = data[i] if i < len(data) else 0

def writeto_mem(self, addr, reg, buf):
def writeto_mem(self, addr, reg, buf, **kwargs):
self._check_address(addr)
self._registers[reg] = bytes(buf)
Comment thread
nedseb marked this conversation as resolved.
Outdated
self._write_log.append((reg, bytes(buf)))
Expand Down
1 change: 1 addition & 0 deletions tests/runner/executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ def load_driver_mock(driver_name, fake_i2c, module_name=None):
fake_machine = types.ModuleType("machine")
fake_machine.I2C = FakeI2C
fake_machine.Pin = FakePin
fake_machine.lightsleep = lambda ms=0: None

sys.modules["machine"] = fake_machine
sys.modules["micropython"] = micropython_stub
Expand Down
56 changes: 56 additions & 0 deletions tests/scenarios/vl53l1x.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
driver: vl53l1x
driver_class: VL53L1X
i2c_address: 0x29

# I2C config for hardware tests (STeaMi board - STM32WB55)
i2c:
id: 1

# Register values for mock tests
# VL53L1X uses 16-bit register addresses
mock_registers:
# MODEL_ID (0x010F-0x0110): expected 0xEACC
0x010F: [0xEA, 0xCC]
# SOFT_RESET (0x0000): sensor active
0x0000: 0x01
# MM_CONFIG__OUTER_OFFSET_MM (0x0022): used during init
0x0022: [0x00, 0x00]
# RESULT__RANGE_STATUS (0x0089): 17-byte result block
# Bytes: range_status, report_status, stream_count,
# dss_spads(2), peak_rate(2), ambient_rate(2),
# sigma(2), phase(2), distance_mm(2), peak_corrected(2)
# Simulated distance: 250 mm (0x00FA)
0x0089: [0x09, 0x00, 0x01,
0x00, 0x80, 0x01, 0x00,
0x00, 0x10, 0x00, 0x20,
0x00, 0x00, 0x00, 0xFA,
0x01, 0x00]

tests:
- name: "Verify model ID register"
action: call
method: read_model_id
expect: 0xEACC
mode: [mock, hardware]

- name: "Read distance returns integer"
action: call
method: read
expect_not_none: true
mode: [mock]
Comment thread
nedseb marked this conversation as resolved.
Outdated

- name: "Distance in plausible range"
action: call
method: read
expect_range: [0, 4000]
mode: [hardware]

- name: "Distance measurement feels correct"
action: manual
display:
- method: read
label: "Distance"
unit: "mm"
prompt: "La distance mesurée est-elle cohérente (objet devant le capteur) ?"
expect_true: true
mode: [hardware]
Loading