# 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: 84.2.2. [TC-DESC-2.2] Descriptor Cluster Attributes [DUT-Client]

PICS:
    - DESC.C

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

tests:
    - label: "Note"
      verification: |
          Chip-tool command used below are an example to verify the  DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command.
      disabled: true

    - label: "DUT reads DeviceTypeList from TH."
      PICS: DESC.C.A0000
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool descriptor read device-list 1 0

          verify the " device-list response" on the TH (all-cluster-app) log:

          [1657095358.858070][3443:3448] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2880250959
          [1657095358.858130][3443:3448] CHIP:TOO:   device list: 1 entries
          [1657095358.858213][3443:3448] CHIP:TOO:     [1]: {
          [1657095358.858255][3443:3448] CHIP:TOO:       Type: 22
          [1657095358.858283][3443:3448] CHIP:TOO:       Revision: 1
          [1657095358.858310][3443:3448] CHIP:TOO:      }
      disabled: true

    - label: "DUT reads ServerList from the TH"
      PICS: DESC.C.A0001
      verification: |
          ./chip-tool descriptor read server-list 1 0

          verify the " server-list response" on the TH (all-cluster-app) log:

          [1657095388.496869][3451:3456] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 2880250959
          [1657095388.496964][3451:3456] CHIP:TOO:   server list: 26 entries
          [1657095388.496996][3451:3456] CHIP:TOO:     [1]: 3
          [1657095388.497023][3451:3456] CHIP:TOO:     [2]: 4
          [1657095388.497049][3451:3456] CHIP:TOO:     [3]: 29
          [1657095388.497074][3451:3456] CHIP:TOO:     [4]: 30
          [1657095388.497098][3451:3456] CHIP:TOO:     [5]: 31
          [1657095388.497123][3451:3456] CHIP:TOO:     [6]: 40
          [1657095388.497147][3451:3456] CHIP:TOO:     [7]: 42
          [1657095388.497172][3451:3456] CHIP:TOO:     [8]: 43
          [1657095388.497197][3451:3456] CHIP:TOO:     [9]: 44
          [1657095388.497221][3451:3456] CHIP:TOO:     [10]: 45
          [1657095388.497246][3451:3456] CHIP:TOO:     [11]: 46
          [1657095388.497271][3451:3456] CHIP:TOO:     [12]: 47
          [1657095388.497295][3451:3456] CHIP:TOO:     [13]: 48
          [1657095388.497320][3451:3456] CHIP:TOO:     [14]: 49
          [1657095388.497344][3451:3456] CHIP:TOO:     [15]: 50
          [1657095388.497369][3451:3456] CHIP:TOO:     [16]: 51
          [1657095388.497394][3451:3456] CHIP:TOO:     [17]: 52
          [1657095388.497418][3451:3456] CHIP:TOO:     [18]: 53
          [1657095388.497443][3451:3456] CHIP:TOO:     [19]: 54
          [1657095388.497468][3451:3456] CHIP:TOO:     [20]: 55
          [1657095388.497493][3451:3456] CHIP:TOO:     [21]: 60
          [1657095388.497517][3451:3456] CHIP:TOO:     [22]: 62
          [1657095388.497542][3451:3456] CHIP:TOO:     [23]: 63
          [1657095388.497567][3451:3456] CHIP:TOO:     [24]: 64
          [1657095388.497591][3451:3456] CHIP:TOO:     [25]: 65
          [1657095388.497616][3451:3456] CHIP:TOO:     [26]: 1029
      disabled: true

    - label: "DUT reads ClientList from the TH"
      PICS: DESC.C.A0002
      verification: |
          ./chip-tool descriptor read client-list 1 0

          verify the " client-list response" on the TH (all-cluster-app) log:

          [1657095415.492647][3459:3464] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 2880250959
          [1657095415.492717][3459:3464] CHIP:TOO:   client list: 1 entries
          [1657095415.492749][3459:3464] CHIP:TOO:     [1]: 41
      disabled: true

    - label: "DUT reads PartsList from the TH"
      PICS: DESC.C.A0003
      verification: |
          ./chip-tool descriptor read  parts-list 1 0

          verify the " parts-list response" on the TH (all-cluster-app) log:

          [1657095439.967554][3470:3475] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 2880250959
          [1657095439.967633][3470:3475] CHIP:TOO:   parts list: 2 entries
          [1657095439.967668][3470:3475] CHIP:TOO:     [1]: 1
          [1657095439.967697][3470:3475] CHIP:TOO:     [2]: 2
      disabled: true
