Skip to content

Commit 57ff3e6

Browse files
authored
We should only validate against None when optional=true (project-chip#37161)
1 parent 4412d0c commit 57ff3e6

File tree

1 file changed

+34
-55
lines changed

1 file changed

+34
-55
lines changed

src/python_testing/TC_DGWIFI_2_1.py

+34-55
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,10 @@ def is_valid_bssid(bssid) -> bool:
6464
return False
6565

6666
def assert_valid_bssid(self, value, field_name):
67-
"""Asserts that the value is a valid BSSID (MAC address), None, or NullValue."""
68-
if isinstance(value, Nullable):
69-
if value == NullValue:
70-
return
71-
value = value.Value
72-
73-
if value is not None:
67+
"""Asserts that the value is a valid BSSID (MAC address), or NullValue."""
68+
if value is not NullValue:
7469
asserts.assert_true(self.is_valid_bssid(value),
75-
f"{field_name} should be a valid BSSID string (e.g., '00:11:22:33:44:55') or None/NullValue.")
70+
f"{field_name} should be a valid BSSID string (e.g., '00:11:22:33:44:55') or NullValue.")
7671

7772
async def read_dgwifi_attribute_expect_success(self, endpoint, attribute):
7873
cluster = Clusters.Objects.WiFiNetworkDiagnostics
@@ -134,76 +129,60 @@ async def test_TC_DGWIFI_2_1(self):
134129
# SecurityType is an enum. If the interface is not operational, it could be NULL.
135130
# If not NULL, we expect an integer in the SecurityType enum range.
136131
# Just do a minimal check here; you can refine or extend based on the spec.
137-
if security_type is not None:
138-
asserts.assert_true(isinstance(security_type, Nullable),
139-
"SecurityType must be of type 'Nullable' when not None.")
140-
141-
if security_type is not NullValue:
142-
security_type_value = security_type.Value
143-
self.assert_valid_uint8(security_type_value, "SecurityType")
144-
145-
# Check if the security_type is a valid SecurityTypeEnum member
146-
self.assert_true(
147-
security_type_value in [item.value for item in Clusters.Objects.WiFiNetworkDiagnostics.Enums.SecurityTypeEnum],
148-
f"SecurityType {security_type_value} is not a valid SecurityTypeEnum value"
149-
)
150-
151-
# Additional check that it's not kUnknownEnumValue:
152-
self.assert_true(
153-
security_type_value != Clusters.Objects.WiFiNetworkDiagnostics.Enums.SecurityTypeEnum.kUnknownEnumValue.value,
154-
f"SecurityType should not be kUnknownEnumValue "
155-
f"({Clusters.Objects.WiFiNetworkDiagnostics.Enums.SecurityTypeEnum.kUnknownEnumValue.value})"
156-
)
132+
if security_type is not NullValue:
133+
security_type_value = security_type.Value
134+
self.assert_valid_uint8(security_type_value, "SecurityType")
135+
136+
# Check if the security_type is a valid SecurityTypeEnum member
137+
self.assert_true(
138+
security_type_value in [item.value for item in Clusters.Objects.WiFiNetworkDiagnostics.Enums.SecurityTypeEnum],
139+
f"SecurityType {security_type_value} is not a valid SecurityTypeEnum value"
140+
)
141+
142+
# Additional check that it's not kUnknownEnumValue:
143+
self.assert_true(
144+
security_type_value != Clusters.Objects.WiFiNetworkDiagnostics.Enums.SecurityTypeEnum.kUnknownEnumValue.value,
145+
f"SecurityType should not be kUnknownEnumValue "
146+
f"({Clusters.Objects.WiFiNetworkDiagnostics.Enums.SecurityTypeEnum.kUnknownEnumValue.value})"
147+
)
157148

