# 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.1. [TC-LTIME-1.1] Global Attributes [DUT as Client]

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

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

    - label: "{DUTread} (0xFFFD) ClusterRevision attribute"
      PICS: LTIME.C.Afffd
      verification: |
          ./chip-tool timeformatlocalization read  cluster-revision 1 0
          Verify in DUT as client side:  verify that TH 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: "{DUTread} (0xFFFC) FeatureMap attribute"
      PICS: LTIME.C.Afffc
      verification: |
          ./chip-tool timeformatlocalization read feature-map 1 0

          Verify in DUT as client side:  verify that TH sends  FeatureMap attribute value as 1

          [1653379129.497852][7509:7514] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002C Attribute 0x0000_FFFC DataVersion: 724978222
          [1653379129.497936][7509:7514] CHIP:TOO:   FeatureMap: 0
      disabled: true

    - label: "{DUTread} (0xFFFB) AttributeList attribute"
      PICS: LTIME.C.Afffb
      verification: |
          ./chip-tool timeformatlocalization read attribute-list 1 0
          Verify in DUT as client side: verify that TH  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: "{DUTread} (0xFFFA) EventList attribute"
      PICS: LTIME.C.Afffa
      verification: |
          Out of scope for V1.0
      disabled: true

    - label: "{DUTread} (0xFFF9) AcceptedCommandList attribute"
      PICS: LTIME.C.Afff9
      verification: |
          ./chip-tool timeformatlocalization read accepted-command-list 1 0
          Verify in DUT as client side: verify that TH  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: "{DUTread} (0xFFF8) GeneratedCommandList attribute"
      PICS: LTIME.C.Afff8
      verification: |
          ./chip-tool timeformatlocalization read generated-command-list 1 0
          Verify in DUT as client side:  verify that TH 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
