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 <commits@restyled.io>
diff --git a/examples/darwin-framework-tool/templates/tests/ciTests.json b/examples/darwin-framework-tool/templates/tests/ciTests.json
index fd8f884..50f8ce2 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 a7f4c9b..5146304 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 @@
               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 597becc..893cc48 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 @@
               - 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 8d1caa4..24dd9c6 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 @@
               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 6cf8fa3..01bfc0f 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 @@
               - 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 @@
               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 @@
               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 @@
               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 @@
       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 @@
               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 @@
               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 @@
               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 @@
               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 @@
               minValue: 700
               maxValue: 3000
 
-    - label: "Reads attribute from DUT: MaxHeatSetpointLimit"
-      PICS: TSTAT.S.A0016
+    - label: "Read attribute MaxHeatSetpointLimit from the DUT"
+      PICS: TSTAT.S.A0016 && !TSTAT.S.F05
       command: "readAttribute"
       attribute: "MaxHeatSetpointLimit"
       response:
           constraints:
               type: int16s
-              minValue: -27315
-              maxValue: 32767
+              minValue: 700
+              maxValue: 3000
 
-    - label: "Reads optional attributes from DUT: MinCoolSetpointLimit"
-      PICS: TSTAT.S.A0017
+    - label: "Reads attribute from DUT: MaxHeatSetpointLimit"
+      PICS: TSTAT.S.A0016 && TSTAT.S.F05 && TSTAT.S.A0018
+      command: "readAttribute"
+      attribute: "MaxHeatSetpointLimit"
+      response:
+          constraints:
+              type: int16s
+              minValue: 700
+              maxValue: MaxCoolSetpointLimit - MinSetpointDeadBand
+
+    - 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 @@
               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 @@
               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 ab5fc6a..f402fa9 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 @@
               - 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,23 +175,58 @@
 
     - 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 && !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
+      PICS: TSTAT.S.F01 && TSTAT.S.A0017
       arguments:
-          value: 4000
+          value: MaxCoolSetpointLimit + 1000
       response:
           error: CONSTRAINT_ERROR
 
@@ -88,36 +235,81 @@
           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,20 +339,56 @@
           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 && !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
+      PICS: TSTAT.S.F00 && TSTAT.S.A0016
       arguments:
-          value: 4010
+          value: MaxHeatSetpointLimit + 1000
       response:
           error: CONSTRAINT_ERROR
 
@@ -169,25 +397,25 @@
           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 @@
           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,20 +519,51 @@
           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 && !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
+      PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0018
       arguments:
-          value: 4010
+          value: MaxCoolSetpointLimit + 1000
       response:
           error: CONSTRAINT_ERROR
 
@@ -259,25 +572,95 @@
           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,20 +690,55 @@
           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 && !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
+      PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0016
       arguments:
-          value: 4010
+          value: MaxHeatSetpointLimit + 1000
       response:
           error: CONSTRAINT_ERROR
 
@@ -329,25 +747,96 @@
           attribute"
       command: "writeAttribute"
       attribute: "UnoccupiedHeatingSetpoint"
-      PICS: TSTAT.S.F02 && TSTAT.S.F00
+      PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015
       arguments:
-          value: 1800
+          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: 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,9 +875,43 @@
           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 && !TSTAT.S.A0016
+      arguments:
+          value: 4050
       response:
           error: CONSTRAINT_ERROR
 
@@ -397,9 +920,9 @@
           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
+          value: MaxHeatSetpointLimit + 1000
       response:
           error: CONSTRAINT_ERROR
 
@@ -408,25 +931,93 @@
           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.F05
+      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 && !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
+      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 && !TSTAT.S.A0004 &&
+          !TSTAT.S.A0016 "
       response:
           constraints:
               type: int16s
@@ -476,47 +1067,159 @@
           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 && !TSTAT.S.A0004
+      arguments:
+          value: 4000
+      response:
+          error: CONSTRAINT_ERROR
+
     - 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
+          value: AbsMaxHeatSetpointLimitValue + 1000
       response:
           error: CONSTRAINT_ERROR
 
     - label:
-          "Writes the limit of AbsMinHeatSetpointLimit to MaxHeatSetpointLimit
+          "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,19 +1249,59 @@
           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 && !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
+      PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018
       arguments:
