# 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: Channel Cluster Tests

config:
    nodeId: 0x12344321
    cluster: "Channel"
    endpoint: 1

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

    - label: "Read attribute Channel list"
      command: "readAttribute"
      attribute: "ChannelList"
      response:
          value:
              [
                  {
                      majorNumber: 6,
                      minorNumber: 0,
                      name: "ABC",
                      callSign: "KAAL-TV",
                      affiliateCallSign: "KAAL",
                  },
                  {
                      majorNumber: 9,
                      minorNumber: 1,
                      name: "PBS",
                      callSign: "KCTS-TV",
                      affiliateCallSign: "KCTS",
                  },
                  {
                      majorNumber: 9,
                      minorNumber: 2,
                      name: "PBS Kids",
                      callSign: "KCTS-TV",
                      affiliateCallSign: "KCTS",
                  },
                  {
                      majorNumber: 9,
                      minorNumber: 3,
                      name: "World Channel",
                      callSign: "KCTS-TV",
                      affiliateCallSign: "KCTS",
                  },
              ]

    - label: "Read attribute channel lineup"
      command: "readAttribute"
      attribute: "Lineup"
      response:
          value:
              {
                  operatorName: "Comcast",
                  lineupName: "Comcast King County",
                  postalCode: "98052",
                  lineupInfoType: 0,
              }

    - label: "Read attribute current channel"
      command: "readAttribute"
      attribute: "CurrentChannel"
      response:
          value:
              {
                  majorNumber: 6,
                  minorNumber: 0,
                  name: "ABC",
                  callSign: "KAAL-TV",
                  affiliateCallSign: "KAAL",
              }

    - label: "Change Channel Command"
      command: "changeChannel"
      arguments:
          values:
              - name: "match"
                value: "PBS"
      response:
          values:
              - name: "data"
                value: "data response"
              - name: "status"
                value: 0

    - label: "Change Channel By Number Command"
      command: "changeChannelByNumber"
      arguments:
          values:
              - name: "majorNumber"
                value: 6
              - name: "minorNumber"
                value: 0

    - label: "Skip Channel Command"
      command: "skipChannel"
      arguments:
          values:
              - name: "count"
                value: 1
