# 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.
# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default

name: 123.1.1. [TC-S-1.1] Global attributes with server as DUT

PICS:
    - S.S

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

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: "Read ClusterRevision (global attribute 65533)"
      command: "readAttribute"
      attribute: "ClusterRevision"
      response:
          value: 5
          constraints:
              type: int16u

    - label: "Read FeatureMap (global attribute 65532)"
      PICS: (!S.S.F00)
      command: "readAttribute"
      attribute: "FeatureMap"
      response:
          value: 0
          constraints:
              type: bitmap32

    - label: "Read FeatureMap (global attribute 65532)"
      PICS: S.S.F00
      command: "readAttribute"
      attribute: "FeatureMap"
      response:
          value: 1
          constraints:
              type: bitmap32

    - label: "Read AttributeList (global attribute 65531)"
      PICS: S.S.A0005
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains:
                  [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      65528,
                      65529,
                      65530,
                      65531,
                      65532,
                      65533,
                  ]

    - label: "Read AttributeList (global attribute 65531)"
      PICS: (!S.S.A0005)
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains:
                  [
                      0,
                      1,
                      2,
                      3,
                      4,
                      6,
                      7,
                      65528,
                      65529,
                      65530,
                      65531,
                      65532,
                      65533,
                  ]

    - label: "Read EventList (global attribute 65530)"
      command: "readAttribute"
      attribute: "EventList"
      response:
          constraints:
              type: list
              contains: []

    - label: "Read AcceptedCommandList (global attribute 65529)"
      PICS: S.S.C40.Rsp
      command: "readAttribute"
      attribute: "AcceptedCommandList"
      response:
          constraints:
              type: list
              contains: [0, 1, 2, 3, 4, 5, 6, 40, 41, 42]

    - label: "Read AcceptedCommandList (global attribute 65529)"
      PICS: (!S.S.C40.Rsp)
      command: "readAttribute"
      attribute: "AcceptedCommandList"
      response:
          constraints:
              type: list
              contains: [0, 1, 2, 3, 4, 5, 6]

    - label: "Read GeneratedCommandList (global attribute 65528)"
      PICS: S.C.C40.Tx
      command: "readAttribute"
      attribute: "AcceptedCommandList"
      response:
          constraints:
              type: list
              contains: [0, 1, 2, 3, 4, 5, 6, 40, 41, 42]

    - label: "Read GeneratedCommandList (global attribute 65528)"
      PICS: (!S.C.C40.Tx)
      command: "readAttribute"
      attribute: "AcceptedCommandList"
      response:
          constraints:
              type: list
              contains: [0, 1, 2, 3, 4, 5, 6]

    - label: "Read GeneratedCommandList (global attribute 65528)"
      command: "readAttribute"
      attribute: "GeneratedCommandList"
      response:
          constraints:
              type: list
              contains: [0, 1, 2, 3, 4, 5, 6]

    - label:
          "Read optional command(EnhancedAddSceneResponse) in
          GeneratedCommandList (global attribute 65528)"
      PICS: S.S.C40.Rsp
      command: "readAttribute"
      attribute: "GeneratedCommandList"
      response:
          constraints:
              type: list
              contains: [40]

    - label:
          "Read optional command(EnhancedViewSceneResponse) in
          GeneratedCommandList (global attribute 65528)"
      PICS: S.S.C41.Rsp
      command: "readAttribute"
      attribute: "GeneratedCommandList"
      response:
          constraints:
              type: list
              contains: [41]

    - label:
          "Read optional command(CopySceneResponse) in GeneratedCommandList
          (global attribute 65528)"
      PICS: S.S.C42.Rsp
      command: "readAttribute"
      attribute: "GeneratedCommandList"
      response:
          constraints:
              type: list
              contains: [42]
