# 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.2. [TC-MEDIAPLAYBACK-6.2] Optional Media Playback Verification

config:
    nodeId: 0x12344321
    cluster: "Media Playback"
    endpoint: 1

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: "Reads the CurrentState attribute from the DUT"
      PICS: MEDIAPLAYBACK.S.A0000 && MEDIAPLAYBACK.S.C01.Rsp
      command: "readAttribute"
      attribute: "CurrentState"
      response:
          value: 1

    - label: "Sends a Play command to the DUT"
      PICS: MEDIAPLAYBACK.S.C00.Rsp
      command: "Play"
      response:
          values:
              - name: "status"
                value: 0

    - label: "Verify that the media state is playing"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C00.Rsp
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' if media state is playing"
              - name: "expectedValue"
                value: "y"

    - label: "Reads the CurrentState attribute"
      PICS: MEDIAPLAYBACK.S.A0000 && MEDIAPLAYBACK.S.C00.Rsp
      command: "readAttribute"
      attribute: "CurrentState"
      response:
          value: 0

    - label: "Sends a StartOver command to the DUT"
      PICS: MEDIAPLAYBACK.S.C03.Rsp
      command: "StartOver"
      response:
          values:
              - name: "status"
                value: 0

    - label: "Verify that the media is started over"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C03.Rsp
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' if media is started over"
              - name: "expectedValue"
                value: "y"

    - label: "Sends a Next command to the DUT"
      PICS: MEDIAPLAYBACK.S.C05.Rsp
      command: "Next"
      response:
          values:
              - name: "status"
                value: 0

    - label: "Verify that the next media item in the queue has been loaded"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C05.Rsp
      arguments:
          values:
              - name: "message"
                value:
                    "Please enter 'y' if media item in the queue has been loaded"
              - name: "expectedValue"
                value: "y"

    - label: "Sends a Previous command to the DUT"
      PICS: MEDIAPLAYBACK.S.C04.Rsp
      command: "Previous"
      response:
          values:
              - name: "status"
                value: 0

    - label: "Verify that the previous media item in the queue has been loaded"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C04.Rsp
      arguments:
          values:
              - name: "message"
                value:
                    "Please enter 'y' if previous media item in the queue has
                    been loaded"
              - name: "expectedValue"
                value: "y"

    - label: "Sends a SkipForward command to the DUT "
      PICS: MEDIAPLAYBACK.S.C08.Rsp
      command: "SkipForward"
      arguments:
          values:
              - name: "DeltaPositionMilliseconds"
                value: 10000
      response:
          values:
              - name: "status"
                value: 0

    - label: "Verify that the media has skipped forward 10 seconds"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C08.Rsp
      arguments:
          values:
              - name: "message"
                value:
                    "Please enter 'y' if media has skipped forward 10 seconds"
              - name: "expectedValue"
                value: "y"

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

    - label: "Sends a SkipBackward command to the DUT "
      PICS: MEDIAPLAYBACK.S.C09.Rsp
      command: "SkipBackward"
      arguments:
          values:
              - name: "DeltaPositionMilliseconds"
                value: 10000
      response:
          values:
              - name: "status"
                value: 0

    - label: "Verify that the media has skipped backward 10 seconds"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C09.Rsp
      arguments:
          values:
              - name: "message"
                value:
                    "Please enter 'y' if media has skipped backward 10 seconds"
              - name: "expectedValue"
                value: "y"

    - label: "Reads the SampledPosition attribute from the DUT"
      PICS: MEDIAPLAYBACK.S.A0003 && MEDIAPLAYBACK.S.C09.Rsp
      command: "readAttribute"
      attribute: "SampledPosition"
      response:
          value: 0
