2
2
3
3
# pylint:disable=redefined-outer-name,too-many-lines
4
4
5
+ from __future__ import annotations
6
+
5
7
import logging
6
8
import math
7
9
from typing import TYPE_CHECKING , Any
@@ -563,9 +565,21 @@ def test_cluster_handler_registry() -> None:
563
565
"""Test ZIGBEE cluster handler Registry."""
564
566
565
567
# get all quirk ID from zigpy quirks registry
566
- all_quirk_ids = {}
568
+ cluster_quirk_id_map : dict [ int , set [ str | None ]] = {}
567
569
for cluster_id in CLUSTERS_BY_ID :
568
- all_quirk_ids [cluster_id ] = {None }
570
+ cluster_quirk_id_map [cluster_id ] = {None }
571
+
572
+ # loop over custom clusters in v2 quirks registry
573
+ for quirks in _DEVICE_REGISTRY ._registry_v2 .values ():
574
+ for quirk_reg_entry in quirks :
575
+ # get standalone adds_metadata and adds_metadata from replaces_metadata
576
+ all_metadata = set (quirk_reg_entry .adds_metadata ) | {
577
+ rm .add for rm in quirk_reg_entry .replaces_metadata
578
+ }
579
+ for metadata in all_metadata :
580
+ cluster_quirk_id_map [metadata .cluster .cluster_id ] = {None }
581
+
582
+ # loop over custom clusters in v1 quirks registry
569
583
for manufacturer in _DEVICE_REGISTRY .registry .values ():
570
584
for model_quirk_list in manufacturer .values ():
571
585
for quirk in model_quirk_list :
@@ -583,22 +597,22 @@ def test_cluster_handler_registry() -> None:
583
597
for cluster_id in cluster_ids :
584
598
if not isinstance (cluster_id , int ):
585
599
cluster_id = cluster_id .cluster_id
586
- if cluster_id not in all_quirk_ids :
587
- all_quirk_ids [cluster_id ] = {None }
588
- all_quirk_ids [cluster_id ].add (quirk_id )
600
+ if cluster_id not in cluster_quirk_id_map :
601
+ cluster_quirk_id_map [cluster_id ] = {None }
602
+ cluster_quirk_id_map [cluster_id ].add (quirk_id )
589
603
590
604
for (
591
605
cluster_id ,
592
606
cluster_handler_classes ,
593
607
) in CLUSTER_HANDLER_REGISTRY .items ():
594
608
assert isinstance (cluster_id , int )
595
609
assert 0 <= cluster_id <= 0xFFFF
596
- assert cluster_id in all_quirk_ids
610
+ assert cluster_id in cluster_quirk_id_map
597
611
assert isinstance (cluster_handler_classes , dict )
598
612
for quirk_id , cluster_handler in cluster_handler_classes .items ():
599
613
assert quirk_id is None or isinstance (quirk_id , str )
600
614
assert issubclass (cluster_handler , ClusterHandler )
601
- assert quirk_id in all_quirk_ids [cluster_id ]
615
+ assert quirk_id in cluster_quirk_id_map [cluster_id ]
602
616
603
617
604
618
def test_epch_unclaimed_cluster_handlers (cluster_handler ) -> None :
0 commit comments