# 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.4. [TC-OCC-2.4] OccupancySensorTypeBitmap and OccupancySensorType
    interdependency with client    as DUT

PICS:
    - OCC.S

config:
    nodeId: 0x12344321
    cluster: "Occupancy Sensing"
    endpoint: 1

tests:
    - label: "Note"
      verification: |
          For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command.
      disabled: true

    - label: "Commission DUT to TH"
      verification: |

      disabled: true

    - label: "DUT reads OccupancySensorType attribute from TH"
      PICS: OCC.C.A0001
      verification: |
          ./chip-tool occupancysensing read occupancy-sensor-type 1 1

          verify the " occupancy-sensor-type response" on the TH (all-cluster-app) log:

          [1657906852.014556][2361:2361] CHIP:IM: Received Read request
          [1657906852.014724][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906852.014775][2361:2361] CHIP:DMG: {
          [1657906852.014817][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906852.014865][2361:2361] CHIP:DMG:        [
          [1657906852.014910][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906852.014965][2361:2361] CHIP:DMG:                {
          [1657906852.015017][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906852.015075][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906852.015134][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0001,
          [1657906852.015189][2361:2361] CHIP:DMG:                }
          [1657906852.015241][2361:2361] CHIP:DMG:
          [1657906852.015290][2361:2361] CHIP:DMG:        ],
          [1657906852.015336][2361:2361] CHIP:DMG:
          [1657906852.015385][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906852.015431][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906852.015474][2361:2361] CHIP:DMG: },
      disabled: true

    - label: "DUT reads OccupancySensorTypeBitmap attribute from TH"
      PICS: OCC.C.A0002
      verification: |
          ./chip-tool occupancysensing read occupancy-sensor-type-bitmap 1 1

          verify the " occupancy-sensor-type-bitmap response" on the TH (all-cluster-app) log:

          [1657906867.937264][2361:2361] CHIP:IM: Received Read request
          [1657906867.937390][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906867.937440][2361:2361] CHIP:DMG: {
          [1657906867.937498][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906867.937546][2361:2361] CHIP:DMG:        [
          [1657906867.937591][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906867.937663][2361:2361] CHIP:DMG:                {
          [1657906867.937715][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906867.937771][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906867.937853][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0002,
          [1657906867.937915][2361:2361] CHIP:DMG:                }
          [1657906867.937986][2361:2361] CHIP:DMG:
          [1657906867.938034][2361:2361] CHIP:DMG:        ],
          [1657906867.938085][2361:2361] CHIP:DMG:
          [1657906867.938148][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906867.938187][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906867.938213][2361:2361] CHIP:DMG: },
      disabled: true