-          value: 4000
+          value: MaxCoolSetpointLimit + 1000
       response:
           error: CONSTRAINT_ERROR
 
@@ -567,34 +1310,84 @@
           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 MaxCoolSetpointLimit to MinCoolSetpointLimit
-          attribute"
-      command: "writeAttribute"
-      attribute: "MinCoolSetpointLimit"
-      PICS: TSTAT.S.F01 && TSTAT.S.A0017
-      arguments:
-          value: 3200
-
-    - 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
+          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 && !TSTAT.S.A0018
+      arguments:
+          value: 3200
+
+    - label:
+          "Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit
+          attribute"
+      command: "writeAttribute"
+      attribute: "MinCoolSetpointLimit"
+      PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018
+      arguments:
+          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 @@
           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 && !TSTAT.S.A0006
+      arguments:
+          value: 4000
+      response:
+          error: CONSTRAINT_ERROR
+
     - 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
+          value: AbsMaxCoolSetpointLimit + 1000
       response:
           error: CONSTRAINT_ERROR
 
     - label:
-          "Writes the limit of AbsMinCoolSetpointLimit 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
 
     - 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 2ea5356..ef88de3 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 @@
             break;
         case 2:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                chip::app::DataModel::DecodableList<chip::ClusterId> 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 @@
         }
         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<const char>("Factory Reset the DUT and enter 'y' after successgarbage: not in length on purpose", 49);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("ygarbage: not in length on purpose", 1);
+            return UserPrompt(kIdentityAlpha, value);
         }
         }
         return CHIP_NO_ERROR;
@@ -22593,7 +22594,7 @@
 {
 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);
@@ -22680,20 +22681,6 @@
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 {
                     auto iter_0 = value.begin();
-                    VerifyOrReturn(CheckNextListItemDecodes<decltype(value)>("generatedCommandList", iter_0, 0));
-                    VerifyOrReturn(CheckValue("generatedCommandList[0]", iter_0.GetValue(), 1UL));
-                    VerifyOrReturn(CheckNoMoreListItems<decltype(value)>("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<chip::CommandId> value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                {
-                    auto iter_0 = value.begin();
                     VerifyOrReturn(CheckNoMoreListItems<decltype(value)>("generatedCommandList", iter_0, 0));
                 }
                 VerifyOrReturn(CheckConstraintType("value", "list", "list"));
@@ -22743,13 +22730,6 @@
         }
         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 @@
             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 @@
         }
         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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("ygarbage: not in length on purpose", 1);
+            return UserPrompt(kIdentityAlpha, value);
         }
         }
         return CHIP_NO_ERROR;
@@ -33640,7 +33621,7 @@
 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 @@
     chip::Optional<chip::EndpointId> mEndpoint;
     chip::Optional<uint16_t> 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; }
 
     //
@@ -33680,16 +33671,78 @@
         case 1:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable<int16_t> value;
+                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));
+                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<int16_t> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s"));
@@ -33697,7 +33750,17 @@
                 VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767));
             }
             break;
-        case 3:
+        case 11:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                chip::app::DataModel::Nullable<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));
+            }
+            break;
+        case 12:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
                 uint8_t value;
@@ -33707,104 +33770,13 @@
                 VerifyOrReturn(CheckConstraintMaxValue("value", value, 1U));
             }
             break;
-        case 4:
-            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));
-            }
-            break;
-        case 5:
-            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));
-            }
-            break;
-        case 6:
-            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));
-            }
-            break;
-        case 7:
-            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));
-            }
-            break;
-        case 8:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                uint8_t value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 100U));
-            }
-            break;
-        case 9:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                uint8_t value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 100U));
-            }
-            break;
-        case 10:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                uint8_t value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 63U));
-            }
-            break;
-        case 11:
-            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));
-            }
-            break;
-        case 12:
-            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 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, 700));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, AbsMinCoolSetpointLimitStep5 - MinSetpointDeadBand));
             }
             break;
         case 14:
@@ -33813,8 +33785,7 @@
                 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(CheckConstraintMaxValue("value", value, 1575));
             }
             break;
         case 15:
@@ -33823,8 +33794,8 @@
                 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, -27315));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767));
             }
             break;
         case 16:
@@ -33833,8 +33804,8 @@
                 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, -27315));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767));
             }
             break;
         case 17:
