# 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: 4.1.2. [TC-LTIME-1.2] Global Attributes [DUT as Server]

PICS:
    - LTIME.S

config:
    nodeId: 0x12344321
    cluster: "Basic"
    endpoint: 0

tests:
    - label: "Commission TH to DUT"
      verification: |
          verification step to be updated.
      disabled: true

    - label: "{THread} (0xFFFD) ClusterRevision attribute"
      PICS: LTIME.S.Afffd
      verification: |
          ./chip-tool timeformatlocalization read  cluster-revision 1 0
          On TH(chip-tool), verify that DUT sends ClusterRevision attribute value as 1

          [1651185991606] [10988:109915] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_002C Attribute 0x0000_FFFD DataVersion: 3316530441
          [1651185991606] [10988:109915] CHIP: [TOO]   ClusterRevision: 1
      disabled: true

    - label: "{THread} (0xFFFC) FeatureMap attribute"
      PICS: LTIME.S.Afffc
      verification: |
          Out of scope for V1.0

          https://github.com/project-chip/connectedhomeip/issues/18989
      disabled: true

    - label: "{THread} (0xFFFB) AttributeList attribute"
      PICS: LTIME.S.Afffb
      verification: |
          ./chip-tool timeformatlocalization read attribute-list 1 0


          On TH(chip-tool), verify that DUT  sends a list of supported attributes

          [1653999139.214139][7477:7482] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002C Attribute 0x0000_FFFB DataVersion: 3201720795
          [1653999139.214208][7477:7482] CHIP:TOO:   AttributeList: 8 entries
          [1653999139.214241][7477:7482] CHIP:TOO:     [1]: 0
          [1653999139.214267][7477:7482] CHIP:TOO:     [2]: 1
          [1653999139.214293][7477:7482] CHIP:TOO:     [3]: 2
          [1653999139.214320][7477:7482] CHIP:TOO:     [4]: 65528
          [1653999139.214345][7477:7482] CHIP:TOO:     [5]: 65529
          [1653999139.214371][7477:7482] CHIP:TOO:     [6]: 65531
          [1653999139.214397][7477:7482] CHIP:TOO:     [7]: 65532
          [1653999139.214422][7477:7482] CHIP:TOO:     [8]: 65533
          [1653999139.214522][7477:7482] CHIP:EM: Sending Standalone Ack for MessageCounter:5643805 on exchange 4737i
      disabled: true

    - label: "{THread} (0xFFFA) EventList attribute"
      PICS: LTIME.S.Afffa
      verification: |
          Out of scope for V1.0
      disabled: true

    - label: "{THread} (0xFFF9) AcceptedCommandList attribute"
      PICS: LTIME.S.Afff9
      verification: |
          ./chip-tool timeformatlocalization read accepted-command-list 1 0

          On TH(chip-tool), verify that DUT  responsds as list of Accepted Command as 0 entries.

          [1651186189564] [11076:112595] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_002C Attribute 0x0000_FFF9 DataVersion: 3316530441
          [1651186189564] [11076:112595] CHIP: [TOO]   AcceptedCommandList: 0 entries
      disabled: true

    - label: "{THread} (0xFFF8) GeneratedCommandList attribute"
      PICS: LTIME.S.Afff8
      verification: |
          ./chip-tool timeformatlocalization read generated-command-list 1 0


          On TH(chip-tool), verify that DUT  responsds as list of GeneratedCommandList as 0 entries.

          [1651191789962] [13591:180646] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_002C Attribute 0x0000_FFF8 DataVersion: 3316530441
          [1651191789963] [13591:180646] CHIP: [TOO]   GeneratedCommandList: 0 entries
      disabled: true
