# Copyright (c) 2023 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: 178.1.1. [TC-TCTL-1.1] Global attributes with DUT as Server

PICS:
    - TCTL.S

config:
    nodeId: 0x12344321
    cluster: "Temperature Control"
    endpoint: 1

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

    - label: "Step 2: TH reads from the DUT the ClusterRevision attribute"
      command: "readAttribute"
      attribute: "ClusterRevision"
      response:
          value: 1
          constraints:
              type: int16u

    - label: "Step 3a: TH reads from the DUT the FeatureMap attribute"
      command: "readAttribute"
      attribute: "FeatureMap"
      PICS: "!TCTL.S.F00 && !TCTL.S.F01 && !TCTL.S.F02"
      response:
          value: 0
          constraints:
              type: bitmap32

    - label:
          "Step 3b: TH reads from the DUT the FeatureMap attribute. bit 0: SHALL
          be 1 if and only if TCTL.S.F00(TN) & !TCTL.S.F01(TL)"
      command: "readAttribute"
      attribute: "FeatureMap"
      PICS: TCTL.S.F00 && !TCTL.S.F01
      response:
          constraints:
              type: bitmap32
              hasMasksSet: [0x1]

    - label:
          "Step 3c: TH reads from the DUT the FeatureMap attribute. bit 1: SHALL
          be 1 if and only if TCTL.S.F01(TL) & !TCTL.S.F00(TN)"
      command: "readAttribute"
      attribute: "FeatureMap"
      PICS: TCTL.S.F01 && !TCTL.S.F00
      response:
          constraints:
              type: bitmap32
              hasMasksSet: [0x2]

    - label:
          "Step 3d: TH reads from the DUT the FeatureMap attribute. bit 2: SHALL
          be 1 if and only if TCTL.S.F02(A_STEP) & TCTL.S.F00(TN)"
      command: "readAttribute"
      attribute: "FeatureMap"
      PICS: TCTL.S.F02 && TCTL.S.F00
      response:
          constraints:
              type: bitmap32
              hasMasksSet: [0x4]

    - label: "Step 4a: TH reads from the DUT the AttributeList attribute."
      PICS: PICS_EVENT_LIST_ENABLED
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [65528, 65529, 65530, 65531, 65532, 65533]

    - label: "Step 4a: TH reads from the DUT the AttributeList attribute."
      PICS: "!PICS_EVENT_LIST_ENABLED"
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [65528, 65529, 65531, 65532, 65533]

    - label:
          "Step 4b: TH reads from the DUT the AttributeList attribute. 0x0000,
          0x0001, 0x0002: SHALL be included if and only if TCTL.S.F00(TN)"
      PICS: TCTL.S.F00
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [0, 1, 2]

    - label:
          "Step 4c: TH reads from the DUT the AttributeList attribute. 0x0003:
          SHALL be included if and only if TCTL.S.F02(A_STEP)"
      PICS: TCTL.S.F02
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [3]

    - label:
          "Step 4d: TH reads from the DUT the AttributeList attribute. 0x0004 &
          0x0005: SHALL be included if and only if TCTL.S.F01(TL)"
      PICS: TCTL.S.F01
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [4, 5]

    - label: "Step 5: TH reads from the DUT the AcceptedCommandList attribute."
      command: "readAttribute"
      attribute: "AcceptedCommandList"
      response:
          constraints:
              type: list
              contains: [0]

    - label: "Step 6: TH reads from the DUT the GeneratedCommandList attribute."
      command: "readAttribute"
      attribute: "GeneratedCommandList"
      response:
          value: []
          constraints:
              type: list

    - label: "Step 7: TH reads from the DUT the EventList attribute."
      PICS: PICS_EVENT_LIST_ENABLED
      command: "readAttribute"
      attribute: "EventList"
      response:
          value: []
          constraints:
              type: list
