From 22068014a71f3f8ba563c8df08e000e02f76215e Mon Sep 17 00:00:00 2001 From: manjunath-grl <102359958+manjunath-grl@users.noreply.github.com> Date: Fri, 23 Sep 2022 18:58:56 +0530 Subject: [PATCH] Modified TSTAT sep 21 (#22800) * Fixed issue #561and #562 TSTAT-2.1 TSTAT-2.2 * Auto generated files * Restyled by whitespace * Disabled TSTAT tests in Darwin * Auto generated files * Restyled by whitespace * Fix #2296 * Auto generated files Co-authored-by: Restyled.io --- .../templates/tests/ciTests.json | 4 +- .../suites/certification/Test_TC_ACL_2_2.yaml | 74 +- .../Test_TC_APPLAUNCHER_3_8.yaml | 27 +- .../Test_TC_AUDIOOUTPUT_1_8.yaml | 10 - .../certification/Test_TC_TSTAT_2_1.yaml | 231 +- .../certification/Test_TC_TSTAT_2_2.yaml | 1014 ++- .../chip-tool/zap-generated/test/Commands.h | 2401 +++++-- .../zap-generated/test/Commands.h | 5939 +---------------- 8 files changed, 3287 insertions(+), 6413 deletions(-) diff --git a/examples/darwin-framework-tool/templates/tests/ciTests.json b/examples/darwin-framework-tool/templates/tests/ciTests.json index fd8f8840d162a0..50f8ce2e3add50 100644 --- a/examples/darwin-framework-tool/templates/tests/ciTests.json +++ b/examples/darwin-framework-tool/templates/tests/ciTests.json @@ -20,6 +20,8 @@ "Test_TC_BINFO_2_1", "Test_TC_SWTCH_2_1", "Test_TC_G_2_1", - "Test_TC_FLABEL_2_1" + "Test_TC_FLABEL_2_1", + "Test_TC_TSTAT_2_1", + "Test_TC_TSTAT_2_2" ] } diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_2.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_2.yaml index a7f4c9b954713c..51463040fae4ff 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_2.yaml @@ -42,14 +42,72 @@ tests: type: list contains: [31] + #Endpoint configuration is not supported in YAML - label: "TH1 reads DUT Descriptor cluster ServerList attribute from every Endpoint except 0" - command: "readAttribute" - cluster: "Descriptor" - endpoint: 1 - attribute: "ServerList" - response: - constraints: - type: list - excludes: [31] + verification: | + ./chip-tool descriptor read server-list 1 1 + + + On TH1(Chiptool) ,Verify the serverList attribute of Descriptor Cluster without an element of 31( 0x001F) + + [1656412927.698026][3383:3388] CHIP:DMG: SuppressResponse = true, + [1656412927.698052][3383:3388] CHIP:DMG: InteractionModelRevision = 1 + [1656412927.698076][3383:3388] CHIP:DMG: } + [1656412927.698852][3383:3388] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 239898735 + [1656412927.698963][3383:3388] CHIP:TOO: server list: 44 entries + [1656412927.698997][3383:3388] CHIP:TOO: [1]: 3 + [1656412927.699023][3383:3388] CHIP:TOO: [2]: 4 + [1656412927.699050][3383:3388] CHIP:TOO: [3]: 5 + [1656412927.699075][3383:3388] CHIP:TOO: [4]: 6 + [1656412927.699101][3383:3388] CHIP:TOO: [5]: 7 + [1656412927.699127][3383:3388] CHIP:TOO: [6]: 8 + [1656412927.699153][3383:3388] CHIP:TOO: [7]: 15 + [1656412927.699179][3383:3388] CHIP:TOO: [8]: 29 + [1656412927.699205][3383:3388] CHIP:TOO: [9]: 30 + [1656412927.699231][3383:3388] CHIP:TOO: [10]: 37 + [1656412927.699258][3383:3388] CHIP:TOO: [11]: 47 + [1656412927.699284][3383:3388] CHIP:TOO: [12]: 59 + [1656412927.699310][3383:3388] CHIP:TOO: [13]: 64 + [1656412927.699336][3383:3388] CHIP:TOO: [14]: 65 + [1656412927.699361][3383:3388] CHIP:TOO: [15]: 69 + [1656412927.699387][3383:3388] CHIP:TOO: [16]: 80 + [1656412927.699414][3383:3388] CHIP:TOO: [17]: 257 + [1656412927.699440][3383:3388] CHIP:TOO: [18]: 258 + [1656412927.699466][3383:3388] CHIP:TOO: [19]: 259 + [1656412927.699492][3383:3388] CHIP:TOO: [20]: 512 + [1656412927.699518][3383:3388] CHIP:TOO: [21]: 513 + [1656412927.699544][3383:3388] CHIP:TOO: [22]: 514 + [1656412927.699571][3383:3388] CHIP:TOO: [23]: 516 + [1656412927.699596][3383:3388] CHIP:TOO: [24]: 768 + [1656412927.699623][3383:3388] CHIP:TOO: [25]: 1024 + [1656412927.699649][3383:3388] CHIP:TOO: [26]: 1026 + [1656412927.699675][3383:3388] CHIP:TOO: [27]: 1027 + [1656412927.699701][3383:3388] CHIP:TOO: [28]: 1028 + [1656412927.699727][3383:3388] CHIP:TOO: [29]: 1029 + [1656412927.699754][3383:3388] CHIP:TOO: [30]: 1030 + [1656412927.699780][3383:3388] CHIP:TOO: [31]: 1283 + [1656412927.699806][3383:3388] CHIP:TOO: [32]: 1284 + [1656412927.699832][3383:3388] CHIP:TOO: [33]: 1285 + [1656412927.699858][3383:3388] CHIP:TOO: [34]: 1286 + [1656412927.699884][3383:3388] CHIP:TOO: [35]: 1287 + [1656412927.699911][3383:3388] CHIP:TOO: [36]: 1288 + [1656412927.699937][3383:3388] CHIP:TOO: [37]: 1289 + [1656412927.699963][3383:3388] CHIP:TOO: [38]: 1290 + [1656412927.700002][3383:3388] CHIP:TOO: [39]: 1291 + [1656412927.700029][3383:3388] CHIP:TOO: [40]: 1292 + [1656412927.700056][3383:3388] CHIP:TOO: [41]: 1293 + [1656412927.700082][3383:3388] CHIP:TOO: [42]: 1294 + [1656412927.700108][3383:3388] CHIP:TOO: [43]: 2820 + [1656412927.700134][3383:3388] CHIP:TOO: [44]: 4294048773 + [1656412927.700251][3383:3388] CHIP:EM: Sending Standalone Ack for MessageCounter:186152197 on exchange 39489i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT + arguments: + values: + - name: "message" + value: "Factory Reset the DUT and enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8.yaml index 597becc21e27f4..893cc48e7e1431 100644 --- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8.yaml @@ -53,10 +53,25 @@ tests: - name: "status" value: 0 + #Endpoint configuration is not supported in YAML - label: "Reads the Status attribute" - cluster: "Application Basic" - endpoint: 3 - command: "readAttribute" - attribute: "Status" - response: - value: 0 + PICS: PICS_USER_PROMPT + verification: | + The TH commands for this test step can be invoked using chip-tool (when DUT is a commissionee) or tv-casting-app (when DUT is a commissioner): + ./chip-tool applicationbasic read status 1 3 + ./chip-tv-casting-app applicationbasic read status 1 3 + + On TH verify that the Status attribute value as 0 + [1658208937.049446][2428:2433] CHIP:DMG: InteractionModelRevision = 1 + [1658208937.049483][2428:2433] CHIP:DMG: } + [1658208937.049690][2428:2433] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_050D Attribute 0x0000_0005 DataVersion: 3850684771 + [1658208937.049809][2428:2433] CHIP:TOO: Status: 0 + [1658208937.049922][2428:2433] CHIP:EM: Sending Standalone Ack for MessageCounter:75774840 on exchange 3041i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_1_8.yaml b/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_1_8.yaml index 8d1caa480a84a9..24dd9c6273e427 100644 --- a/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_1_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_1_8.yaml @@ -67,16 +67,6 @@ tests: contains: [0] - label: "Read the global attribute: GeneratedCommandList" - PICS: AUDIOOUTPUT.S.NU - command: "readAttribute" - attribute: "GeneratedCommandList" - response: - value: [1] - constraints: - type: list - - - label: "Read the global attribute: GeneratedCommandList" - PICS: " !AUDIOOUTPUT.S.NU " command: "readAttribute" attribute: "GeneratedCommandList" response: diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml index 6cf8fa3aa9051f..01bfc0f3e0d651 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml @@ -31,6 +31,87 @@ tests: - name: "nodeId" value: nodeId + - label: + "Saving value for comparision in step 5 read AbsMinCoolSetpointLimit + attribute" + PICS: TSTAT.S.A0005 + command: "readAttribute" + attribute: "AbsMinCoolSetpointLimit" + response: + saveAs: AbsMinCoolSetpointLimitStep5 + + - label: + "Saving value for comparision in step 5 read attribute + MinSetpointDeadBand attribute" + PICS: TSTAT.S.A0019 + command: "readAttribute" + attribute: "MinSetpointDeadBand" + response: + saveAs: MinSetpointDeadBand + + - label: + "Saving value for comparision in step 6 read AbsMaxCoolSetpointLimit + attribute" + PICS: TSTAT.S.A0006 + command: "readAttribute" + attribute: "AbsMaxCoolSetpointLimit" + response: + saveAs: AbsMaxCoolSetpointLimitStep6 + + - label: + "Saving value for comparision in step 17 read MinCoolSetpointLimit + attribute" + PICS: TSTAT.S.A0017 + command: "readAttribute" + attribute: "MinCoolSetpointLimit" + response: + saveAs: MinCoolSetpointLimit + + - label: + "Saving value for comparision in step 17 read MaxCoolSetpointLimit + attribute" + PICS: TSTAT.S.A0018 + command: "readAttribute" + attribute: "MaxCoolSetpointLimit" + response: + saveAs: MaxCoolSetpointLimit + + - label: + "Saving value for comparision in step 13 read attribute + OccupiedCoolingSetpoint" + PICS: TSTAT.S.F01 + command: "readAttribute" + attribute: "OccupiedCoolingSetpoint" + response: + saveAs: OccupiedCoolingSetpoint + + - label: + "Saving value for comparision in step 15 read attribute + AbsMinHeatSetpointLimit" + PICS: TSTAT.S.A0003 + command: "readAttribute" + attribute: "AbsMinHeatSetpointLimit" + response: + saveAs: AbsMinHeat + + - label: + "Saving value for comparision in step 15 read attribute + AbsMaxHeatSetpointLimit" + PICS: TSTAT.S.A0004 + command: "readAttribute" + attribute: "AbsMaxHeatSetpointLimit" + response: + saveAs: AbsMaxHeat + + - label: + "Saving value for comparision in step 16 read + UnoccupiedCoolingSetpoint attribute" + PICS: TSTAT.S.A0013 + command: "readAttribute" + attribute: "UnoccupiedCoolingSetpoint" + response: + saveAs: UnoccupiedCoolingSetpoint + - label: "Reads mandatory attributes from DUT: LocalTemperature" command: "readAttribute" attribute: "LocalTemperature" @@ -60,8 +141,30 @@ tests: minValue: 0 maxValue: 1 - - label: "Reads mandatory attributes from DUT: AbsMinHeatSetpointLimit" - PICS: TSTAT.S.A0003 + - label: + "Read attribute AbsMinHeatSetpointLimit if TSTAT.S.F05 feature is + supported" + PICS: TSTAT.S.A0003 && TSTAT.S.A0005 && TSTAT.S.F05 + command: "readAttribute" + attribute: "AbsMinHeatSetpointLimit" + response: + constraints: + type: int16s + maxValue: AbsMinCoolSetpointLimitStep5 - MinSetpointDeadBand + + - label: + "Read attribute AbsMinHeatSetpointLimit if TSTAT.S.F05 feature is + supported" + PICS: TSTAT.S.A0003 && !TSTAT.S.A0005 && TSTAT.S.F05 + command: "readAttribute" + attribute: "AbsMinHeatSetpointLimit" + response: + constraints: + type: int16s + maxValue: 1575 + + - label: "Read attribute AbsMinHeatSetpointLimit from DUT" + PICS: TSTAT.S.A0003 && !TSTAT.S.F05 command: "readAttribute" attribute: "AbsMinHeatSetpointLimit" response: @@ -80,7 +183,7 @@ tests: minValue: -27315 maxValue: 32767 - - label: "Reads optional attributes from DUT: AbsMinCoolSetpointLimit" + - label: "Read attribute AbsMinCoolSetpointLimit from DUT" PICS: TSTAT.S.A0005 command: "readAttribute" attribute: "AbsMinCoolSetpointLimit" @@ -90,7 +193,7 @@ tests: minValue: -27315 maxValue: 32767 - - label: "Reads optional attributes from DUT: AbsMaxCoolSetpointLimit" + - label: "Read attribute AbsMaxCoolSetpointLimit from DUT" PICS: TSTAT.S.A0006 command: "readAttribute" attribute: "AbsMaxCoolSetpointLimit" @@ -137,11 +240,21 @@ tests: response: constraints: type: int8s - minValue: 25 - maxValue: -25 + minValue: -25 + maxValue: 25 - - label: "Reads optional attributes from DUT: OccupiedCoolingSetpoint" - PICS: TSTAT.S.F01 + - label: "Read attribute OccupiedCoolingSetpoint from the DUT" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 + command: "readAttribute" + attribute: "OccupiedCoolingSetpoint" + response: + constraints: + type: int16s + minValue: MinCoolSetpointLimit + maxValue: MaxCoolSetpointLimit + + - label: "Read attribute OccupiedCoolingSetpoint from the DUT" + PICS: TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018 command: "readAttribute" attribute: "OccupiedCoolingSetpoint" response: @@ -150,8 +263,20 @@ tests: minValue: 1600 maxValue: 3200 - - label: "Reads mandatory attributes from DUT: OccupiedHeatingSetpoint" - PICS: TSTAT.S.F00 + - label: + "Read attribute OccupiedHeatingSetpoint if TSTAT.S.F05 feature is + supported" + PICS: TSTAT.S.F05 && TSTAT.S.F00 + command: "readAttribute" + attribute: "OccupiedHeatingSetpoint" + response: + constraints: + type: int16s + minValue: AbsMinCoolSetpointLimitStep5 + maxValue: OccupiedCoolingSetpoint - MinSetpointDeadBand + + - label: "Read attribute OccupiedHeatingSetpoint from the DUT" + PICS: TSTAT.S.F00 && !TSTAT.S.F05 command: "readAttribute" attribute: "OccupiedHeatingSetpoint" response: @@ -161,7 +286,17 @@ tests: maxValue: 3000 - label: "Read UnoccupiedCoolingSetpoint attribute from the DUT" - PICS: TSTAT.S.F01 && TSTAT.S.F02 + PICS: TSTAT.S.F05 && TSTAT.S.A0013 + command: "readAttribute" + attribute: "UnoccupiedCoolingSetpoint" + response: + constraints: + type: int16s + minValue: AbsMinHeat + maxValue: AbsMaxHeat + + - label: "Read UnoccupiedCoolingSetpoint attribute from the DUT" + PICS: TSTAT.S.F01 && TSTAT.S.F02 && !TSTAT.S.F05 command: "readAttribute" attribute: "UnoccupiedCoolingSetpoint" response: @@ -171,7 +306,17 @@ tests: maxValue: 3200 - label: "Read UnoccupiedHeatingSetpoint attribute from the DUT" - PICS: TSTAT.S.F00 && TSTAT.S.F02 + PICS: TSTAT.S.F00 && TSTAT.S.F02 && TSTAT.S.F05 && TSTAT.S.A0013 + command: "readAttribute" + attribute: "UnoccupiedHeatingSetpoint" + response: + constraints: + type: int16s + minValue: 700 + maxValue: UnoccupiedCoolingSetpoint - MinSetpointDeadBand + + - label: "Read UnoccupiedHeatingSetpoint attribute from the DUT" + PICS: TSTAT.S.F00 && TSTAT.S.F02 && !TSTAT.S.F05 command: "readAttribute" attribute: "UnoccupiedHeatingSetpoint" response: @@ -181,7 +326,17 @@ tests: maxValue: 3000 - label: "Reads attribute from DUT: MinHeatSetpointLimit" - PICS: TSTAT.S.A0015 + PICS: TSTAT.S.A0015 && TSTAT.S.F05 && TSTAT.S.A0017 + command: "readAttribute" + attribute: "MinHeatSetpointLimit" + response: + constraints: + type: int16s + minValue: 700 + maxValue: MinCoolSetpointLimit - MinSetpointDeadBand + + - label: "Read attribute MinHeatSetpointLimit from the DUT" + PICS: TSTAT.S.A0015 && !TSTAT.S.F05 command: "readAttribute" attribute: "MinHeatSetpointLimit" response: @@ -190,37 +345,57 @@ tests: minValue: 700 maxValue: 3000 + - label: "Read attribute MaxHeatSetpointLimit from the DUT" + PICS: TSTAT.S.A0016 && !TSTAT.S.F05 + command: "readAttribute" + attribute: "MaxHeatSetpointLimit" + response: + constraints: + type: int16s + minValue: 700 + maxValue: 3000 + - label: "Reads attribute from DUT: MaxHeatSetpointLimit" - PICS: TSTAT.S.A0016 + PICS: TSTAT.S.A0016 && TSTAT.S.F05 && TSTAT.S.A0018 command: "readAttribute" attribute: "MaxHeatSetpointLimit" response: constraints: type: int16s - minValue: -27315 - maxValue: 32767 + minValue: 700 + maxValue: MaxCoolSetpointLimit - MinSetpointDeadBand - - label: "Reads optional attributes from DUT: MinCoolSetpointLimit" - PICS: TSTAT.S.A0017 + - label: "Read attribute MinCoolSetpointLimit from DUT" + PICS: TSTAT.S.A0017 && TSTAT.S.A0018 && TSTAT.S.A0005 command: "readAttribute" attribute: "MinCoolSetpointLimit" response: constraints: type: int16s - minValue: -27315 - maxValue: 32767 + minValue: AbsMinCoolSetpointLimitStep5 + maxValue: MaxCoolSetpointLimit - - label: "Reads optional attributes from DUT: MaxCoolSetpointLimit" - PICS: TSTAT.S.A0018 + - label: "Read attribute MinCoolSetpointLimit from DUT" + PICS: TSTAT.S.A0017 && !TSTAT.S.A0018 && !TSTAT.S.A0005 + command: "readAttribute" + attribute: "MinCoolSetpointLimit" + response: + constraints: + type: int16s + minValue: 1600 + maxValue: 3200 + + - label: "Read attribute MaxCoolSetpointLimit from DUT" + PICS: TSTAT.S.A0018 && TSTAT.S.A0006 && TSTAT.S.A0017 command: "readAttribute" attribute: "MaxCoolSetpointLimit" response: constraints: type: int16s - minValue: -27315 - maxValue: 32767 + minValue: MinCoolSetpointLimit + maxValue: AbsMaxCoolSetpointLimitStep6 - - label: "Reads optional attributes from DUT: MinSetpointDeadBand" + - label: "Read attribute MinSetpointDeadBand from DUT" PICS: TSTAT.S.F05 command: "readAttribute" attribute: "MinSetpointDeadBand" @@ -240,7 +415,8 @@ tests: minValue: 0 maxValue: 7 - - label: "Reads mandatory attributes from DUT: ControlSequenceOfOperation" + - label: "Read attribute ControlSequenceOfOperation from DUT" + PICS: TSTAT.S.A001b command: "readAttribute" attribute: "ControlSequenceOfOperation" response: @@ -249,7 +425,8 @@ tests: minValue: 0 maxValue: 5 - - label: "Reads mandatory attributes from DUT: SystemMode" + - label: "Read attribute SystemMode from DUT" + PICS: TSTAT.S.A001c command: "readAttribute" attribute: "SystemMode" response: diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_2_2.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_2_2.yaml index ab5fc6acb42b17..f402fa9f0ec0c9 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_2_2.yaml @@ -31,12 +31,124 @@ tests: - name: "nodeId" value: nodeId + - label: "Saving value for comparision in step 2a read MinCoolSetpointLimit" + PICS: TSTAT.S.A0017 + command: "readAttribute" + attribute: "MinCoolSetpointLimit" + response: + saveAs: MinCoolSetpointLimit + + - label: "Saving value for comparision in step 2a read MaxCoolSetpointLimit" + PICS: TSTAT.S.A0018 + command: "readAttribute" + attribute: "MaxCoolSetpointLimit" + response: + saveAs: MaxCoolSetpointLimit + + - label: + "Saving value for comparision in step 2c read attribute + MinSetpointDeadBand" + PICS: TSTAT.S.A0019 + command: "readAttribute" + attribute: "MinSetpointDeadBand" + response: + saveAs: MinSetpointDeadBand + + - label: "Saving value for comparision in step 3a read MinHeatSetpointLimit" + PICS: TSTAT.S.A0015 + command: "readAttribute" + attribute: "MinHeatSetpointLimit" + response: + saveAs: MinHeatSetpointLimit + + - label: + "Saving value for comparision in step 3 reads + UnoccupiedCoolingSetpoint attribute" + command: "readAttribute" + attribute: "UnoccupiedCoolingSetpoint" + PICS: TSTAT.S.A0013 + response: + saveAs: UnoccupiedCoolingSetpoint + + - label: "Saving value for comparision in step 3a read MaxHeatSetpointLimit" + PICS: TSTAT.S.A0016 + command: "readAttribute" + attribute: "MaxHeatSetpointLimit" + response: + saveAs: MaxHeatSetpointLimit + + - label: + "Saving value for comparision in step3c read attribute + OccupiedHeatingSetpoint" + PICS: TSTAT.S.A0012 + command: "readAttribute" + attribute: "OccupiedHeatingSetpoint" + response: + saveAs: OccupiedHeatingSetpoint + + - label: + "Saving value for comparision in step3c read attribute + OccupiedCoolingSetpoint" + PICS: TSTAT.S.A0011 + command: "readAttribute" + attribute: "OccupiedCoolingSetpoint" + response: + saveAs: OccupiedCoolingSetpoint + + - label: + "Saving value for comparision in step 6a read attribute + AbsMinHeatSetpointLimit" + command: "readAttribute" + attribute: "AbsMinHeatSetpointLimit" + PICS: TSTAT.S.A0003 + response: + saveAs: AbsMinHeatSetpointLimitValue + + - label: + "Saving value for comparision in step 7a read attribute + AbsMaxHeatSetpointLimit" + command: "readAttribute" + attribute: "AbsMaxHeatSetpointLimit" + PICS: TSTAT.S.A0004 + response: + saveAs: AbsMaxHeatSetpointLimitValue + + - label: + "Saving value for comparision in step 8a read attribute + AbsMinCoolSetpointLimit" + command: "readAttribute" + attribute: "AbsMinCoolSetpointLimit" + PICS: TSTAT.S.A0005 + response: + saveAs: AbsMinCoolSetpointLimit + + - label: + "Saving value for comparision in step9a read attribute + AbsMaxCoolSetpointLimit" + command: "readAttribute" + attribute: "AbsMaxCoolSetpointLimit" + PICS: TSTAT.S.A0006 + response: + saveAs: AbsMaxCoolSetpointLimit + + #Using saved values when optional attributes are available + - label: "Read attribute OccupiedCoolingSetpoint from the DUT" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 + command: "readAttribute" + attribute: "OccupiedCoolingSetpoint" + response: + constraints: + type: int16s + minValue: MinCoolSetpointLimit + maxValue: MaxCoolSetpointLimit + + #Using hard coded values when optional attributes are not available - label: "Reads OccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range" command: "readAttribute" attribute: "OccupiedCoolingSetpoint" - PICS: TSTAT.S.F01 + PICS: TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018 response: constraints: type: int16s @@ -63,61 +175,141 @@ tests: - label: "Writes OccupiedCoolingSetpoint to value below the - ABSMinCoolSetpointLimit" + MinCoolSetpointLimit" command: "writeAttribute" attribute: "OccupiedCoolingSetpoint" - PICS: TSTAT.S.F01 + PICS: TSTAT.S.F01 && !TSTAT.S.A0017 arguments: value: 30 response: error: CONSTRAINT_ERROR + #MinCoolSetPointLimit might be negative if not checked before decrement + - label: + "Writes OccupiedCoolingSetpoint to value below the + MinCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP + verification: | + Optional attribute so its not compulsory to get the expected outcome + + ./chip-tool thermostat write occupied-cooling-setpoint 3600 1 1 + On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87) + [1658386056.238286][2906:2911] CHIP:DMG: } + [1658386056.238356][2906:2911] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1658386056.238389][2906:2911] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1658386056.238449][2906:2911] CHIP:EM: Sending Standalone Ack for MessageCounter:41416222 on exchange 5788i + [1658386056.238525][2906:2911] CHIP:IN: Prepared secure message 0xffffa77ed9e8 to 0x0000000000000001 (1) of type 0x10 and protocolId (0, 0) on exchange 5788i with MessageCounter:113884573 + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Writes OccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit" command: "writeAttribute" attribute: "OccupiedCoolingSetpoint" - PICS: TSTAT.S.F01 + PICS: TSTAT.S.F01 && !TSTAT.S.A0017 arguments: value: 4000 response: error: CONSTRAINT_ERROR + - label: + "Writes OccupiedCoolingSetpoint to value above the + MaxCoolSetpointLimit" + command: "writeAttribute" + attribute: "OccupiedCoolingSetpoint" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 + arguments: + value: MaxCoolSetpointLimit + 1000 + response: + error: CONSTRAINT_ERROR + - label: "Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint attribute" command: "writeAttribute" attribute: "OccupiedCoolingSetpoint" - PICS: TSTAT.S.F01 && !TSTAT.S.F05 + PICS: TSTAT.S.F01 && !TSTAT.S.F05 && !TSTAT.S.A0017 arguments: value: 1600 - label: - "Writes the CoolingSetpoint below the HeatingSetpoint when auto is - enabled" + "Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint + attribute" command: "writeAttribute" attribute: "OccupiedCoolingSetpoint" - PICS: TSTAT.S.F05 + PICS: TSTAT.S.F01 && !TSTAT.S.F05 && TSTAT.S.A0017 arguments: - value: 1600 - response: - error: CONSTRAINT_ERROR + value: MinCoolSetpointLimit + + #LowerLimit = Max(MinCoolSetpointLimit,(OccupiedHeatingSetpoint + MinSetpointDeadBand)) not possible in YAML + - label: + "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit, + (OccupiedHeatingSetpoint + MinSetpointDeadBand)) to + OccupiedCoolingSetpoint attribute when Auto is enabled" + PICS: TSTAT.S.F05 && TSTAT.S.A0012 && PICS_SKIP_SAMPLE_APP + verification: | + Optional attribute so its not compulsory to get the expected outcome + + ./chip-tool thermostat write occupied-cooling-setpoint 1600 1 1 + On TH(chip-tool) verify that DUT sends a success response + + [1658386056.238356][2906:2911] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1658386056.238389][2906:2911] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1658386056.238449][2906:2911] CHIP:EM: Sending Standalone Ack for MessageCounter:41416222 on exchange 5788i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint attribute" command: "writeAttribute" attribute: "OccupiedCoolingSetpoint" - PICS: TSTAT.S.F01 + PICS: TSTAT.S.F01 && !TSTAT.S.A0017 arguments: value: 3200 + - label: + "Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint + attribute" + command: "writeAttribute" + attribute: "OccupiedCoolingSetpoint" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 + arguments: + value: MaxCoolSetpointLimit + + #Using saved values when optional attributes are available - label: "Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range" command: "readAttribute" attribute: "OccupiedHeatingSetpoint" - PICS: TSTAT.S.F00 + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016 + response: + constraints: + type: int16s + minValue: MinHeatSetpointLimit + maxValue: MaxHeatSetpointLimit + + #Using hard coded values when optional attributes are not available + - label: + "Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies + that the value is within range" + command: "readAttribute" + attribute: "OccupiedHeatingSetpoint" + PICS: TSTAT.S.F00 && !TSTAT.S.A0015 && !TSTAT.S.A0016 response: constraints: type: int16s @@ -147,47 +339,83 @@ tests: MinHeatSetpointLimit" command: "writeAttribute" attribute: "OccupiedHeatingSetpoint" - PICS: TSTAT.S.F00 + PICS: TSTAT.S.F00 && !TSTAT.S.A0015 arguments: value: 600 response: error: CONSTRAINT_ERROR + #MinHeatSetpointLimit might be negative if not checked before decrement + - label: + "Writes OccupiedHeatingSetpoint to value below the + MinHeatSetpointLimit" + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP + verification: | + Optional Attribute - + + ./chip-tool thermostat write occupied-heating-setpoint 5000 1 1 + + On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87) + [1658388388.725344][3134:3139] CHIP:DMG: InteractionModelRevision = 1 + [1658388388.725388][3134:3139] CHIP:DMG: } + [1658388388.725505][3134:3139] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1658388388.725558][3134:3139] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1658388388.725618][3134:3139] CHIP:EM: Sending Standalone Ack for MessageCounter:199663269 on exchange 29439i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Writes OccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit" command: "writeAttribute" attribute: "OccupiedHeatingSetpoint" - PICS: TSTAT.S.F00 + PICS: TSTAT.S.F00 && !TSTAT.S.A0016 arguments: value: 4010 response: error: CONSTRAINT_ERROR + - label: + "Writes OccupiedHeatingSetpoint to value above the + MaxHeatSetpointLimit" + command: "writeAttribute" + attribute: "OccupiedHeatingSetpoint" + PICS: TSTAT.S.F00 && TSTAT.S.A0016 + arguments: + value: MaxHeatSetpointLimit + 1000 + response: + error: CONSTRAINT_ERROR + - label: "Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint attribute" command: "writeAttribute" attribute: "OccupiedHeatingSetpoint" - PICS: TSTAT.S.F00 + PICS: TSTAT.S.F00 && !TSTAT.S.A0015 arguments: value: 700 - label: - "Reads it back again to confirm the successful write of - OccupiedHeatingSetpoint attribute" - command: "readAttribute" + "Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint + attribute" + command: "writeAttribute" attribute: "OccupiedHeatingSetpoint" - PICS: TSTAT.S.F00 - response: - value: 700 + PICS: TSTAT.S.F00 && TSTAT.S.A0015 + arguments: + value: MinHeatSetpointLimit - label: "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute" command: "writeAttribute" attribute: "OccupiedHeatingSetpoint" - PICS: TSTAT.S.F00 && !TSTAT.S.F05 + PICS: TSTAT.S.F00 && !TSTAT.S.F05 && !TSTAT.S.A0016 arguments: value: 3000 @@ -196,18 +424,72 @@ tests: attribute" command: "writeAttribute" attribute: "OccupiedHeatingSetpoint" - PICS: TSTAT.S.F05 + PICS: TSTAT.S.F00 && !TSTAT.S.F05 && TSTAT.S.A0016 + arguments: + value: MaxHeatSetpointLimit + + - label: + "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint + attribute" + command: "writeAttribute" + attribute: "OccupiedHeatingSetpoint" + PICS: TSTAT.S.F05 && !TSTAT.S.A0015 arguments: value: 3000 response: error: CONSTRAINT_ERROR + #UpperLimit = Min(MaxHeatSetpointLimit,(OccupiedCoolingSetpoint - MinSetpointDeadBand)) not possible in YAML + - label: + "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit, + (OccupiedCoolingSetpoint - MinSetpointDeadBand)) to + OccupiedHeatingSetpoint attribute when Auto is enabled" + PICS: + TSTAT.S.F05 && TSTAT.S.A0011 && TSTAT.S.A0012 && PICS_SKIP_SAMPLE_APP + verification: | + ./chip-tool thermostat write occupied-heating-setpoint 2200 1 1 + On TH(chip-tool) verify that DUT sends a success response + [1661755950.285710][3540:3545] CHIP:DMG: StatusIB = + [1661755950.285739][3540:3545] CHIP:DMG: { + [1661755950.285769][3540:3545] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), + [1661755950.285799][3540:3545] CHIP:DMG: }, + [1661755950.285831][3540:3545] CHIP:DMG: + [1661755950.285855][3540:3545] CHIP:DMG: }, + + ./chip-tool thermostat read occupied-heating-setpoint 1 1 + + On TH(chip-tool) verify that the occupied heating setpoint attribute value which is provided in previous step + [1661756337.957444][3574:3579] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0201 Attribute 0x0000_0012 DataVersion: 1052267276 + [1661756337.957573][3574:3579] CHIP:TOO: OccupiedHeatingSetpoint: 2000 + [1661756337.957876][3574:3579] CHIP:EM: Sending Standalone Ack for MessageCounter:176529588 on exchange 9927i + [1661756337.958020][3574:3579] CHIP:IN: Prepared secure message 0xffff867cd978 to 0x0000000000000001 (1) of type 0x10 and p + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Reads UnoccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range" command: "readAttribute" attribute: "UnoccupiedCoolingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F01 + PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 + response: + constraints: + type: int16s + minValue: MinCoolSetpointLimit + maxValue: MaxCoolSetpointLimit + + - label: + "Reads UnoccupiedCoolingSetpoint attribute from Server DUT and + verifies that the value is within range" + command: "readAttribute" + attribute: "UnoccupiedCoolingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018 response: constraints: type: int16s @@ -237,47 +519,148 @@ tests: MinCoolSetpointLimit" command: "writeAttribute" attribute: "UnoccupiedCoolingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F01 + PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 arguments: value: 1002 response: error: CONSTRAINT_ERROR + #MinCoolSetpointLimit might be negative if not checked before decrement + - label: + "Writes UnoccupiedCoolingSetpoint to value below the + MinCoolSetpointLimit" + PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP + verification: | + Optional Attribute - If it is supported, then in TH(chip-tool) log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + ./chip-tool thermostat write unoccupied-cooling-setpoint 2200 1 1 + + https://github.com/project-chip/connectedhomeip/issues/15627 + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Writes UnoccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit" command: "writeAttribute" attribute: "UnoccupiedCoolingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F01 + PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0018 arguments: value: 4010 response: error: CONSTRAINT_ERROR + - label: + "Writes UnoccupiedCoolingSetpoint to value above the + MaxCoolSetpointLimit" + command: "writeAttribute" + attribute: "UnoccupiedCoolingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0018 + arguments: + value: MaxCoolSetpointLimit + 1000 + response: + error: CONSTRAINT_ERROR + - label: "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute" command: "writeAttribute" attribute: "UnoccupiedCoolingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F01 + PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.F05 arguments: - value: 1800 + value: 1600 + + - label: + "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint + attribute" + command: "writeAttribute" + attribute: "UnoccupiedCoolingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && TSTAT.S.F05 + arguments: + value: 1600 + response: + error: CONSTRAINT_ERROR + + - label: + "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint + attribute" + command: "writeAttribute" + attribute: "UnoccupiedCoolingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.F05 + arguments: + value: MinCoolSetpointLimit + + #LowerLimit = Max(MinCoolSetpointLimit,(UnoccupiedCoolingSetpoint + MinSetpointDeadBand)) not possible in YAML + - label: + "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit, + (UnoccupiedCoolingSetpoint + MinSetpointDeadBand)) to + UnoccupiedCoolingSetpoint attribute" + PICS: + TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0013 && TSTAT.S.F05 && + PICS_SKIP_SAMPLE_APP + verification: | + Optional Attribute - If it is supported, then in TH(chip-tool) log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + ./chip-tool thermostat read unoccupied-cooling-setpoint 1 1 + + Verify in TH(chip-tool) Log: + + [1650451290.847810][5403:5408] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) + [1650451290.847903][5403:5408] CHIP:EM: Sending Standalone Ack for MessageCounter:5212350 on exchange 30170i + https://github.com/project-chip/connectedhomeip/issues/15627 + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute" command: "writeAttribute" attribute: "UnoccupiedCoolingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F01 + PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0018 && !TSTAT.S.F05 arguments: - value: 3000 + value: 3200 + + - label: + "Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint + attribute" + command: "writeAttribute" + attribute: "UnoccupiedCoolingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05 + arguments: + value: MaxCoolSetpointLimit + #Using saved values when optional attributes are available - label: "Reads UnoccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range" command: "readAttribute" attribute: "UnoccupiedHeatingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F00 + PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016 + response: + constraints: + type: int16s + minValue: MinHeatSetpointLimit + maxValue: MaxHeatSetpointLimit + + #Using hardcoded values when optional attributes are not available + - label: + "Reads UnoccupiedHeatingSetpoint attribute from Server DUT and + verifies that the value is within range" + command: "readAttribute" + attribute: "UnoccupiedHeatingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015 && !TSTAT.S.A0016 response: constraints: type: int16s @@ -307,47 +690,153 @@ tests: MinHeatSetpointLimit" command: "writeAttribute" attribute: "UnoccupiedHeatingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F00 + PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015 arguments: value: 500 response: error: CONSTRAINT_ERROR + #MinHeatSetpointLimit might be negative if not checked before decrement + - label: + "Writes UnoccupiedHeatingSetpoint to value below the + MinHeatSetpointLimit" + PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP + verification: | + Optional Attribute - If it is supported, then in TH(chip-tool) log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + ./chip-tool thermostat read unoccupied-heating-setpoint 1 1 + As its an optional attribute, we are not getting expected result + [1658389018.789254][3201:3206] CHIP:DMG: SuppressResponse = true, + [1658389018.789288][3201:3206] CHIP:DMG: InteractionModelRevision = 1 + [1658389018.789312][3201:3206] CHIP:DMG: } + [1658389018.789426][3201:3206] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) + [1658389018.789511][3201:3206] CHIP:EM: Sending Standalone Ack for MessageCounter:175660806 on exchange 16788i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Writes UnoccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit" command: "writeAttribute" attribute: "UnoccupiedHeatingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F00 + PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016 arguments: value: 4010 response: error: CONSTRAINT_ERROR + - label: + "Writes UnoccupiedHeatingSetpoint to value above the + MaxHeatSetpointLimit" + command: "writeAttribute" + attribute: "UnoccupiedHeatingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0016 + arguments: + value: MaxHeatSetpointLimit + 1000 + response: + error: CONSTRAINT_ERROR + - label: "Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute" command: "writeAttribute" attribute: "UnoccupiedHeatingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F00 + PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015 + arguments: + value: 700 + + - label: + "Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint + attribute" + command: "writeAttribute" + attribute: "UnoccupiedHeatingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015 arguments: - value: 1800 + value: MinHeatSetpointLimit - label: "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute" command: "writeAttribute" attribute: "UnoccupiedHeatingSetpoint" - PICS: TSTAT.S.F02 && TSTAT.S.F00 + PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016 && !TSTAT.S.F05 arguments: value: 3000 + - label: + "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint + attribute" + command: "writeAttribute" + attribute: "UnoccupiedHeatingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 + arguments: + value: MaxHeatSetpointLimit + + - label: + "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint + attribute" + command: "writeAttribute" + attribute: "UnoccupiedHeatingSetpoint" + PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016 && TSTAT.S.F05 + arguments: + value: 3000 + response: + error: CONSTRAINT_ERROR + + #UpperLimit = Min(MaxHeatSetpointLimit,(UnoccupiedCoolingSetpoint - MinSetpointDeadBand)) not possible in YAML + - label: + "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit, + (UnoccupiedCoolingSetpoint - MinSetpointDeadBand)) to + UnoccupiedHeatingSetpoint attribute when Auto is enabled." + PICS: + TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0013 && TSTAT.S.F05 && + PICS_SKIP_SAMPLE_APP + verification: | + Optional Attribute - If it is supported, then in TH (chip-tool) log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE + + ./chip-tool thermostat read unoccupied-heating-setpoint 1 1 + As its an optional attribute, we are not getting expected result + [1658389070.439643][3209:3214] CHIP:DMG: + [1658389070.439678][3209:3214] CHIP:DMG: SuppressResponse = true, + [1658389070.439715][3209:3214] CHIP:DMG: InteractionModelRevision = 1 + [1658389070.439750][3209:3214] CHIP:DMG: } + [1658389070.439896][3209:3214] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) + [1658389070.439997][3209:3214] CHIP:EM: Sending Standalone Ack for MessageCounter:26480890 on exchange 13280i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + #Using saved values when optional attributes are available - label: "Reads MinHeatSetpointLimit attribute from Server DUT and verifies that the value is within range" command: "readAttribute" attribute: "MinHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0015 + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016 && TSTAT.S.A0003 + response: + constraints: + type: int16s + minValue: AbsMinHeatSetpointLimitValue + maxValue: MaxHeatSetpointLimit + + #Using hard coded values when optional attributes are not available + - label: + "Reads MinHeatSetpointLimit attribute from Server DUT and verifies + that the value is within range" + command: "readAttribute" + attribute: "MinHeatSetpointLimit" + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0016 && !TSTAT.S.A0003 response: constraints: type: int16s @@ -386,47 +875,149 @@ tests: AbsMinHeatSetpointLimit " command: "writeAttribute" attribute: "MinHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0015 + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0003 arguments: - value: 650 + value: 100 response: error: CONSTRAINT_ERROR + #AbsMinHeatSetpointLimit might be negative if not checked before decrement + - label: + "Writes MinHeatSetpointLimit to value below the + AbsMinHeatSetpointLimit " + PICS: + TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0003 && PICS_SKIP_SAMPLE_APP + verification: | + ./chip-tool thermostat write min-heat-setpoint-limit 300 1 1 + On TH (chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87) + [1658389492.560607][3266:3272] CHIP:DMG: InteractionModelRevision = 1 + [1658389492.560644][3266:3272] CHIP:DMG: } + [1658389492.560749][3266:3272] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1658389492.560915][3266:3272] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1658389492.561002][3266:3272] CHIP:EM: Sending Standalone Ack for MessageCounter:252582472 on exchange 3434i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Writes MinHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit " command: "writeAttribute" attribute: "MinHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0015 + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0016 arguments: value: 4050 response: error: CONSTRAINT_ERROR + - label: + "Writes MinHeatSetpointLimit to value above the + AbsMaxHeatSetpointLimit " + command: "writeAttribute" + attribute: "MinHeatSetpointLimit" + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016 + arguments: + value: MaxHeatSetpointLimit + 1000 + response: + error: CONSTRAINT_ERROR + - label: "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute" command: "writeAttribute" attribute: "MinHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0015 + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0003 arguments: value: 700 - label: - "Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit + "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit + attribute" + command: "writeAttribute" + attribute: "MinHeatSetpointLimit" + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0003 + arguments: + value: AbsMinHeatSetpointLimitValue + + - label: + "Writes the limit of MaxHeatSetpointLimit to MinHeatSetpointLimit attribute" command: "writeAttribute" attribute: "MinHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05 + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05 && !TSTAT.S.A0016 arguments: value: 3000 + - label: + "Writes the limit of MaxHeatSetpointLimit to MinHeatSetpointimit + attribute" + command: "writeAttribute" + attribute: "MinHeatSetpointLimit" + PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05 && TSTAT.S.A0016 + arguments: + value: MaxHeatSetpointLimit + + #UpperLimit = Min(MaxHeatSetpointLimit,(MinCoolSetpointLimit - MinSetpointDeadBand)) not possible in YAML + - label: + "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit, + (MinCoolSetpointLimit - MinSetpointDeadBand)) to MinHeatSetpointLimit + attribute when Auto is enabled" + PICS: + TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.F05 && TSTAT.S.A0005 && + PICS_SKIP_SAMPLE_APP + verification: | + ./chip-tool thermostat write min-heat-setpoint-limit 1000 1 1 + + On TH(chip-tool) verify that DUT sends a success response + [1658389641.734245][3279:3284] CHIP:DMG: Endpoint = 0x1, + [1658389641.734285][3279:3284] CHIP:DMG: Cluster = 0x201, + [1658389641.734326][3279:3284] CHIP:DMG: Attribute = 0x0000_0015, + [1658389641.734360][3279:3284] CHIP:DMG: } + [1658389641.734402][3279:3284] CHIP:DMG: + [1658389641.734438][3279:3284] CHIP:DMG: StatusIB = + [1658389641.734475][3279:3284] CHIP:DMG: { + [1658389641.734512][3279:3284] CHIP:DMG: status = 0x00 (SUCCESS), + [1658389641.734549][3279:3284] CHIP:DMG: }, + [1658389641.734586][3279:3284] CHIP:DMG: + [1658389641.734617][3279:3284] CHIP:DMG: }, + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + #Using saved values when optional attributes are available + - label: + "Reads MaxHeatSetpointLimit attribute from Server DUT and verifies + that the value is within range" + command: "readAttribute" + attribute: "MaxHeatSetpointLimit" + PICS: + TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004 && + TSTAT.S.A0016 + response: + constraints: + type: int16s + minValue: MinHeatSetpointLimit + maxValue: AbsMaxHeatSetpointLimitValue + + #Using hard coded values when optional attributes are not available - label: "Reads MaxHeatSetpointLimit attribute from Server DUT and verifies that the value is within range" command: "readAttribute" attribute: "MaxHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 + PICS: + " TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && !TSTAT.S.A0004 && + !TSTAT.S.A0016 " response: constraints: type: int16s @@ -476,47 +1067,159 @@ tests: AbsMinHeatSetpointLimit " command: "writeAttribute" attribute: "MaxHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0016 + PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0015 arguments: value: 500 response: error: CONSTRAINT_ERROR + #MinHeatSetpointLimit might be negative if not checked before decrement + - label: + "Writes MaxHeatSetpointLimit to value below the MinHeatSetpointLimit" + PICS: + TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP + verification: | + Optional Attribute - + + ./chip-tool thermostat write max-heat-setpoint-limit 7000 1 1 + + On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87) + + [1658389771.305508][3310:3315] CHIP:DMG: ], + [1658389771.305555][3310:3315] CHIP:DMG: + [1658389771.305594][3310:3315] CHIP:DMG: InteractionModelRevision = 1 + [1658389771.305632][3310:3315] CHIP:DMG: } + [1658389771.305737][3310:3315] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1658389771.305785][3310:3315] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1658389771.305867][3310:3315] CHIP:EM: Sending Standalone Ack for MessageCounter:187660216 on exchange 59285i + + ./chip-tool thermostat write max-heat-setpoint-limit 100 1 1 + On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87) + [1658389806.716013][3316:3321] CHIP:DMG: + [1658389806.716046][3316:3321] CHIP:DMG: StatusIB = + [1658389806.716084][3316:3321] CHIP:DMG: { + [1658389806.716121][3316:3321] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), + [1658389806.716158][3316:3321] CHIP:DMG: }, + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Writes MaxHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit " command: "writeAttribute" attribute: "MaxHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0016 + PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0004 arguments: value: 4000 response: error: CONSTRAINT_ERROR - label: - "Writes the limit of AbsMinHeatSetpointLimit to MaxHeatSetpointLimit + "Writes MaxHeatSetpointLimit to value above the + AbsMaxHeatSetpointLimit " + command: "writeAttribute" + attribute: "MaxHeatSetpointLimit" + PICS: TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0004 + arguments: + value: AbsMaxHeatSetpointLimitValue + 1000 + response: + error: CONSTRAINT_ERROR + + - label: + "Writes the limit of MinHeatSetpointLimit to MaxHeatSetpointLimit attribute" command: "writeAttribute" attribute: "MaxHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0016 + PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0015 arguments: value: 700 + - label: + "Writes the limit of MinHeatSetpointLimit to MaxHeatSetpointLimit + attribute" + command: "writeAttribute" + attribute: "MaxHeatSetpointLimit" + PICS: TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0015 + arguments: + value: MinHeatSetpointLimit + - label: "Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit attribute" command: "writeAttribute" attribute: "MaxHeatSetpointLimit" - PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 + PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && !TSTAT.S.A0004 arguments: value: 3000 + - label: + "Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit + attribute" + command: "writeAttribute" + attribute: "MaxHeatSetpointLimit" + PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004 + arguments: + value: AbsMaxHeatSetpointLimitValue + + #UpperLimit = Min(AbsMaxHeatSetpointLimit,(MaxCoolSetpointLimit - MinSetpointDeadBand)) not possible in YAML + - label: + "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(AbsMaxHeatSetpointLimit, + (MaxCoolSetpointLimit - MinSetpointDeadBand)) to MaxHeatSetpointLimit + attribute" + PICS: + TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.F05 && TSTAT.S.A0018 && + PICS_SKIP_SAMPLE_APP + verification: | + ./chip-tool thermostat write max-heat-setpoint-limit 2000 1 1 + On TH(chip-tool) verify that DUT sends a success response + [1658389911.809423][3333:3338] CHIP:DMG: Endpoint = 0x1, + [1658389911.809492][3333:3338] CHIP:DMG: Cluster = 0x201, + [1658389911.809562][3333:3338] CHIP:DMG: Attribute = 0x0000_0016, + [1658389911.809627][3333:3338] CHIP:DMG: } + [1658389911.809698][3333:3338] CHIP:DMG: + [1658389911.809761][3333:3338] CHIP:DMG: StatusIB = + [1658389911.809827][3333:3338] CHIP:DMG: { + [1658389911.809892][3333:3338] CHIP:DMG: status = 0x00 (SUCCESS), + [1658389911.809957][3333:3338] CHIP:DMG: }, + [1658389911.809994][3333:3338] CHIP:DMG: + [1658389911.810021][3333:3338] CHIP:DMG: }, + [1658389911.810051][3333:3338] CHIP:DMG: + [1658389911.810076][3333:3338] CHIP:DMG: ], + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + #Using saved values when optional attributes are available - label: "Reads MinCoolSetpointLimit attribute from Server DUT and verifies that the value is within range" command: "readAttribute" attribute: "MinCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0017 + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 && TSTAT.S.A0005 + response: + constraints: + type: int16s + minValue: AbsMinCoolSetpointLimit + maxValue: MaxCoolSetpointLimit + + #Using hard coded values when optional attributes are not available + - label: + "Reads MinCoolSetpointLimit attribute from Server DUT and verifies + that the value is within range" + command: "readAttribute" + attribute: "MinCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018 && !TSTAT.S.A0005 response: constraints: type: int16s @@ -546,55 +1249,145 @@ tests: AbsMinCoolSetpointLimit " command: "writeAttribute" attribute: "MinCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0017 + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005 arguments: value: 1000 response: error: CONSTRAINT_ERROR + #AbsMinCoolSetpointLimit might be negative if not checked before decrement + - label: + "Writes MinCoolSetpointLimit to value below the + AbsMinCoolSetpointLimit" + PICS: + TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 && PICS_SKIP_SAMPLE_APP + verification: | + Optional Attribute - + + + ./chip-tool thermostat write max-heat-setpoint-limit 9000 1 1 + On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87) + [1658390040.444407][3343:3348] CHIP:DMG: + [1658390040.444443][3343:3348] CHIP:DMG: }, + [1658390040.444483][3343:3348] CHIP:DMG: + [1658390040.444515][3343:3348] CHIP:DMG: ], + [1658390040.444553][3343:3348] CHIP:DMG: + [1658390040.444585][3343:3348] CHIP:DMG: InteractionModelRevision = 1 + [1658390040.444616][3343:3348] CHIP:DMG: } + [1658390040.444703][3343:3348] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1658390040.444744][3343:3348] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1658390040.444843][3343:3348] CHIP:EM: Sending Standalone Ack for MessageCounter:137523063 on exchange 39419i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" - label: "Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit " command: "writeAttribute" attribute: "MinCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0017 + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018 arguments: value: 4000 response: error: CONSTRAINT_ERROR + - label: + "Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit " + command: "writeAttribute" + attribute: "MinCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 + arguments: + value: MaxCoolSetpointLimit + 1000 + response: + error: CONSTRAINT_ERROR + - label: "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit attribute" command: "writeAttribute" attribute: "MinCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0017 + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005 && !TSTAT.S.F05 arguments: value: 1600 + - label: + "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit + attribute" + command: "writeAttribute" + attribute: "MinCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 && !TSTAT.S.F05 + arguments: + value: AbsMinCoolSetpointLimit + + #LowerLimit = Max(AbsMinCoolSetpointLimit,(MinHeatSetpointLimit + MinSetpointDeadBand)) not possible in YAML + - label: + "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(AbsMinCoolSetpointLimit, + (MinHeatSetpointLimit + MinSetpointDeadBand)) to MinCoolSetpointLimit + attribute" + PICS: + TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0015 && TSTAT.S.F05 && + PICS_SKIP_SAMPLE_APP + verification: | + ./chip-tool thermostat write max-heat-setpoint-limit 2000 1 1 + + Verify in TH(chip-tool) Log: + [1658390406.512865][3384:3389] CHIP:DMG: + [1658390406.512895][3384:3389] CHIP:DMG: StatusIB = + [1658390406.512927][3384:3389] CHIP:DMG: { + [1658390406.512958][3384:3389] CHIP:DMG: status = 0x00 (SUCCESS), + [1658390406.512992][3384:3389] CHIP:DMG: }, + [1658390406.513023][3384:3389] CHIP:DMG: + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit attribute" command: "writeAttribute" attribute: "MinCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0017 + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018 arguments: value: 3200 - label: - "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit + "Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit attribute" command: "writeAttribute" attribute: "MinCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0017 + PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 arguments: - value: 1600 + value: MaxCoolSetpointLimit + #Using saved values when optional attributes are available - label: "Reads MaxCoolSetpointLimit attribute from Server DUT and verifies that the value is within range" command: "readAttribute" attribute: "MaxCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0018 + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && TSTAT.S.A0006 + response: + constraints: + type: int16s + minValue: MinCoolSetpointLimit + maxValue: AbsMaxCoolSetpointLimit + + #Using hard coded values when optional attributes are not available + - label: + "Reads MaxCoolSetpointLimit attribute from Server DUT and verifies + that the value is within range" + command: "readAttribute" + attribute: "MaxCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && !TSTAT.S.A0006 response: constraints: type: int16s @@ -624,40 +1417,131 @@ tests: AbsMinCoolSetpointLimit " command: "writeAttribute" attribute: "MaxCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0018 + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 arguments: value: 1000 response: error: CONSTRAINT_ERROR + #AbsMinCoolSetpointLimit might be negative if not checked before decrement + - label: + "Writes MaxCoolSetpointLimit to value below the + AbsMinCoolSetpointLimit" + PICS: + TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP + verification: | + Optional attribute so its not compulsory to get the expected outcome + + ./chip-tool thermostat write max-cool-setpoint-limit 9100 1 1 + On TH(chip-tool)(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87) + [1658396137.669807][3677:3682] CHIP:DMG: + [1658396137.669832][3677:3682] CHIP:DMG: InteractionModelRevision = 1 + [1658396137.669857][3677:3682] CHIP:DMG: } + [1658396137.669929][3677:3682] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1658396137.669964][3677:3682] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1658396137.670019][3677:3682] CHIP:EM: Sending Standalone Ack for MessageCounter:77698449 on exchange 47844i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + - label: "Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit " command: "writeAttribute" attribute: "MaxCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0018 + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0006 arguments: value: 4000 response: error: CONSTRAINT_ERROR - label: - "Writes the limit of AbsMinCoolSetpointLimit to MaxCoolSetpointLimit + "Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit " + command: "writeAttribute" + attribute: "MaxCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0006 + arguments: + value: AbsMaxCoolSetpointLimit + 1000 + response: + error: CONSTRAINT_ERROR + + - label: + "Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit attribute" command: "writeAttribute" attribute: "MaxCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0018 + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && !TSTAT.S.F05 arguments: value: 1600 - label: - "Writes the limit of MaxCoolSetpointLimit to MaxCoolSetpointLimit + "Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit attribute" command: "writeAttribute" attribute: "MaxCoolSetpointLimit" - PICS: TSTAT.S.F01 && TSTAT.S.A0018 + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && TSTAT.S.F05 + arguments: + value: 1600 + response: + error: CONSTRAINT_ERROR + + - label: + "Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit + attribute" + command: "writeAttribute" + attribute: "MaxCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && !TSTAT.S.F05 + arguments: + value: MinCoolSetpointLimit + + #LowerLimit = Max(MinCoolSetpointLimit,(MaxHeatSetpointLimit + MinSetpointDeadBand)) not possible in YAML + - label: + "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit, + (MaxHeatSetpointLimit + MinSetpointDeadBand)) to MaxCoolSetpointLimit + attribute" + PICS: + TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0016 && TSTAT.S.F05 && + PICS_SKIP_SAMPLE_APP + verification: | + Optional attribute so its not compulsory to get the expected outcome + + ./chip-tool thermostat write max-cool-setpoint-limit 1600 1 1 + On TH verify that DUT sends a success response + [1661766260.648041][10448:10453] CHIP:DMG: StatusIB = + [1661766260.648070][10448:10453] CHIP:DMG: { + [1661766260.648100][10448:10453] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), + [1661766260.648127][10448:10453] CHIP:DMG: }, + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Writes the limit of AbsMaxCoolSetpointLimit to MaxCoolSetpointLimit + attribute" + command: "writeAttribute" + attribute: "MaxCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0006 arguments: value: 3200 + - label: + "Writes the limit of AbsMaxCoolSetpointLimit to MaxCoolSetpointLimit + attribute" + command: "writeAttribute" + attribute: "MaxCoolSetpointLimit" + PICS: TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0006 + arguments: + value: AbsMaxCoolSetpointLimit + - label: "Writes (sets back) default value of MinHeatSetpointLimit" command: "writeAttribute" attribute: "MinHeatSetpointLimit" diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 2ea5356c2a5227..ef88de3db001b2 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -2218,12 +2218,7 @@ class Test_TC_ACL_2_2Suite : public TestCommand break; case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintExcludes("value", value, 31UL)); - } + shouldContinue = true; break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); @@ -2254,8 +2249,14 @@ class Test_TC_ACL_2_2Suite : public TestCommand } case 2: { LogStep(2, "TH1 reads DUT Descriptor cluster ServerList attribute from every Endpoint except 0"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Descriptor::Id, Descriptor::Attributes::ServerList::Id, true, - chip::NullOptional); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = + chip::Span("Factory Reset the DUT and enter 'y' after successgarbage: not in length on purpose", 49); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } } return CHIP_NO_ERROR; @@ -22593,7 +22594,7 @@ class Test_TC_AUDIOOUTPUT_1_8Suite : public TestCommand { public: Test_TC_AUDIOOUTPUT_1_8Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_AUDIOOUTPUT_1_8", 7, credsIssuerConfig) + TestCommand("Test_TC_AUDIOOUTPUT_1_8", 6, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -22674,20 +22675,6 @@ class Test_TC_AUDIOOUTPUT_1_8Suite : public TestCommand } break; case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("generatedCommandList[0]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 1)); - } - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - } - break; - case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -22743,13 +22730,6 @@ class Test_TC_AUDIOOUTPUT_1_8Suite : public TestCommand } case 5: { LogStep(5, "Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("AUDIOOUTPUT.S.NU"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), AudioOutput::Id, AudioOutput::Attributes::GeneratedCommandList::Id, - true, chip::NullOptional); - } - case 6: { - LogStep(6, "Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip(" !AUDIOOUTPUT.S.NU "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), AudioOutput::Id, AudioOutput::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -24302,11 +24282,7 @@ class Test_TC_APPLAUNCHER_3_8Suite : public TestCommand break; case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value, 0U)); - } + shouldContinue = true; break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); @@ -24347,8 +24323,13 @@ class Test_TC_APPLAUNCHER_3_8Suite : public TestCommand } case 2: { LogStep(2, "Reads the Status attribute"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(3), ApplicationBasic::Id, ApplicationBasic::Attributes::Status::Id, - true, chip::NullOptional); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } } return CHIP_NO_ERROR; @@ -33640,7 +33621,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand class Test_TC_TSTAT_2_1Suite : public TestCommand { public: - Test_TC_TSTAT_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_2_1", 50, credsIssuerConfig) + Test_TC_TSTAT_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_2_1", 68, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -33661,6 +33642,16 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + int16_t AbsMinCoolSetpointLimitStep5; + int8_t MinSetpointDeadBand; + int16_t AbsMaxCoolSetpointLimitStep6; + int16_t MinCoolSetpointLimit; + int16_t MaxCoolSetpointLimit; + int16_t OccupiedCoolingSetpoint; + int16_t AbsMinHeat; + int16_t AbsMaxHeat; + int16_t UnoccupiedCoolingSetpoint; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -33678,6 +33669,78 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand shouldContinue = true; break; case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + AbsMinCoolSetpointLimitStep5 = value; + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + MinSetpointDeadBand = value; + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + AbsMaxCoolSetpointLimitStep6 = value; + } + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + MinCoolSetpointLimit = value; + } + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + MaxCoolSetpointLimit = value; + } + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + OccupiedCoolingSetpoint = value; + } + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + AbsMinHeat = value; + } + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + AbsMaxHeat = value; + } + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + UnoccupiedCoolingSetpoint = value; + } + break; + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -33687,7 +33750,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); } break; - case 2: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -33697,7 +33760,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); } break; - case 3: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33707,7 +33770,25 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 1U)); } break; - case 4: + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMaxValue("value", value, AbsMinCoolSetpointLimitStep5 - MinSetpointDeadBand)); + } + break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 1575)); + } + break; + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -33717,7 +33798,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); } break; - case 5: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -33727,7 +33808,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); } break; - case 6: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -33737,7 +33818,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); } break; - case 7: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -33747,7 +33828,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); } break; - case 8: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33757,7 +33838,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 100U)); } break; - case 9: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33767,7 +33848,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 100U)); } break; - case 10: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33777,17 +33858,27 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 63U)); } break; - case 11: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int8s", "int8s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 25)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, -25)); + VerifyOrReturn(CheckConstraintMinValue("value", value, -25)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 25)); } break; - case 12: + case 23: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinCoolSetpointLimit)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimit)); + } + break; + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -33797,7 +33888,17 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); } break; - case 13: + case 25: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, AbsMinCoolSetpointLimitStep5)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, OccupiedCoolingSetpoint - MinSetpointDeadBand)); + } + break; + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -33807,7 +33908,17 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; - case 14: + case 27: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, AbsMinHeat)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, AbsMaxHeat)); + } + break; + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -33817,7 +33928,17 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); } break; - case 15: + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, UnoccupiedCoolingSetpoint - MinSetpointDeadBand)); + } + break; + case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -33827,7 +33948,17 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; - case 16: + case 31: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MinCoolSetpointLimit - MinSetpointDeadBand)); + } + break; + case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -33837,37 +33968,57 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; - case 17: + case 33: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27315)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; - case 18: + case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27315)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimit - MinSetpointDeadBand)); } break; - case 19: + case 35: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27315)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + VerifyOrReturn(CheckConstraintMinValue("value", value, AbsMinCoolSetpointLimitStep5)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimit)); } break; - case 20: + case 36: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + } + break; + case 37: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinCoolSetpointLimit)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, AbsMaxCoolSetpointLimitStep6)); + } + break; + case 38: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int8_t value; @@ -33877,7 +34028,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 25)); } break; - case 21: + case 39: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33887,7 +34038,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 7U)); } break; - case 22: + case 40: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::Clusters::Thermostat::ThermostatControlSequence value; @@ -33897,7 +34048,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U)); } break; - case 23: + case 41: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33907,7 +34058,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 9U)); } break; - case 24: + case 42: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33917,7 +34068,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 9U)); } break; - case 25: + case 43: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33927,7 +34078,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 6U)); } break; - case 26: + case 44: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33937,7 +34088,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 27: + case 45: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33947,7 +34098,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 28: + case 46: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33957,7 +34108,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 1U)); } break; - case 29: + case 47: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -33967,7 +34118,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 1440U)); } break; - case 30: + case 48: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33977,7 +34128,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 7U)); } break; - case 31: + case 49: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -33987,7 +34138,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 127U)); } break; - case 32: + case 50: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -33997,7 +34148,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 2U)); } break; - case 33: + case 51: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -34007,7 +34158,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); } break; - case 34: + case 52: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -34015,7 +34166,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "utc", "utc")); } break; - case 35: + case 53: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -34025,7 +34176,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 36: + case 54: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -34035,7 +34186,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 37: + case 55: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -34045,7 +34196,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 38: + case 56: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -34055,7 +34206,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 39: + case 57: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -34065,7 +34216,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 40: + case 58: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -34075,7 +34226,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 41: + case 59: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -34085,7 +34236,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U)); } break; - case 42: + case 60: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -34095,7 +34246,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 4U)); } break; - case 43: + case 61: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -34105,7 +34256,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U)); } break; - case 44: + case 62: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -34115,7 +34266,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U)); } break; - case 45: + case 63: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -34125,7 +34276,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U)); } break; - case 46: + case 64: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -34133,7 +34284,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); } break; - case 47: + case 65: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -34143,7 +34294,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U)); } break; - case 48: + case 66: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -34153,7 +34304,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); } break; - case 49: + case 67: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -34185,292 +34336,412 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Reads mandatory attributes from DUT: LocalTemperature"); + LogStep(1, "Saving value for comparision in step 5 read AbsMinCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMinCoolSetpointLimit::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "Saving value for comparision in step 5 read attribute MinSetpointDeadBand attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, + true, chip::NullOptional); + } + case 3: { + LogStep(3, "Saving value for comparision in step 6 read AbsMaxCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMaxCoolSetpointLimit::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "Saving value for comparision in step 17 read MinCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, + true, chip::NullOptional); + } + case 5: { + LogStep(5, "Saving value for comparision in step 17 read MaxCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, + true, chip::NullOptional); + } + case 6: { + LogStep(6, "Saving value for comparision in step 13 read attribute OccupiedCoolingSetpoint"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); + } + case 7: { + LogStep(7, "Saving value for comparision in step 15 read attribute AbsMinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMinHeatSetpointLimit::Id, true, chip::NullOptional); + } + case 8: { + LogStep(8, "Saving value for comparision in step 15 read attribute AbsMaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMaxHeatSetpointLimit::Id, true, chip::NullOptional); + } + case 9: { + LogStep(9, "Saving value for comparision in step 16 read UnoccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); + } + case 10: { + LogStep(10, "Reads mandatory attributes from DUT: LocalTemperature"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::LocalTemperature::Id, true, chip::NullOptional); } - case 2: { - LogStep(2, "Read OutdoorTemperature attribute from the DUT"); + case 11: { + LogStep(11, "Read OutdoorTemperature attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OutdoorTemperature::Id, true, chip::NullOptional); } - case 3: { - LogStep(3, "Read Occupancy attribute from the DUT"); + case 12: { + LogStep(12, "Read Occupancy attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::Occupancy::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Reads mandatory attributes from DUT: AbsMinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 13: { + LogStep(13, "Read attribute AbsMinHeatSetpointLimit if TSTAT.S.F05 feature is supported"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0003 && TSTAT.S.A0005 && TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AbsMinHeatSetpointLimit::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "Reads mandatory attributes from DUT: AbsMaxHeatSetpointLimit"); + case 14: { + LogStep(14, "Read attribute AbsMinHeatSetpointLimit if TSTAT.S.F05 feature is supported"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0003 && !TSTAT.S.A0005 && TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMinHeatSetpointLimit::Id, true, chip::NullOptional); + } + case 15: { + LogStep(15, "Read attribute AbsMinHeatSetpointLimit from DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0003 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMinHeatSetpointLimit::Id, true, chip::NullOptional); + } + case 16: { + LogStep(16, "Reads mandatory attributes from DUT: AbsMaxHeatSetpointLimit"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AbsMaxHeatSetpointLimit::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "Reads optional attributes from DUT: AbsMinCoolSetpointLimit"); + case 17: { + LogStep(17, "Read attribute AbsMinCoolSetpointLimit from DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AbsMinCoolSetpointLimit::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Reads optional attributes from DUT: AbsMaxCoolSetpointLimit"); + case 18: { + LogStep(18, "Read attribute AbsMaxCoolSetpointLimit from DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AbsMaxCoolSetpointLimit::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "Read PICoolingDemand attribute from the DUT"); + case 19: { + LogStep(19, "Read PICoolingDemand attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::PICoolingDemand::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Read PIHeatingDemand attribute from the DUT"); + case 20: { + LogStep(20, "Read PIHeatingDemand attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::PIHeatingDemand::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "Read HVACSystemTypeConfiguration attribute from the DUT"); + case 21: { + LogStep(21, "Read HVACSystemTypeConfiguration attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::HVACSystemTypeConfiguration::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "Read LocalTemperatureCalibration attribute from the DUT"); + case 22: { + LogStep(22, "Read LocalTemperatureCalibration attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::LocalTemperatureCalibration::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Reads optional attributes from DUT: OccupiedCoolingSetpoint"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 23: { + LogStep(23, "Read attribute OccupiedCoolingSetpoint from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Reads mandatory attributes from DUT: OccupiedHeatingSetpoint"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 24: { + LogStep(24, "Read attribute OccupiedCoolingSetpoint from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); + } + case 25: { + LogStep(25, "Read attribute OccupiedHeatingSetpoint if TSTAT.S.F05 feature is supported"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "Read UnoccupiedCoolingSetpoint attribute from the DUT"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 26: { + LogStep(26, "Read attribute OccupiedHeatingSetpoint from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); + } + case 27: { + LogStep(27, "Read UnoccupiedCoolingSetpoint attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "Read UnoccupiedHeatingSetpoint attribute from the DUT"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 28: { + LogStep(28, "Read UnoccupiedCoolingSetpoint attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); + } + case 29: { + LogStep(29, "Read UnoccupiedHeatingSetpoint attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02 && TSTAT.S.F05 && TSTAT.S.A0013"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "Reads attribute from DUT: MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 30: { + LogStep(30, "Read UnoccupiedHeatingSetpoint attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, true, chip::NullOptional); + } + case 31: { + LogStep(31, "Reads attribute from DUT: MinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0015 && TSTAT.S.F05 && TSTAT.S.A0017"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Reads attribute from DUT: MaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 32: { + LogStep(32, "Read attribute MinHeatSetpointLimit from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0015 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, + true, chip::NullOptional); + } + case 33: { + LogStep(33, "Read attribute MaxHeatSetpointLimit from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0016 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, true, chip::NullOptional); } - case 18: { - LogStep(18, "Reads optional attributes from DUT: MinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 34: { + LogStep(34, "Reads attribute from DUT: MaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0016 && TSTAT.S.F05 && TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, + true, chip::NullOptional); + } + case 35: { + LogStep(35, "Read attribute MinCoolSetpointLimit from DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0017 && TSTAT.S.A0018 && TSTAT.S.A0005"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "Reads optional attributes from DUT: MaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 36: { + LogStep(36, "Read attribute MinCoolSetpointLimit from DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0017 && !TSTAT.S.A0018 && !TSTAT.S.A0005"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, + true, chip::NullOptional); + } + case 37: { + LogStep(37, "Read attribute MaxCoolSetpointLimit from DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0018 && TSTAT.S.A0006 && TSTAT.S.A0017"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, true, chip::NullOptional); } - case 20: { - LogStep(20, "Reads optional attributes from DUT: MinSetpointDeadBand"); + case 38: { + LogStep(38, "Read attribute MinSetpointDeadBand from DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, true, chip::NullOptional); } - case 21: { - LogStep(21, "Read RemoteSensing attribute from the DUT"); + case 39: { + LogStep(39, "Read RemoteSensing attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::RemoteSensing::Id, true, chip::NullOptional); } - case 22: { - LogStep(22, "Reads mandatory attributes from DUT: ControlSequenceOfOperation"); + case 40: { + LogStep(40, "Read attribute ControlSequenceOfOperation from DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ControlSequenceOfOperation::Id, true, chip::NullOptional); } - case 23: { - LogStep(23, "Reads mandatory attributes from DUT: SystemMode"); + case 41: { + LogStep(41, "Read attribute SystemMode from DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A001c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::SystemMode::Id, true, chip::NullOptional); } - case 24: { - LogStep(24, "Read ThermostatRunningMode attribute from the DUT"); + case 42: { + LogStep(42, "Read ThermostatRunningMode attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A001e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ThermostatRunningMode::Id, true, chip::NullOptional); } - case 25: { - LogStep(25, "Reads constraints of optional attributes from DUT: StartOfWeek"); + case 43: { + LogStep(43, "Reads constraints of optional attributes from DUT: StartOfWeek"); VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::StartOfWeek::Id, true, chip::NullOptional); } - case 26: { - LogStep(26, "Reads optional attributes from DUT: NumberOfWeeklyTransitions"); + case 44: { + LogStep(44, "Reads optional attributes from DUT: NumberOfWeeklyTransitions"); VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::NumberOfWeeklyTransitions::Id, true, chip::NullOptional); } - case 27: { - LogStep(27, "Reads optional attributes from DUT: NumberOfDailyTransitions"); + case 45: { + LogStep(45, "Reads optional attributes from DUT: NumberOfDailyTransitions"); VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::NumberOfDailyTransitions::Id, true, chip::NullOptional); } - case 28: { - LogStep(28, "Read TemperatureSetpointHold attribute from the DUT"); + case 46: { + LogStep(46, "Read TemperatureSetpointHold attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::TemperatureSetpointHold::Id, true, chip::NullOptional); } - case 29: { - LogStep(29, "Read TemperatureSetpointHoldDuration attribute from the DUT"); + case 47: { + LogStep(47, "Read TemperatureSetpointHoldDuration attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::TemperatureSetpointHoldDuration::Id, true, chip::NullOptional); } - case 30: { - LogStep(30, "Read ThermostatProgrammingOperationMode attribute from the DUT"); + case 48: { + LogStep(48, "Read ThermostatProgrammingOperationMode attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ThermostatProgrammingOperationMode::Id, true, chip::NullOptional); } - case 31: { - LogStep(31, "Read ThermostatRunningState attribute from the DUT"); + case 49: { + LogStep(49, "Read ThermostatRunningState attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ThermostatRunningState::Id, true, chip::NullOptional); } - case 32: { - LogStep(32, "Read SetpointChangeSource attribute from the DUT"); + case 50: { + LogStep(50, "Read SetpointChangeSource attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::SetpointChangeSource::Id, true, chip::NullOptional); } - case 33: { - LogStep(33, "Read SetpointChangeAmount attribute from the DUT"); + case 51: { + LogStep(51, "Read SetpointChangeAmount attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::SetpointChangeAmount::Id, true, chip::NullOptional); } - case 34: { - LogStep(34, "Read SetpointChangeSourceTimestamp attribute from the DUT"); + case 52: { + LogStep(52, "Read SetpointChangeSourceTimestamp attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::SetpointChangeSourceTimestamp::Id, true, chip::NullOptional); } - case 35: { - LogStep(35, "Read OccupiedSetback attribute from the DUT"); + case 53: { + LogStep(53, "Read OccupiedSetback attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedSetback::Id, true, chip::NullOptional); } - case 36: { - LogStep(36, "Read OccupiedSetbackMin attribute from the DUT"); + case 54: { + LogStep(54, "Read OccupiedSetbackMin attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedSetbackMin::Id, true, chip::NullOptional); } - case 37: { - LogStep(37, "Read OccupiedSetbackMax attribute from the DUT"); + case 55: { + LogStep(55, "Read OccupiedSetbackMax attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedSetbackMax::Id, true, chip::NullOptional); } - case 38: { - LogStep(38, "Read UnoccupiedSetback attribute from the DUT"); + case 56: { + LogStep(56, "Read UnoccupiedSetback attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedSetback::Id, true, chip::NullOptional); } - case 39: { - LogStep(39, "Read UnoccupiedSetbackMin attribute from the DUT"); + case 57: { + LogStep(57, "Read UnoccupiedSetbackMin attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedSetbackMin::Id, true, chip::NullOptional); } - case 40: { - LogStep(40, "Read UnoccupiedSetbackMax attribute from the DUT"); + case 58: { + LogStep(58, "Read UnoccupiedSetbackMax attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedSetbackMax::Id, true, chip::NullOptional); } - case 41: { - LogStep(41, "Read EmergencyHeatDelta attribute from the DUT"); + case 59: { + LogStep(59, "Read EmergencyHeatDelta attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::EmergencyHeatDelta::Id, true, chip::NullOptional); } - case 42: { - LogStep(42, "Read ACType attribute from the DUT"); + case 60: { + LogStep(60, "Read ACType attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0040"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACType::Id, true, chip::NullOptional); } - case 43: { - LogStep(43, "Read ACCapacity attribute from the DUT"); + case 61: { + LogStep(61, "Read ACCapacity attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0041"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACCapacity::Id, true, chip::NullOptional); } - case 44: { - LogStep(44, "Read ACRefrigerantType attribute from the DUT"); + case 62: { + LogStep(62, "Read ACRefrigerantType attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0042"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACRefrigerantType::Id, true, chip::NullOptional); } - case 45: { - LogStep(45, "Read ACCompressorType attribute from the DUT"); + case 63: { + LogStep(63, "Read ACCompressorType attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0043"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACCompressorType::Id, true, chip::NullOptional); } - case 46: { - LogStep(46, "Read ACErrorCode attribute from the DUT"); + case 64: { + LogStep(64, "Read ACErrorCode attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0044"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACErrorCode::Id, true, chip::NullOptional); } - case 47: { - LogStep(47, "Read ACLouverPosition attribute from the DUT"); + case 65: { + LogStep(65, "Read ACLouverPosition attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0045"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACLouverPosition::Id, true, chip::NullOptional); } - case 48: { - LogStep(48, "Read ACCoilTemperature attribute from the DUT"); + case 66: { + LogStep(66, "Read ACCoilTemperature attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0046"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACCoilTemperature::Id, true, chip::NullOptional); } - case 49: { - LogStep(49, "Read ACCapacityFormat attribute from the DUT"); + case 67: { + LogStep(67, "Read ACCapacityFormat attribute from the DUT"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0047"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACCapacityformat::Id, true, chip::NullOptional); @@ -34483,7 +34754,7 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand class Test_TC_TSTAT_2_2Suite : public TestCommand { public: - Test_TC_TSTAT_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_2_2", 102, credsIssuerConfig) + Test_TC_TSTAT_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_2_2", 162, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -34504,6 +34775,19 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + int16_t MinCoolSetpointLimit; + int16_t MaxCoolSetpointLimit; + int8_t MinSetpointDeadBand; + int16_t MinHeatSetpointLimit; + int16_t UnoccupiedCoolingSetpoint; + int16_t MaxHeatSetpointLimit; + int16_t OccupiedHeatingSetpoint; + int16_t OccupiedCoolingSetpoint; + int16_t AbsMinHeatSetpointLimitValue; + int16_t AbsMaxHeatSetpointLimitValue; + int16_t AbsMinCoolSetpointLimit; + int16_t AbsMaxCoolSetpointLimit; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -34525,82 +34809,108 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + MinCoolSetpointLimit = value; } break; case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + MaxCoolSetpointLimit = value; + } break; case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - int16_t value; + int8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2500)); + MinSetpointDeadBand = value; } break; case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + MinHeatSetpointLimit = value; + } break; case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + UnoccupiedCoolingSetpoint = value; + } break; case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + MaxHeatSetpointLimit = value; + } break; case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + OccupiedHeatingSetpoint = value; + } break; case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + OccupiedCoolingSetpoint = value; + } break; case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); + AbsMinHeatSetpointLimitValue = value; } break; case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + AbsMaxHeatSetpointLimitValue = value; + } break; case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2100)); + AbsMinCoolSetpointLimit = value; } break; case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 700)); + AbsMaxCoolSetpointLimit = value; } break; - case 16: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinCoolSetpointLimit)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimit)); + } break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 18: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -34610,97 +34920,108 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); } break; - case 19: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 20: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("unoccupiedCoolingSetpoint", value, 2500)); + VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2500)); } break; - case 21: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; - case 22: + case 18: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; + case 21: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 25: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinHeatSetpointLimit)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxHeatSetpointLimit)); } break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("unoccupiedHeatingSetpoint", value, 2500)); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2100)); + } break; case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); - } + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("minHeatSetpointLimit", value, 800)); - } break; case 35: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 36: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 37: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 38: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 39: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 40: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -34708,71 +35029,82 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinCoolSetpointLimit)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimit)); } break; case 41: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + } break; case 42: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 43: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 44: + case 43: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("maxHeatSetpointLimit", value, 2900)); + VerifyOrReturn(CheckValue("unoccupiedCoolingSetpoint", value, 2500)); } break; - case 45: + case 44: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; + case 45: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; case 46: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 47: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 48: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 49: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); - } + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 50: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 51: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("minCoolSetpointLimit", value, 2000)); - } + shouldContinue = true; break; case 52: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 53: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 54: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinHeatSetpointLimit)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxHeatSetpointLimit)); + } break; case 55: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); + } break; case 56: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -34782,21 +35114,15 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + VerifyOrReturn(CheckValue("unoccupiedHeatingSetpoint", value, 2500)); } break; case 58: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 59: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("maxCoolSetpointLimit", value, 2000)); - } + shouldContinue = true; break; case 60: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); @@ -34817,22 +35143,30 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 66: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 67: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 68: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, AbsMinHeatSetpointLimitValue)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxHeatSetpointLimit)); + } break; case 69: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - int8_t value; + int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int8s", "int8s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 25)); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; case 70: @@ -34841,9 +35175,9 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand case 71: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - int8_t value; + int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("minSetpointDeadBand", value, 5)); + VerifyOrReturn(CheckValue("minHeatSetpointLimit", value, 800)); } break; case 72: @@ -34854,31 +35188,19 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand break; case 74: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 75: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 76: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Thermostat::ThermostatControlSequence value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("controlSequenceOfOperation", value, 4U)); - VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U)); - } + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 77: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 78: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Thermostat::ThermostatControlSequence value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("controlSequenceOfOperation", value, 2U)); - } break; case 79: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -34888,56 +35210,57 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand break; case 81: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 82: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinHeatSetpointLimit)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, AbsMaxHeatSetpointLimitValue)); + } break; case 83: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 1700)); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; case 84: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; case 85: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 86: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2300)); - } break; case 87: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 88: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2300)); + VerifyOrReturn(CheckValue("maxHeatSetpointLimit", value, 2900)); } break; + case 88: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; case 89: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; break; case 90: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 91: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2900)); - } + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); break; case 92: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -34950,25 +35273,30 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand break; case 95: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2300)); - } break; case 96: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 97: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 1700)); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, AbsMinCoolSetpointLimit)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimit)); } break; - case 97: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; case 98: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + } break; case 99: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -34978,23 +35306,286 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2900)); + VerifyOrReturn(CheckValue("minCoolSetpointLimit", value, 2000)); } break; case 101: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 102: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - int16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2300)); - } + shouldContinue = true; break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { + case 103: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 104: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 105: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 106: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 107: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 108: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 109: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 110: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinCoolSetpointLimit)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, AbsMaxCoolSetpointLimit)); + } + break; + case 111: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + } + break; + case 112: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 113: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("maxCoolSetpointLimit", value, 2000)); + } + break; + case 114: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 115: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 116: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 117: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 118: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 119: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 120: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 121: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 122: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 123: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 124: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 125: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 126: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 127: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 128: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 129: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int8s", "int8s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 25)); + } + break; + case 130: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 131: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("minSetpointDeadBand", value, 5)); + } + break; + case 132: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 133: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 134: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 135: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 136: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::Thermostat::ThermostatControlSequence value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("controlSequenceOfOperation", value, 4U)); + VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U)); + } + break; + case 137: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 138: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::Thermostat::ThermostatControlSequence value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("controlSequenceOfOperation", value, 2U)); + } + break; + case 139: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 140: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 141: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 142: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 143: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 1700)); + } + break; + case 144: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 145: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 146: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2300)); + } + break; + case 147: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 148: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2300)); + } + break; + case 149: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 150: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 151: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2900)); + } + break; + case 152: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 153: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 154: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 155: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2300)); + } + break; + case 156: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 1700)); + } + break; + case 157: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 158: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 159: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 160: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2900)); + } + break; + case 161: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2300)); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { ContinueOnChipMainThread(CHIP_NO_ERROR); } } @@ -35012,13 +35603,93 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Reads OccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(1, "Saving value for comparision in step 2a read MinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, + true, chip::NullOptional); + } + case 2: { + LogStep(2, "Saving value for comparision in step 2a read MaxCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, + true, chip::NullOptional); + } + case 3: { + LogStep(3, "Saving value for comparision in step 2c read attribute MinSetpointDeadBand"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, + true, chip::NullOptional); + } + case 4: { + LogStep(4, "Saving value for comparision in step 3a read MinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, + true, chip::NullOptional); + } + case 5: { + LogStep(5, "Saving value for comparision in step 3 reads UnoccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, "Saving value for comparision in step 3a read MaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, + true, chip::NullOptional); + } + case 7: { + LogStep(7, "Saving value for comparision in step3c read attribute OccupiedHeatingSetpoint"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); + } + case 8: { + LogStep(8, "Saving value for comparision in step3c read attribute OccupiedCoolingSetpoint"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 2: { - LogStep(2, "Writes a value back that is different but valid for OccupiedCoolingSetpoint attribute"); + case 9: { + LogStep(9, "Saving value for comparision in step 6a read attribute AbsMinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMinHeatSetpointLimit::Id, true, chip::NullOptional); + } + case 10: { + LogStep(10, "Saving value for comparision in step 7a read attribute AbsMaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMaxHeatSetpointLimit::Id, true, chip::NullOptional); + } + case 11: { + LogStep(11, "Saving value for comparision in step 8a read attribute AbsMinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMinCoolSetpointLimit::Id, true, chip::NullOptional); + } + case 12: { + LogStep(12, "Saving value for comparision in step9a read attribute AbsMaxCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMaxCoolSetpointLimit::Id, true, chip::NullOptional); + } + case 13: { + LogStep(13, "Read attribute OccupiedCoolingSetpoint from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); + } + case 14: { + LogStep(14, "Reads OccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); + } + case 15: { + LogStep(15, "Writes a value back that is different but valid for OccupiedCoolingSetpoint attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35027,15 +35698,15 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 3: { - LogStep(3, "Reads it back again to confirm the successful write of OccupiedCoolingSetpoint attribute"); + case 16: { + LogStep(16, "Reads it back again to confirm the successful write of OccupiedCoolingSetpoint attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Writes OccupiedCoolingSetpoint to value below the ABSMinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 17: { + LogStep(17, "Writes OccupiedCoolingSetpoint to value below the MinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 30; @@ -35043,9 +35714,20 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 5: { - LogStep(5, "Writes OccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 18: { + LogStep(18, "Writes OccupiedCoolingSetpoint to value below the MinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 19: { + LogStep(19, "Writes OccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 4000; @@ -35053,19 +35735,20 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 6: { - LogStep(6, "Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 20: { + LogStep(20, "Writes OccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; - value = 1600; + value = static_cast(MaxCoolSetpointLimit + 1000); return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 7: { - LogStep(7, "Writes the CoolingSetpoint below the HeatingSetpoint when auto is enabled"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 21: { + LogStep(21, "Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.F05 && !TSTAT.S.A0017"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 1600; @@ -35073,9 +35756,32 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 8: { - LogStep(8, "Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 22: { + LogStep(22, "Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.F05 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MinCoolSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 23: { + LogStep(23, + "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit, (OccupiedHeatingSetpoint + " + "MinSetpointDeadBand)) to OccupiedCoolingSetpoint attribute when Auto is enabled"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.A0012 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 24: { + LogStep(24, "Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && !TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 3200; @@ -35083,14 +35789,32 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 9: { - LogStep(9, "Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 25: { + LogStep(25, "Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MaxCoolSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 26: { + LogStep(26, "Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "Writes a value back that is different but valid for OccupiedHeatingSetpoint attribute"); + case 27: { + LogStep(27, "Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.A0015 && !TSTAT.S.A0016"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); + } + case 28: { + LogStep(28, "Writes a value back that is different but valid for OccupiedHeatingSetpoint attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35099,15 +35823,15 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 11: { - LogStep(11, "Reads it back again to confirm the successful write of OccupiedHeatingSetpoint attribute"); + case 29: { + LogStep(29, "Reads it back again to confirm the successful write of OccupiedHeatingSetpoint attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Writes OccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 30: { + LogStep(30, "Writes OccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 600; @@ -35115,9 +35839,20 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 13: { - LogStep(13, "Writes OccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 31: { + LogStep(31, "Writes OccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 32: { + LogStep(32, "Writes OccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 4010; @@ -35125,9 +35860,19 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 14: { - LogStep(14, "Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 33: { + LogStep(33, "Writes OccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = static_cast(MaxHeatSetpointLimit + 1000); + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 34: { + LogStep(34, "Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 700; @@ -35135,15 +35880,20 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 15: { - LogStep(15, "Reads it back again to confirm the successful write of OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); + case 35: { + LogStep(35, "Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MinHeatSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); } - case 16: { - LogStep(16, "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 36: { + LogStep(36, "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.F05 && !TSTAT.S.A0016"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 3000; @@ -35151,9 +35901,19 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 17: { - LogStep(17, "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 37: { + LogStep(37, "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && !TSTAT.S.F05 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MaxHeatSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 38: { + LogStep(38, "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 3000; @@ -35161,14 +35921,35 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 18: { - LogStep(18, "Reads UnoccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 39: { + LogStep(39, + "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit, (OccupiedCoolingSetpoint - " + "MinSetpointDeadBand)) to OccupiedHeatingSetpoint attribute when Auto is enabled"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.A0011 && TSTAT.S.A0012 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 40: { + LogStep(40, "Reads UnoccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "Writes a value back that is different but valid for UnoccupiedCoolingSetpoint attribute"); + case 41: { + LogStep(41, "Reads UnoccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); + } + case 42: { + LogStep(42, "Writes a value back that is different but valid for UnoccupiedCoolingSetpoint attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35177,15 +35958,15 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 20: { - LogStep(20, "Reads it back again to confirm the successful write of UnoccupiedCoolingSetpoint attribute"); + case 43: { + LogStep(43, "Reads it back again to confirm the successful write of UnoccupiedCoolingSetpoint attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 21: { - LogStep(21, "Writes UnoccupiedCoolingSetpoint to value below the MinCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 44: { + LogStep(44, "Writes UnoccupiedCoolingSetpoint to value below the MinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 1002; @@ -35193,9 +35974,20 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 22: { - LogStep(22, "Writes UnoccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 45: { + LogStep(45, "Writes UnoccupiedCoolingSetpoint to value below the MinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 46: { + LogStep(46, "Writes UnoccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 4010; @@ -35203,34 +35995,100 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 23: { - LogStep(23, "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 47: { + LogStep(47, "Writes UnoccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; - value = 1800; + value = static_cast(MaxCoolSetpointLimit + 1000); return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 24: { - LogStep(24, "Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 48: { + LogStep(48, "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; - value = 3000; + value = 1600; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 25: { - LogStep(25, "Reads UnoccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 49: { + LogStep(49, "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = 1600; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 50: { + LogStep(50, "Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MinCoolSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 51: { + LogStep(51, + "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit, (UnoccupiedCoolingSetpoint + " + "MinSetpointDeadBand)) to UnoccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0013 && TSTAT.S.F05 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 52: { + LogStep(52, "Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0018 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = 3200; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 53: { + LogStep(53, "Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MaxCoolSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 54: { + LogStep(54, "Reads UnoccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, true, chip::NullOptional); } - case 26: { - LogStep(26, "Writes a value back that is different but valid for UnoccupiedHeatingSetpoint attribute"); + case 55: { + LogStep(55, "Reads UnoccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015 && !TSTAT.S.A0016"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, true, chip::NullOptional); + } + case 56: { + LogStep(56, "Writes a value back that is different but valid for UnoccupiedHeatingSetpoint attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35239,15 +36097,15 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 27: { - LogStep(27, "Reads it back again to confirm the successful write of UnoccupiedHeatingSetpoint attribute"); + case 57: { + LogStep(57, "Reads it back again to confirm the successful write of UnoccupiedHeatingSetpoint attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, true, chip::NullOptional); } - case 28: { - LogStep(28, "Writes UnoccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 58: { + LogStep(58, "Writes UnoccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 500; @@ -35255,9 +36113,20 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 29: { - LogStep(29, "Writes UnoccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 59: { + LogStep(59, "Writes UnoccupiedHeatingSetpoint to value below the MinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 60: { + LogStep(60, "Writes UnoccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 4010; @@ -35265,19 +36134,40 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 30: { - LogStep(30, "Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 61: { + LogStep(61, "Writes UnoccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; - value = 1800; + value = static_cast(MaxHeatSetpointLimit + 1000); return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 31: { - LogStep(31, "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 62: { + LogStep(62, "Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = 700; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 63: { + LogStep(63, "Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MinHeatSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 64: { + LogStep(64, "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 3000; @@ -35285,14 +36175,57 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 32: { - LogStep(32, "Reads MinHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 65: { + LogStep(65, "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MaxHeatSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 66: { + LogStep(66, "Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016 && TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = 3000; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, value, chip::NullOptional, + chip::NullOptional); + } + case 67: { + LogStep(67, + "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit, (UnoccupiedCoolingSetpoint - " + "MinSetpointDeadBand)) to UnoccupiedHeatingSetpoint attribute when Auto is enabled."); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0013 && TSTAT.S.F05 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 68: { + LogStep(68, "Reads MinHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016 && TSTAT.S.A0003"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, true, chip::NullOptional); } - case 33: { - LogStep(33, "Writes a value back that is different but valid for MinHeatSetpointLimit attribute"); + case 69: { + LogStep(69, "Reads MinHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0016 && !TSTAT.S.A0003"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, + true, chip::NullOptional); + } + case 70: { + LogStep(70, "Writes a value back that is different but valid for MinHeatSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35300,14 +36233,14 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 34: { - LogStep(34, "Reads it back again to confirm the successful write of MinHeatSetpointLimit attribute"); + case 71: { + LogStep(71, "Reads it back again to confirm the successful write of MinHeatSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, true, chip::NullOptional); } - case 35: { - LogStep(35, "Writes a value back that is different but violates the deadband"); + case 72: { + LogStep(72, "Writes a value back that is different but violates the deadband"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0015 && TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35315,36 +36248,70 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 36: { - LogStep(36, "Writes MinHeatSetpointLimit to value below the AbsMinHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 73: { + LogStep(73, "Writes MinHeatSetpointLimit to value below the AbsMinHeatSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0003"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; - value = 650; + value = 100; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 37: { - LogStep(37, "Writes MinHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 74: { + LogStep(74, "Writes MinHeatSetpointLimit to value below the AbsMinHeatSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0003 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 75: { + LogStep(75, "Writes MinHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0016"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 4050; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 38: { - LogStep(38, "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 76: { + LogStep(76, "Writes MinHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = static_cast(MaxHeatSetpointLimit + 1000); + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 77: { + LogStep(77, "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0003"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 700; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 39: { - LogStep(39, "Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05"), + case 78: { + LogStep(78, "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0003"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = AbsMinHeatSetpointLimitValue; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 79: { + LogStep(79, "Writes the limit of MaxHeatSetpointLimit to MinHeatSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05 && !TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35352,15 +36319,45 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 40: { - LogStep(40, "Reads MaxHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05"), + case 80: { + LogStep(80, "Writes the limit of MaxHeatSetpointLimit to MinHeatSetpointimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05 && TSTAT.S.A0016"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MaxHeatSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 81: { + LogStep(81, + "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit, (MinCoolSetpointLimit - " + "MinSetpointDeadBand)) to MinHeatSetpointLimit attribute when Auto is enabled"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.F05 && TSTAT.S.A0005 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 82: { + LogStep(82, "Reads MaxHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, true, chip::NullOptional); } - case 41: { - LogStep(41, "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute"); + case 83: { + LogStep(83, "Reads MaxHeatSetpointLimit attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip(" TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && !TSTAT.S.A0004 && !TSTAT.S.A0016 "), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, + true, chip::NullOptional); + } + case 84: { + LogStep(84, "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35368,8 +36365,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 42: { - LogStep(42, "Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit attribute"); + case 85: { + LogStep(85, "Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.A0015 && TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35377,8 +36374,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 43: { - LogStep(43, "Writes a value back that is different but valid for MaxHeatSetpointLimit attribute"); + case 86: { + LogStep(86, "Writes a value back that is different but valid for MaxHeatSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35386,42 +36383,76 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 44: { - LogStep(44, "Reads it back again to confirm the successful write of MaxHeatSetpointLimit attribute"); + case 87: { + LogStep(87, "Reads it back again to confirm the successful write of MaxHeatSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, true, chip::NullOptional); } - case 45: { - LogStep(45, "Writes MaxHeatSetpointLimit to value below the AbsMinHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 88: { + LogStep(88, "Writes MaxHeatSetpointLimit to value below the AbsMinHeatSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0015"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 500; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 46: { - LogStep(46, "Writes MaxHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 89: { + LogStep(89, "Writes MaxHeatSetpointLimit to value below the MinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 90: { + LogStep(90, "Writes MaxHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0004"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 4000; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 47: { - LogStep(47, "Writes the limit of AbsMinHeatSetpointLimit to MaxHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 91: { + LogStep(91, "Writes MaxHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0004"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = static_cast(AbsMaxHeatSetpointLimitValue + 1000); + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 92: { + LogStep(92, "Writes the limit of MinHeatSetpointLimit to MaxHeatSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0015"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 700; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 48: { - LogStep(48, "Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05"), + case 93: { + LogStep(93, "Writes the limit of MinHeatSetpointLimit to MaxHeatSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0015"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MinHeatSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 94: { + LogStep(94, "Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && !TSTAT.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35429,14 +36460,45 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 49: { - LogStep(49, "Reads MinCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 95: { + LogStep(95, "Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = AbsMaxHeatSetpointLimitValue; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 96: { + LogStep(96, + "Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(AbsMaxHeatSetpointLimit, (MaxCoolSetpointLimit - " + "MinSetpointDeadBand)) to MaxHeatSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.F05 && TSTAT.S.A0018 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 97: { + LogStep(97, "Reads MinCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 && TSTAT.S.A0005"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, true, chip::NullOptional); } - case 50: { - LogStep(50, "Writes a value back that is different but valid for MinCoolSetpointLimit attribute"); + case 98: { + LogStep(98, "Reads MinCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018 && !TSTAT.S.A0005"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, + true, chip::NullOptional); + } + case 99: { + LogStep(99, "Writes a value back that is different but valid for MinCoolSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35444,65 +36506,122 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 51: { - LogStep(51, "Reads it back again to confirm the successful write of MinCoolSetpointLimit attribute"); + case 100: { + LogStep(100, "Reads it back again to confirm the successful write of MinCoolSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, true, chip::NullOptional); } - case 52: { - LogStep(52, "Writes MinCoolSetpointLimit to value below the AbsMinCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 101: { + LogStep(101, "Writes MinCoolSetpointLimit to value below the AbsMinCoolSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 1000; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 53: { - LogStep(53, "Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 102: { + LogStep(102, "Writes MinCoolSetpointLimit to value below the AbsMinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 103: { + LogStep(103, "Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 4000; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 54: { - LogStep(54, "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 104: { + LogStep(104, "Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = static_cast(MaxCoolSetpointLimit + 1000); + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 105: { + LogStep(105, "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 1600; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 55: { - LogStep(55, "Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 106: { + LogStep(106, "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = AbsMinCoolSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 107: { + LogStep(107, + "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(AbsMinCoolSetpointLimit, (MinHeatSetpointLimit + " + "MinSetpointDeadBand)) to MinCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0015 && TSTAT.S.F05 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 108: { + LogStep(108, "Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 3200; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 56: { - LogStep(56, "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 109: { + LogStep(109, "Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; - value = 1600; + value = MaxCoolSetpointLimit; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 57: { - LogStep(57, "Reads MaxCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 110: { + LogStep(110, "Reads MaxCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && TSTAT.S.A0006"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, true, chip::NullOptional); } - case 58: { - LogStep(58, "Writes a value back that is different but valid for MaxCoolSetpointLimit attribute"); + case 111: { + LogStep(111, "Reads MaxCoolSetpointLimit attribute from Server DUT and verifies that the value is within range"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && !TSTAT.S.A0006"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, + true, chip::NullOptional); + } + case 112: { + LogStep(112, "Writes a value back that is different but valid for MaxCoolSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35510,50 +36629,118 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 59: { - LogStep(59, "Reads it back again to confirm the successful write of MaxCoolSetpointLimit attribute"); + case 113: { + LogStep(113, "Reads it back again to confirm the successful write of MaxCoolSetpointLimit attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, true, chip::NullOptional); } - case 60: { - LogStep(60, "Writes MaxCoolSetpointLimit to value below the AbsMinCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 114: { + LogStep(114, "Writes MaxCoolSetpointLimit to value below the AbsMinCoolSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 1000; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 61: { - LogStep(61, "Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit "); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 115: { + LogStep(115, "Writes MaxCoolSetpointLimit to value below the AbsMinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 116: { + LogStep(116, "Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0006"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 4000; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 62: { - LogStep(62, "Writes the limit of AbsMinCoolSetpointLimit to MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 117: { + LogStep(117, "Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit "); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0006"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = static_cast(AbsMaxCoolSetpointLimit + 1000); + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 118: { + LogStep(118, "Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 1600; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 63: { - LogStep(63, "Writes the limit of MaxCoolSetpointLimit to MaxCoolSetpointLimit attribute"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 119: { + LogStep(119, "Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = 1600; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 120: { + LogStep(120, "Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && !TSTAT.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = MinCoolSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 121: { + LogStep(121, + "Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit, (MaxHeatSetpointLimit + " + "MinSetpointDeadBand)) to MaxCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0016 && TSTAT.S.F05 && PICS_SKIP_SAMPLE_APP"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' after successgarbage: not in length on purpose", 30); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 122: { + LogStep(122, "Writes the limit of AbsMaxCoolSetpointLimit to MaxCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0006"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; value = 3200; return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 64: { - LogStep(64, "Writes (sets back) default value of MinHeatSetpointLimit"); + case 123: { + LogStep(123, "Writes the limit of AbsMaxCoolSetpointLimit to MaxCoolSetpointLimit attribute"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0006"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + int16_t value; + value = AbsMaxCoolSetpointLimit; + return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 124: { + LogStep(124, "Writes (sets back) default value of MinHeatSetpointLimit"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35561,8 +36748,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 65: { - LogStep(65, "Writes (sets back)default value of MaxHeatSetpointLimit"); + case 125: { + LogStep(125, "Writes (sets back)default value of MaxHeatSetpointLimit"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35570,8 +36757,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 66: { - LogStep(66, "Writes MaxHeatSetpointLimit That meets the deadband of 2.5C"); + case 126: { + LogStep(126, "Writes MaxHeatSetpointLimit That meets the deadband of 2.5C"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35579,8 +36766,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 67: { - LogStep(67, "Writes (sets back) default value of MinCoolSetpointLimit"); + case 127: { + LogStep(127, "Writes (sets back) default value of MinCoolSetpointLimit"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35588,8 +36775,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 68: { - LogStep(68, "Writes (sets back) default value of MaxCoolSetpointLimit"); + case 128: { + LogStep(128, "Writes (sets back) default value of MaxCoolSetpointLimit"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35597,14 +36784,14 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 69: { - LogStep(69, "Reads MinSetpointDeadBand attribute from Server DUT and verifies that the value is within range"); + case 129: { + LogStep(129, "Reads MinSetpointDeadBand attribute from Server DUT and verifies that the value is within range"); VerifyOrDo(!ShouldSkip("TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, true, chip::NullOptional); } - case 70: { - LogStep(70, "Writes a value back that is different but valid for MinSetpointDeadBand attribute"); + case 130: { + LogStep(130, "Writes a value back that is different but valid for MinSetpointDeadBand attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -35613,15 +36800,15 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, value, chip::NullOptional, chip::NullOptional); } - case 71: { - LogStep(71, "Reads it back again to confirm the successful write of MinSetpointDeadBand attribute"); + case 131: { + LogStep(131, "Reads it back again to confirm the successful write of MinSetpointDeadBand attribute"); VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, true, chip::NullOptional); } - case 72: { - LogStep(72, "Writes the value below MinSetpointDeadBand"); + case 132: { + LogStep(132, "Writes the value below MinSetpointDeadBand"); VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -35630,8 +36817,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, value, chip::NullOptional, chip::NullOptional); } - case 73: { - LogStep(73, "Writes the value above MinSetpointDeadBand "); + case 133: { + LogStep(133, "Writes the value above MinSetpointDeadBand "); VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -35640,8 +36827,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, value, chip::NullOptional, chip::NullOptional); } - case 74: { - LogStep(74, "Writes the min limit of MinSetpointDeadBand"); + case 134: { + LogStep(134, "Writes the min limit of MinSetpointDeadBand"); VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -35650,8 +36837,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, value, chip::NullOptional, chip::NullOptional); } - case 75: { - LogStep(75, "Writes the max limit of MinSetpointDeadBand"); + case 135: { + LogStep(135, "Writes the max limit of MinSetpointDeadBand"); VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -35660,14 +36847,14 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, value, chip::NullOptional, chip::NullOptional); } - case 76: { - LogStep(76, "Reads ControlSequenceOfOperation from Server DUT and verifies that the value is valid"); + case 136: { + LogStep(136, "Reads ControlSequenceOfOperation from Server DUT and verifies that the value is valid"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ControlSequenceOfOperation::Id, true, chip::NullOptional); } - case 77: { - LogStep(77, "Write Attribute command for ControlSequenceOfOperation with a new valid value"); + case 137: { + LogStep(137, "Write Attribute command for ControlSequenceOfOperation with a new valid value"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Thermostat::ThermostatControlSequence value; @@ -35676,14 +36863,14 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::ControlSequenceOfOperation::Id, value, chip::NullOptional, chip::NullOptional); } - case 78: { - LogStep(78, "Read it back again to confirm the successful write"); + case 138: { + LogStep(138, "Read it back again to confirm the successful write"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ControlSequenceOfOperation::Id, true, chip::NullOptional); } - case 79: { - LogStep(79, "Writes MaxHeatSetpointLimit attribute to default value of 2950 to meet deadband constraint"); + case 139: { + LogStep(139, "Writes MaxHeatSetpointLimit attribute to default value of 2950 to meet deadband constraint"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35691,8 +36878,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, value, chip::NullOptional, chip::NullOptional); } - case 80: { - LogStep(80, "Sets OccupiedCoolingSetpoint to default value"); + case 140: { + LogStep(140, "Sets OccupiedCoolingSetpoint to default value"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35701,8 +36888,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 81: { - LogStep(81, "Sets OccupiedHeatingSetpoint to default value"); + case 141: { + LogStep(141, "Sets OccupiedHeatingSetpoint to default value"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35711,8 +36898,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 82: { - LogStep(82, "Sends SetpointRaise Command Heat Only"); + case 142: { + LogStep(142, "Sends SetpointRaise Command Heat Only"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; @@ -35723,14 +36910,14 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand ); } - case 83: { - LogStep(83, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); + case 143: { + LogStep(143, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); } - case 84: { - LogStep(84, "Sets OccupiedHeatingSetpoint to default value"); + case 144: { + LogStep(144, "Sets OccupiedHeatingSetpoint to default value"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35739,8 +36926,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 85: { - LogStep(85, "Sends SetpointRaise Command Heat Only"); + case 145: { + LogStep(145, "Sends SetpointRaise Command Heat Only"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; @@ -35751,14 +36938,14 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand ); } - case 86: { - LogStep(86, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); + case 146: { + LogStep(146, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); } - case 87: { - LogStep(87, "Sends SetpointRaise Command Cool Only"); + case 147: { + LogStep(147, "Sends SetpointRaise Command Cool Only"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; @@ -35769,14 +36956,14 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand ); } - case 88: { - LogStep(88, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); + case 148: { + LogStep(148, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 89: { - LogStep(89, "Sets OccupiedCoolingSetpoint to default value"); + case 149: { + LogStep(149, "Sets OccupiedCoolingSetpoint to default value"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35785,8 +36972,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 90: { - LogStep(90, "Sends SetpointRaise Command Cool Only"); + case 150: { + LogStep(150, "Sends SetpointRaise Command Cool Only"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; @@ -35797,14 +36984,14 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand ); } - case 91: { - LogStep(91, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); + case 151: { + LogStep(151, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 92: { - LogStep(92, "Sets OccupiedCoolingSetpoint to default value"); + case 152: { + LogStep(152, "Sets OccupiedCoolingSetpoint to default value"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35813,8 +37000,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 93: { - LogStep(93, "Sets OccupiedHeatingSetpoint to default value"); + case 153: { + LogStep(153, "Sets OccupiedHeatingSetpoint to default value"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35823,8 +37010,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 94: { - LogStep(94, "Sends SetpointRaise Command Heat & Cool"); + case 154: { + LogStep(154, "Sends SetpointRaise Command Heat & Cool"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; @@ -35835,20 +37022,20 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand ); } - case 95: { - LogStep(95, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); + case 155: { + LogStep(155, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 96: { - LogStep(96, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); + case 156: { + LogStep(156, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); } - case 97: { - LogStep(97, "Sets OccupiedCoolingSetpoint to default value"); + case 157: { + LogStep(157, "Sets OccupiedCoolingSetpoint to default value"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35857,8 +37044,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 98: { - LogStep(98, "Sets OccupiedHeatingSetpoint to default value"); + case 158: { + LogStep(158, "Sets OccupiedHeatingSetpoint to default value"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; int16_t value; @@ -35867,8 +37054,8 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand Thermostat::Attributes::OccupiedHeatingSetpoint::Id, value, chip::NullOptional, chip::NullOptional); } - case 99: { - LogStep(99, "Sends SetpointRaise Command Heat & Cool"); + case 159: { + LogStep(159, "Sends SetpointRaise Command Heat & Cool"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::Type value; @@ -35879,14 +37066,14 @@ class Test_TC_TSTAT_2_2Suite : public TestCommand ); } - case 100: { - LogStep(100, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); + case 160: { + LogStep(160, "Reads back OccupiedCoolingSetpoint to confirm the success of the write"); VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); } - case 101: { - LogStep(101, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); + case 161: { + LogStep(161, "Reads back OccupiedHeatingSetpoint to confirm the success of the write"); VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 6821b5add92477..f6f906f71af461 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -149,8 +149,6 @@ class TestList : public Command { printf("Test_TC_TMP_1_1\n"); printf("Test_TC_TMP_2_1\n"); printf("Test_TC_TSTAT_1_1\n"); - printf("Test_TC_TSTAT_2_1\n"); - printf("Test_TC_TSTAT_2_2\n"); printf("Test_TC_TSUIC_1_1\n"); printf("Test_TC_TSUIC_2_1\n"); printf("Test_TC_TSUIC_2_2\n"); @@ -2666,6 +2664,10 @@ class Test_TC_ACL_2_2 : public TestCommandBridge { case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : TH1 reads DUT Descriptor cluster ServerList attribute from every Endpoint except 0\n"); + if (ShouldSkip("PICS_USER_PROMPT")) { + NextTest(); + return; + } err = TestTh1ReadsDutDescriptorClusterServerListAttributeFromEveryEndpointExcept0_2(); break; } @@ -2740,22 +2742,12 @@ class Test_TC_ACL_2_2 : public TestCommandBridge { CHIP_ERROR TestTh1ReadsDutDescriptorClusterServerListAttributeFromEveryEndpointExcept0_2() { - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeServerListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"TH1 reads DUT Descriptor cluster ServerList attribute from every Endpoint except 0 Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("serverList", "list", "list")); - VerifyOrReturn(CheckConstraintExcludes("serverList", value, 31UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message + = chip::Span("Factory Reset the DUT and enter 'y' after successgarbage: not in length on purpose", 49); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } }; @@ -34884,289 +34876,249 @@ class Test_TC_AUDIOOUTPUT_1_8 : public TestCommandBridge { break; case 5: ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("AUDIOOUTPUT.S.NU")) { + err = TestReadTheGlobalAttributeGeneratedCommandList_5(); + break; + } + + if (CHIP_NO_ERROR != err) { + ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); + SetCommandExitStatus(err); + } + } + + void OnStatusUpdate(const chip::app::StatusIB & status) override + { + switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + } + + // Go on to the next test. + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + std::atomic_uint16_t mTestIndex; + const uint16_t mTestCount = 6; + + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("alpha", value); + } + + CHIP_ERROR TestReadTheGlobalAttributeClusterRevision_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"read the global attribute: ClusterRevision Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 1U)); + } + + VerifyOrReturn(CheckConstraintType("clusterRevision", "int16u", "int16u")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 3UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_4() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_5() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: GeneratedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(0))); + } + + VerifyOrReturn(CheckConstraintType("generatedCommandList", "list", "list")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } +}; + +class Test_TC_TGTNAV_1_9 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_TGTNAV_1_9() + : TestCommandBridge("Test_TC_TGTNAV_1_9") + , mTestIndex(0) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) + + ~Test_TC_TGTNAV_1_9() {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_TGTNAV_1_9\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_TGTNAV_1_9\n"); + SetCommandExitStatus(CHIP_NO_ERROR); + return; + } + + Wait(); + + // Ensure we increment mTestIndex before we start running the relevant + // command. That way if we lose the timeslice after we send the message + // but before our function call returns, we won't end up with an + // incorrect mTestIndex value observed when we get the response. + switch (mTestIndex++) { + case 0: + ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); + err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); + break; + case 1: + ChipLogProgress(chipTool, " ***** Test Step 1 : read the global attribute: ClusterRevision\n"); + err = TestReadTheGlobalAttributeClusterRevision_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); + err = TestReadTheGlobalAttributeFeatureMap_2(); + break; + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); + err = TestReadTheGlobalAttributeAttributeList_3(); + break; + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the optional attribute(CurrentTarget) in AttributeList\n"); + if (ShouldSkip("TGTNAV.S.A0001")) { NextTest(); return; } - err = TestReadTheGlobalAttributeGeneratedCommandList_5(); - break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip(" !AUDIOOUTPUT.S.NU ")) { - NextTest(); - return; - } - err = TestReadTheGlobalAttributeGeneratedCommandList_6(); - break; - } - - if (CHIP_NO_ERROR != err) { - ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); - SetCommandExitStatus(err); - } - } - - void OnStatusUpdate(const chip::app::StatusIB & status) override - { - switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - } - - // Go on to the next test. - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 7; - - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() - { - - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee("alpha", value); - } - - CHIP_ERROR TestReadTheGlobalAttributeClusterRevision_1() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"read the global attribute: ClusterRevision Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 1U)); - } - - VerifyOrReturn(CheckConstraintType("clusterRevision", "int16u", "int16u")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: FeatureMap Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintMinValue("featureMap", [value unsignedIntValue], 0UL)); - VerifyOrReturn(CheckConstraintMaxValue("featureMap", [value unsignedIntValue], 3UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_4() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: AcceptedCommandList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); - VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_5() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: GeneratedCommandList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 1UL)); - } - - VerifyOrReturn(CheckConstraintType("generatedCommandList", "list", "list")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_6() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterAudioOutput alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: GeneratedCommandList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(0))); - } - - VerifyOrReturn(CheckConstraintType("generatedCommandList", "list", "list")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } -}; - -class Test_TC_TGTNAV_1_9 : public TestCommandBridge { -public: - // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_TGTNAV_1_9() - : TestCommandBridge("Test_TC_TGTNAV_1_9") - , mTestIndex(0) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - - ~Test_TC_TGTNAV_1_9() {} - - /////////// TestCommand Interface ///////// - void NextTest() override - { - CHIP_ERROR err = CHIP_NO_ERROR; - - if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_TGTNAV_1_9\n"); - } - - if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_TGTNAV_1_9\n"); - SetCommandExitStatus(CHIP_NO_ERROR); - return; - } - - Wait(); - - // Ensure we increment mTestIndex before we start running the relevant - // command. That way if we lose the timeslice after we send the message - // but before our function call returns, we won't end up with an - // incorrect mTestIndex value observed when we get the response. - switch (mTestIndex++) { - case 0: - ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); - err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); - break; - case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : read the global attribute: ClusterRevision\n"); - err = TestReadTheGlobalAttributeClusterRevision_1(); - break; - case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); - err = TestReadTheGlobalAttributeFeatureMap_2(); - break; - case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - err = TestReadTheGlobalAttributeAttributeList_3(); - break; - case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Read the optional attribute(CurrentTarget) in AttributeList\n"); - if (ShouldSkip("TGTNAV.S.A0001")) { - NextTest(); - return; - } - err = TestReadTheOptionalAttributeCurrentTargetInAttributeList_4(); - break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: AcceptedCommandList\n"); - err = TestReadTheGlobalAttributeAcceptedCommandList_5(); + err = TestReadTheOptionalAttributeCurrentTargetInAttributeList_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: AcceptedCommandList\n"); + err = TestReadTheGlobalAttributeAcceptedCommandList_5(); break; case 6: ChipLogProgress(chipTool, " ***** Test Step 6 : Read the global attribute: GeneratedCommandList\n"); @@ -53914,5395 +53866,6 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { } }; -class Test_TC_TSTAT_2_1 : public TestCommandBridge { -public: - // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_TSTAT_2_1() - : TestCommandBridge("Test_TC_TSTAT_2_1") - , mTestIndex(0) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - - ~Test_TC_TSTAT_2_1() {} - - /////////// TestCommand Interface ///////// - void NextTest() override - { - CHIP_ERROR err = CHIP_NO_ERROR; - - if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_TSTAT_2_1\n"); - } - - if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_TSTAT_2_1\n"); - SetCommandExitStatus(CHIP_NO_ERROR); - return; - } - - Wait(); - - // Ensure we increment mTestIndex before we start running the relevant - // command. That way if we lose the timeslice after we send the message - // but before our function call returns, we won't end up with an - // incorrect mTestIndex value observed when we get the response. - switch (mTestIndex++) { - case 0: - ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); - err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); - break; - case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Reads mandatory attributes from DUT: LocalTemperature\n"); - err = TestReadsMandatoryAttributesFromDutLocalTemperature_1(); - break; - case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read OutdoorTemperature attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0001")) { - NextTest(); - return; - } - err = TestReadOutdoorTemperatureAttributeFromTheDut_2(); - break; - case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read Occupancy attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.F02")) { - NextTest(); - return; - } - err = TestReadOccupancyAttributeFromTheDut_3(); - break; - case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Reads mandatory attributes from DUT: AbsMinHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.A0003")) { - NextTest(); - return; - } - err = TestReadsMandatoryAttributesFromDutAbsMinHeatSetpointLimit_4(); - break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Reads mandatory attributes from DUT: AbsMaxHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.A0004")) { - NextTest(); - return; - } - err = TestReadsMandatoryAttributesFromDutAbsMaxHeatSetpointLimit_5(); - break; - case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Reads optional attributes from DUT: AbsMinCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.A0005")) { - NextTest(); - return; - } - err = TestReadsOptionalAttributesFromDutAbsMinCoolSetpointLimit_6(); - break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Reads optional attributes from DUT: AbsMaxCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.A0006")) { - NextTest(); - return; - } - err = TestReadsOptionalAttributesFromDutAbsMaxCoolSetpointLimit_7(); - break; - case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Read PICoolingDemand attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0007")) { - NextTest(); - return; - } - err = TestReadPICoolingDemandAttributeFromTheDut_8(); - break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Read PIHeatingDemand attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0008")) { - NextTest(); - return; - } - err = TestReadPIHeatingDemandAttributeFromTheDut_9(); - break; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Read HVACSystemTypeConfiguration attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0009")) { - NextTest(); - return; - } - err = TestReadHVACSystemTypeConfigurationAttributeFromTheDut_10(); - break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Read LocalTemperatureCalibration attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0010")) { - NextTest(); - return; - } - err = TestReadLocalTemperatureCalibrationAttributeFromTheDut_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Reads optional attributes from DUT: OccupiedCoolingSetpoint\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsOptionalAttributesFromDutOccupiedCoolingSetpoint_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Reads mandatory attributes from DUT: OccupiedHeatingSetpoint\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsMandatoryAttributesFromDutOccupiedHeatingSetpoint_13(); - break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Read UnoccupiedCoolingSetpoint attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02")) { - NextTest(); - return; - } - err = TestReadUnoccupiedCoolingSetpointAttributeFromTheDut_14(); - break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Read UnoccupiedHeatingSetpoint attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02")) { - NextTest(); - return; - } - err = TestReadUnoccupiedHeatingSetpointAttributeFromTheDut_15(); - break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Reads attribute from DUT: MinHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.A0015")) { - NextTest(); - return; - } - err = TestReadsAttributeFromDutMinHeatSetpointLimit_16(); - break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Reads attribute from DUT: MaxHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.A0016")) { - NextTest(); - return; - } - err = TestReadsAttributeFromDutMaxHeatSetpointLimit_17(); - break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Reads optional attributes from DUT: MinCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestReadsOptionalAttributesFromDutMinCoolSetpointLimit_18(); - break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : Reads optional attributes from DUT: MaxCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.A0018")) { - NextTest(); - return; - } - err = TestReadsOptionalAttributesFromDutMaxCoolSetpointLimit_19(); - break; - case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Reads optional attributes from DUT: MinSetpointDeadBand\n"); - if (ShouldSkip("TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestReadsOptionalAttributesFromDutMinSetpointDeadBand_20(); - break; - case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Read RemoteSensing attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A001a")) { - NextTest(); - return; - } - err = TestReadRemoteSensingAttributeFromTheDut_21(); - break; - case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : Reads mandatory attributes from DUT: ControlSequenceOfOperation\n"); - err = TestReadsMandatoryAttributesFromDutControlSequenceOfOperation_22(); - break; - case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : Reads mandatory attributes from DUT: SystemMode\n"); - err = TestReadsMandatoryAttributesFromDutSystemMode_23(); - break; - case 24: - ChipLogProgress(chipTool, " ***** Test Step 24 : Read ThermostatRunningMode attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A001e")) { - NextTest(); - return; - } - err = TestReadThermostatRunningModeAttributeFromTheDut_24(); - break; - case 25: - ChipLogProgress(chipTool, " ***** Test Step 25 : Reads constraints of optional attributes from DUT: StartOfWeek\n"); - if (ShouldSkip("TSTAT.S.F03")) { - NextTest(); - return; - } - err = TestReadsConstraintsOfOptionalAttributesFromDutStartOfWeek_25(); - break; - case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Reads optional attributes from DUT: NumberOfWeeklyTransitions\n"); - if (ShouldSkip("TSTAT.S.F03")) { - NextTest(); - return; - } - err = TestReadsOptionalAttributesFromDutNumberOfWeeklyTransitions_26(); - break; - case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Reads optional attributes from DUT: NumberOfDailyTransitions\n"); - if (ShouldSkip("TSTAT.S.F03")) { - NextTest(); - return; - } - err = TestReadsOptionalAttributesFromDutNumberOfDailyTransitions_27(); - break; - case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Read TemperatureSetpointHold attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0023")) { - NextTest(); - return; - } - err = TestReadTemperatureSetpointHoldAttributeFromTheDut_28(); - break; - case 29: - ChipLogProgress(chipTool, " ***** Test Step 29 : Read TemperatureSetpointHoldDuration attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0024")) { - NextTest(); - return; - } - err = TestReadTemperatureSetpointHoldDurationAttributeFromTheDut_29(); - break; - case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : Read ThermostatProgrammingOperationMode attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0025")) { - NextTest(); - return; - } - err = TestReadThermostatProgrammingOperationModeAttributeFromTheDut_30(); - break; - case 31: - ChipLogProgress(chipTool, " ***** Test Step 31 : Read ThermostatRunningState attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0029")) { - NextTest(); - return; - } - err = TestReadThermostatRunningStateAttributeFromTheDut_31(); - break; - case 32: - ChipLogProgress(chipTool, " ***** Test Step 32 : Read SetpointChangeSource attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0030")) { - NextTest(); - return; - } - err = TestReadSetpointChangeSourceAttributeFromTheDut_32(); - break; - case 33: - ChipLogProgress(chipTool, " ***** Test Step 33 : Read SetpointChangeAmount attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0031")) { - NextTest(); - return; - } - err = TestReadSetpointChangeAmountAttributeFromTheDut_33(); - break; - case 34: - ChipLogProgress(chipTool, " ***** Test Step 34 : Read SetpointChangeSourceTimestamp attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0032")) { - NextTest(); - return; - } - err = TestReadSetpointChangeSourceTimestampAttributeFromTheDut_34(); - break; - case 35: - ChipLogProgress(chipTool, " ***** Test Step 35 : Read OccupiedSetback attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.F02")) { - NextTest(); - return; - } - err = TestReadOccupiedSetbackAttributeFromTheDut_35(); - break; - case 36: - ChipLogProgress(chipTool, " ***** Test Step 36 : Read OccupiedSetbackMin attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.F02")) { - NextTest(); - return; - } - err = TestReadOccupiedSetbackMinAttributeFromTheDut_36(); - break; - case 37: - ChipLogProgress(chipTool, " ***** Test Step 37 : Read OccupiedSetbackMax attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.F02")) { - NextTest(); - return; - } - err = TestReadOccupiedSetbackMaxAttributeFromTheDut_37(); - break; - case 38: - ChipLogProgress(chipTool, " ***** Test Step 38 : Read UnoccupiedSetback attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F04")) { - NextTest(); - return; - } - err = TestReadUnoccupiedSetbackAttributeFromTheDut_38(); - break; - case 39: - ChipLogProgress(chipTool, " ***** Test Step 39 : Read UnoccupiedSetbackMin attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F04")) { - NextTest(); - return; - } - err = TestReadUnoccupiedSetbackMinAttributeFromTheDut_39(); - break; - case 40: - ChipLogProgress(chipTool, " ***** Test Step 40 : Read UnoccupiedSetbackMax attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F04")) { - NextTest(); - return; - } - err = TestReadUnoccupiedSetbackMaxAttributeFromTheDut_40(); - break; - case 41: - ChipLogProgress(chipTool, " ***** Test Step 41 : Read EmergencyHeatDelta attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A003a")) { - NextTest(); - return; - } - err = TestReadEmergencyHeatDeltaAttributeFromTheDut_41(); - break; - case 42: - ChipLogProgress(chipTool, " ***** Test Step 42 : Read ACType attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0040")) { - NextTest(); - return; - } - err = TestReadACTypeAttributeFromTheDut_42(); - break; - case 43: - ChipLogProgress(chipTool, " ***** Test Step 43 : Read ACCapacity attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0041")) { - NextTest(); - return; - } - err = TestReadACCapacityAttributeFromTheDut_43(); - break; - case 44: - ChipLogProgress(chipTool, " ***** Test Step 44 : Read ACRefrigerantType attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0042")) { - NextTest(); - return; - } - err = TestReadACRefrigerantTypeAttributeFromTheDut_44(); - break; - case 45: - ChipLogProgress(chipTool, " ***** Test Step 45 : Read ACCompressorType attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0043")) { - NextTest(); - return; - } - err = TestReadACCompressorTypeAttributeFromTheDut_45(); - break; - case 46: - ChipLogProgress(chipTool, " ***** Test Step 46 : Read ACErrorCode attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0044")) { - NextTest(); - return; - } - err = TestReadACErrorCodeAttributeFromTheDut_46(); - break; - case 47: - ChipLogProgress(chipTool, " ***** Test Step 47 : Read ACLouverPosition attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0045")) { - NextTest(); - return; - } - err = TestReadACLouverPositionAttributeFromTheDut_47(); - break; - case 48: - ChipLogProgress(chipTool, " ***** Test Step 48 : Read ACCoilTemperature attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0046")) { - NextTest(); - return; - } - err = TestReadACCoilTemperatureAttributeFromTheDut_48(); - break; - case 49: - ChipLogProgress(chipTool, " ***** Test Step 49 : Read ACCapacityFormat attribute from the DUT\n"); - if (ShouldSkip("TSTAT.S.A0047")) { - NextTest(); - return; - } - err = TestReadACCapacityFormatAttributeFromTheDut_49(); - break; - } - - if (CHIP_NO_ERROR != err) { - ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); - SetCommandExitStatus(err); - } - } - - void OnStatusUpdate(const chip::app::StatusIB & status) override - { - switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 27: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 34: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 35: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 36: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 37: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 38: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 39: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 40: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 41: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 42: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 43: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 44: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 45: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 46: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 47: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 48: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 49: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - } - - // Go on to the next test. - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 50; - - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() - { - - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee("alpha", value); - } - - CHIP_ERROR TestReadsMandatoryAttributesFromDutLocalTemperature_1() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeLocalTemperatureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads mandatory attributes from DUT: LocalTemperature Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("localTemperature", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("localTemperature", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("localTemperature", [value shortValue], 32767)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadOutdoorTemperatureAttributeFromTheDut_2() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOutdoorTemperatureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read OutdoorTemperature attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("outdoorTemperature", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("outdoorTemperature", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("outdoorTemperature", [value shortValue], 32767)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadOccupancyAttributeFromTheDut_3() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupancyWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read Occupancy attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("occupancy", "bitmap8", "bitmap8")); - VerifyOrReturn(CheckConstraintMinValue("occupancy", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("occupancy", [value unsignedCharValue], 1U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMandatoryAttributesFromDutAbsMinHeatSetpointLimit_4() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAbsMinHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads mandatory attributes from DUT: AbsMinHeatSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("absMinHeatSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("absMinHeatSetpointLimit", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("absMinHeatSetpointLimit", [value shortValue], 32767)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMandatoryAttributesFromDutAbsMaxHeatSetpointLimit_5() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAbsMaxHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads mandatory attributes from DUT: AbsMaxHeatSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("absMaxHeatSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("absMaxHeatSetpointLimit", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("absMaxHeatSetpointLimit", [value shortValue], 32767)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsOptionalAttributesFromDutAbsMinCoolSetpointLimit_6() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAbsMinCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads optional attributes from DUT: AbsMinCoolSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("absMinCoolSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("absMinCoolSetpointLimit", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("absMinCoolSetpointLimit", [value shortValue], 32767)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsOptionalAttributesFromDutAbsMaxCoolSetpointLimit_7() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAbsMaxCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads optional attributes from DUT: AbsMaxCoolSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("absMaxCoolSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("absMaxCoolSetpointLimit", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("absMaxCoolSetpointLimit", [value shortValue], 32767)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadPICoolingDemandAttributeFromTheDut_8() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePICoolingDemandWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read PICoolingDemand attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("PICoolingDemand", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("PICoolingDemand", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("PICoolingDemand", [value unsignedCharValue], 100U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadPIHeatingDemandAttributeFromTheDut_9() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePIHeatingDemandWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read PIHeatingDemand attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("PIHeatingDemand", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("PIHeatingDemand", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("PIHeatingDemand", [value unsignedCharValue], 100U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadHVACSystemTypeConfigurationAttributeFromTheDut_10() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeHVACSystemTypeConfigurationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read HVACSystemTypeConfiguration attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("HVACSystemTypeConfiguration", "bitmap8", "bitmap8")); - VerifyOrReturn(CheckConstraintMinValue("HVACSystemTypeConfiguration", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("HVACSystemTypeConfiguration", [value unsignedCharValue], 63U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadLocalTemperatureCalibrationAttributeFromTheDut_11() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeLocalTemperatureCalibrationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read LocalTemperatureCalibration attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("localTemperatureCalibration", "int8s", "int8s")); - VerifyOrReturn(CheckConstraintMinValue("localTemperatureCalibration", [value charValue], 25)); - VerifyOrReturn(CheckConstraintMaxValue("localTemperatureCalibration", [value charValue], -25)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsOptionalAttributesFromDutOccupiedCoolingSetpoint_12() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads optional attributes from DUT: OccupiedCoolingSetpoint Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("occupiedCoolingSetpoint", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("occupiedCoolingSetpoint", [value shortValue], 1600)); - VerifyOrReturn(CheckConstraintMaxValue("occupiedCoolingSetpoint", [value shortValue], 3200)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMandatoryAttributesFromDutOccupiedHeatingSetpoint_13() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads mandatory attributes from DUT: OccupiedHeatingSetpoint Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("occupiedHeatingSetpoint", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("occupiedHeatingSetpoint", [value shortValue], 700)); - VerifyOrReturn(CheckConstraintMaxValue("occupiedHeatingSetpoint", [value shortValue], 3000)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadUnoccupiedCoolingSetpointAttributeFromTheDut_14() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUnoccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read UnoccupiedCoolingSetpoint attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("unoccupiedCoolingSetpoint", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("unoccupiedCoolingSetpoint", [value shortValue], 1600)); - VerifyOrReturn(CheckConstraintMaxValue("unoccupiedCoolingSetpoint", [value shortValue], 3200)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadUnoccupiedHeatingSetpointAttributeFromTheDut_15() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUnoccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read UnoccupiedHeatingSetpoint attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("unoccupiedHeatingSetpoint", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("unoccupiedHeatingSetpoint", [value shortValue], 700)); - VerifyOrReturn(CheckConstraintMaxValue("unoccupiedHeatingSetpoint", [value shortValue], 3000)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsAttributeFromDutMinHeatSetpointLimit_16() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMinHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads attribute from DUT: MinHeatSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("minHeatSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("minHeatSetpointLimit", [value shortValue], 700)); - VerifyOrReturn(CheckConstraintMaxValue("minHeatSetpointLimit", [value shortValue], 3000)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsAttributeFromDutMaxHeatSetpointLimit_17() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMaxHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads attribute from DUT: MaxHeatSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("maxHeatSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("maxHeatSetpointLimit", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("maxHeatSetpointLimit", [value shortValue], 32767)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsOptionalAttributesFromDutMinCoolSetpointLimit_18() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMinCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads optional attributes from DUT: MinCoolSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("minCoolSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("minCoolSetpointLimit", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("minCoolSetpointLimit", [value shortValue], 32767)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsOptionalAttributesFromDutMaxCoolSetpointLimit_19() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMaxCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads optional attributes from DUT: MaxCoolSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("maxCoolSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("maxCoolSetpointLimit", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("maxCoolSetpointLimit", [value shortValue], 32767)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsOptionalAttributesFromDutMinSetpointDeadBand_20() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMinSetpointDeadBandWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads optional attributes from DUT: MinSetpointDeadBand Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("minSetpointDeadBand", "int8s", "int8s")); - VerifyOrReturn(CheckConstraintMinValue("minSetpointDeadBand", [value charValue], 0)); - VerifyOrReturn(CheckConstraintMaxValue("minSetpointDeadBand", [value charValue], 25)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadRemoteSensingAttributeFromTheDut_21() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeRemoteSensingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read RemoteSensing attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("remoteSensing", "bitmap8", "bitmap8")); - VerifyOrReturn(CheckConstraintMinValue("remoteSensing", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("remoteSensing", [value unsignedCharValue], 7U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMandatoryAttributesFromDutControlSequenceOfOperation_22() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeControlSequenceOfOperationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads mandatory attributes from DUT: ControlSequenceOfOperation Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("controlSequenceOfOperation", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("controlSequenceOfOperation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("controlSequenceOfOperation", [value unsignedCharValue], 5U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMandatoryAttributesFromDutSystemMode_23() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeSystemModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads mandatory attributes from DUT: SystemMode Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("systemMode", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("systemMode", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("systemMode", [value unsignedCharValue], 9U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadThermostatRunningModeAttributeFromTheDut_24() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeThermostatRunningModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ThermostatRunningMode attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("thermostatRunningMode", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("thermostatRunningMode", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("thermostatRunningMode", [value unsignedCharValue], 9U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutStartOfWeek_25() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeStartOfWeekWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of optional attributes from DUT: StartOfWeek Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("startOfWeek", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("startOfWeek", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("startOfWeek", [value unsignedCharValue], 6U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsOptionalAttributesFromDutNumberOfWeeklyTransitions_26() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeNumberOfWeeklyTransitionsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads optional attributes from DUT: NumberOfWeeklyTransitions Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("numberOfWeeklyTransitions", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("numberOfWeeklyTransitions", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("numberOfWeeklyTransitions", [value unsignedCharValue], 255U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsOptionalAttributesFromDutNumberOfDailyTransitions_27() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeNumberOfDailyTransitionsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads optional attributes from DUT: NumberOfDailyTransitions Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("numberOfDailyTransitions", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("numberOfDailyTransitions", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("numberOfDailyTransitions", [value unsignedCharValue], 255U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTemperatureSetpointHoldAttributeFromTheDut_28() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeTemperatureSetpointHoldWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read TemperatureSetpointHold attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("temperatureSetpointHold", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("temperatureSetpointHold", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("temperatureSetpointHold", [value unsignedCharValue], 1U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTemperatureSetpointHoldDurationAttributeFromTheDut_29() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeTemperatureSetpointHoldDurationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read TemperatureSetpointHoldDuration attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("temperatureSetpointHoldDuration", "int16u", "int16u")); - VerifyOrReturn( - CheckConstraintMinValue("temperatureSetpointHoldDuration", [value unsignedShortValue], 0U)); - VerifyOrReturn( - CheckConstraintMaxValue("temperatureSetpointHoldDuration", [value unsignedShortValue], 1440U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadThermostatProgrammingOperationModeAttributeFromTheDut_30() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeThermostatProgrammingOperationModeWithCompletion:^( - NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ThermostatProgrammingOperationMode attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("thermostatProgrammingOperationMode", "bitmap8", "bitmap8")); - VerifyOrReturn(CheckConstraintMinValue("thermostatProgrammingOperationMode", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("thermostatProgrammingOperationMode", [value unsignedCharValue], 7U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadThermostatRunningStateAttributeFromTheDut_31() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeThermostatRunningStateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ThermostatRunningState attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("thermostatRunningState", "bitmap16", "bitmap16")); - VerifyOrReturn(CheckConstraintMinValue("thermostatRunningState", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("thermostatRunningState", [value unsignedShortValue], 127U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadSetpointChangeSourceAttributeFromTheDut_32() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeSetpointChangeSourceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read SetpointChangeSource attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("setpointChangeSource", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("setpointChangeSource", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("setpointChangeSource", [value unsignedCharValue], 2U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadSetpointChangeAmountAttributeFromTheDut_33() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeSetpointChangeAmountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read SetpointChangeAmount attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("setpointChangeAmount", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("setpointChangeAmount", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("setpointChangeAmount", [value shortValue], 32767)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadSetpointChangeSourceTimestampAttributeFromTheDut_34() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeSetpointChangeSourceTimestampWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read SetpointChangeSourceTimestamp attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("setpointChangeSourceTimestamp", "utc", "utc")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadOccupiedSetbackAttributeFromTheDut_35() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedSetbackWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read OccupiedSetback attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("occupiedSetback", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("occupiedSetback", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("occupiedSetback", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadOccupiedSetbackMinAttributeFromTheDut_36() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedSetbackMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read OccupiedSetbackMin attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("occupiedSetbackMin", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("occupiedSetbackMin", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("occupiedSetbackMin", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadOccupiedSetbackMaxAttributeFromTheDut_37() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedSetbackMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read OccupiedSetbackMax attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("occupiedSetbackMax", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("occupiedSetbackMax", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("occupiedSetbackMax", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadUnoccupiedSetbackAttributeFromTheDut_38() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUnoccupiedSetbackWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read UnoccupiedSetback attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("unoccupiedSetback", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("unoccupiedSetback", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("unoccupiedSetback", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadUnoccupiedSetbackMinAttributeFromTheDut_39() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUnoccupiedSetbackMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read UnoccupiedSetbackMin attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("unoccupiedSetbackMin", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("unoccupiedSetbackMin", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("unoccupiedSetbackMin", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadUnoccupiedSetbackMaxAttributeFromTheDut_40() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUnoccupiedSetbackMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read UnoccupiedSetbackMax attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("unoccupiedSetbackMax", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("unoccupiedSetbackMax", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("unoccupiedSetbackMax", [value unsignedCharValue], 255U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadEmergencyHeatDeltaAttributeFromTheDut_41() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeEmergencyHeatDeltaWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read EmergencyHeatDelta attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("emergencyHeatDelta", "int8u", "int8u")); - VerifyOrReturn(CheckConstraintMinValue("emergencyHeatDelta", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("emergencyHeatDelta", [value unsignedCharValue], 255U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadACTypeAttributeFromTheDut_42() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeACTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ACType attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("ACType", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("ACType", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("ACType", [value unsignedCharValue], 4U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadACCapacityAttributeFromTheDut_43() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeACCapacityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ACCapacity attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("ACCapacity", "int16u", "int16u")); - VerifyOrReturn(CheckConstraintMinValue("ACCapacity", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("ACCapacity", [value unsignedShortValue], 65535U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadACRefrigerantTypeAttributeFromTheDut_44() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeACRefrigerantTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ACRefrigerantType attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("ACRefrigerantType", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("ACRefrigerantType", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("ACRefrigerantType", [value unsignedCharValue], 3U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadACCompressorTypeAttributeFromTheDut_45() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeACCompressorTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ACCompressorType attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("ACCompressorType", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("ACCompressorType", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("ACCompressorType", [value unsignedCharValue], 3U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadACErrorCodeAttributeFromTheDut_46() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeACErrorCodeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ACErrorCode attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("ACErrorCode", "bitmap32", "bitmap32")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadACLouverPositionAttributeFromTheDut_47() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeACLouverPositionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ACLouverPosition attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("ACLouverPosition", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("ACLouverPosition", [value unsignedCharValue], 1U)); - VerifyOrReturn(CheckConstraintMaxValue("ACLouverPosition", [value unsignedCharValue], 5U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadACCoilTemperatureAttributeFromTheDut_48() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeACCoilTemperatureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ACCoilTemperature attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - if (value != nil) { - - VerifyOrReturn(CheckConstraintType("ACCoilTemperature", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("ACCoilTemperature", [value shortValue], -27315)); - VerifyOrReturn(CheckConstraintMaxValue("ACCoilTemperature", [value shortValue], 32767)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadACCapacityFormatAttributeFromTheDut_49() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeACCapacityformatWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ACCapacityFormat attribute from the DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ACCapacityformat", actualValue, 0U)); - } - - VerifyOrReturn(CheckConstraintType("ACCapacityformat", "enum8", "enum8")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } -}; - -class Test_TC_TSTAT_2_2 : public TestCommandBridge { -public: - // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_TSTAT_2_2() - : TestCommandBridge("Test_TC_TSTAT_2_2") - , mTestIndex(0) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - - ~Test_TC_TSTAT_2_2() {} - - /////////// TestCommand Interface ///////// - void NextTest() override - { - CHIP_ERROR err = CHIP_NO_ERROR; - - if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_TSTAT_2_2\n"); - } - - if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_TSTAT_2_2\n"); - SetCommandExitStatus(CHIP_NO_ERROR); - return; - } - - Wait(); - - // Ensure we increment mTestIndex before we start running the relevant - // command. That way if we lose the timeslice after we send the message - // but before our function call returns, we won't end up with an - // incorrect mTestIndex value observed when we get the response. - switch (mTestIndex++) { - case 0: - ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); - err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); - break; - case 1: - ChipLogProgress(chipTool, - " ***** Test Step 1 : Reads OccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is " - "within range\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsOccupiedCoolingSetpointAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_1(); - break; - case 2: - ChipLogProgress(chipTool, - " ***** Test Step 2 : Writes a value back that is different but valid for OccupiedCoolingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButValidForOccupiedCoolingSetpointAttribute_2(); - break; - case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Reads it back again to confirm the successful write of OccupiedCoolingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfOccupiedCoolingSetpointAttribute_3(); - break; - case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Writes OccupiedCoolingSetpoint to value below the ABSMinCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWritesOccupiedCoolingSetpointToValueBelowTheABSMinCoolSetpointLimit_4(); - break; - case 5: - ChipLogProgress( - chipTool, " ***** Test Step 5 : Writes OccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWritesOccupiedCoolingSetpointToValueAboveTheMaxCoolSetpointLimit_5(); - break; - case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMinCoolSetpointLimitToOccupiedCoolingSetpointAttribute_6(); - break; - case 7: - ChipLogProgress( - chipTool, " ***** Test Step 7 : Writes the CoolingSetpoint below the HeatingSetpoint when auto is enabled\n"); - if (ShouldSkip("TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesTheCoolingSetpointBelowTheHeatingSetpointWhenAutoIsEnabled_7(); - break; - case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMaxCoolSetpointLimitToOccupiedCoolingSetpointAttribute_8(); - break; - case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is " - "within range\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsOccupiedHeatingSetpointAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_9(); - break; - case 10: - ChipLogProgress(chipTool, - " ***** Test Step 10 : Writes a value back that is different but valid for OccupiedHeatingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButValidForOccupiedHeatingSetpointAttribute_10(); - break; - case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Reads it back again to confirm the successful write of OccupiedHeatingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfOccupiedHeatingSetpointAttribute_11(); - break; - case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Writes OccupiedHeatingSetpoint to value below the MinHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestWritesOccupiedHeatingSetpointToValueBelowTheMinHeatSetpointLimit_12(); - break; - case 13: - ChipLogProgress( - chipTool, " ***** Test Step 13 : Writes OccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestWritesOccupiedHeatingSetpointToValueAboveTheMaxHeatSetpointLimit_13(); - break; - case 14: - ChipLogProgress( - chipTool, " ***** Test Step 14 : Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMinHeatSetpointLimitToOccupiedHeatingSetpointAttribute_14(); - break; - case 15: - ChipLogProgress(chipTool, - " ***** Test Step 15 : Reads it back again to confirm the successful write of OccupiedHeatingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfOccupiedHeatingSetpointAttribute_15(); - break; - case 16: - ChipLogProgress( - chipTool, " ***** Test Step 16 : Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMaxHeatSetpointLimitToOccupiedHeatingSetpointAttribute_16(); - break; - case 17: - ChipLogProgress( - chipTool, " ***** Test Step 17 : Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMaxHeatSetpointLimitToOccupiedHeatingSetpointAttribute_17(); - break; - case 18: - ChipLogProgress(chipTool, - " ***** Test Step 18 : Reads UnoccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is " - "within range\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsUnoccupiedCoolingSetpointAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_18(); - break; - case 19: - ChipLogProgress(chipTool, - " ***** Test Step 19 : Writes a value back that is different but valid for UnoccupiedCoolingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButValidForUnoccupiedCoolingSetpointAttribute_19(); - break; - case 20: - ChipLogProgress(chipTool, - " ***** Test Step 20 : Reads it back again to confirm the successful write of UnoccupiedCoolingSetpoint " - "attribute\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfUnoccupiedCoolingSetpointAttribute_20(); - break; - case 21: - ChipLogProgress( - chipTool, " ***** Test Step 21 : Writes UnoccupiedCoolingSetpoint to value below the MinCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWritesUnoccupiedCoolingSetpointToValueBelowTheMinCoolSetpointLimit_21(); - break; - case 22: - ChipLogProgress( - chipTool, " ***** Test Step 22 : Writes UnoccupiedCoolingSetpoint to value above the MaxCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWritesUnoccupiedCoolingSetpointToValueAboveTheMaxCoolSetpointLimit_22(); - break; - case 23: - ChipLogProgress(chipTool, - " ***** Test Step 23 : Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMinCoolSetpointLimitToUnoccupiedCoolingSetpointAttribute_23(); - break; - case 24: - ChipLogProgress(chipTool, - " ***** Test Step 24 : Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMaxCoolSetpointLimitToUnoccupiedCoolingSetpointAttribute_24(); - break; - case 25: - ChipLogProgress(chipTool, - " ***** Test Step 25 : Reads UnoccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is " - "within range\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsUnoccupiedHeatingSetpointAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_25(); - break; - case 26: - ChipLogProgress(chipTool, - " ***** Test Step 26 : Writes a value back that is different but valid for UnoccupiedHeatingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButValidForUnoccupiedHeatingSetpointAttribute_26(); - break; - case 27: - ChipLogProgress(chipTool, - " ***** Test Step 27 : Reads it back again to confirm the successful write of UnoccupiedHeatingSetpoint " - "attribute\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfUnoccupiedHeatingSetpointAttribute_27(); - break; - case 28: - ChipLogProgress( - chipTool, " ***** Test Step 28 : Writes UnoccupiedHeatingSetpoint to value below the MinHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestWritesUnoccupiedHeatingSetpointToValueBelowTheMinHeatSetpointLimit_28(); - break; - case 29: - ChipLogProgress( - chipTool, " ***** Test Step 29 : Writes UnoccupiedHeatingSetpoint to value above the MaxHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestWritesUnoccupiedHeatingSetpointToValueAboveTheMaxHeatSetpointLimit_29(); - break; - case 30: - ChipLogProgress(chipTool, - " ***** Test Step 30 : Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMinHeatSetpointLimitToUnoccupiedHeatingSetpointAttribute_30(); - break; - case 31: - ChipLogProgress(chipTool, - " ***** Test Step 31 : Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint attribute\n"); - if (ShouldSkip("TSTAT.S.F02 && TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMaxHeatSetpointLimitToUnoccupiedHeatingSetpointAttribute_31(); - break; - case 32: - ChipLogProgress(chipTool, - " ***** Test Step 32 : Reads MinHeatSetpointLimit attribute from Server DUT and verifies that the value is within " - "range\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015")) { - NextTest(); - return; - } - err = TestReadsMinHeatSetpointLimitAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_32(); - break; - case 33: - ChipLogProgress(chipTool, - " ***** Test Step 33 : Writes a value back that is different but valid for MinHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButValidForMinHeatSetpointLimitAttribute_33(); - break; - case 34: - ChipLogProgress(chipTool, - " ***** Test Step 34 : Reads it back again to confirm the successful write of MinHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMinHeatSetpointLimitAttribute_34(); - break; - case 35: - ChipLogProgress(chipTool, " ***** Test Step 35 : Writes a value back that is different but violates the deadband\n"); - if (ShouldSkip("TSTAT.S.A0015 && TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButViolatesTheDeadband_35(); - break; - case 36: - ChipLogProgress( - chipTool, " ***** Test Step 36 : Writes MinHeatSetpointLimit to value below the AbsMinHeatSetpointLimit \n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015")) { - NextTest(); - return; - } - err = TestWritesMinHeatSetpointLimitToValueBelowTheAbsMinHeatSetpointLimit_36(); - break; - case 37: - ChipLogProgress( - chipTool, " ***** Test Step 37 : Writes MinHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit \n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015")) { - NextTest(); - return; - } - err = TestWritesMinHeatSetpointLimitToValueAboveTheAbsMaxHeatSetpointLimit_37(); - break; - case 38: - ChipLogProgress( - chipTool, " ***** Test Step 38 : Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfAbsMinHeatSetpointLimitToMinHeatSetpointLimitAttribute_38(); - break; - case 39: - ChipLogProgress( - chipTool, " ***** Test Step 39 : Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfAbsMaxHeatSetpointLimitToMinHeatSetpointLimitAttribute_39(); - break; - case 40: - ChipLogProgress(chipTool, - " ***** Test Step 40 : Reads MaxHeatSetpointLimit attribute from Server DUT and verifies that the value is within " - "range\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestReadsMaxHeatSetpointLimitAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_40(); - break; - case 41: - ChipLogProgress( - chipTool, " ***** Test Step 41 : Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfAbsMinHeatSetpointLimitToMinHeatSetpointLimitAttribute_41(); - break; - case 42: - ChipLogProgress( - chipTool, " ***** Test Step 42 : Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.A0015 && TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfAbsMaxHeatSetpointLimitToMinHeatSetpointLimitAttribute_42(); - break; - case 43: - ChipLogProgress(chipTool, - " ***** Test Step 43 : Writes a value back that is different but valid for MaxHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButValidForMaxHeatSetpointLimitAttribute_43(); - break; - case 44: - ChipLogProgress(chipTool, - " ***** Test Step 44 : Reads it back again to confirm the successful write of MaxHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMaxHeatSetpointLimitAttribute_44(); - break; - case 45: - ChipLogProgress( - chipTool, " ***** Test Step 45 : Writes MaxHeatSetpointLimit to value below the AbsMinHeatSetpointLimit \n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016")) { - NextTest(); - return; - } - err = TestWritesMaxHeatSetpointLimitToValueBelowTheAbsMinHeatSetpointLimit_45(); - break; - case 46: - ChipLogProgress( - chipTool, " ***** Test Step 46 : Writes MaxHeatSetpointLimit to value above the AbsMaxHeatSetpointLimit \n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016")) { - NextTest(); - return; - } - err = TestWritesMaxHeatSetpointLimitToValueAboveTheAbsMaxHeatSetpointLimit_46(); - break; - case 47: - ChipLogProgress( - chipTool, " ***** Test Step 47 : Writes the limit of AbsMinHeatSetpointLimit to MaxHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfAbsMinHeatSetpointLimitToMaxHeatSetpointLimitAttribute_47(); - break; - case 48: - ChipLogProgress( - chipTool, " ***** Test Step 48 : Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfAbsMaxHeatSetpointLimitToMaxHeatSetpointLimitAttribute_48(); - break; - case 49: - ChipLogProgress(chipTool, - " ***** Test Step 49 : Reads MinCoolSetpointLimit attribute from Server DUT and verifies that the value is within " - "range\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestReadsMinCoolSetpointLimitAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_49(); - break; - case 50: - ChipLogProgress(chipTool, - " ***** Test Step 50 : Writes a value back that is different but valid for MinCoolSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButValidForMinCoolSetpointLimitAttribute_50(); - break; - case 51: - ChipLogProgress(chipTool, - " ***** Test Step 51 : Reads it back again to confirm the successful write of MinCoolSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMinCoolSetpointLimitAttribute_51(); - break; - case 52: - ChipLogProgress( - chipTool, " ***** Test Step 52 : Writes MinCoolSetpointLimit to value below the AbsMinCoolSetpointLimit \n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestWritesMinCoolSetpointLimitToValueBelowTheAbsMinCoolSetpointLimit_52(); - break; - case 53: - ChipLogProgress( - chipTool, " ***** Test Step 53 : Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit \n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestWritesMinCoolSetpointLimitToValueAboveTheMaxCoolSetpointLimit_53(); - break; - case 54: - ChipLogProgress( - chipTool, " ***** Test Step 54 : Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfAbsMinCoolSetpointLimitToMinCoolSetpointLimitAttribute_54(); - break; - case 55: - ChipLogProgress( - chipTool, " ***** Test Step 55 : Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMaxCoolSetpointLimitToMinCoolSetpointLimitAttribute_55(); - break; - case 56: - ChipLogProgress( - chipTool, " ***** Test Step 56 : Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfAbsMinCoolSetpointLimitToMinCoolSetpointLimitAttribute_56(); - break; - case 57: - ChipLogProgress(chipTool, - " ***** Test Step 57 : Reads MaxCoolSetpointLimit attribute from Server DUT and verifies that the value is within " - "range\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018")) { - NextTest(); - return; - } - err = TestReadsMaxCoolSetpointLimitAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_57(); - break; - case 58: - ChipLogProgress(chipTool, - " ***** Test Step 58 : Writes a value back that is different but valid for MaxCoolSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButValidForMaxCoolSetpointLimitAttribute_58(); - break; - case 59: - ChipLogProgress(chipTool, - " ***** Test Step 59 : Reads it back again to confirm the successful write of MaxCoolSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMaxCoolSetpointLimitAttribute_59(); - break; - case 60: - ChipLogProgress( - chipTool, " ***** Test Step 60 : Writes MaxCoolSetpointLimit to value below the AbsMinCoolSetpointLimit \n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018")) { - NextTest(); - return; - } - err = TestWritesMaxCoolSetpointLimitToValueBelowTheAbsMinCoolSetpointLimit_60(); - break; - case 61: - ChipLogProgress( - chipTool, " ***** Test Step 61 : Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit \n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018")) { - NextTest(); - return; - } - err = TestWritesMaxCoolSetpointLimitToValueAboveTheMaxCoolSetpointLimit_61(); - break; - case 62: - ChipLogProgress( - chipTool, " ***** Test Step 62 : Writes the limit of AbsMinCoolSetpointLimit to MaxCoolSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfAbsMinCoolSetpointLimitToMaxCoolSetpointLimitAttribute_62(); - break; - case 63: - ChipLogProgress( - chipTool, " ***** Test Step 63 : Writes the limit of MaxCoolSetpointLimit to MaxCoolSetpointLimit attribute\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018")) { - NextTest(); - return; - } - err = TestWritesTheLimitOfMaxCoolSetpointLimitToMaxCoolSetpointLimitAttribute_63(); - break; - case 64: - ChipLogProgress(chipTool, " ***** Test Step 64 : Writes (sets back) default value of MinHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0015")) { - NextTest(); - return; - } - err = TestWritesSetsBackDefaultValueOfMinHeatSetpointLimit_64(); - break; - case 65: - ChipLogProgress(chipTool, " ***** Test Step 65 : Writes (sets back)default value of MaxHeatSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesSetsBackdefaultValueOfMaxHeatSetpointLimit_65(); - break; - case 66: - ChipLogProgress(chipTool, " ***** Test Step 66 : Writes MaxHeatSetpointLimit That meets the deadband of 2.5C\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesMaxHeatSetpointLimitThatMeetsTheDeadbandOf25c_66(); - break; - case 67: - ChipLogProgress(chipTool, " ***** Test Step 67 : Writes (sets back) default value of MinCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { - NextTest(); - return; - } - err = TestWritesSetsBackDefaultValueOfMinCoolSetpointLimit_67(); - break; - case 68: - ChipLogProgress(chipTool, " ***** Test Step 68 : Writes (sets back) default value of MaxCoolSetpointLimit\n"); - if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018")) { - NextTest(); - return; - } - err = TestWritesSetsBackDefaultValueOfMaxCoolSetpointLimit_68(); - break; - case 69: - ChipLogProgress(chipTool, - " ***** Test Step 69 : Reads MinSetpointDeadBand attribute from Server DUT and verifies that the value is within " - "range\n"); - if (ShouldSkip("TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestReadsMinSetpointDeadBandAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_69(); - break; - case 70: - ChipLogProgress(chipTool, - " ***** Test Step 70 : Writes a value back that is different but valid for MinSetpointDeadBand attribute\n"); - if (ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable")) { - NextTest(); - return; - } - err = TestWritesAValueBackThatIsDifferentButValidForMinSetpointDeadBandAttribute_70(); - break; - case 71: - ChipLogProgress(chipTool, - " ***** Test Step 71 : Reads it back again to confirm the successful write of MinSetpointDeadBand attribute\n"); - if (ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable")) { - NextTest(); - return; - } - err = TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMinSetpointDeadBandAttribute_71(); - break; - case 72: - ChipLogProgress(chipTool, " ***** Test Step 72 : Writes the value below MinSetpointDeadBand\n"); - if (ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable")) { - NextTest(); - return; - } - err = TestWritesTheValueBelowMinSetpointDeadBand_72(); - break; - case 73: - ChipLogProgress(chipTool, " ***** Test Step 73 : Writes the value above MinSetpointDeadBand \n"); - if (ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable")) { - NextTest(); - return; - } - err = TestWritesTheValueAboveMinSetpointDeadBand_73(); - break; - case 74: - ChipLogProgress(chipTool, " ***** Test Step 74 : Writes the min limit of MinSetpointDeadBand\n"); - if (ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable")) { - NextTest(); - return; - } - err = TestWritesTheMinLimitOfMinSetpointDeadBand_74(); - break; - case 75: - ChipLogProgress(chipTool, " ***** Test Step 75 : Writes the max limit of MinSetpointDeadBand\n"); - if (ShouldSkip("TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable")) { - NextTest(); - return; - } - err = TestWritesTheMaxLimitOfMinSetpointDeadBand_75(); - break; - case 76: - ChipLogProgress(chipTool, - " ***** Test Step 76 : Reads ControlSequenceOfOperation from Server DUT and verifies that the value is valid\n"); - if (ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsControlSequenceOfOperationFromServerDutAndVerifiesThatTheValueIsValid_76(); - break; - case 77: - ChipLogProgress( - chipTool, " ***** Test Step 77 : Write Attribute command for ControlSequenceOfOperation with a new valid value\n"); - if (ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestWriteAttributeCommandForControlSequenceOfOperationWithANewValidValue_77(); - break; - case 78: - ChipLogProgress(chipTool, " ***** Test Step 78 : Read it back again to confirm the successful write\n"); - if (ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadItBackAgainToConfirmTheSuccessfulWrite_78(); - break; - case 79: - ChipLogProgress(chipTool, - " ***** Test Step 79 : Writes MaxHeatSetpointLimit attribute to default value of 2950 to meet deadband " - "constraint\n"); - if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.F05")) { - NextTest(); - return; - } - err = TestWritesMaxHeatSetpointLimitAttributeToDefaultValueOf2950ToMeetDeadbandConstraint_79(); - break; - case 80: - ChipLogProgress(chipTool, " ***** Test Step 80 : Sets OccupiedCoolingSetpoint to default value\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestSetsOccupiedCoolingSetpointToDefaultValue_80(); - break; - case 81: - ChipLogProgress(chipTool, " ***** Test Step 81 : Sets OccupiedHeatingSetpoint to default value\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestSetsOccupiedHeatingSetpointToDefaultValue_81(); - break; - case 82: - ChipLogProgress(chipTool, " ***** Test Step 82 : Sends SetpointRaise Command Heat Only\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestSendsSetpointRaiseCommandHeatOnly_82(); - break; - case 83: - ChipLogProgress( - chipTool, " ***** Test Step 83 : Reads back OccupiedHeatingSetpoint to confirm the success of the write\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsBackOccupiedHeatingSetpointToConfirmTheSuccessOfTheWrite_83(); - break; - case 84: - ChipLogProgress(chipTool, " ***** Test Step 84 : Sets OccupiedHeatingSetpoint to default value\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestSetsOccupiedHeatingSetpointToDefaultValue_84(); - break; - case 85: - ChipLogProgress(chipTool, " ***** Test Step 85 : Sends SetpointRaise Command Heat Only\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestSendsSetpointRaiseCommandHeatOnly_85(); - break; - case 86: - ChipLogProgress( - chipTool, " ***** Test Step 86 : Reads back OccupiedHeatingSetpoint to confirm the success of the write\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsBackOccupiedHeatingSetpointToConfirmTheSuccessOfTheWrite_86(); - break; - case 87: - ChipLogProgress(chipTool, " ***** Test Step 87 : Sends SetpointRaise Command Cool Only\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestSendsSetpointRaiseCommandCoolOnly_87(); - break; - case 88: - ChipLogProgress( - chipTool, " ***** Test Step 88 : Reads back OccupiedCoolingSetpoint to confirm the success of the write\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsBackOccupiedCoolingSetpointToConfirmTheSuccessOfTheWrite_88(); - break; - case 89: - ChipLogProgress(chipTool, " ***** Test Step 89 : Sets OccupiedCoolingSetpoint to default value\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestSetsOccupiedCoolingSetpointToDefaultValue_89(); - break; - case 90: - ChipLogProgress(chipTool, " ***** Test Step 90 : Sends SetpointRaise Command Cool Only\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestSendsSetpointRaiseCommandCoolOnly_90(); - break; - case 91: - ChipLogProgress( - chipTool, " ***** Test Step 91 : Reads back OccupiedCoolingSetpoint to confirm the success of the write\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsBackOccupiedCoolingSetpointToConfirmTheSuccessOfTheWrite_91(); - break; - case 92: - ChipLogProgress(chipTool, " ***** Test Step 92 : Sets OccupiedCoolingSetpoint to default value\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestSetsOccupiedCoolingSetpointToDefaultValue_92(); - break; - case 93: - ChipLogProgress(chipTool, " ***** Test Step 93 : Sets OccupiedHeatingSetpoint to default value\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestSetsOccupiedHeatingSetpointToDefaultValue_93(); - break; - case 94: - ChipLogProgress(chipTool, " ***** Test Step 94 : Sends SetpointRaise Command Heat & Cool\n"); - if (ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestSendsSetpointRaiseCommandHeatCool_94(); - break; - case 95: - ChipLogProgress( - chipTool, " ***** Test Step 95 : Reads back OccupiedCoolingSetpoint to confirm the success of the write\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsBackOccupiedCoolingSetpointToConfirmTheSuccessOfTheWrite_95(); - break; - case 96: - ChipLogProgress( - chipTool, " ***** Test Step 96 : Reads back OccupiedHeatingSetpoint to confirm the success of the write\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsBackOccupiedHeatingSetpointToConfirmTheSuccessOfTheWrite_96(); - break; - case 97: - ChipLogProgress(chipTool, " ***** Test Step 97 : Sets OccupiedCoolingSetpoint to default value\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestSetsOccupiedCoolingSetpointToDefaultValue_97(); - break; - case 98: - ChipLogProgress(chipTool, " ***** Test Step 98 : Sets OccupiedHeatingSetpoint to default value\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestSetsOccupiedHeatingSetpointToDefaultValue_98(); - break; - case 99: - ChipLogProgress(chipTool, " ***** Test Step 99 : Sends SetpointRaise Command Heat & Cool\n"); - if (ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestSendsSetpointRaiseCommandHeatCool_99(); - break; - case 100: - ChipLogProgress( - chipTool, " ***** Test Step 100 : Reads back OccupiedCoolingSetpoint to confirm the success of the write\n"); - if (ShouldSkip("TSTAT.S.F01")) { - NextTest(); - return; - } - err = TestReadsBackOccupiedCoolingSetpointToConfirmTheSuccessOfTheWrite_100(); - break; - case 101: - ChipLogProgress( - chipTool, " ***** Test Step 101 : Reads back OccupiedHeatingSetpoint to confirm the success of the write\n"); - if (ShouldSkip("TSTAT.S.F00")) { - NextTest(); - return; - } - err = TestReadsBackOccupiedHeatingSetpointToConfirmTheSuccessOfTheWrite_101(); - break; - } - - if (CHIP_NO_ERROR != err) { - ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); - SetCommandExitStatus(err); - } - } - - void OnStatusUpdate(const chip::app::StatusIB & status) override - { - switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 27: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 34: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 35: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 36: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 37: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 38: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 39: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 40: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 41: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 42: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 43: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 44: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 45: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 46: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 47: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 48: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 49: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 50: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 51: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 52: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 53: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 54: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 55: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 56: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 57: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 58: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 59: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 60: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 61: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 62: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 63: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 64: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 65: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 66: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 67: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 68: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 69: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 70: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 71: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 72: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 73: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; - case 74: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 75: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 76: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 77: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 78: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 79: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 80: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 81: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 82: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 83: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 84: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 85: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 86: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 87: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 88: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 89: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 90: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 91: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 92: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 93: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 94: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 95: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 96: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 97: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 98: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 99: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 100: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 101: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - } - - // Go on to the next test. - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 102; - - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() - { - - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee("alpha", value); - } - - CHIP_ERROR TestReadsOccupiedCoolingSetpointAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_1() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads OccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("occupiedCoolingSetpoint", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("occupiedCoolingSetpoint", [value shortValue], 1600)); - VerifyOrReturn(CheckConstraintMaxValue("occupiedCoolingSetpoint", [value shortValue], 3200)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButValidForOccupiedCoolingSetpointAttribute_2() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:2500]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but valid for " - @"OccupiedCoolingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfOccupiedCoolingSetpointAttribute_3() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of OccupiedCoolingSetpoint attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedCoolingSetpoint", actualValue, 2500)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesOccupiedCoolingSetpointToValueBelowTheABSMinCoolSetpointLimit_4() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:30]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes OccupiedCoolingSetpoint to value below the " - @"ABSMinCoolSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesOccupiedCoolingSetpointToValueAboveTheMaxCoolSetpointLimit_5() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:4000]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes OccupiedCoolingSetpoint to value above the " - @"MaxCoolSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMinCoolSetpointLimitToOccupiedCoolingSetpointAttribute_6() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:1600]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MinCoolSetpointLimit to " - @"OccupiedCoolingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheCoolingSetpointBelowTheHeatingSetpointWhenAutoIsEnabled_7() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:1600]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the CoolingSetpoint below the HeatingSetpoint when auto is " - @"enabled Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMaxCoolSetpointLimitToOccupiedCoolingSetpointAttribute_8() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:3200]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MaxCoolSetpointLimit to " - @"OccupiedCoolingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsOccupiedHeatingSetpointAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_9() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("occupiedHeatingSetpoint", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("occupiedHeatingSetpoint", [value shortValue], 700)); - VerifyOrReturn(CheckConstraintMaxValue("occupiedHeatingSetpoint", [value shortValue], 3000)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButValidForOccupiedHeatingSetpointAttribute_10() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:2100]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but valid for " - @"OccupiedHeatingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfOccupiedHeatingSetpointAttribute_11() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of OccupiedHeatingSetpoint attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedHeatingSetpoint", actualValue, 2100)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesOccupiedHeatingSetpointToValueBelowTheMinHeatSetpointLimit_12() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:600]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes OccupiedHeatingSetpoint to value below the " - @"MinHeatSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesOccupiedHeatingSetpointToValueAboveTheMaxHeatSetpointLimit_13() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:4010]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes OccupiedHeatingSetpoint to value above the " - @"MaxHeatSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMinHeatSetpointLimitToOccupiedHeatingSetpointAttribute_14() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:700]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MinHeatSetpointLimit to " - @"OccupiedHeatingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfOccupiedHeatingSetpointAttribute_15() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of OccupiedHeatingSetpoint attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedHeatingSetpoint", actualValue, 700)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMaxHeatSetpointLimitToOccupiedHeatingSetpointAttribute_16() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:3000]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MaxHeatSetpointLimit to " - @"OccupiedHeatingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMaxHeatSetpointLimitToOccupiedHeatingSetpointAttribute_17() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:3000]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MaxHeatSetpointLimit to " - @"OccupiedHeatingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsUnoccupiedCoolingSetpointAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_18() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUnoccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog( - @"Reads UnoccupiedCoolingSetpoint attribute from Server DUT and verifies that the value is within range Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("unoccupiedCoolingSetpoint", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("unoccupiedCoolingSetpoint", [value shortValue], 1600)); - VerifyOrReturn(CheckConstraintMaxValue("unoccupiedCoolingSetpoint", [value shortValue], 3200)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButValidForUnoccupiedCoolingSetpointAttribute_19() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedCoolingSetpointArgument; - unoccupiedCoolingSetpointArgument = [NSNumber numberWithShort:2500]; - [cluster writeAttributeUnoccupiedCoolingSetpointWithValue:unoccupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but valid for " - @"UnoccupiedCoolingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfUnoccupiedCoolingSetpointAttribute_20() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUnoccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of UnoccupiedCoolingSetpoint attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("UnoccupiedCoolingSetpoint", actualValue, 2500)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesUnoccupiedCoolingSetpointToValueBelowTheMinCoolSetpointLimit_21() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedCoolingSetpointArgument; - unoccupiedCoolingSetpointArgument = [NSNumber numberWithShort:1002]; - [cluster writeAttributeUnoccupiedCoolingSetpointWithValue:unoccupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes UnoccupiedCoolingSetpoint to value below the " - @"MinCoolSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesUnoccupiedCoolingSetpointToValueAboveTheMaxCoolSetpointLimit_22() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedCoolingSetpointArgument; - unoccupiedCoolingSetpointArgument = [NSNumber numberWithShort:4010]; - [cluster writeAttributeUnoccupiedCoolingSetpointWithValue:unoccupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes UnoccupiedCoolingSetpoint to value above the " - @"MaxCoolSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMinCoolSetpointLimitToUnoccupiedCoolingSetpointAttribute_23() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedCoolingSetpointArgument; - unoccupiedCoolingSetpointArgument = [NSNumber numberWithShort:1800]; - [cluster writeAttributeUnoccupiedCoolingSetpointWithValue:unoccupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MinCoolSetpointLimit to " - @"UnoccupiedCoolingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMaxCoolSetpointLimitToUnoccupiedCoolingSetpointAttribute_24() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedCoolingSetpointArgument; - unoccupiedCoolingSetpointArgument = [NSNumber numberWithShort:3000]; - [cluster writeAttributeUnoccupiedCoolingSetpointWithValue:unoccupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MaxCoolSetpointLimit to " - @"UnoccupiedCoolingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsUnoccupiedHeatingSetpointAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_25() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUnoccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog( - @"Reads UnoccupiedHeatingSetpoint attribute from Server DUT and verifies that the value is within range Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("unoccupiedHeatingSetpoint", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("unoccupiedHeatingSetpoint", [value shortValue], 700)); - VerifyOrReturn(CheckConstraintMaxValue("unoccupiedHeatingSetpoint", [value shortValue], 3000)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButValidForUnoccupiedHeatingSetpointAttribute_26() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedHeatingSetpointArgument; - unoccupiedHeatingSetpointArgument = [NSNumber numberWithShort:2500]; - [cluster writeAttributeUnoccupiedHeatingSetpointWithValue:unoccupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but valid for " - @"UnoccupiedHeatingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfUnoccupiedHeatingSetpointAttribute_27() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUnoccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of UnoccupiedHeatingSetpoint attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("UnoccupiedHeatingSetpoint", actualValue, 2500)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesUnoccupiedHeatingSetpointToValueBelowTheMinHeatSetpointLimit_28() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedHeatingSetpointArgument; - unoccupiedHeatingSetpointArgument = [NSNumber numberWithShort:500]; - [cluster writeAttributeUnoccupiedHeatingSetpointWithValue:unoccupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes UnoccupiedHeatingSetpoint to value below the " - @"MinHeatSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesUnoccupiedHeatingSetpointToValueAboveTheMaxHeatSetpointLimit_29() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedHeatingSetpointArgument; - unoccupiedHeatingSetpointArgument = [NSNumber numberWithShort:4010]; - [cluster writeAttributeUnoccupiedHeatingSetpointWithValue:unoccupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes UnoccupiedHeatingSetpoint to value above the " - @"MaxHeatSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMinHeatSetpointLimitToUnoccupiedHeatingSetpointAttribute_30() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedHeatingSetpointArgument; - unoccupiedHeatingSetpointArgument = [NSNumber numberWithShort:1800]; - [cluster writeAttributeUnoccupiedHeatingSetpointWithValue:unoccupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MinHeatSetpointLimit to " - @"UnoccupiedHeatingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMaxHeatSetpointLimitToUnoccupiedHeatingSetpointAttribute_31() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id unoccupiedHeatingSetpointArgument; - unoccupiedHeatingSetpointArgument = [NSNumber numberWithShort:3000]; - [cluster writeAttributeUnoccupiedHeatingSetpointWithValue:unoccupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MaxHeatSetpointLimit to " - @"UnoccupiedHeatingSetpoint attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMinHeatSetpointLimitAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_32() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMinHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog( - @"Reads MinHeatSetpointLimit attribute from Server DUT and verifies that the value is within range Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("minHeatSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("minHeatSetpointLimit", [value shortValue], 700)); - VerifyOrReturn(CheckConstraintMaxValue("minHeatSetpointLimit", [value shortValue], 3000)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButValidForMinHeatSetpointLimitAttribute_33() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minHeatSetpointLimitArgument; - minHeatSetpointLimitArgument = [NSNumber numberWithShort:800]; - [cluster writeAttributeMinHeatSetpointLimitWithValue:minHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but valid for " - @"MinHeatSetpointLimit attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMinHeatSetpointLimitAttribute_34() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMinHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of MinHeatSetpointLimit attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("MinHeatSetpointLimit", actualValue, 800)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButViolatesTheDeadband_35() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minHeatSetpointLimitArgument; - minHeatSetpointLimitArgument = [NSNumber numberWithShort:2000]; - [cluster - writeAttributeMinHeatSetpointLimitWithValue:minHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but violates the deadband Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMinHeatSetpointLimitToValueBelowTheAbsMinHeatSetpointLimit_36() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minHeatSetpointLimitArgument; - minHeatSetpointLimitArgument = [NSNumber numberWithShort:650]; - [cluster writeAttributeMinHeatSetpointLimitWithValue:minHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes MinHeatSetpointLimit to value below the " - @"AbsMinHeatSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMinHeatSetpointLimitToValueAboveTheAbsMaxHeatSetpointLimit_37() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minHeatSetpointLimitArgument; - minHeatSetpointLimitArgument = [NSNumber numberWithShort:4050]; - [cluster writeAttributeMinHeatSetpointLimitWithValue:minHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes MinHeatSetpointLimit to value above the " - @"AbsMaxHeatSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfAbsMinHeatSetpointLimitToMinHeatSetpointLimitAttribute_38() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minHeatSetpointLimitArgument; - minHeatSetpointLimitArgument = [NSNumber numberWithShort:700]; - [cluster writeAttributeMinHeatSetpointLimitWithValue:minHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfAbsMaxHeatSetpointLimitToMinHeatSetpointLimitAttribute_39() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minHeatSetpointLimitArgument; - minHeatSetpointLimitArgument = [NSNumber numberWithShort:3000]; - [cluster writeAttributeMinHeatSetpointLimitWithValue:minHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMaxHeatSetpointLimitAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_40() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMaxHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog( - @"Reads MaxHeatSetpointLimit attribute from Server DUT and verifies that the value is within range Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("maxHeatSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("maxHeatSetpointLimit", [value shortValue], 700)); - VerifyOrReturn(CheckConstraintMaxValue("maxHeatSetpointLimit", [value shortValue], 3000)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfAbsMinHeatSetpointLimitToMinHeatSetpointLimitAttribute_41() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minHeatSetpointLimitArgument; - minHeatSetpointLimitArgument = [NSNumber numberWithShort:700]; - [cluster writeAttributeMinHeatSetpointLimitWithValue:minHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfAbsMaxHeatSetpointLimitToMinHeatSetpointLimitAttribute_42() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minHeatSetpointLimitArgument; - minHeatSetpointLimitArgument = [NSNumber numberWithShort:3000]; - [cluster writeAttributeMinHeatSetpointLimitWithValue:minHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButValidForMaxHeatSetpointLimitAttribute_43() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxHeatSetpointLimitArgument; - maxHeatSetpointLimitArgument = [NSNumber numberWithShort:2900]; - [cluster writeAttributeMaxHeatSetpointLimitWithValue:maxHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but valid for " - @"MaxHeatSetpointLimit attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMaxHeatSetpointLimitAttribute_44() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMaxHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of MaxHeatSetpointLimit attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("MaxHeatSetpointLimit", actualValue, 2900)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMaxHeatSetpointLimitToValueBelowTheAbsMinHeatSetpointLimit_45() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxHeatSetpointLimitArgument; - maxHeatSetpointLimitArgument = [NSNumber numberWithShort:500]; - [cluster writeAttributeMaxHeatSetpointLimitWithValue:maxHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes MaxHeatSetpointLimit to value below the " - @"AbsMinHeatSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMaxHeatSetpointLimitToValueAboveTheAbsMaxHeatSetpointLimit_46() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxHeatSetpointLimitArgument; - maxHeatSetpointLimitArgument = [NSNumber numberWithShort:4000]; - [cluster writeAttributeMaxHeatSetpointLimitWithValue:maxHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes MaxHeatSetpointLimit to value above the " - @"AbsMaxHeatSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfAbsMinHeatSetpointLimitToMaxHeatSetpointLimitAttribute_47() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxHeatSetpointLimitArgument; - maxHeatSetpointLimitArgument = [NSNumber numberWithShort:700]; - [cluster writeAttributeMaxHeatSetpointLimitWithValue:maxHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of AbsMinHeatSetpointLimit to MaxHeatSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfAbsMaxHeatSetpointLimitToMaxHeatSetpointLimitAttribute_48() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxHeatSetpointLimitArgument; - maxHeatSetpointLimitArgument = [NSNumber numberWithShort:3000]; - [cluster writeAttributeMaxHeatSetpointLimitWithValue:maxHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMinCoolSetpointLimitAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_49() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMinCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog( - @"Reads MinCoolSetpointLimit attribute from Server DUT and verifies that the value is within range Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("minCoolSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("minCoolSetpointLimit", [value shortValue], 1600)); - VerifyOrReturn(CheckConstraintMaxValue("minCoolSetpointLimit", [value shortValue], 3200)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButValidForMinCoolSetpointLimitAttribute_50() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minCoolSetpointLimitArgument; - minCoolSetpointLimitArgument = [NSNumber numberWithShort:2000]; - [cluster writeAttributeMinCoolSetpointLimitWithValue:minCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but valid for " - @"MinCoolSetpointLimit attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMinCoolSetpointLimitAttribute_51() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMinCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of MinCoolSetpointLimit attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("MinCoolSetpointLimit", actualValue, 2000)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMinCoolSetpointLimitToValueBelowTheAbsMinCoolSetpointLimit_52() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minCoolSetpointLimitArgument; - minCoolSetpointLimitArgument = [NSNumber numberWithShort:1000]; - [cluster writeAttributeMinCoolSetpointLimitWithValue:minCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes MinCoolSetpointLimit to value below the " - @"AbsMinCoolSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMinCoolSetpointLimitToValueAboveTheMaxCoolSetpointLimit_53() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minCoolSetpointLimitArgument; - minCoolSetpointLimitArgument = [NSNumber numberWithShort:4000]; - [cluster writeAttributeMinCoolSetpointLimitWithValue:minCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit " - @"Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfAbsMinCoolSetpointLimitToMinCoolSetpointLimitAttribute_54() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minCoolSetpointLimitArgument; - minCoolSetpointLimitArgument = [NSNumber numberWithShort:1600]; - [cluster writeAttributeMinCoolSetpointLimitWithValue:minCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMaxCoolSetpointLimitToMinCoolSetpointLimitAttribute_55() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minCoolSetpointLimitArgument; - minCoolSetpointLimitArgument = [NSNumber numberWithShort:3200]; - [cluster writeAttributeMinCoolSetpointLimitWithValue:minCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfAbsMinCoolSetpointLimitToMinCoolSetpointLimitAttribute_56() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minCoolSetpointLimitArgument; - minCoolSetpointLimitArgument = [NSNumber numberWithShort:1600]; - [cluster writeAttributeMinCoolSetpointLimitWithValue:minCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMaxCoolSetpointLimitAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_57() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMaxCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog( - @"Reads MaxCoolSetpointLimit attribute from Server DUT and verifies that the value is within range Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("maxCoolSetpointLimit", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("maxCoolSetpointLimit", [value shortValue], 1600)); - VerifyOrReturn(CheckConstraintMaxValue("maxCoolSetpointLimit", [value shortValue], 3200)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButValidForMaxCoolSetpointLimitAttribute_58() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxCoolSetpointLimitArgument; - maxCoolSetpointLimitArgument = [NSNumber numberWithShort:2000]; - [cluster writeAttributeMaxCoolSetpointLimitWithValue:maxCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but valid for " - @"MaxCoolSetpointLimit attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMaxCoolSetpointLimitAttribute_59() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMaxCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of MaxCoolSetpointLimit attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("MaxCoolSetpointLimit", actualValue, 2000)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMaxCoolSetpointLimitToValueBelowTheAbsMinCoolSetpointLimit_60() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxCoolSetpointLimitArgument; - maxCoolSetpointLimitArgument = [NSNumber numberWithShort:1000]; - [cluster writeAttributeMaxCoolSetpointLimitWithValue:maxCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes MaxCoolSetpointLimit to value below the " - @"AbsMinCoolSetpointLimit Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMaxCoolSetpointLimitToValueAboveTheMaxCoolSetpointLimit_61() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxCoolSetpointLimitArgument; - maxCoolSetpointLimitArgument = [NSNumber numberWithShort:4000]; - [cluster writeAttributeMaxCoolSetpointLimitWithValue:maxCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit " - @"Error: %@", - err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfAbsMinCoolSetpointLimitToMaxCoolSetpointLimitAttribute_62() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxCoolSetpointLimitArgument; - maxCoolSetpointLimitArgument = [NSNumber numberWithShort:1600]; - [cluster writeAttributeMaxCoolSetpointLimitWithValue:maxCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of AbsMinCoolSetpointLimit to MaxCoolSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheLimitOfMaxCoolSetpointLimitToMaxCoolSetpointLimitAttribute_63() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxCoolSetpointLimitArgument; - maxCoolSetpointLimitArgument = [NSNumber numberWithShort:3200]; - [cluster writeAttributeMaxCoolSetpointLimitWithValue:maxCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the limit of MaxCoolSetpointLimit to MaxCoolSetpointLimit " - @"attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesSetsBackDefaultValueOfMinHeatSetpointLimit_64() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minHeatSetpointLimitArgument; - minHeatSetpointLimitArgument = [NSNumber numberWithShort:700]; - [cluster - writeAttributeMinHeatSetpointLimitWithValue:minHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes (sets back) default value of MinHeatSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesSetsBackdefaultValueOfMaxHeatSetpointLimit_65() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxHeatSetpointLimitArgument; - maxHeatSetpointLimitArgument = [NSNumber numberWithShort:3000]; - [cluster - writeAttributeMaxHeatSetpointLimitWithValue:maxHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes (sets back)default value of MaxHeatSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMaxHeatSetpointLimitThatMeetsTheDeadbandOf25c_66() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxHeatSetpointLimitArgument; - maxHeatSetpointLimitArgument = [NSNumber numberWithShort:2950]; - [cluster - writeAttributeMaxHeatSetpointLimitWithValue:maxHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog( - @"Writes MaxHeatSetpointLimit That meets the deadband of 2.5C Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesSetsBackDefaultValueOfMinCoolSetpointLimit_67() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minCoolSetpointLimitArgument; - minCoolSetpointLimitArgument = [NSNumber numberWithShort:1600]; - [cluster - writeAttributeMinCoolSetpointLimitWithValue:minCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes (sets back) default value of MinCoolSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesSetsBackDefaultValueOfMaxCoolSetpointLimit_68() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxCoolSetpointLimitArgument; - maxCoolSetpointLimitArgument = [NSNumber numberWithShort:3200]; - [cluster - writeAttributeMaxCoolSetpointLimitWithValue:maxCoolSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes (sets back) default value of MaxCoolSetpointLimit Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsMinSetpointDeadBandAttributeFromServerDutAndVerifiesThatTheValueIsWithinRange_69() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMinSetpointDeadBandWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog( - @"Reads MinSetpointDeadBand attribute from Server DUT and verifies that the value is within range Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("minSetpointDeadBand", "int8s", "int8s")); - VerifyOrReturn(CheckConstraintMinValue("minSetpointDeadBand", [value charValue], 0)); - VerifyOrReturn(CheckConstraintMaxValue("minSetpointDeadBand", [value charValue], 25)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesAValueBackThatIsDifferentButValidForMinSetpointDeadBandAttribute_70() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minSetpointDeadBandArgument; - minSetpointDeadBandArgument = [NSNumber numberWithChar:5]; - [cluster writeAttributeMinSetpointDeadBandWithValue:minSetpointDeadBandArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes a value back that is different but valid for " - @"MinSetpointDeadBand attribute Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsItBackAgainToConfirmTheSuccessfulWriteOfMinSetpointDeadBandAttribute_71() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeMinSetpointDeadBandWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads it back again to confirm the successful write of MinSetpointDeadBand attribute Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("MinSetpointDeadBand", actualValue, 5)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheValueBelowMinSetpointDeadBand_72() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minSetpointDeadBandArgument; - minSetpointDeadBandArgument = [NSNumber numberWithChar:-1]; - [cluster writeAttributeMinSetpointDeadBandWithValue:minSetpointDeadBandArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the value below MinSetpointDeadBand Error: %@", err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheValueAboveMinSetpointDeadBand_73() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minSetpointDeadBandArgument; - minSetpointDeadBandArgument = [NSNumber numberWithChar:30]; - [cluster writeAttributeMinSetpointDeadBandWithValue:minSetpointDeadBandArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the value above MinSetpointDeadBand Error: %@", err); - - VerifyOrReturn(CheckValue("status", - err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] - ? err.code - : EMBER_ZCL_STATUS_FAILURE) - : 0, - EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheMinLimitOfMinSetpointDeadBand_74() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minSetpointDeadBandArgument; - minSetpointDeadBandArgument = [NSNumber numberWithChar:0]; - [cluster writeAttributeMinSetpointDeadBandWithValue:minSetpointDeadBandArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the min limit of MinSetpointDeadBand Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesTheMaxLimitOfMinSetpointDeadBand_75() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id minSetpointDeadBandArgument; - minSetpointDeadBandArgument = [NSNumber numberWithChar:25]; - [cluster writeAttributeMinSetpointDeadBandWithValue:minSetpointDeadBandArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes the max limit of MinSetpointDeadBand Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsControlSequenceOfOperationFromServerDutAndVerifiesThatTheValueIsValid_76() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeControlSequenceOfOperationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads ControlSequenceOfOperation from Server DUT and verifies that the value is valid Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ControlSequenceOfOperation", actualValue, 4U)); - } - - VerifyOrReturn(CheckConstraintType("controlSequenceOfOperation", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("controlSequenceOfOperation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("controlSequenceOfOperation", [value unsignedCharValue], 5U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWriteAttributeCommandForControlSequenceOfOperationWithANewValidValue_77() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id controlSequenceOfOperationArgument; - controlSequenceOfOperationArgument = [NSNumber numberWithUnsignedChar:2U]; - [cluster writeAttributeControlSequenceOfOperationWithValue:controlSequenceOfOperationArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Write Attribute command for ControlSequenceOfOperation with a " - @"new valid value Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadItBackAgainToConfirmTheSuccessfulWrite_78() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeControlSequenceOfOperationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read it back again to confirm the successful write Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ControlSequenceOfOperation", actualValue, 2U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestWritesMaxHeatSetpointLimitAttributeToDefaultValueOf2950ToMeetDeadbandConstraint_79() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id maxHeatSetpointLimitArgument; - maxHeatSetpointLimitArgument = [NSNumber numberWithShort:2950]; - [cluster writeAttributeMaxHeatSetpointLimitWithValue:maxHeatSetpointLimitArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Writes MaxHeatSetpointLimit attribute to default value of 2950 to " - @"meet deadband constraint Error: %@", - err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSetsOccupiedCoolingSetpointToDefaultValue_80() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:2600]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Sets OccupiedCoolingSetpoint to default value Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSetsOccupiedHeatingSetpointToDefaultValue_81() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:2000]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Sets OccupiedHeatingSetpoint to default value Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSendsSetpointRaiseCommandHeatOnly_82() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRThermostatClusterSetpointRaiseLowerParams alloc] init]; - params.mode = [NSNumber numberWithUnsignedChar:0U]; - params.amount = [NSNumber numberWithChar:-30]; - [cluster setpointRaiseLowerWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Sends SetpointRaise Command Heat Only Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsBackOccupiedHeatingSetpointToConfirmTheSuccessOfTheWrite_83() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads back OccupiedHeatingSetpoint to confirm the success of the write Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedHeatingSetpoint", actualValue, 1700)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSetsOccupiedHeatingSetpointToDefaultValue_84() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:2000]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Sets OccupiedHeatingSetpoint to default value Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSendsSetpointRaiseCommandHeatOnly_85() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRThermostatClusterSetpointRaiseLowerParams alloc] init]; - params.mode = [NSNumber numberWithUnsignedChar:0U]; - params.amount = [NSNumber numberWithChar:30]; - [cluster setpointRaiseLowerWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Sends SetpointRaise Command Heat Only Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsBackOccupiedHeatingSetpointToConfirmTheSuccessOfTheWrite_86() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads back OccupiedHeatingSetpoint to confirm the success of the write Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedHeatingSetpoint", actualValue, 2300)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSendsSetpointRaiseCommandCoolOnly_87() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRThermostatClusterSetpointRaiseLowerParams alloc] init]; - params.mode = [NSNumber numberWithUnsignedChar:1U]; - params.amount = [NSNumber numberWithChar:-30]; - [cluster setpointRaiseLowerWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Sends SetpointRaise Command Cool Only Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsBackOccupiedCoolingSetpointToConfirmTheSuccessOfTheWrite_88() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads back OccupiedCoolingSetpoint to confirm the success of the write Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedCoolingSetpoint", actualValue, 2300)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSetsOccupiedCoolingSetpointToDefaultValue_89() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:2600]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Sets OccupiedCoolingSetpoint to default value Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSendsSetpointRaiseCommandCoolOnly_90() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRThermostatClusterSetpointRaiseLowerParams alloc] init]; - params.mode = [NSNumber numberWithUnsignedChar:1U]; - params.amount = [NSNumber numberWithChar:30]; - [cluster setpointRaiseLowerWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Sends SetpointRaise Command Cool Only Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsBackOccupiedCoolingSetpointToConfirmTheSuccessOfTheWrite_91() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads back OccupiedCoolingSetpoint to confirm the success of the write Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedCoolingSetpoint", actualValue, 2900)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSetsOccupiedCoolingSetpointToDefaultValue_92() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:2600]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Sets OccupiedCoolingSetpoint to default value Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSetsOccupiedHeatingSetpointToDefaultValue_93() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:2000]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Sets OccupiedHeatingSetpoint to default value Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSendsSetpointRaiseCommandHeatCool_94() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRThermostatClusterSetpointRaiseLowerParams alloc] init]; - params.mode = [NSNumber numberWithUnsignedChar:2U]; - params.amount = [NSNumber numberWithChar:-30]; - [cluster setpointRaiseLowerWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Sends SetpointRaise Command Heat & Cool Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsBackOccupiedCoolingSetpointToConfirmTheSuccessOfTheWrite_95() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads back OccupiedCoolingSetpoint to confirm the success of the write Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedCoolingSetpoint", actualValue, 2300)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsBackOccupiedHeatingSetpointToConfirmTheSuccessOfTheWrite_96() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads back OccupiedHeatingSetpoint to confirm the success of the write Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedHeatingSetpoint", actualValue, 1700)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSetsOccupiedCoolingSetpointToDefaultValue_97() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedCoolingSetpointArgument; - occupiedCoolingSetpointArgument = [NSNumber numberWithShort:2600]; - [cluster writeAttributeOccupiedCoolingSetpointWithValue:occupiedCoolingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Sets OccupiedCoolingSetpoint to default value Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSetsOccupiedHeatingSetpointToDefaultValue_98() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - id occupiedHeatingSetpointArgument; - occupiedHeatingSetpointArgument = [NSNumber numberWithShort:2000]; - [cluster writeAttributeOccupiedHeatingSetpointWithValue:occupiedHeatingSetpointArgument - completion:^(NSError * _Nullable err) { - NSLog(@"Sets OccupiedHeatingSetpoint to default value Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSendsSetpointRaiseCommandHeatCool_99() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - __auto_type * params = [[MTRThermostatClusterSetpointRaiseLowerParams alloc] init]; - params.mode = [NSNumber numberWithUnsignedChar:2U]; - params.amount = [NSNumber numberWithChar:30]; - [cluster setpointRaiseLowerWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Sends SetpointRaise Command Heat & Cool Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsBackOccupiedCoolingSetpointToConfirmTheSuccessOfTheWrite_100() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads back OccupiedCoolingSetpoint to confirm the success of the write Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedCoolingSetpoint", actualValue, 2900)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadsBackOccupiedHeatingSetpointToConfirmTheSuccessOfTheWrite_101() - { - - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpoint:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads back OccupiedHeatingSetpoint to confirm the success of the write Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("OccupiedHeatingSetpoint", actualValue, 2300)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } -}; - class Test_TC_TSUIC_1_1 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced @@ -130236,8 +124799,6 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), - make_unique(), - make_unique(), make_unique(), make_unique(), make_unique(),