# 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: 19.8.3. [TC-MEDIAPLAYBACK-6.3] Advanced Seek Media Playback Verification

config:
    nodeId: 0x12344321
    cluster: "Media Playback"
    endpoint: 1
    SeekPosition:
        type: int64u
        defaultValue: 100000000

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

    - label:
          "Precondition: Media content in a paused state at the beginning of the
          content"
      command: "Pause"
      PICS: MEDIAPLAYBACK.S.C01.Rsp
      response:
          values:
              - name: "status"
                value: 0

    - label: "Sends a Seek command"
      PICS: MEDIAPLAYBACK.S.C0B.Rsp
      command: "Seek"
      arguments:
          values:
              - name: "Position"
                value: 10000
      response:
          values:
              - name: "status"
                value: 0

    - label:
          "Verify that the media has moved to 10 seconds from the starting point"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0B.Rsp
      arguments:
          values:
              - name: "message"
                value:
                    "Please enter 'y' if media has moved to 10 seconds from the
                    starting point"
              - name: "expectedValue"
                value: "y"

    - label: "Reads the SampledPosition attribute"
      PICS: MEDIAPLAYBACK.S.A0003 && MEDIAPLAYBACK.S.C0B.Rsp
      command: "readAttribute"
      attribute: "SampledPosition"
      response:
          value: 10000

    #Issue 10988
    - label: "TH reads the StartTime attribute from the DUT"
      PICS: MEDIAPLAYBACK.S.A0001 && PICS_USER_PROMPT
      verification: |
          ./chip-tool mediaplayback read start-time 1 1
          [1654001778189] [97015:7707437] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0506 Attribute 0x0000_0001 DataVersion: 775839144
          [1654001778190] [97015:7707437] CHIP: [TOO]   StartTime: 0
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    #Issue 10988
    - label: "TH reads the SeekRangeEnd attribute from the DUT"
      verification: |
          ./chip-tool mediaplayback read seek-range-end 1 1
          [1654002119527] [97409:7712444] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0506 Attribute 0x0000_0005 DataVersion: 775839144
          [1654002119527] [97409:7712444] CHIP: [TOO]   SeekRangeEnd: 80000
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.A0005
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    #Issue 10988
    - label: "TH reads the SeekRangeStart attribute from the DUT"
      verification: |
          ./chip-tool mediaplayback read seek-range-start 1 1
          [1654751320.161753][2491:2496] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0506 Attribute 0x0000_0006 DataVersion: 1615951406
          [1654751320.161846][2491:2496] CHIP:TOO:   SeekRangeStart: 10000
          [1654751320.161941][2491:2496] CHIP:EM: Sending Standalone Ack for MessageCounter:120565821 on exchange 1929
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.A0006
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    #Issue 10988
    - label: "TH reads the Duration attribute from the DUT"
      verification: |
          ./chip-tool mediaplayback read duration 1 1
          [1654001869267] [97168:7708957] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0506 Attribute 0x0000_0002 DataVersion: 775839144
          [1654001869267] [97168:7708957] CHIP: [TOO]   Duration: 80000
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.A0002
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "Sends a Seek command Position value beyond the furthest valid
          position"
      PICS: MEDIAPLAYBACK.S.C0B.Rsp
      command: "Seek"
      arguments:
          values:
              - name: "position"
                value: SeekPosition
      response:
          values:
              - name: "status"
                value: 5