@@ -33860,21 +33831,21 @@
         case 19:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                int16_t value;
+                uint8_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(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 100U));
             }
             break;
         case 20:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                int8_t value;
+                uint8_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", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 100U));
             }
             break;
         case 21:
@@ -33884,92 +33855,182 @@
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8"));
                 VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 7U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 63U));
             }
             break;
         case 22:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::Thermostat::ThermostatControlSequence value;
+                int8_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U));
+                VerifyOrReturn(CheckConstraintType("value", "int8s", "int8s"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, -25));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 25));
             }
             break;
         case 23:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                uint8_t value;
+                int16_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 9U));
+                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));
             {
-                uint8_t value;
+                int16_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 9U));
+                VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 1600));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200));
             }
             break;
         case 25:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                uint8_t value;
+                int16_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 6U));
+                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));
             {
-                uint8_t value;
+                int16_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+                VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 700));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000));
             }
             break;
         case 27:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                uint8_t value;
+                int16_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+                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));
             {
-                uint8_t value;
+                int16_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 1U));
+                VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 1600));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200));
             }
             break;
         case 29:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable<uint16_t> value;
+                int16_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 1440U));
+                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;
+                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 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;
+                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 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, 700));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000));
+            }
+            break;
+        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, 700));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimit - MinSetpointDeadBand));
+            }
+            break;
+        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, AbsMinCoolSetpointLimitStep5));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimit));
+            }
+            break;
+        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;
+                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 39:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
                 uint8_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8"));
@@ -33977,102 +34038,14 @@
                 VerifyOrReturn(CheckConstraintMaxValue("value", value, 7U));
             }
             break;
-        case 31:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                uint16_t value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "bitmap16", "bitmap16"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 127U));
-            }
-            break;
-        case 32:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                uint8_t value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 2U));
-            }
-            break;
-        case 33:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                chip::app::DataModel::Nullable<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));
-            }
-            break;
-        case 34:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                uint32_t value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "utc", "utc"));
-            }
-            break;
-        case 35:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                chip::app::DataModel::Nullable<uint8_t> value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
-            }
-            break;
-        case 36:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                chip::app::DataModel::Nullable<uint8_t> value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
-            }
-            break;
-        case 37:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                chip::app::DataModel::Nullable<uint8_t> value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
-            }
-            break;
-        case 38:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                chip::app::DataModel::Nullable<uint8_t> value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
-            }
-            break;
-        case 39:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            {
-                chip::app::DataModel::Nullable<uint8_t> value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
-            }
-            break;
         case 40:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable<uint8_t> value;
+                chip::app::Clusters::Thermostat::ThermostatControlSequence value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
                 VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U));
             }
             break;
         case 41:
@@ -34080,9 +34053,9 @@
             {
                 uint8_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
                 VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 9U));
             }
             break;
         case 42:
@@ -34092,17 +34065,17 @@
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
                 VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 4U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 9U));
             }
             break;
         case 43:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                uint16_t value;
+                uint8_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u"));
+                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
                 VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 6U));
             }
             break;
         case 44:
@@ -34110,9 +34083,9 @@
             {
                 uint8_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
+                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
                 VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
             }
             break;
         case 45:
@@ -34120,32 +34093,64 @@
             {
                 uint8_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
+                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
                 VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
             }
             break;
         case 46:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                uint32_t value;
+                uint8_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32"));
+                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 1U));
             }
             break;
         case 47:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                uint8_t value;
+                chip::app::DataModel::Nullable<uint16_t> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
-                VerifyOrReturn(CheckConstraintMinValue("value", value, 1U));
-                VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U));
+                VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 1440U));
             }
             break;
         case 48:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
+                uint8_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 7U));
+            }
+            break;
+        case 49:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint16_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "bitmap16", "bitmap16"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 127U));
+            }
+            break;
+        case 50:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint8_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 2U));
+            }
+            break;
+        case 51:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
                 chip::app::DataModel::Nullable<int16_t> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s"));
@@ -34153,7 +34158,153 @@
                 VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767));
             }
             break;
