# Copyright (c) 2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: 42.2.2. [TC-TSTAT-2.2] Setpoint Test Cases with server as DUT

PICS:
    - TSTAT.S

config:
    nodeId: 0x12344321
    cluster: "Thermostat"
    endpoint: 1

tests:
    - label: "Wait for the commissioned device to be retrieved"
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      arguments:
          values:
              - name: "nodeId"
                value: nodeId

    - label: "Saving value for comparision in step 2a read MinCoolSetpointLimit"
      PICS: TSTAT.S.A0017
      command: "readAttribute"
      attribute: "MinCoolSetpointLimit"
      response:
          saveAs: MinCoolSetpointLimitValue

    - label: "Saving value for comparision in step 2a read MaxCoolSetpointLimit"
      PICS: TSTAT.S.A0018
      command: "readAttribute"
      attribute: "MaxCoolSetpointLimit"
      response:
          saveAs: MaxCoolSetpointLimitValue

    - label:
          "Saving value for comparision in step 2c read attribute
          MinSetpointDeadBand"
      PICS: TSTAT.S.A0019
      command: "readAttribute"
      attribute: "MinSetpointDeadBand"
      response:
          saveAs: MinSetpointDeadBandValue

    - label: "Saving value for comparision in step 3a read MinHeatSetpointLimit"
      PICS: TSTAT.S.A0015
      command: "readAttribute"
      attribute: "MinHeatSetpointLimit"
      response:
          saveAs: MinHeatSetpointLimitValue

    - label:
          "Saving value for comparision in step 3 reads
          UnoccupiedCoolingSetpoint attribute"
      command: "readAttribute"
      attribute: "UnoccupiedCoolingSetpoint"
      PICS: TSTAT.S.A0013
      response:
          saveAs: UnoccupiedCoolingSetpointValue

    - label: "Saving value for comparision in step 3a read MaxHeatSetpointLimit"
      PICS: TSTAT.S.A0016
      command: "readAttribute"
      attribute: "MaxHeatSetpointLimit"
      response:
          saveAs: MaxHeatSetpointLimitValue

    - label:
          "Saving value for comparision in step3c read attribute
          OccupiedHeatingSetpoint"
      PICS: TSTAT.S.A0012
      command: "readAttribute"
      attribute: "OccupiedHeatingSetpoint"
      response:
          saveAs: OccupiedHeatingSetpointValue

    - label:
          "Saving value for comparision in step3c read attribute
          OccupiedCoolingSetpoint"
      PICS: TSTAT.S.A0011
      command: "readAttribute"
      attribute: "OccupiedCoolingSetpoint"
      response:
          saveAs: OccupiedCoolingSetpointValue

    - 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: AbsMinCoolSetpointLimitValue

    - label:
          "Saving value for comparision in step9a read attribute
          AbsMaxCoolSetpointLimit"
      command: "readAttribute"
      attribute: "AbsMaxCoolSetpointLimit"
      PICS: TSTAT.S.A0006
      response:
          saveAs: AbsMaxCoolSetpointLimitValue

    #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: MinCoolSetpointLimitValue
              maxValue: MaxCoolSetpointLimitValue

    #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 && !TSTAT.S.A0017 && !TSTAT.S.A0018
      response:
          constraints:
              type: int16s
              minValue: 1600
              maxValue: 3200

    - label:
          "Writes a value back that is different but valid for
          OccupiedCoolingSetpoint attribute"
      command: "writeAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      arguments:
          value: 2500

    - label:
          "Reads it back again to confirm the successful write of
          OccupiedCoolingSetpoint attribute"
      command: "readAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      response:
          value: 2500

    - label:
          "Writes OccupiedCoolingSetpoint to value below the
          MinCoolSetpointLimit"
      command: "writeAttribute"
      attribute: "OccupiedCoolingSetpoint"
      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 - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          #2 Test Harness Client  attempts to write OccupiedCoolingSetpoint below the MinCoolSetpointLimit and confirms that the device does not accept the value.
          ./chip-tool thermostat write occupied-cooling-setpoint 1000 1 1
          On TH(chip-tool) verify that  DUT sends a CONSTRAINT_ERROR (0x87) for the value which is below of the  MinCoolSetpointLimitValue

          [1676028984.901635][19375:19377] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676028984.901706][19375:19377] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
          [1676028984.901895][19375:19377] CHIP:EM: <<< [E:18153i M:141749864 (Ack:137408936)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
          [1676028984.901980][19375:19377] CHIP:IN: (S) Sending msg 141749864 on secure session with LSID: 58847
      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 && TSTAT.S.A0017
      arguments:
          value: MaxCoolSetpointLimitValue + 1000
      response:
          error: CONSTRAINT_ERROR

    - label:
          "Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint
          attribute"
      command: "writeAttribute"
      attribute: "OccupiedCoolingSetpoint"
      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: MaxCoolSetpointLimitValue

    - label:
          "Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint
          attribute"
      command: "writeAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01 && !TSTAT.S.F05 && !TSTAT.S.A0017
      arguments:
          value: 1600

    - label:
          "Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint
          attribute"
      command: "writeAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01 && !TSTAT.S.F05 && TSTAT.S.A0017
      arguments:
          value: MinCoolSetpointLimitValue

    #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.A0011 && PICS_SKIP_SAMPLE_APP
      verification: |
          Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          Test Harness Client then attempts to write OccupiedCoolingSetpoint to both of the limits of LowerLimit(1600) & MaxCoolSetpointLimit(3200) and confirms that the device does accept the value. See also Note 5.

          ./chip-tool thermostat write occupied-cooling-setpoint 1600 1 1
          On TH(chip-tool) verify that  DUT sends a success response
          [1676029009.026653][19381:19383] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676029009.026688][19381:19383] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
          [1676029009.026776][19381:19383] CHIP:EM: <<< [E:29492i M:142792974 (Ack:241003612)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10
      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 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
              minValue: MinHeatSetpointLimitValue
              maxValue: MaxHeatSetpointLimitValue

    #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
              minValue: 700
              maxValue: 3000

    - label:
          "Writes a value back that is different but valid for
          OccupiedHeatingSetpoint attribute"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      arguments:
          value: 2100

    - label:
          "Reads it back again to confirm the successful write of
          OccupiedHeatingSetpoint attribute"
      command: "readAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      response:
          value: 2100

    - label:
          "Writes OccupiedHeatingSetpoint to value below the
          MinHeatSetpointLimit"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00 && !TSTAT.S.A0015
      arguments:
          value: 100
      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 - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          #1. Test Harness Client attempts to write OccupiedHeatingSetpoint below the MinHeatSetpointLimit and confirms that the device does not accept the value

          ./chip-tool thermostat write  occupied-heating-setpoint 500 1 1
          On TH(chip-tool) verify that  DUT sends a CONSTRAINT_ERROR (0x87)
          [1676029113.651245][19392:19394] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676029113.651285][19392:19394] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
          [1676029113.651397][19392:19394] CHIP:EM: <<< [E:43315i M:59735604 (Ack:107613834)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10
      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 && TSTAT.S.A0016
      arguments:
          value: MaxHeatSetpointLimitValue + 1000
      response:
          error: CONSTRAINT_ERROR

    - label:
          "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint
          attribute"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00 && !TSTAT.S.F05 && !TSTAT.S.A0016
      arguments:
          value: 3000

    - label:
          "Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint
          attribute"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00 && !TSTAT.S.F05 && TSTAT.S.A0016
      arguments:
          value: MaxHeatSetpointLimitValue

    - 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: |
          Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          Test Harness Client then attempts to write OccupiedHeatingSetpoint to both of the limits of MinHeatSetpointLimit(700) & UpperLimit(3000) and confirms that the device does accept the value.

          ./chip-tool thermostat write occupied-heating-setpoint 3000 1 1

          On TH(chip-tool) verify that  DUT sends a success response
          1676029222.303920][19403:19405] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676029222.303955][19403:19405] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
          [1676029222.304055][19403:19405] CHIP:EM: <<< [E:236i M:251820549 (Ack:138263425)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10

          ./chip-tool thermostat write occupied-heating-setpoint 700 1 1
          On TH(chip-tool) verify that  DUT sends a success response


          [1678943387.942204][770598:770600] CHIP:DMG:                         StatusIB =
          [1678943387.942212][770598:770600] CHIP:DMG:                         {
          [1678943387.942220][770598:770600] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1678943387.942228][770598:770600] CHIP:DMG:                         },
          [1678943387.942236][770598:770600] CHIP:DMG:
          [1678943387.942243][770598:770600] 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 MinHeatSetpointLimit to OccupiedHeatingSetpoint
          attribute"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00 && !TSTAT.S.A0015
      arguments:
          value: 700

    - label:
          "Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint
          attribute"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00 && TSTAT.S.A0015
      arguments:
          value: MinHeatSetpointLimitValue

    - 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
              minValue: MinCoolSetpointLimitValue
              maxValue: MaxCoolSetpointLimitValue

    - 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
              minValue: 1600
              maxValue: 3200

    - label:
          "Writes a value back that is different but valid for
          UnoccupiedCoolingSetpoint attribute"
      command: "writeAttribute"
      attribute: "UnoccupiedCoolingSetpoint"
      PICS: TSTAT.S.F02 && TSTAT.S.F01
      arguments:
          value: 2500

    - label:
          "Reads it back again to confirm the successful write of
          UnoccupiedCoolingSetpoint attribute"
      command: "readAttribute"
      attribute: "UnoccupiedCoolingSetpoint"
      PICS: TSTAT.S.F02 && TSTAT.S.F01
      response:
          value: 2500

    - label:
          "Writes UnoccupiedCoolingSetpoint to value below the
          MinCoolSetpointLimit"
      command: "writeAttribute"
      attribute: "UnoccupiedCoolingSetpoint"
      PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017
      arguments:
          value: 500
      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 log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          #1. Test Harness Client attempts to write OccupiedHeatingSetpoint below the MinHeatSetpointLimit and confirms that the device does not accept the value

          ./chip-tool thermostat write  unoccupied-cooling-setpoint 500 1 1
          On TH(chip-tool) verify that  DUT sends a CONSTRAINT_ERROR (0x87)
          [1676029263.842915][19409:19411] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676029263.842943][19409:19411] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
          [1676029263.843052][19409:19411] CHIP:EM: <<< [E:47350i M:72320003 (Ack:188090912)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
      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 && TSTAT.S.A0018
      arguments:
          value: MaxCoolSetpointLimitValue + 1000
      response:
          error: CONSTRAINT_ERROR

    - 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: 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: MaxCoolSetpointLimitValue

    #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 log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.


          below mentioned the example command to verify

          ./chip-tool thermostat write unoccupied-cooling-setpoint 2000  1 1
          On TH(chip-tool) verify that  DUT sends a success response.  As its an optional attribute, we are not getting expected result
          [1676029365.250210][19420:19422] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676029365.250263][19420:19422] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE)
          [1676029365.250403][19420:19422] CHIP:EM: <<< [E:16230i M:267641165 (Ack:117850882)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
          [1676029365.250467][19420:19422] CHIP:IN: (S) Sending msg 267641165 on secure session with LSID: 45606
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' after success"
              - name: "expectedValue"
                value: "y"

    - 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

    - 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: MinCoolSetpointLimitValue

    #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 && TSTAT.S.A0015 && TSTAT.S.A0016
      response:
          constraints:
              type: int16s
              minValue: MinHeatSetpointLimitValue
              maxValue: MaxHeatSetpointLimitValue

    #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
              minValue: 700
              maxValue: 3000

    - label:
          "Writes a value back that is different but valid for
          UnoccupiedHeatingSetpoint attribute"
      command: "writeAttribute"
      attribute: "UnoccupiedHeatingSetpoint"
      PICS: TSTAT.S.F02 && TSTAT.S.F00
      arguments:
          value: 2500

    - label:
          "Reads it back again to confirm the successful write of
          UnoccupiedHeatingSetpoint attribute"
      command: "readAttribute"
      attribute: "UnoccupiedHeatingSetpoint"
      PICS: TSTAT.S.F02 && TSTAT.S.F00
      response:
          value: 2500

    - label:
          "Writes UnoccupiedHeatingSetpoint to value below the
          MinHeatSetpointLimit"
      command: "writeAttribute"
      attribute: "UnoccupiedHeatingSetpoint"
      PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015
      arguments:
          value: 100
      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 log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          #1. Test Harness Client  attempts to write UnoccupiedHeatingSetpoint below the MinHeatSetpointLimit and confirms that the device does not accept the value

          ./chip-tool thermostat write  unoccupied-heating-setpoint 500 1 1
          On TH(chip-tool) verify that  DUT sends a CONSTRAINT_ERROR (0x87). As its an optional attribute, we are not getting expected result

          [1676029557.268065][19431:19433] CHIP:DMG: }
          [1676029557.268220][19431:19433] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676029557.268290][19431:19433] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE)
          [1676029557.268470][19431:19433] CHIP:EM: <<< [E:8458i M:31631638 (Ack:115187982)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
      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 && TSTAT.S.A0016
      arguments:
          value: MaxHeatSetpointLimitValue + 1000
      response:
          error: CONSTRAINT_ERROR

    - 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

    - 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: MaxHeatSetpointLimitValue

    - 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 log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.


          below mentioned the example command to verify

          ./chip-tool thermostat write unoccupied-heating-setpoint 2000  1 1
          On TH(chip-tool) verify that  DUT sends a success response.  As its an optional attribute, we are not getting expected result

          [1676029629.242182][19437:19439] CHIP:DMG: }
          [1676029629.242250][19437:19439] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676029629.242280][19437:19439] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE)
          [1676029629.242366][19437:19439] CHIP:EM: <<< [E:51650i M:149591010 (Ack:214538556)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
          [1676029629.242402][19437:19439] CHIP:IN: (S) Sending msg 149591010 on secure session with LSID: 6132
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' after success"
              - name: "expectedValue"
                value: "y"

    - 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: 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: MinHeatSetpointLimitValue

    #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 && TSTAT.S.A0016 && TSTAT.S.A0003
      response:
          constraints:
              type: int16s
              minValue: AbsMinHeatSetpointLimitValue
              maxValue: MaxHeatSetpointLimitValue

    #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
              minValue: 700
              maxValue: 3000

    - label:
          "Writes a value back that is different but valid for
          MinHeatSetpointLimit attribute"
      command: "writeAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.F00 && TSTAT.S.A0015
      arguments:
          value: 800

    - label:
          "Reads it back again to confirm the successful write of
          MinHeatSetpointLimit attribute"
      command: "readAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.F00  && TSTAT.S.A0015
      response:
          value: 800

    - label: "Writes a value back that is different but violates the deadband"
      command: "writeAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.A0015 && TSTAT.S.F05
      arguments:
          value: 2000
      response:
          error: CONSTRAINT_ERROR

    - label:
          "Writes MinHeatSetpointLimit to value below the
          AbsMinHeatSetpointLimit "
      command: "writeAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0003
      arguments:
          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: |
          #1. Test Harness Client  attempts to write MinHeatSetpointLimit below the AbsMinHeatSetpointLimit and confirms that the device does not accept the value.
          ./chip-tool thermostat write min-heat-setpoint-limit 300  1 1
          On TH  (chip-tool) verify that  DUT sends a CONSTRAINT_ERROR (0x87)
          [1676029705.839179][19450:19452] CHIP:DMG: }
          [1676029705.839253][19450:19452] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676029705.839287][19450:19452] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
          [1676029705.839411][19450:19452] CHIP:EM: <<< [E:34538i M:185292291 (Ack:127655640)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
          [1676029705.839456][19450:19452] CHIP:IN: (S) Sending msg 185292291 on secure session with LSID: 61694
      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

    - label:
          "Writes MinHeatSetpointLimit to value above the
          AbsMaxHeatSetpointLimit "
      command: "writeAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.F00  && TSTAT.S.A0015 && TSTAT.S.A0016
      arguments:
          value: MaxHeatSetpointLimitValue + 1000
      response:
          error: CONSTRAINT_ERROR

    - 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: MaxHeatSetpointLimitValue

    #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: |
          Test Harness Client then attempts to write MinHeatSetpointLimit to both of the limits of AbsMinHeatSetpointLimit & UpperLimit and confirms that the device does accept the value.
          below is an exaple command.

          ./chip-tool thermostat write min-heat-setpoint-limit 1200  1 1

          On TH(chip-tool) verify that  DUT sends a success response

          [1676029742.329801][19458:19460] CHIP:DMG:                         }
          [1676029742.329846][19458:19460] CHIP:DMG:
          [1676029742.329883][19458:19460] CHIP:DMG:                         StatusIB =
          [1676029742.329922][19458:19460] CHIP:DMG:                         {
          [1676029742.329962][19458:19460] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1676029742.330001][19458:19460] CHIP:DMG:                         },
          [1676029742.330040][19458:19460] 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 AbsMinHeatSetpointLimit to MinHeatSetpointLimit
          attribute"
      command: "writeAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.F00  && TSTAT.S.A0015 && !TSTAT.S.A0003
      arguments:
          value: 700

    - label:
          "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit
          attribute"
      command: "writeAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.F00  && TSTAT.S.A0015 && TSTAT.S.A0003
      arguments:
          value: AbsMinHeatSetpointLimitValue

    #Using saved values when optional attributes are available
    - label:
          "Reads MaxHeatSetpointLimit attribute from Server DUT and verifies
          that the value is within range"
      command: "readAttribute"
      attribute: "MaxHeatSetpointLimit"
      PICS:
          TSTAT.S.F00  && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004 &&
          TSTAT.S.A0016
      response:
          constraints:
              type: int16s
              minValue: MinHeatSetpointLimitValue
              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
              minValue: 700
              maxValue: 3000

    - label:
          "Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit
          attribute"
      command: "writeAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.F00  && TSTAT.S.A0015
      arguments:
          value: 700

    - label:
          "Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit
          attribute"
      command: "writeAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.A0015 && TSTAT.S.F05
      arguments:
          value: 3000
      response:
          error: CONSTRAINT_ERROR

    - label:
          "Writes a value back that is different but valid for
          MaxHeatSetpointLimit attribute"
      command: "writeAttribute"
      attribute: "MaxHeatSetpointLimit"
      PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05
      arguments:
          value: 2900

    - label:
          "Reads it back again to confirm the successful write of
          MaxHeatSetpointLimit attribute"
      command: "readAttribute"
      attribute: "MaxHeatSetpointLimit"
      PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05
      response:
          value: 2900

    - label:
          "Writes MaxHeatSetpointLimit to value below the
          AbsMinHeatSetpointLimit "
      command: "writeAttribute"
      attribute: "MaxHeatSetpointLimit"
      PICS: TSTAT.S.F00  && TSTAT.S.A0016 && !TSTAT.S.A0015
      arguments:
          value: 100
      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 - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          #1. Test Harness Client  attempts to write MaxHeatSetpointLimit below the MinHeatSetpointLimit and confirms that the device does not accept the value.
          ./chip-tool thermostat write  max-heat-setpoint-limit 100 1 1
          On TH(chip-tool) verify that  DUT sends a CONSTRAINT_ERROR (0x87)
          [1676029976.380552][19475:19477] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676029976.380598][19475:19477] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
          [1676029976.380705][19475:19477] CHIP:EM: <<< [E:10254i M:97110781 (Ack:264765613)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
      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 && TSTAT.S.A0004
      arguments:
          value: AbsMaxHeatSetpointLimitValue + 1000
      response:
          error: CONSTRAINT_ERROR

    - 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: 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: |
          Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation

          Test Harness Client then attempts to write MaxHeatSetpointLimit to both of the limits of MinHeatSetpointLimit & UpperLimit and confirms that the device does accept the value.

          below is an examble command

          ./chip-tool thermostat write  max-heat-setpoint-limit 2000( Consider the different value but valid4) 1 1
          On TH(chip-tool) verify that  DUT sends a success response

          [1676030018.852009][19481:19483] CHIP:DMG:                                 Cluster = 0x201,
          [1676030018.852054][19481:19483] CHIP:DMG:                                 Attribute = 0x0000_0016,
          [1676030018.852094][19481:19483] CHIP:DMG:                         }
          [1676030018.852138][19481:19483] CHIP:DMG:
          [1676030018.852178][19481:19483] CHIP:DMG:                         StatusIB =
          [1676030018.852218][19481:19483] CHIP:DMG:                         {
          [1676030018.852258][19481:19483] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1676030018.852297][19481:19483] CHIP:DMG:                         },
          [1676030018.852337][19481:19483] CHIP:DMG:
          [1676030018.852370][19481:19483] 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 MinHeatSetpointLimit to MaxHeatSetpointLimit
          attribute"
      command: "writeAttribute"
      attribute: "MaxHeatSetpointLimit"
      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: MinHeatSetpointLimitValue

    #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 && TSTAT.S.A0018 && TSTAT.S.A0005
      response:
          constraints:
              type: int16s
              minValue: AbsMinCoolSetpointLimitValue
              maxValue: MaxCoolSetpointLimitValue

    #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
              minValue: 1600
              maxValue: 3200

    - label:
          "Writes a value back that is different but valid for
          MinCoolSetpointLimit attribute"
      command: "writeAttribute"
      attribute: "MinCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0017
      arguments:
          value: 2000

    - label:
          "Reads it back again to confirm the successful write of
          MinCoolSetpointLimit attribute"
      command: "readAttribute"
      attribute: "MinCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0017
      response:
          value: 2000

    - label:
          "Writes MinCoolSetpointLimit to value below the
          AbsMinCoolSetpointLimit "
      command: "writeAttribute"
      attribute: "MinCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005
      arguments:
          value: 500
      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 - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          #1. Test Harness Client then attempts to write MinCoolSetpointLimit below the AbsMinCoolSetpointLimit  and confirms that the device does not accept the value.

          ./chip-tool thermostat write min-cool-setpoint-limit 400  1 1

          On TH(chip-tool) verify that  DUT sends a CONSTRAINT_ERROR (0x87)
          [1676030095.274876][19495:19497] CHIP:DMG: }
          [1676030095.274936][19495:19497] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676030095.274965][19495:19497] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
          [1676030095.275097][19495:19497] CHIP:EM: <<< [E:51146i M:60043723 (Ack:28649429)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10
      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 && TSTAT.S.A0018
      arguments:
          value: MaxCoolSetpointLimitValue + 1000
      response:
          error: CONSTRAINT_ERROR

    - 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: MaxCoolSetpointLimitValue

    - label:
          "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit
          attribute"
      command: "writeAttribute"
      attribute: "MinCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005 && !TSTAT.S.F05
      arguments:
          value: 1600

    - label:
          "Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit
          attribute"
      command: "writeAttribute"
      attribute: "MinCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 && !TSTAT.S.F05
      arguments:
          value: AbsMinCoolSetpointLimitValue

    #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: |
          Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          Test Harness Client then attempts to write MinCoolSetpointLimit to both of the limits of LowerLimit & MaxCoolSetpointLimit and confirms that the device does accept the value.

          ./chip-tool thermostat write min-cool-setpoint-limit 1600 1 1

          On TH(chip-tool) verify that  DUT sends a success response

          [1678947233.814534][773656:773658] CHIP:DMG:
          [1678947233.814541][773656:773658] CHIP:DMG:                         StatusIB =
          [1678947233.814548][773656:773658] CHIP:DMG:                         {
          [1678947233.814555][773656:773658] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1678947233.814562][773656:773658] CHIP:DMG:                         },
          [1678947233.814570][773656:773658] CHIP:DMG:
          [1678947233.814576][773656:773658] 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 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
              minValue: MinCoolSetpointLimitValue
              maxValue: AbsMaxCoolSetpointLimitValue

    #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
              minValue: 1600
              maxValue: 3200

    - label:
          "Writes a value back that is different but valid for
          MaxCoolSetpointLimit attribute"
      command: "writeAttribute"
      attribute: "MaxCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05
      arguments:
          value: 2000

    - label:
          "Reads it back again to confirm the successful write of
          MaxCoolSetpointLimit attribute"
      command: "readAttribute"
      attribute: "MaxCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05
      response:
          value: 2000

    - label:
          "Writes MaxCoolSetpointLimit to value below the
          AbsMinCoolSetpointLimit "
      command: "writeAttribute"
      attribute: "MaxCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017
      arguments:
          value: 500
      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 - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          #1. Test Harness Client attempts to write MaxCoolSetpointLimit below the MinCoolSetpointLimit and confirms that the device does not accept the value.

          ./chip-tool thermostat write max-cool-setpoint-limit 100 1 1

          On TH(chip-tool) verify that  DUT sends a CONSTRAINT_ERROR (0x87)
          [1676030395.441963][19525:19527] CHIP:DMG: }
          [1676030395.442028][19525:19527] CHIP:DMG: WriteClient moving to [AwaitingDe]
          [1676030395.442059][19525:19527] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
          [1676030395.442147][19525:19527] CHIP:EM: <<< [E:35527i M:176995637 (Ack:93643096)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
      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 && TSTAT.S.A0006
      arguments:
          value: AbsMaxCoolSetpointLimitValue + 1000
      response:
          error: CONSTRAINT_ERROR

    - 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: AbsMaxCoolSetpointLimitValue

    - 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: 1600

    - 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: 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: MinCoolSetpointLimitValue

    #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 - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.

          Test Harness Client then attempts to write MaxCoolSetpointLimit to both of the limits of LowerLimit & AbsMaxCoolSetpointLimit and confirms that the device does accept the value.
          below is an example command

          ./chip-tool thermostat write max-cool-setpoint-limit 2000 1 1

          On TH verify that  DUT sends a success response

          [1678947558.840324][773890:773892] CHIP:DMG:
          [1678947558.840331][773890:773892] CHIP:DMG:                         StatusIB =
          [1678947558.840339][773890:773892] CHIP:DMG:                         {
          [1678947558.840347][773890:773892] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1678947558.840354][773890:773892] CHIP:DMG:                         },
          [1678947558.840362][773890:773892] CHIP:DMG:
          [1678947558.840369][773890:773892] CHIP:DMG:                 },
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' after success"
              - name: "expectedValue"
                value: "y"

    - label: "Writes (sets back) default value of MinHeatSetpointLimit"
      command: "writeAttribute"
      attribute: "MinHeatSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0015
      arguments:
          value: 700

    - label: "Writes (sets back)default value of MaxHeatSetpointLimit"
      command: "writeAttribute"
      attribute: "MaxHeatSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05
      arguments:
          value: 3000

    - label: "Writes MaxHeatSetpointLimit That meets the deadband of 2.5C"
      command: "writeAttribute"
      attribute: "MaxHeatSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05
      arguments:
          value: 2950

    - label: "Writes (sets back) default value of MinCoolSetpointLimit"
      command: "writeAttribute"
      attribute: "MinCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0017
      arguments:
          value: 1600

    - label: "Writes (sets back) default value of MaxCoolSetpointLimit"
      command: "writeAttribute"
      attribute: "MaxCoolSetpointLimit"
      PICS: TSTAT.S.F01 && TSTAT.S.A0018
      arguments:
          value: 3200

    - label:
          "Reads MinSetpointDeadBand attribute from Server DUT and verifies that
          the value is within range"
      command: "readAttribute"
      attribute: "MinSetpointDeadBand"
      PICS: TSTAT.S.F05
      response:
          constraints:
              type: int8s
              minValue: 0
              maxValue: 25

    - label:
          "Writes a value back that is different but valid for
          MinSetpointDeadBand attribute"
      command: "writeAttribute"
      attribute: "MinSetpointDeadBand"
      PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
      arguments:
          value: 5

    - label:
          "Reads it back again to confirm the successful write of
          MinSetpointDeadBand attribute"
      command: "readAttribute"
      attribute: "MinSetpointDeadBand"
      PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
      response:
          value: 5

    - label: "Writes the value below MinSetpointDeadBand"
      command: "writeAttribute"
      attribute: "MinSetpointDeadBand"
      PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
      arguments:
          value: -1
      response:
          error: CONSTRAINT_ERROR

    - label: "Writes the value above MinSetpointDeadBand "
      command: "writeAttribute"
      attribute: "MinSetpointDeadBand"
      PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
      arguments:
          value: 30
      response:
          error: CONSTRAINT_ERROR

    - label: "Writes the min limit of MinSetpointDeadBand"
      command: "writeAttribute"
      attribute: "MinSetpointDeadBand"
      PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
      arguments:
          value: 0

    - label: "Writes the max limit of MinSetpointDeadBand"
      command: "writeAttribute"
      attribute: "MinSetpointDeadBand"
      PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
      arguments:
          value: 25

    - label:
          "Reads ControlSequenceOfOperation from Server DUT and verifies that
          the value is valid"
      command: "readAttribute"
      attribute: "ControlSequenceOfOperation"
      PICS: TSTAT.S.F00 || TSTAT.S.F01
      response:
          constraints:
              type: enum8
              minValue: 0
              maxValue: 5

    #Uncomment once anyOf is supported
    #- label:
    #      "Reads ControlSequenceOfOperation from Server DUT, if TSTAT.S.F01 is
    #      true"
    #  command: "readAttribute"
    #  attribute: "ControlSequenceOfOperation"
    #  PICS: TSTAT.S.F01 && !TSTAT.S.F00
    #  response:
    #      constraints:
    #          anyOf: [0, 1]

    #- label:
    #      "Reads ControlSequenceOfOperation from Server DUT, if TSTAT.S.F00 is
    #      true"
    #  command: "readAttribute"
    #  attribute: "ControlSequenceOfOperation"
    #  PICS: TSTAT.S.F00 && !TSTAT.S.F01
    #  response:
    #      constraints:
    #          anyOf: [2, 3]

    #- label:
    #      "Reads ControlSequenceOfOperation from Server DUT, if both TSTAT.S.F01
    #      and TSTAT.S.F01 are true"
    #  command: "readAttribute"
    #  attribute: "ControlSequenceOfOperation"
    #  PICS: TSTAT.S.F00 && TSTAT.S.F01
    #  response:
    #      constraints:
    #          anyOf: [4, 5]

    - label:
          "Write Attribute command for ControlSequenceOfOperation with a new
          valid value"
      command: "writeAttribute"
      attribute: "ControlSequenceOfOperation"
      PICS: TSTAT.S.F00 || TSTAT.S.F01
      arguments:
          value: 2

    - label: "Read it back again to confirm the successful write"
      command: "readAttribute"
      attribute: "ControlSequenceOfOperation"
      PICS: TSTAT.S.F00 || TSTAT.S.F01
      response:
          value: 2

    - label:
          "Writes MaxHeatSetpointLimit attribute to default value of 2950 to
          meet deadband constraint"
      command: "writeAttribute"
      attribute: "MaxHeatSetpointLimit"
      PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.F05
      arguments:
          value: 2950

    - label: "Sets OccupiedCoolingSetpoint to default value"
      command: "writeAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      arguments:
          value: 2600

    - label: "Sets OccupiedHeatingSetpoint to default value"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      arguments:
          value: 2000

    - label: "Sends SetpointRaise Command Heat Only"
      PICS: TSTAT.S.F00
      command: "SetpointRaiseLower"
      arguments:
          values:
              - name: "Mode"
                value: 0
              - name: "Amount"
                value: -30

    - label:
          "Reads back OccupiedHeatingSetpoint to confirm the success of the
          write"
      command: "readAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      response:
          value: 1700

    - label: "Sets OccupiedHeatingSetpoint to default value"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      arguments:
          value: 2000

    - label: "Sends SetpointRaise Command Heat Only"
      PICS: TSTAT.S.F00
      command: "SetpointRaiseLower"
      arguments:
          values:
              - name: "Mode"
                value: 0
              - name: "Amount"
                value: 30

    - label:
          "Reads back OccupiedHeatingSetpoint to confirm the success of the
          write"
      command: "readAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      response:
          value: 2300

    - label: "Sends SetpointRaise Command Cool Only"
      PICS: TSTAT.S.F01
      command: "SetpointRaiseLower"
      arguments:
          values:
              - name: "Mode"
                value: 1
              - name: "Amount"
                value: -30

    - label:
          "Reads back OccupiedCoolingSetpoint to confirm the success of the
          write"
      command: "readAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      response:
          value: 2300

    - label: "Sets OccupiedCoolingSetpoint to default value"
      command: "writeAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      arguments:
          value: 2600

    - label: "Sends SetpointRaise Command Cool Only"
      PICS: TSTAT.S.F01
      command: "SetpointRaiseLower"
      arguments:
          values:
              - name: "Mode"
                value: 1
              - name: "Amount"
                value: 30

    - label:
          "Reads back OccupiedCoolingSetpoint to confirm the success of the
          write"
      command: "readAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      response:
          value: 2900

    - label: "Sets OccupiedCoolingSetpoint to default value"
      command: "writeAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      arguments:
          value: 2600

    - label: "Sets OccupiedHeatingSetpoint to default value"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      arguments:
          value: 2000

    - label: "Sends SetpointRaise Command Heat & Cool"
      PICS: TSTAT.S.F00 || TSTAT.S.F01
      command: "SetpointRaiseLower"
      arguments:
          values:
              - name: "Mode"
                value: 2
              - name: "Amount"
                value: -30

    - label:
          "Reads back OccupiedCoolingSetpoint to confirm the success of the
          write"
      command: "readAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      response:
          value: 2300

    - label:
          "Reads back OccupiedHeatingSetpoint to confirm the success of the
          write"
      command: "readAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      response:
          value: 1700

    - label: "Sets OccupiedCoolingSetpoint to default value"
      command: "writeAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      arguments:
          value: 2600

    - label: "Sets OccupiedHeatingSetpoint to default value"
      command: "writeAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      arguments:
          value: 2000

    - label: "Sends SetpointRaise Command Heat & Cool"
      PICS: TSTAT.S.F00 || TSTAT.S.F01
      command: "SetpointRaiseLower"
      arguments:
          values:
              - name: "Mode"
                value: 2
              - name: "Amount"
                value: 30

    - label:
          "Reads back OccupiedCoolingSetpoint to confirm the success of the
          write"
      command: "readAttribute"
      attribute: "OccupiedCoolingSetpoint"
      PICS: TSTAT.S.F01
      response:
          value: 2900

    - label:
          "Reads back OccupiedHeatingSetpoint to confirm the success of the
          write"
      command: "readAttribute"
      attribute: "OccupiedHeatingSetpoint"
      PICS: TSTAT.S.F00
      response:
          value: 2300
