# 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: 9.1.1. [TC-RH-1.1] Global attributes with server as DUT

PICS:
    - RH.S

config:
    nodeId: 0x12344321
    cluster: "Relative Humidity Measurement"
    endpoint: 1

tests:
    - label:
          "Step 1: Commission DUT to TH (can be skipped if done in a preceding
          test)."
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      arguments:
          values:
              - name: "nodeId"
                value: nodeId

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

    - label: "Step 3: TH reads the FeatureMap attribute from the DUT."
      command: "readAttribute"
      attribute: "FeatureMap"
      response:
          value: 0
          constraints:
              type: bitmap32

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

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

    - label:
          "Step 4b: TH reads the optional attribute(Tolerance) in AttributeList"
      command: "readAttribute"
      attribute: "AttributeList"
      PICS: RH.S.A0003
      response:
          constraints:
              type: list
              contains: [3]

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

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

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