# 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.
# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default

name: 3.4.7. [TC-WNCV-6.1] Basic Commands Verification [DUT as Client]

PICS:
    - WNCV.C

config:
    nodeId: 0x12344321
    cluster: "Basic Information"
    endpoint: 0

tests:
    - label: "Note"
      verification: |
          For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command.
      disabled: true

    - label: "Precondition"
      verification: |
          TH must support at least one of these (0xFFFC) FeatureMap attribute’s flag WNCV.S.F00(LF) and/or WNCV.S.F01(TL)
      disabled: true

    - label: "Check UpOrOpen command"
      verification: |

      disabled: true

    - label: "DUT sends UpOrOpen command to TH"
      PICS: WNCV.C.C00.Tx
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool windowcovering up-or-open 1 1

          Verify the " DUT responds with request response" on TH(all-clusters-app):

          1659945239.794637][2742:2742] CHIP:DMG: InvokeRequestMessage =
          [1659945239.794680][2742:2742] CHIP:DMG: {
          [1659945239.794718][2742:2742] CHIP:DMG:         suppressResponse = false,
          [1659945239.794762][2742:2742] CHIP:DMG:         timedRequest = false,
          [1659945239.794801][2742:2742] CHIP:DMG:         InvokeRequests =
          [1659945239.794851][2742:2742] CHIP:DMG:         [
          [1659945239.794891][2742:2742] CHIP:DMG:                 CommandDataIB =
          [1659945239.794936][2742:2742] CHIP:DMG:                 {
          [1659945239.794997][2742:2742] CHIP:DMG:                         CommandPathIB =
          [1659945239.795055][2742:2742] CHIP:DMG:                         {
          [1659945239.795112][2742:2742] CHIP:DMG:                                 EndpointId = 0x1,
          [1659945239.795177][2742:2742] CHIP:DMG:                                 ClusterId = 0x102,
          [1659945239.795239][2742:2742] CHIP:DMG:                                 CommandId = 0x0,
          [1659945239.795297][2742:2742] CHIP:DMG:                         },
          [1659945239.795353][2742:2742] CHIP:DMG:
          [1659945239.795403][2742:2742] CHIP:DMG:                         CommandFields =
          [1659945239.795451][2742:2742] CHIP:DMG:                         {
          [1659945239.795500][2742:2742] CHIP:DMG:                         },
          [1659945239.795547][2742:2742] CHIP:DMG:                 },
          [1659945239.795594][2742:2742] CHIP:DMG:
      disabled: true

    - label: "Check DownOrClose command"
      verification: |

      disabled: true

    - label: "DUT sends DownOrClose command to TH"
      PICS: WNCV.C.C01.Tx
      verification: |
          ./chip-tool windowcovering down-or-close 1 1



          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          [1659945343.976313][2742:2742] CHIP:DMG: InvokeRequestMessage =
          [1659945343.976344][2742:2742] CHIP:DMG: {
          [1659945343.976367][2742:2742] CHIP:DMG:         suppressResponse = false,
          [1659945343.976399][2742:2742] CHIP:DMG:         timedRequest = false,
          [1659945343.976424][2742:2742] CHIP:DMG:         InvokeRequests =
          [1659945343.976454][2742:2742] CHIP:DMG:         [
          [1659945343.976479][2742:2742] CHIP:DMG:                 CommandDataIB =
          [1659945343.976510][2742:2742] CHIP:DMG:                 {
          [1659945343.976539][2742:2742] CHIP:DMG:                         CommandPathIB =
          [1659945343.976571][2742:2742] CHIP:DMG:                         {
          [1659945343.976605][2742:2742] CHIP:DMG:                                 EndpointId = 0x1,
          [1659945343.976639][2742:2742] CHIP:DMG:                                 ClusterId = 0x102,
          [1659945343.976672][2742:2742] CHIP:DMG:                                 CommandId = 0x1,
          [1659945343.976701][2742:2742] CHIP:DMG:                         },
          [1659945343.976734][2742:2742] CHIP:DMG:
          [1659945343.976764][2742:2742] CHIP:DMG:                         CommandFields =
          [1659945343.976792][2742:2742] CHIP:DMG:                         {
          [1659945343.976823][2742:2742] CHIP:DMG:                         },
          [1659945343.976852][2742:2742] CHIP:DMG:                 },
          [1659945343.976882][2742:2742] CHIP:DMG:
          [1659945343.976906][2742:2742] CHIP:DMG:         ],
          [1659945343.976936][2742:2742] CHIP:DMG:
          [1659945343.976960][2742:2742] CHIP:DMG:         InteractionModelRevision = 1
          [1659945343.976984][2742:2742] CHIP:DMG: },
      disabled: true

    - label: "Check StopMotion command"
      verification: |

      disabled: true

    - label: "DUT sends a StopMotion command to TH"
      PICS: WNCV.C.C02.Tx
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool windowcovering stop-motion 1 1


          Verify the " DUT responds with request response" on TH(all-clusters-app):

          [1661859427.618059][2477:2477] CHIP:DMG: InvokeRequestMessage =
          [1661859427.618086][2477:2477] CHIP:DMG: {
          [1661859427.618112][2477:2477] CHIP:DMG:         suppressResponse = false,
          [1661859427.618140][2477:2477] CHIP:DMG:         timedRequest = false,
          [1661859427.618165][2477:2477] CHIP:DMG:         InvokeRequests =
          [1661859427.618196][2477:2477] CHIP:DMG:         [
          [1661859427.618221][2477:2477] CHIP:DMG:                 CommandDataIB =
          [1661859427.618252][2477:2477] CHIP:DMG:                 {
          [1661859427.618279][2477:2477] CHIP:DMG:                         CommandPathIB =
          [1661859427.618312][2477:2477] CHIP:DMG:                         {
          [1661859427.618347][2477:2477] CHIP:DMG:                                 EndpointId = 0x1,
          [1661859427.618383][2477:2477] CHIP:DMG:                                 ClusterId = 0x102,
          [1661859427.618420][2477:2477] CHIP:DMG:                                 CommandId = 0x2,
          [1661859427.618452][2477:2477] CHIP:DMG:                         },
          [1661859427.618487][2477:2477] CHIP:DMG:
          [1661859427.618516][2477:2477] CHIP:DMG:                         CommandFields =
          [1661859427.618551][2477:2477] CHIP:DMG:                         {
          [1661859427.618583][2477:2477] CHIP:DMG:                         },
          [1661859427.618613][2477:2477] CHIP:DMG:                 },
          [1661859427.618645][2477:2477] CHIP:DMG:
          [1661859427.618670][2477:2477] CHIP:DMG:         ],
          [1661859427.618700][2477:2477] CHIP:DMG:
          [1661859427.618724][2477:2477] CHIP:DMG:         InteractionModelRevision = 1
          [1661859427.618747][2477:2477] CHIP:DMG: },
          [1661859427.618814][2477:2477] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0102 e=1 p=o
          [1661859427.618853][2477:2477] CHIP:DMG: AccessControl: allowed
          [1661859427.618882][2477:2477] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0102 Command=0x0000_0002
          [1661859427.618914][2477:2477] CHIP:ZCL: StopMotion command received
          [1661859427.618961][2477:2477] CHIP:DMG: Endpoint 1, Cluster 0x0000_0102 update version to f31db

          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          TH receives the DownOrClose command and knows this attribute for this cluster and provides a plausable value, DUT processes the values and operates normally
      disabled: true
