# Copyright (c) 2023 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:
    178.2.5. [TC-TCTL-3.3] Optional temperature level functionality with DUT as
    Server

PICS:
    - TCTL.S
    - TCTL.S.F01

config:
    nodeId: 0x12344321
    cluster: "Temperature Control"
    endpoint: 1
    Step_4_setLevel:
        type: int8u
        defaultValue: 1
    Step_7_setLevel:
        type: int8u
        defaultValue: 3

tests:
    - label:
          "Step 1: Commission DUT to TH (can be skipped if done in a preceding
          test)"
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      arguments:
          values:
              - name: "nodeId"
                value: nodeId

    - label:
          "Step 2: Operate device such that a temperature level can be accepted"
      verification: |
          Operate device such that a temperature level can be accepted
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' after success"
              - name: "expectedValue"
                value: "y"

    - label:
          "Step 3: TH reads from the DUT the SupportedTemperatureLevels
          attribute"
      PICS: TCTL.S.A0005
      command: "readAttribute"
      attribute: "SupportedTemperatureLevels"
      response:
          saveAs: supportedLevels
          constraints:
              type: list

    - label:
          "Step 4: TH sends command SetTemperatureCommand with a value from
          supportedLevels saved as setLevel"
      PICS: TCTL.S.C00.Rsp
      command: "SetTemperature"
      arguments:
          values:
              - name: "TargetTemperatureLevel"
                value: Step_4_setLevel

    - label: "Wait for 5s"
      PICS: TCTL.S.C00.Rsp
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 5000

    - label:
          "Step 5: TH reads from the DUT the SelectedTemperatureLevel attribute"
      PICS: TCTL.S.A0004 && TCTL.S.C00.Rsp
      command: "readAttribute"
      attribute: "SelectedTemperatureLevel"
      response:
          value: Step_4_setLevel

    - label:
          "Step 6:Operate device such that a temperature level cannot be
          accepted"
      verification: |
          Operate device such that a temperature level cannot be accepted
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && TCTL.S.M.SupportsInvalidInState
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' after success"
              - name: "expectedValue"
                value: "y"

    - label:
          "Step 7: TH sends command SetTemperatureCommand with an invalid value"
      PICS: TCTL.S.C00.Rsp && TCTL.S.M.SupportsInvalidInState
      command: "SetTemperature"
      arguments:
          values:
              - name: "TargetTemperatureLevel"
                value: Step_7_setLevel
      response:
          error: CONSTRAINT_ERROR

    - label: "Wait for 5s"
      PICS: TCTL.S.C00.Rsp && TCTL.S.M.SupportsInvalidInState
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 5000

    - label:
          "Step 8: TH reads from the DUT the SelectedTemperatureLevel attribute"
      PICS: TCTL.S.A0004 && TCTL.S.M.SupportsInvalidInState
      command: "readAttribute"
      attribute: "SelectedTemperatureLevel"
      response:
          value: Step_4_setLevel
