# 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: 68.3.1. [TC-BOOL-3.1] Attributes with Client as DUT

PICS:
    - BOOL.C
    - BOOL.C.AM-READ
    - BOOL.C.AO-READ
    - BOOL.C.AM-WRITE
    - BOOL.C.AO-WRITE

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

tests:
    - label:
          "DUT reads all supported mandatory attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          ./chip-tool booleanstate read state-value 1 1

          Verify read command is received in DUT as client side log

          [1658847009.838448][28392:28392] CHIP:IM: Received Read request
          [1658847009.838537][28392:28392] CHIP:DMG: ReadRequestMessage =
          [1658847009.838570][28392:28392] CHIP:DMG: {
          [1658847009.838598][28392:28392] CHIP:DMG:         AttributePathIBs =
          [1658847009.838630][28392:28392] CHIP:DMG:         [
          [1658847009.838660][28392:28392] CHIP:DMG:                 AttributePathIB =
          [1658847009.838694][28392:28392] CHIP:DMG:                 {
          [1658847009.838728][28392:28392] CHIP:DMG:                         Endpoint = 0x1,
          [1658847009.838766][28392:28392] CHIP:DMG:                         Cluster = 0x45,
          [1658847009.838806][28392:28392] CHIP:DMG:                         Attribute = 0x0000_0000,
          [1658847009.838843][28392:28392] CHIP:DMG:                 }
          [1658847009.838878][28392:28392] CHIP:DMG:
          [1658847009.838909][28392:28392] CHIP:DMG:         ],
          [1658847009.838943][28392:28392] CHIP:DMG:
          [1658847009.838975][28392:28392] CHIP:DMG:         isFabricFiltered = true,
          [1658847009.839006][28392:28392] CHIP:DMG:         InteractionModelRevision = 1
          [1658847009.839034][28392:28392] CHIP:DMG: },
          [1658847009.839120][28392:28392] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658847009.839332][28392:28392] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1658847009.839386][28392:28392] CHIP:DMG: <RE:Run> Cluster 45, Attribute 0 is dirty
          [1658847009.839426][28392:28392] CHIP:DMG: Reading attribute: Cluster=0x0000_0045 Endpoint=1 AttributeId=0x0000_0000 (expanded=0)
          [1658847009.839474][28392:28392] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0045 e=1 p=v
          [1658847009.839528][28392:28392] CHIP:DMG: AccessControl: allowed
      disabled: true

    - label:
          "DUT reads all supported optional attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          This cluster doesn"t have any  optional attribute
      disabled: true

    - label:
          "DUT writes a suitable value to all supported mandatory attributes on
          the TH one at a time in a manufacturer specific order"
      verification: |
          This cluster doesn"t have any writable attributes
      disabled: true

    - label:
          "DUT writes a suitable value to all supported optional attributes on
          the TH one at a time in a manufacturer specific order"
      verification: |
          This cluster doesn"t have any writable attributes
      disabled: true

    - label:
          "Configure TH such that it implements mandatory and none of the
          optional attributes of the server-side of the cluster, and that it
          also reflects this in global attributes such as FeatureMap and
          AttributeList. Commission DUT to TH again"
      verification: |
          ./chip-tool booleanstate read attribute-list 1 1

          Verify none of the optional attributes of the server-side of the cluster is listed  in DUT as client side log
          [1654244313219] [91456:3997555] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0045 Attribute 0x0000_FFFB DataVersion: 2739318439
          [1654244313220] [91456:3997555] CHIP: [TOO]   AttributeList: 6 entries
          [1654244313220] [91456:3997555] CHIP: [TOO]     [1]: 0
          [1654244313220] [91456:3997555] CHIP: [TOO]     [2]: 65528
          [1654244313220] [91456:3997555] CHIP: [TOO]     [3]: 65529
          [1654244313220] [91456:3997555] CHIP: [TOO]     [4]: 65531
          [1654244313220] [91456:3997555] CHIP: [TOO]     [5]: 65532
          [1654244313220] [91456:3997555] CHIP: [TOO]     [6]: 65533

           ./chip-tool booleanstate read state-value 1 1

          Verify read command is received in DUT as client side log

          [1658847009.838448][28392:28392] CHIP:IM: Received Read request
          [1658847009.838537][28392:28392] CHIP:DMG: ReadRequestMessage =
          [1658847009.838570][28392:28392] CHIP:DMG: {
          [1658847009.838598][28392:28392] CHIP:DMG:         AttributePathIBs =
          [1658847009.838630][28392:28392] CHIP:DMG:         [
          [1658847009.838660][28392:28392] CHIP:DMG:                 AttributePathIB =
          [1658847009.838694][28392:28392] CHIP:DMG:                 {
          [1658847009.838728][28392:28392] CHIP:DMG:                         Endpoint = 0x1,
          [1658847009.838766][28392:28392] CHIP:DMG:                         Cluster = 0x45,
          [1658847009.838806][28392:28392] CHIP:DMG:                         Attribute = 0x0000_0000,
          [1658847009.838843][28392:28392] CHIP:DMG:                 }
          [1658847009.838878][28392:28392] CHIP:DMG:
          [1658847009.838909][28392:28392] CHIP:DMG:         ],
          [1658847009.838943][28392:28392] CHIP:DMG:
          [1658847009.838975][28392:28392] CHIP:DMG:         isFabricFiltered = true,
          [1658847009.839006][28392:28392] CHIP:DMG:         InteractionModelRevision = 1
          [1658847009.839034][28392:28392] CHIP:DMG: },
          [1658847009.839120][28392:28392] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658847009.839332][28392:28392] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1658847009.839386][28392:28392] CHIP:DMG: <RE:Run> Cluster 45, Attribute 0 is dirty
          [1658847009.839426][28392:28392] CHIP:DMG: Reading attribute: Cluster=0x0000_0045 Endpoint=1 AttributeId=0x0000_0000 (expanded=0)
          [1658847009.839474][28392:28392] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0045 e=1 p=v
          [1658847009.839528][28392:28392] CHIP:DMG: AccessControl: allowed
      disabled: true

    - label:
          "DUT reads all supported optional attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          This cluster doesn"t have any  optional attribute
      disabled: true

    - label:
          "DUT writes a suitable value to all supported optional attributes on
          the TH one at a time in a manufacturer specific order"
      verification: |
          This cluster doesn"t have any  optional attribute
      disabled: true
