# 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: 3.2.3. [TC-BRBINFO-2.3] Attributes [DUT-Client]

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

tests:
    - label: "DUT reads VendorName from the TH"
      PICS: BRBINFO.C.A0001
      verification: |
          ./chip-tool bridgeddevicebasic read vendor-name  1 3


          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads VendorID from the TH"
      PICS: BRBINFO.C.A0002
      verification: |
          ./chip-tool bridgeddevicebasic read vendor-id  1 3


          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads ProductName from the TH"
      PICS: BRBINFO.C.A0003
      verification: |
          ./chip-tool bridgeddevicebasic read product-name  1 3


          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads NodeLabel from the TH"
      PICS: BRBINFO.C.A0005
      verification: |
          Optional Attribute -

          ./chip-tool bridgeddevicebasic read node-label 1 3

          Verify Node-label is read sucessfully in DUT as client side log

          [1657696463.081741][15476:15481] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 2577979325
          [1657696463.081791][15476:15481] CHIP:TOO:   NodeLabel: Light 1
      disabled: true

    - label: "DUT reads Location from the TH"
      PICS: BRBINFO.C.A0006
      verification: |
          ./chip-tool bridgeddevicebasic read location 1 3


          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads HardwareVersion from the TH"
      PICS: BRBINFO.C.A0007
      verification: |
          ./chip-tool bridgeddevicebasic read hardware-version  1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads HardwareVersionString from the TH"
      PICS: BRBINFO.C.A0008
      verification: |
          ./chip-tool bridgeddevicebasic read hardware-version-string  1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads SoftwareVersion from the TH"
      PICS: BRBINFO.C.A0009
      verification: |
          ./chip-tool bridgeddevicebasic read software-version 1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads SoftwareVersionString from the TH"
      PICS: BRBINFO.C.A000a
      verification: |
          ./chip-tool bridgeddevicebasic read software-version-string  1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads ManufacturingDate from the TH"
      PICS: BRBINFO.C.A000b
      verification: |
          ./chip-tool bridgeddevicebasic read manufacturing-date  1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads PartNumber from the TH"
      PICS: BRBINFO.C.A000c
      verification: |
          ./chip-tool bridgeddevicebasic read part-number  1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads ProductURL from the TH"
      PICS: BRBINFO.C.A000d
      verification: |
          ./chip-tool bridgeddevicebasic read product-url  1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads ProductLabel from the TH"
      PICS: BRBINFO.C.A000e
      verification: |
          ./chip-tool bridgeddevicebasic read product-label  1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads SerialNumber from the TH"
      PICS: BRBINFO.C.A000f
      verification: |
          ./chip-tool bridgeddevicebasic read serial-number  1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true

    - label: "DUT reads Reachable from the TH"
      PICS: BRBINFO.C.A0011
      verification: |
          ./chip-tool bridgeddevicebasic read reachable 1 3

          Verify in reachable attribute is read successfully in DUT as client side log

          [1657696571.056869][15499:15504] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0011 DataVersion: 2577979325
          [1657696571.056932][15499:15504] CHIP:TOO:   Reachable: TRUE
      disabled: true

    - label: "DUT reads UniqueID from the TH"
      PICS: BRBINFO.C.A0012
      verification: |
          ./chip-tool bridgeddevicebasic read unique-id 1 3



          Note: The attribute is optional so no example log can be provided.
      disabled: true