-        case 49:
+        case 52:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint32_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "utc", "utc"));
+            }
+            break;
+        case 53:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                chip::app::DataModel::Nullable<uint8_t> value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+            }
+            break;
+        case 54:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                chip::app::DataModel::Nullable<uint8_t> value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+            }
+            break;
+        case 55:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                chip::app::DataModel::Nullable<uint8_t> value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+            }
+            break;
+        case 56:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                chip::app::DataModel::Nullable<uint8_t> value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+            }
+            break;
+        case 57:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                chip::app::DataModel::Nullable<uint8_t> value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+            }
+            break;
+        case 58:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                chip::app::DataModel::Nullable<uint8_t> value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+            }
+            break;
+        case 59:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint8_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 255U));
+            }
+            break;
+        case 60:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint8_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 4U));
+            }
+            break;
+        case 61:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint16_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 65535U));
+            }
+            break;
+        case 62:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint8_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U));
+            }
+            break;
+        case 63:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint8_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 0U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U));
+            }
+            break;
+        case 64:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint32_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32"));
+            }
+            break;
+        case 65:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                uint8_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, 1U));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U));
+            }
+            break;
+        case 66:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                chip::app::DataModel::Nullable<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));
+            }
+            break;
+        case 67:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
                 uint8_t value;
@@ -34185,292 +34336,412 @@
             return WaitForCommissionee(kIdentityAlpha, value);
         }
         case 1: {
-            LogStep(1, "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");
-            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");
-            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));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id,
-                                 Thermostat::Attributes::AbsMinHeatSetpointLimit::Id, true, chip::NullOptional);
-        }
-        case 5: {
-            LogStep(5, "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");
+            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 7: {
-            LogStep(7, "Reads optional attributes from DUT: AbsMaxCoolSetpointLimit");
+        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 8: {
-            LogStep(8, "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");
-            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");
-            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");
-            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));
-            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));
-            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));
-            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));
-            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));
-            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));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id,
-                                 true, chip::NullOptional);
-        }
-        case 18: {
-            LogStep(18, "Reads optional attributes from DUT: MinCoolSetpointLimit");
+        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 19: {
-            LogStep(19, "Reads optional attributes from DUT: MaxCoolSetpointLimit");
+        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 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 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 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 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 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 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 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 20: {
-            LogStep(20, "Reads optional attributes from DUT: MinSetpointDeadBand");
+            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 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 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 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 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 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 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 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 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 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 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 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_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 @@
     chip::Optional<chip::EndpointId> mEndpoint;
     chip::Optional<uint16_t> 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,15 +34809,121 @@
             {
                 int16_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                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));
+            {
+                int8_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                MinSetpointDeadBand = value;
+            }
+            break;
+        case 4:
+            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), 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), 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)));
+                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)));
+                AbsMinCoolSetpointLimit = value;
+            }
+            break;
+        case 12:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            {
+                int16_t value;
+                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
+                AbsMaxCoolSetpointLimit = value;
+            }
+            break;
+        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 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(CheckConstraintMinValue("value", value, 1600));
                 VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200));
             }
             break;
-        case 2:
+        case 15:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             break;
-        case 3:
+        case 16:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
                 int16_t value;
@@ -34541,22 +34931,46 @@
                 VerifyOrReturn(CheckValue("occupiedCoolingSetpoint", value, 2500));
             }
             break;
-        case 4:
+        case 17:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR));
             break;
-        case 5:
+        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 6:
+        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 7:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR));
-            break;
-        case 8:
+        case 22:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             break;
-        case 9:
+        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, MinHeatSetpointLimit));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxHeatSetpointLimit));
+            }
+            break;
+        case 27:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
                 int16_t value;
@@ -34566,10 +34980,10 @@
                 VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000));
             }
             break;
-        case 10:
+        case 28:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             break;
-        case 11:
+        case 29:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
                 int16_t value;
@@ -34577,130 +34991,37 @@
                 VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 2100));
             }
             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));
-            }
-            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));
-            {
-                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 19:
-            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
-            break;
-        case 20:
-            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));
-            }
-            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));
-            {
-                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 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));
-            }
-            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));
+            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,41 +35029,12 @@
                 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));
-            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));
-            {
-                int16_t value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckValue("maxHeatSetpointLimit", value, 2900));
-            }
-            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));
             {
                 int16_t value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
@@ -34751,28 +35043,68 @@
                 VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200));
             }
             break;
+        case 42:
+            VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
+            break;
+        case 43:
+            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));
+            }
+            break;
+        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), 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), 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 @@
             {
                 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 @@
             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 @@
         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 @@
             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 @@
             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 @@
             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));
