# 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.4.6. [TC-WNCV-5.1] Mandatory Attributes Verification [DUT as Client]

PICS:
    - WNCV.C

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

tests:
    - label: "Check Attribute defining the cluster Features"
      verification: |
          verification step to be updated.
      disabled: true

    - label: "DUT reads the (65532) _FeatureMap_ attribute from T"
      PICS: WNCV.C.Afffc
      verification: |
          On TestHarnes (all-cluster-app) a received read of feature-map looks like this:

          ./chip-tool windowcovering read feature-map 1 1

          Verify in TH all-clusters-app log data type is map32

          [1657103226.784391][4633:4638] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0102 Attribute 0x0000_FFFC DataVersion: 383647307
          [1657103226.784460][4633:4638] CHIP:TOO:   FeatureMap: 23
      disabled: true

    - label: "Check Attribute defining the product"
      verification: |
          verification step to be updated.
      disabled: true

    - label: "DUT reads the Type attribute from TH"
      PICS: WNCV.C.A0000
      verification: |
          On TestHarnes (all-cluster-app) a received read of type looks like this:

          ./chip-tool windowcovering read type 1 1

          Verify in TH all-clusters-app log  data type is enum8

          [1657103199.191382][4627:4632] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0102 Attribute 0x0000_0000 DataVersion: 383647307
          [1657103199.191447][4627:4632] CHIP:TOO:   Type: 8
      disabled: true

    - label: "DUT reads the EndProductType attribute from TH"
      PICS: WNCV.C.A000d
      verification: |
          On TestHarnes (all-cluster-app) a received read of end-product-type looks like this:

          ./chip-tool windowcovering read end-product-type 1 1

          Verify in TH all-clusters-app log  data type is enum8

          [1657103251.203086][4641:4646] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0102 Attribute 0x0000_000D DataVersion: 383647307
          [1657103251.203153][4641:4646] CHIP:TOO:   EndProductType: 0
      disabled: true

    - label: "Check Attribute defining the working status"
      verification: |
          verification step to be updated.
      disabled: true

    - label: "DUT reads the Mode attribute from TH"
      PICS: WNCV.C.A0017
      verification: |
          On TestHarnes (all-cluster-app) a received read of mode looks like this:

          ./chip-tool windowcovering read mode 1 1

          Verify in TH all-clusters-app log  data type is map8

          [1657103273.905725][4647:4652] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0102 Attribute 0x0000_0017 DataVersion: 383647307
          [1657103273.905816][4647:4652] CHIP:TOO:   Mode: 0
      disabled: true

    - label: "DUT reads the ConfigStatus attribute from TH"
      PICS: WNCV.C.A0007
      verification: |
          On TestHarnes (all-cluster-app) a received read of config-status looks like this:

          ./chip-tool windowcovering read config-status 1 1

          Verify in TH all-clusters-app log  data type is map8

          [1657103295.608407][4654:4659] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0102 Attribute 0x0000_0007 DataVersion: 383647307
          [1657103295.608521][4654:4659] CHIP:TOO:   ConfigStatus: 27
      disabled: true
