# 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]

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

tests:
    - label: "DUT reads DeviceTypeList from TH."
      PICS: DESC.C.A0000
      verification: |
          ./chip-tool descriptor read device-list 1 0

          verify TH(On a reference app) receives the right Read Request Message for the data sent in the above command

          Verify in DUT as client side:

          [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 TH(On a reference app) receives the right Read Request Message for the data sent in the above command

          Verify in DUT as client side:


          [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 TH(On a reference app) receives the right Read Request Message for the data sent in the above command

          Verify in DUT as client side:


          [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 TH(On a reference app) receives the right Read Request Message for the data sent in the above command

          Verify in DUT as client side:


          [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
