# 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

PICS:
    - MEDIAPLAYBACK.S

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

tests:
    - label:
          "Commission DUT to TH (can be skipped if done in a preceding test)."
      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:
          "Step 1: TH sends a Seek command to the DUT with a Position value of
          10000"
      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: "Step 2: TH reads the SampledPosition attribute from the DUT"
      PICS: MEDIAPLAYBACK.S.A0003 && MEDIAPLAYBACK.S.C0b.Rsp
      command: "readAttribute"
      attribute: "SampledPosition"
      response:
          value: { "Position": 10000 }

    - label: "Step 3: TH reads the StartTime attribute from the DUT"
      PICS: MEDIAPLAYBACK.S.A0001
      command: "readAttribute"
      attribute: "StartTime"
      response:
          constraints:
              type: epoch_us

    - label: "Step 4: TH reads the SeekRangeEnd attribute from the DUT"
      PICS: MEDIAPLAYBACK.S.A0005
      command: "readAttribute"
      attribute: "SeekRangeEnd"
      response:
          constraints:
              type: int64u
              minValue: 0
              maxValue: "18446744073709551615"

    - label: "Step 5: TH reads the SeekRangeStart attribute from the DUT"
      PICS: MEDIAPLAYBACK.S.A0006
      command: "readAttribute"
      attribute: "SeekRangeStart"
      response:
          constraints:
              type: int64u
              minValue: 0
              maxValue: "18446744073709551615"

    - label: "Step 6: TH reads the Duration attribute from the DUT"
      PICS: MEDIAPLAYBACK.S.A0002
      command: "readAttribute"
      attribute: "Duration"
      response:
          constraints:
              type: int64u
              notValue: 0
              minValue: 0
              maxValue: "18446744073709551615"

    - label:
          "Step 7: TH sends a Seek command to the DUT with a Position value
          beyond the furthest valid position (ex: beyond the duration of the
          media)"
      PICS: MEDIAPLAYBACK.S.C0b.Rsp
      command: "Seek"
      arguments:
          values:
              - name: "position"
                value: SeekPosition
      response:
          values:
              - name: "Status"
                value: 5

    - label: "verify that the media has not moved."
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0b.Rsp
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' if media has not moved"
              - name: "expectedValue"
                value: "y"
