# 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: 24.6.1. [TC-LVL-6.1] Stop Verification (DUT as Server)

config:
    nodeId: 0x12344321
    cluster: "Level Control"
    endpoint: 1

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

    - label: "Precondition Send On Command"
      cluster: "On/Off"
      PICS: OO.S.C01.Rsp
      command: "On"

    - label: "Check on/off attribute value is true after on command"
      cluster: "On/Off"
      PICS: OO.S.A0000
      command: "readAttribute"
      attribute: "OnOff"
      response:
          value: 1

    - label: "TH writes 0 to the Options attribute"
      PICS: LVL.S.A000f
      command: "writeAttribute"
      attribute: "Options"
      arguments:
          value: 0

    - label: "Reads Minlevel attribute from DUT"
      PICS: LVL.S.A0002
      command: "readAttribute"
      attribute: "min level"
      response:
          saveAs: MinlevelValue
          constraints:
              type: int8u
              minValue: 0
              maxValue: 255

    - label: "Sends MoveToLevelWithOnOff command to DUT"
      PICS: LVL.S.C04.Rsp
      command: "MoveToLevelWithOnOff"
      arguments:
          values:
              - name: "level"
                value: 1
              - name: "transitionTime"
                value: 0
              - name: "optionsMask"
                value: 1
              - name: "optionsOverride"
                value: 1

    - label: "Reads CurrentLevel attribute from DUT"
      PICS: LVL.S.A0000 && LVL.S.C04.Rsp
      command: "readAttribute"
      attribute: "current level"
      response:
          saveAs: CurrentLevelValue
          constraints:
              minValue: 0
              maxValue: 255

    - label: "Sends a move up command to DUT"
      PICS: LVL.S.C01.Rsp
      command: "Move"
      arguments:
          values:
              - name: "moveMode"
                value: 0
              - name: "rate"
                value: 5
              - name: "optionsMask"
                value: 1
              - name: "optionsOverride"
                value: 1

    - label: "Wait 5000ms"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 5000

    - label: "Sends stop command to DUT"
      PICS: LVL.S.C03.Rsp
      command: "Stop"
      arguments:
          values:
              - name: "optionsMask"
                value: 1
              - name: "optionsOverride"
                value: 1

    - label: "Physically verify that the device has stopped transitioning"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && LVL.S.C03.Rsp
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label: "Reads CurrentLevel attribute from DUT"
      PICS: LVL.S.C01.Rsp && LVL.S.C03.Rsp && LVL.S.A0000
      command: "readAttribute"
      attribute: "current level"
      response:
          constraints:
              minValue: 21
              maxValue: 29
              notValue: CurrentLevelValue

    - label: "Sends a move up command to DUT"
      PICS: LVL.S.C01.Rsp
      command: "Move"
      arguments:
          values:
              - name: "moveMode"
                value: 0
              - name: "rate"
                value: 5
              - name: "optionsMask"
                value: 1
              - name: "optionsOverride"
                value: 1

    - label: "Wait 5000ms"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 5000

    - label: "Sends StopWithOnOff command to DUT"
      PICS: LVL.S.C07.Rsp
      command: "StopWithOnOff"
      arguments:
          values:
              - name: "optionsMask"
                value: 1
              - name: "optionsOverride"
                value: 1

    - label: "Physically verify that the device has stopped transitioning"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && LVL.S.C07.Rsp
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label: "Reads CurrentLevel attribute from DUT"
      PICS: LVL.S.C01.Rsp && LVL.S.C07.Rsp && LVL.S.A0000
      command: "readAttribute"
      attribute: "current level"
      response:
          constraints:
              minValue: 43
              maxValue: 57
              notValue: CurrentLevelValue

    - label: "Precondition send Off Command"
      cluster: "On/Off"
      PICS: OO.S.C00.Rsp
      command: "Off"

    - label: "Check on/off attribute value is false after off command"
      cluster: "On/Off"
      PICS: OO.S.A0000
      command: "readAttribute"
      attribute: "OnOff"
      response:
          value: 0
