# 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.4.1. [TC-LVL-4.1] Move 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

    - 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

    #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 reads the MaxLevel attribute from the DUT"
      PICS: LVL.S.A0003
      command: "readAttribute"
      attribute: "MaxLevel"
      response:
          constraints:
              type: int8u
              minValue: 0
              maxValue: 254

    - label: "TH sends Off command to DUT"
      cluster: "On/Off"
      PICS: OO.S.C00.Rsp && LVL.S.C05.Rsp
      command: "Off"

    - label:
          "TH sends a MoveWithOnOff command to DUT, with MoveMode =0x00 (up) and
          Rate =10 (units/s)"
      PICS: LVL.S.C05.Rsp
      command: "MoveWithOnOff"
      arguments:
          values:
              - name: "MoveMode"
                value: 0
              - name: "Rate"
                value: 10
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - label: "TH reads OnOff attribute (On/Off cluster) from DUT"
      cluster: "On/Off"
      PICS: OO.S.A0000 && LVL.S.C05.Rsp
      command: "readAttribute"
      attribute: "OnOff"
      response:
          value: 1

    - label: "TH reads CurrentLevel attribute from DUT"
      PICS: LVL.S.C05.Rsp && LVL.S.A0000
      command: "readAttribute"
      attribute: "CurrentLevel"
      response:
          saveAs: CurrentLevelValue
          constraints:
              type: int8u

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

    - label: "TH reads CurrentLevel attribute from DUT"
      PICS: LVL.S.C05.Rsp && LVL.S.A0000
      command: "readAttribute"
      attribute: "CurrentLevel"
      response:
          constraints:
              minValue: 0
              maxValue: 254

    - 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.C00.Rsp && LVL.S.A0000
      command: "readAttribute"
      attribute: "CurrentLevel"
      response:
          value: 50

    - label:
          "TH sends a Move command to the DUT with MoveMode =0x00 (up) and Rate
          =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 10s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "TH reads CurrentLevel attribute from DUT"
      PICS: LVL.S.C01.Rsp && LVL.S.A0000
      command: "readAttribute"
      attribute: "CurrentLevel"
      response:
          constraints:
              minValue: 85
              maxValue: 115

    - label: "Wait 10s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "TH reads CurrentLevel attribute from DUT"
      PICS: LVL.S.C01.Rsp && LVL.S.A0000
      command: "readAttribute"
      attribute: "CurrentLevel"
      response:
          constraints:
              minValue: 127
              maxValue: 173

    - label: "Wait 10s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "TH reads CurrentLevel attribute from DUT"
      PICS: LVL.S.C01.Rsp && LVL.S.A0000
      command: "readAttribute"
      attribute: "CurrentLevel"
      response:
          constraints:
              minValue: 170
              maxValue: 230

    - label: "Wait 19s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 19000

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

    - 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
