# 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.9.2. [TC-AUDIOOUTPUT-7.2] Rename Output Verification

PICS:
    - AUDIOOUTPUT.S

config:
    nodeId: 0x12344321
    cluster: "Audio Output"
    endpoint: 1

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

    - label: "Reads the OutputList attribute from the DUT"
      PICS: AUDIOOUTPUT.S.A0000
      command: "readAttribute"
      attribute: "OutputList"
      response:
          saveAs: audioOutputListValues
          constraints:
              type: list

    - label: "Sends a RenameOutput command"
      PICS: AUDIOOUTPUT.S.C01.Rsp
      command: "RenameOutput"
      arguments:
          values:
              - name: "Index"
                value: 1
              - name: "name"
                value: "CertTest"

    #Disabled due to issue- #13029
    - label:
          "Reads the OutputList attribute from the DUT Verify that the output at
          the index provided in step 2 has the name CertTest"
      verification: |
          ./chip-tool audiooutput read output-list 1 1
          [1651061821.366426][156898:156903] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_050B Attribute 0x0000_0000 DataVersion: 372822880
          [1651061821.366510][156898:156903] CHIP:TOO:   OutputList: 3 entries
          [1651061821.366575][156898:156903] CHIP:TOO:     [1]: {
          [1651061821.366603][156898:156903] CHIP:TOO:       Index: 1
          [1651061821.366619][156898:156903] CHIP:TOO:       OutputType: 0
          [1651061821.366635][156898:156903] CHIP:TOO:       Name: CertTest
          [1651061821.366651][156898:156903] CHIP:TOO:      }
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && AUDIOOUTPUT.S.A0001 && AUDIOOUTPUT.S.C01.Rsp
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"
