# 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.8. [TC-WNCV-7.1] GoToPercentage Commands Verification [DUT as Client]

PICS:
    - WNCV.C

config:
    nodeId: 0x12344321
    cluster: "Basic"
    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: "Check GoToLiftPercentage command 50%"
      verification: |

      disabled: true

    - label: "DUT sends GoToLiftPercentage command with 50% to TH"
      PICS: WNCV.C.C05.Tx
      verification: |
          ./chip-tool windowcovering go-to-lift-percentage 5000 1 1

          Verify the "DUT responds with right request response"

          [1659945446.669477][2742:2742] CHIP:DMG: InvokeRequestMessage =
          [1659945446.669520][2742:2742] CHIP:DMG: {
          [1659945446.669555][2742:2742] CHIP:DMG:         suppressResponse = false,
          [1659945446.669599][2742:2742] CHIP:DMG:         timedRequest = false,
          [1659945446.669639][2742:2742] CHIP:DMG:         InvokeRequests =
          [1659945446.669688][2742:2742] CHIP:DMG:         [
          [1659945446.669729][2742:2742] CHIP:DMG:                 CommandDataIB =
          [1659945446.669773][2742:2742] CHIP:DMG:                 {
          [1659945446.669815][2742:2742] CHIP:DMG:                         CommandPathIB =
          [1659945446.669866][2742:2742] CHIP:DMG:                         {
          [1659945446.669919][2742:2742] CHIP:DMG:                                 EndpointId = 0x1,
          [1659945446.669975][2742:2742] CHIP:DMG:                                 ClusterId = 0x102,
          [1659945446.670033][2742:2742] CHIP:DMG:                                 CommandId = 0x5,
          [1659945446.670084][2742:2742] CHIP:DMG:                         },
          [1659945446.670137][2742:2742] CHIP:DMG:
          [1659945446.670191][2742:2742] CHIP:DMG:                         CommandFields =
          [1659945446.670247][2742:2742] CHIP:DMG:                         {
          [1659945446.670302][2742:2742] CHIP:DMG:                                 0x0 = 5000,
          [1659945446.670361][2742:2742] CHIP:DMG:                         },
          [1659945446.670409][2742:2742] CHIP:DMG:                 },
          [1659945446.670460][2742:2742] CHIP:DMG:
          [1659945446.670499][2742:2742] CHIP:DMG:         ],
          [1659945446.670548][2742:2742] CHIP:DMG:
          [1659945446.670587][2742:2742] CHIP:DMG:         InteractionModelRevision = 1
          [1659945446.670626][2742:2742] CHIP:DMG: },
      disabled: true

    - label: "Check GoToTiltPercentage command 50%"
      verification: |

      disabled: true

    - label: "DUT sends GoToTiltPercentage command with 50% to TH"
      PICS: WNCV.C.C08.Tx
      verification: |
          ./chip-tool windowcovering go-to-tilt-percentage 5000 1 1


          Verify the "DUT responds with right  request response"

          [1659945481.649337][2742:2742] CHIP:DMG: InvokeRequestMessage =
          [1659945481.649367][2742:2742] CHIP:DMG: {
          [1659945481.649393][2742:2742] CHIP:DMG:         suppressResponse = false,
          [1659945481.649424][2742:2742] CHIP:DMG:         timedRequest = false,
          [1659945481.649452][2742:2742] CHIP:DMG:         InvokeRequests =
          [1659945481.649487][2742:2742] CHIP:DMG:         [
          [1659945481.649515][2742:2742] CHIP:DMG:                 CommandDataIB =
          [1659945481.649551][2742:2742] CHIP:DMG:                 {
          [1659945481.649582][2742:2742] CHIP:DMG:                         CommandPathIB =
          [1659945481.649622][2742:2742] CHIP:DMG:                         {
          [1659945481.649660][2742:2742] CHIP:DMG:                                 EndpointId = 0x1,
          [1659945481.649702][2742:2742] CHIP:DMG:                                 ClusterId = 0x102,
          [1659945481.649743][2742:2742] CHIP:DMG:                                 CommandId = 0x8,
          [1659945481.649778][2742:2742] CHIP:DMG:                         },
          [1659945481.649819][2742:2742] CHIP:DMG:
          [1659945481.649856][2742:2742] CHIP:DMG:                         CommandFields =
          [1659945481.649892][2742:2742] CHIP:DMG:                         {
          [1659945481.649929][2742:2742] CHIP:DMG:                                 0x0 = 5000,
          [1659945481.649970][2742:2742] CHIP:DMG:                         },
          [1659945481.650002][2742:2742] CHIP:DMG:                 },
          [1659945481.650037][2742:2742] CHIP:DMG:
          [1659945481.650065][2742:2742] CHIP:DMG:         ],
          [1659945481.650099][2742:2742] CHIP:DMG:
          [1659945481.650126][2742:2742] CHIP:DMG:         InteractionModelRevision = 1
          [1659945481.650153][2742:2742] CHIP:DMG: },
      disabled: true