-            {
-                int16_t value;
-                VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
-                VerifyOrReturn(CheckValue("occupiedHeatingSetpoint", value, 1700));
-            }
+            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(CheckConstraintType("value", "int16s", "int16s"));
+                VerifyOrReturn(CheckConstraintMinValue("value", value, AbsMinCoolSetpointLimit));
+                VerifyOrReturn(CheckConstraintMaxValue("value", value, MaxCoolSetpointLimit));
+            }
             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,10 +35306,273 @@
             {
                 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));
+            shouldContinue = true;
+            break;
+        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;
@@ -35012,13 +35603,93 @@
             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 @@
                                   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 @@
                                   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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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,9 +35735,20 @@
                                   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 = static_cast<int16_t>(MaxCoolSetpointLimit + 1000);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id,
+                                  Thermostat::Attributes::OccupiedCoolingSetpoint::Id, value, chip::NullOptional,
+                                  chip::NullOptional);
+        }
+        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;
@@ -35063,19 +35756,32 @@
                                   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 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 = 1600;
+            value = MinCoolSetpointLimit;
             return WriteAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id,
                                   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 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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
                                   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 @@
                                   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 @@
                                   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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
                                   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<int16_t>(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 @@
                                   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 @@
                                   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 @@
                                   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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
                                   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 @@
                                   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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
                                   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<int16_t>(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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
                                   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 @@
                                   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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
                                   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<int16_t>(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 @@
                                   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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
             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 @@
             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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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<int16_t>(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 @@
             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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
             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 @@
             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 @@
             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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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<int16_t>(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 @@
             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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
             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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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<int16_t>(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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
             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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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<int16_t>(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<const char>("Please enter 'y' after successgarbage: not in length on purpose", 30);
+            value.expectedValue.Emplace();
+            value.expectedValue.Value() = chip::Span<const char>("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 @@
             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 @@
             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 @@
             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 @@
             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 @@
             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 @@
             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 @@
             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 @@
             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 @@
             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 @@
             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 @@
                                   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 @@
             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 @@
                                   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 @@
                                   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 @@
 
             );
         }
-        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 @@
                                   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 @@
 
             );
         }
-        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 @@
 
             );
         }
-        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 @@
                                   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 @@
 
             );
         }
-        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 @@
                                   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 @@
                                   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 @@
 
             );
         }
-        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 @@
                                   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 @@
                                   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 @@
 
             );
         }
-        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 6821b5a..f6f906f 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 @@
         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 @@
         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 @@
     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<const char>("Factory Reset the DUT and enter 'y' after successgarbage: not in length on purpose", 49);
+        value.expectedValue.Emplace();
+        value.expectedValue.Value() = chip::Span<const char>("ygarbage: not in length on purpose", 1);
+        return UserPrompt("alpha", value);
     }
 };
 
@@ -34884,20 +34876,8 @@
             break;
         case 5:
             ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: GeneratedCommandList\n");
-            if (ShouldSkip("AUDIOOUTPUT.S.NU")) {
-                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) {
@@ -34927,9 +34907,6 @@
         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.
@@ -34943,7 +34920,7 @@
 
 private:
     std::atomic_uint16_t mTestIndex;
-    const uint16_t mTestCount = 7;
+    const uint16_t mTestCount = 6;
 
     chip::Optional<chip::NodeId> mNodeId;
     chip::Optional<chip::CharSpan> mCluster;
@@ -35066,31 +35043,6 @@
 
             {
                 id actualValue = value;
-                VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast<uint32_t>(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<uint32_t>(0)));
             }
 
@@ -53914,5395 +53866,6 @@
     }
 };
 
