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

PICS:
    - TMP.S

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

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

    - label: "Read ClusterRevision attribute from the DUT"
      command: "readAttribute"
      attribute: "ClusterRevision"
      response:
          value: 4
          constraints:
              type: int16u

    - label: "Read FeatureMap attribute from the DUT"
      command: "readAttribute"
      attribute: "FeatureMap"
      response:
          value: 0
          constraints:
              type: bitmap32

    - label: "Read the global attribute: AttributeList"
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [0, 1, 2, 65528, 65529, 65531, 65532, 65533]

    - label: "Read the optional attribute(Tolerance) in AttributeList"
      PICS: TMP.S.A0003
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [3]

    - label: "Read AcceptedCommandList attribute from the DUT"
      command: "readAttribute"
      attribute: "AcceptedCommandList"
      response:
          value: []
          constraints:
              type: list

    - label: "Read GeneratedCommandList attribute from the DUT"
      command: "readAttribute"
      attribute: "GeneratedCommandList"
      response:
          value: []
          constraints:
              type: list

    #issue #15011 disabled steps below Global attributes missing from YAML framework
    - label:
          "Read EventList attribute from the DUT and Verify that the DUT
          response provides a list of supported events."
      verification: |
          Not supported in SDK yet
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"
