Skip to content

Commit 31d5f6a

Browse files
author
James Wah
committed
test_device_sequences: add tests for device commissioning
These tests are basically identical to those for control gear.
1 parent 0245607 commit 31d5f6a

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

dali/tests/test_device_sequences.py

+37
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
SetEventFilters,
2424
SetEventSchemes,
2525
query_input_value,
26+
Commissioning,
2627
)
2728
from dali.frame import BackwardFrame, BackwardFrameError
2829
from dali.tests import fakes
@@ -363,3 +364,39 @@ def test_query_input_values_10bit():
363364
except StopIteration as r:
364365
ret = r.value
365366
assert ret == 434
367+
368+
def _check_addresses(devices, expected=None):
369+
if expected is None:
370+
expected = list(range(len(devices)))
371+
addresses = [g.shortaddr_int for g in devices]
372+
addresses.sort()
373+
assert addresses == expected
374+
375+
def test_commissioning():
376+
devices = [fakes.Device() for _ in range(10)]
377+
bus = fakes.Bus(devices)
378+
bus.run_sequence(Commissioning())
379+
_check_addresses(devices)
380+
381+
def test_commissioning_readdress():
382+
devices = [fakes.Device(DeviceShort(x + 5)) for x in range(10)]
383+
bus = fakes.Bus(devices)
384+
bus.run_sequence(Commissioning(readdress=True))
385+
_check_addresses(devices)
386+
387+
def test_commissioning_partial():
388+
addresses = [DeviceShort(x) if x & 1 else None for x in range(10)]
389+
devices = [fakes.Device(address) for address in addresses]
390+
bus = fakes.Bus(devices)
391+
bus.run_sequence(Commissioning())
392+
_check_addresses(devices)
393+
394+
def test_commissioning_clash():
395+
# (At least) one of the devices is going to pick the same
396+
# "random" number as another the first time around!
397+
randoms = list(range(0, 0xffffff, 0x82000))
398+
randoms[8] = randoms[4]
399+
gear = [fakes.Device(random_preload=[x]) for x in randoms]
400+
bus = fakes.Bus(gear)
401+
bus.run_sequence(Commissioning())
402+
_check_addresses(gear)

0 commit comments

Comments
 (0)