# 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)

PICS:
    - LVL.S

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

    #Adding below step resolve the issue https://github.com/CHIP-Specifications/chip-certification-tool/issues/499
    - label:
          "Precondition: write default value of OnOffTransitionTime attribute"
      PICS: LVL.S.A0010
      command: "writeAttribute"
      attribute: "OnOffTransitionTime"
      arguments:
          value: 0

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

    - label: "TH sends On command to DUT"
      cluster: "On/Off"
      PICS: OO.S.C01.Rsp
      command: "On"

    - label:
          "TH sends a MoveToLevel command to DUT, with Level =50 and
          TransitionTime =0 (immediate)"
      PICS: LVL.S.C00.Rsp
      command: "MoveToLevel"
      arguments:
          values:
              - name: "Level"
                value: 50
              - name: "TransitionTime"
                value: 0
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - label: "TH reads CurrentLevel attribute from DUT"
      PICS: LVL.S.A0000 && LVL.S.C00.Rsp
      command: "readAttribute"
      attribute: "CurrentLevel"
      response:
          value: 50

    - label:
          "TH sends a Move command to the DUT, with the MoveMode field set to
          0x00 (move up) and the Rate field set to 0x05 (5 units/s)"
      PICS: LVL.S.C01.Rsp
      command: "Move"
      arguments:
          values:
              - name: "MoveMode"
                value: 0
              - name: "Rate"
                value: 5
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - 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: 0
              - name: "OptionsOverride"
                value: 0

    - 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: "TH reads CurrentLevel attribute from DUT"
      PICS: LVL.S.C01.Rsp && LVL.S.C03.Rsp && LVL.S.A0000
      command: "readAttribute"
      attribute: "CurrentLevel"
      response:
          constraints:
              minValue: 64
              maxValue: 86

    - label:
          "TH sends a Move command to the DUT, with the MoveMode field set to
          0x00 (move up) and the Rate field set to 0x05 (5 units/s)"
      PICS: LVL.S.C01.Rsp
      command: "Move"
      arguments:
          values:
              - name: "MoveMode"
                value: 0
              - name: "Rate"
                value: 5
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

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

    - label: "TH sends a StopWithOnOff command to the DUT"
      PICS: LVL.S.C07.Rsp
      command: "StopWithOnOff"
      arguments:
          values:
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - 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: "CurrentLevel"
      response:
          constraints:
              minValue: 85
              maxValue: 115

    - 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