158149
#
159150
# STEP 4: TH reads WiFiVersion attribute
160151
#
161152
self.step(4)
162153
wifi_version = await self.read_dgwifi_attribute_expect_success(endpoint=endpoint, attribute=attributes.WiFiVersion)
163154
# WiFiVersion is an enum. If not configured or operational, might be NULL.
164-
if wifi_version is not None:
165-
asserts.assert_true(isinstance(wifi_version, Nullable),
166-
"WiFiVersion must be of type 'Nullable' when not None.")
167-
168-
if wifi_version is not NullValue:
169-
wifi_version_value = wifi_version.Value
170-
self.assert_valid_uint8(wifi_version_value, "WiFiVersion")
155+
if wifi_version is not NullValue:
156+
wifi_version_value = wifi_version.Value
157+
self.assert_valid_uint8(wifi_version_value, "WiFiVersion")
171158

172-
# Check if the wifi_version is a valid WiFiVersionEnum member
173-
self.assert_true(wifi_version_value in [item.value for item in Clusters.Objects.WiFiNetworkDiagnostics.Enums.WiFiVersionEnum],
174-
f"WiFiVersion {wifi_version_value} is not a valid WiFiVersionEnum value")
159+
# Check if the wifi_version is a valid WiFiVersionEnum member
160+
self.assert_true(wifi_version_value in [item.value for item in Clusters.Objects.WiFiNetworkDiagnostics.Enums.WiFiVersionEnum],
161+
f"WiFiVersion {wifi_version_value} is not a valid WiFiVersionEnum value")
175162

176-
# Additional check that it's not kUnknownEnumValue:
177-
self.assert_true(wifi_version_value != Clusters.Objects.WiFiNetworkDiagnostics.Enums.WiFiVersionEnum.kUnknownEnumValue.value,
178-
f"WiFiVersion should not be kUnknownEnumValue ({Clusters.Objects.WiFiNetworkDiagnostics.Enums.WiFiVersionEnum.kUnknownEnumValue.value})")
163+
# Additional check that it's not kUnknownEnumValue:
164+
self.assert_true(wifi_version_value != Clusters.Objects.WiFiNetworkDiagnostics.Enums.WiFiVersionEnum.kUnknownEnumValue.value,
165+
f"WiFiVersion should not be kUnknownEnumValue ({Clusters.Objects.WiFiNetworkDiagnostics.Enums.WiFiVersionEnum.kUnknownEnumValue.value})")
179166

180167
#
181168
# STEP 5: TH reads ChannelNumber attribute
182169
#
183170
self.step(5)
184171
channel_number = await self.read_dgwifi_attribute_expect_success(endpoint=endpoint, attribute=attributes.ChannelNumber)
185172
# If not operational, might be NULL. Else we expect an unsigned integer channel.
186-
if channel_number is not None:
187-
asserts.assert_true(isinstance(channel_number, Nullable),
188-
"ChannelNumber must be of type 'Nullable' when not None.")
189-
190-
if channel_number is not NullValue:
191-
self.assert_valid_uint16(channel_number.Value, "ChannelNumber")
173+
if channel_number is not NullValue:
174+
self.assert_valid_uint16(channel_number.Value, "ChannelNumber")
192175

193176
#
194177
# STEP 6: TH reads RSSI attribute
195178
#
196179
self.step(6)
197180
rssi = await self.read_dgwifi_attribute_expect_success(endpoint=endpoint, attribute=attributes.Rssi)
198181
# RSSI is typically a signed integer (dB). If not operational, might be NULL.
199-
if rssi is not None:
200-
asserts.assert_true(isinstance(rssi, Nullable),
201-
"RSSI must be of type 'Nullable' when not None.")
202-
203-
if rssi is not NullValue:
204-
rssi_value = rssi.Value
205-
asserts.assert_true(isinstance(rssi_value, int) and -120 <= rssi_value <= 0,
206-
"rssi_value is not within valid range.")
182+
if rssi is not NullValue:
183+
rssi_value = rssi.Value
184+
asserts.assert_true(isinstance(rssi_value, int) and -120 <= rssi_value <= 0,
185+
"rssi_value is not within valid range.")
207186

208187
#
209188
# STEP 7: TH reads BeaconLostCount attribute

0 commit comments

Comments
 (0)