|
23 | 23 | SetEventFilters,
|
24 | 24 | SetEventSchemes,
|
25 | 25 | query_input_value,
|
| 26 | + Commissioning, |
26 | 27 | )
|
27 | 28 | from dali.frame import BackwardFrame, BackwardFrameError
|
28 | 29 | from dali.tests import fakes
|
@@ -363,3 +364,39 @@ def test_query_input_values_10bit():
|
363 | 364 | except StopIteration as r:
|
364 | 365 | ret = r.value
|
365 | 366 | 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