# 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: "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
