# 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:
    Window Covering [TC-WNCV-3.5] DownOrClose command Long-Run Verification [DUT
    as Server]

PICS:
    - WNCV.S
    - WNCV.S.F02 | WNCV.S.F04

config:
    nodeId: 0x12344321
    cluster: "Window Covering"
    endpoint: 1
    fastMotionDuration:
        type: int16u
        defaultValue: 5000
    fullMotionDuration:
        type: int16u
        defaultValue: 6000

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

    ################ Position Init Phase #############
    ### Step 1x -> Initialize the Covering position before any testing
    ### MANDATORY Init Commands
    - label: "Step 1a: TH sends UpOrOpen command to DUT"
      command: "UpOrOpen"
      PICS: WNCV.S.C00.Rsp

    ### DUT adjusts to a non-closed position
    ### Testers should input the fastMotionDuration parameter that match their DUT behavior
    - label: "Step 1b: TH waits for 5-15 seconds movement(s) on the DUT"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: fastMotionDuration

    ######## DownOrClose Long-Run Command #######
    ### Step 2x -> Check DownOrClose Long-Run effects
    ### MANDATORY Command
    - label: "Step 2a: TH sends DownOrClose command to DUT"
      command: "DownOrClose"
      PICS: WNCV.S.C01.Rsp

    ### DUT move toward its fully-closed position
    ### Testers should input the fullMotionDuration parameter that match their DUT behavior
    - label: "Step 2b: TH waits for PIXIT.WNCV.FULLMOTION on the DUT"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: fullMotionDuration

    - label: "Step 2c: TH checks OperationalStatus attribute from DUT"
      command: "readAttribute"
      attribute: "OperationalStatus"
      PICS: WNCV.S.A000a
      response:
          value: 0

    ######## DownOrClose Long-Run: Category only for Position Aware DUT #######
    ### Step 3x -> Verify the DUT has reached its fully-open limits
    ### Mandatory Depends on the FeatureMap
    - label:
          "Step 3a: If (PA & LF) TH reads CurrentPositionLiftPercent100ths
          attribute from DUT"
      command: "readAttribute"
      attribute: "CurrentPositionLiftPercent100ths"
      PICS: WNCV.S.F00 && WNCV.S.F02 && WNCV.S.A000e
      response:
          value: 10000

    ### Optional Depends on the FeatureMap
    - label:
          "Step 3b: If (PA & LF) TH reads CurrentPositionLiftPercentage optional
          attribute from DUT"
      command: "readAttribute"
      attribute: "CurrentPositionLiftPercentage"
      PICS: WNCV.S.F00 && WNCV.S.F02 && WNCV.S.A0008
      response:
          value: 100

    ### Mandatory Depends on the FeatureMap
    - label:
          "Step 3c: If (PA & TL) TH reads CurrentPositionTiltPercent100ths
          attribute from DUT"
      command: "readAttribute"
      attribute: "CurrentPositionTiltPercent100ths"
      PICS: WNCV.S.F01 && WNCV.S.F04 && WNCV.S.A000f
      response:
          value: 10000

    ### Optional Depends on the FeatureMap
    - label:
          "Step 3d: If (PA & TL) TH reads CurrentPositionTiltPercentage optional
          attribute from DUT"
      command: "readAttribute"
      attribute: "CurrentPositionTiltPercentage"
      PICS: WNCV.S.F01 && WNCV.S.F04 && WNCV.S.A0009
      response:
          value: 100