-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<chip::NodeId> mNodeId;
-    chip::Optional<chip::CharSpan> mCluster;
-    chip::Optional<chip::EndpointId> mEndpoint;
-    chip::Optional<uint16_t> 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<int16_t>("localTemperature", [value shortValue], -27315));
-                VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("outdoorTemperature", [value shortValue], -27315));
-                VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<uint8_t>("occupancy", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<int16_t>("absMinHeatSetpointLimit", [value shortValue], -27315));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("absMaxHeatSetpointLimit", [value shortValue], -27315));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("absMinCoolSetpointLimit", [value shortValue], -27315));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("absMaxCoolSetpointLimit", [value shortValue], -27315));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<uint8_t>("PICoolingDemand", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("PIHeatingDemand", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("HVACSystemTypeConfiguration", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<int8_t>("localTemperatureCalibration", [value charValue], 25));
-            VerifyOrReturn(CheckConstraintMaxValue<int8_t>("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<int16_t>("occupiedCoolingSetpoint", [value shortValue], 1600));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("occupiedHeatingSetpoint", [value shortValue], 700));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("unoccupiedCoolingSetpoint", [value shortValue], 1600));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("unoccupiedHeatingSetpoint", [value shortValue], 700));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("minHeatSetpointLimit", [value shortValue], 700));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("maxHeatSetpointLimit", [value shortValue], -27315));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("minCoolSetpointLimit", [value shortValue], -27315));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("maxCoolSetpointLimit", [value shortValue], -27315));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int8_t>("minSetpointDeadBand", [value charValue], 0));
-            VerifyOrReturn(CheckConstraintMaxValue<int8_t>("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<uint8_t>("remoteSensing", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("controlSequenceOfOperation", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("systemMode", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("thermostatRunningMode", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("startOfWeek", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("numberOfWeeklyTransitions", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("numberOfDailyTransitions", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("temperatureSetpointHold", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint16_t>("temperatureSetpointHoldDuration", [value unsignedShortValue], 0U));
-                VerifyOrReturn(
-                    CheckConstraintMaxValue<uint16_t>("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<uint8_t>("thermostatProgrammingOperationMode", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint16_t>("thermostatRunningState", [value unsignedShortValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint16_t>("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<uint8_t>("setpointChangeSource", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<int16_t>("setpointChangeAmount", [value shortValue], -27315));
-                VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<uint8_t>("occupiedSetback", [value unsignedCharValue], 0U));
-                VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("occupiedSetbackMin", [value unsignedCharValue], 0U));
-                VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("occupiedSetbackMax", [value unsignedCharValue], 0U));
-                VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("unoccupiedSetback", [value unsignedCharValue], 0U));
-                VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("unoccupiedSetbackMin", [value unsignedCharValue], 0U));
-                VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("unoccupiedSetbackMax", [value unsignedCharValue], 0U));
-                VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("emergencyHeatDelta", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("ACType", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint16_t>("ACCapacity", [value unsignedShortValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint16_t>("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<uint8_t>("ACRefrigerantType", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("ACCompressorType", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<uint8_t>("ACLouverPosition", [value unsignedCharValue], 1U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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<int16_t>("ACCoilTemperature", [value shortValue], -27315));
-                VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<chip::NodeId> mNodeId;
-    chip::Optional<chip::CharSpan> mCluster;
-    chip::Optional<chip::EndpointId> mEndpoint;
-    chip::Optional<uint16_t> 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<int16_t>("occupiedCoolingSetpoint", [value shortValue], 1600));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("occupiedHeatingSetpoint", [value shortValue], 700));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("unoccupiedCoolingSetpoint", [value shortValue], 1600));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("unoccupiedHeatingSetpoint", [value shortValue], 700));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("minHeatSetpointLimit", [value shortValue], 700));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("maxHeatSetpointLimit", [value shortValue], 700));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("minCoolSetpointLimit", [value shortValue], 1600));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int16_t>("maxCoolSetpointLimit", [value shortValue], 1600));
-            VerifyOrReturn(CheckConstraintMaxValue<int16_t>("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<int8_t>("minSetpointDeadBand", [value charValue], 0));
-            VerifyOrReturn(CheckConstraintMaxValue<int8_t>("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<uint8_t>("controlSequenceOfOperation", [value unsignedCharValue], 0U));
-            VerifyOrReturn(CheckConstraintMaxValue<uint8_t>("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 @@
         make_unique<Test_TC_TMP_1_1>(),
         make_unique<Test_TC_TMP_2_1>(),
         make_unique<Test_TC_TSTAT_1_1>(),
-        make_unique<Test_TC_TSTAT_2_1>(),
-        make_unique<Test_TC_TSTAT_2_2>(),
         make_unique<Test_TC_TSUIC_1_1>(),
         make_unique<Test_TC_TSUIC_2_1>(),
         make_unique<Test_TC_TSUIC_2_2>(),