# 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.4] UpOrOpen Long-Run Verification with server as
    DUT

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

tests:
    - label: "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:
          "1a: TH sends DownOrClose command to preposition the DUT in the
          opposite direction"
      command: "DownOrClose"
      PICS: WNCV.S.C01.Rsp

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

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

    ### DUT move toward its fully-open position
    ### Testers should input the fullMotionDuration parameter that match their DUT behavior
    - label:
          "2b: TH Waits for fullMotionDuration seconds movement(s) on the device"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: fullMotionDuration

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

    ######## UpOrOpen 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:
          "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: 0

    ### Optional Depends on the FeatureMap
    - label:
          "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: 0

    ### Mandatory Depends on the FeatureMap
    - label:
          "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: 0

    ### Optional Depends on the FeatureMap
    - label:
          "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: 0
