# 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, 65530, 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

    #Manufacturer specific event IDs check not possible
    - label:
          "Read EventList attribute from the DUT.For this cluster the list is
          usually empty but it can contain manufacturer specific event IDs."
      verification: |
          ./chip-tool temperaturemeasurement read event-list 1 1
          On TH(chip-tool), Verify that the DUT response provides a list of supported events. For this cluster the list is usually empty but it can contain manufacturer specific event IDs.
          [1676466045.154072][28094:28096] CHIP:DMG: }
          [1676466045.154196][28094:28096] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0402 Attribute 0x0000_FFFA DataVersion: 3399649825
          [1676466045.154248][28094:28096] CHIP:TOO:   EventList: 0 entries
          [1676466045.154309][28094:28096] CHIP:EM: <<< [E:12674i S:5317 M:190747810 (Ack:263910212)] (S) Msg TX to 1:0000000000000001 [110F] --- Type 0000:10 (SecureChannel:StandaloneAck)
          [1676466045.154323][28094:28096] CHIP:IN: (S) Sending msg 190747810 on secure session with LSID: 5317
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"
