# 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.2. [TC-OCC-2.2] Attributes with client as DUT

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

tests:
    - label: "Commission DUT to TH"
      verification: |
          verification step to be updated.
      disabled: true

    - label: "DUT reads from the TH the (0x0000) Occupancy attribute"
      PICS: OCC.C.A0000
      verification: |
          ./chip-tool occupancysensing read occupancy 1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906563.293939][2361:2361] CHIP:IM: Received Read request
          [1657906563.294045][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906563.294085][2361:2361] CHIP:DMG: {
          [1657906563.294118][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906563.294157][2361:2361] CHIP:DMG:        [
          [1657906563.294192][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906563.294235][2361:2361] CHIP:DMG:                {
          [1657906563.294280][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906563.294319][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906563.294375][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0000,
          [1657906563.294415][2361:2361] CHIP:DMG:                }
          [1657906563.294456][2361:2361] CHIP:DMG:
          [1657906563.294497][2361:2361] CHIP:DMG:        ],
          [1657906563.294538][2361:2361] CHIP:DMG:
          [1657906563.294608][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906563.294653][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906563.294688][2361:2361] CHIP:DMG: },
      disabled: true

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

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906599.161154][2361:2361] CHIP:IM: Received Read request
          [1657906599.161269][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906599.161312][2361:2361] CHIP:DMG: {
          [1657906599.161348][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906599.161385][2361:2361] CHIP:DMG:        [
          [1657906599.161419][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906599.161463][2361:2361] CHIP:DMG:                {
          [1657906599.161518][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906599.161570][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906599.161621][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0001,
          [1657906599.161669][2361:2361] CHIP:DMG:                }
          [1657906599.161716][2361:2361] CHIP:DMG:
          [1657906599.161757][2361:2361] CHIP:DMG:        ],
          [1657906599.161803][2361:2361] CHIP:DMG:
          [1657906599.161846][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906599.161887][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906599.161924][2361:2361] CHIP:DMG: },
      disabled: true

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

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906629.182638][2361:2361] CHIP:IM: Received Read request
          [1657906629.182760][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906629.182805][2361:2361] CHIP:DMG: {
          [1657906629.182841][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906629.182883][2361:2361] CHIP:DMG:        [
          [1657906629.182923][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906629.182967][2361:2361] CHIP:DMG:                {
          [1657906629.183013][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906629.183065][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906629.183113][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0002,
          [1657906629.183167][2361:2361] CHIP:DMG:                }
          [1657906629.183218][2361:2361] CHIP:DMG:
          [1657906629.183260][2361:2361] CHIP:DMG:        ],
          [1657906629.183305][2361:2361] CHIP:DMG:
          [1657906629.183422][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906629.183467][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906629.183504][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0010) PIROccupiedToUnoccupiedDelay
          optional attribute, if PIR sensor"
      PICS: OCC.C.A0010
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read pir-occupied-to-unoccupied-delay 1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906650.927182][2361:2361] CHIP:IM: Received Read request
          [1657906650.927324][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906650.927381][2361:2361] CHIP:DMG: {
          [1657906650.927427][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906650.927482][2361:2361] CHIP:DMG:        [
          [1657906650.927532][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906650.927590][2361:2361] CHIP:DMG:                {
          [1657906650.927651][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906650.927717][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906650.927783][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0010,
          [1657906650.927846][2361:2361] CHIP:DMG:                }
          [1657906650.927905][2361:2361] CHIP:DMG:
          [1657906650.927960][2361:2361] CHIP:DMG:        ],
          [1657906650.928018][2361:2361] CHIP:DMG:
          [1657906650.928073][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906650.928126][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906650.928184][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0011) PIRUnoccupiedToOccupiedDelay
          optional attribute, if PIR sensor"
      PICS: OCC.C.A0011
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


           ./chip-tool occupancysensing read  pir-unoccupied-to-occupied-delay  1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906670.678493][2361:2361] CHIP:IM: Received Read request
          [1657906670.678680][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906670.678741][2361:2361] CHIP:DMG: {
          [1657906670.678787][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906670.678842][2361:2361] CHIP:DMG:        [
          [1657906670.678892][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906670.678950][2361:2361] CHIP:DMG:                {
          [1657906670.679008][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906670.679073][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906670.679141][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0011,
          [1657906670.679201][2361:2361] CHIP:DMG:                }
          [1657906670.679263][2361:2361] CHIP:DMG:
          [1657906670.679321][2361:2361] CHIP:DMG:        ],
          [1657906670.679380][2361:2361] CHIP:DMG:
          [1657906670.679435][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906670.679493][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906670.679542][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0012) PIRUnoccupiedToOccupiedThreshold
          optional attribute, if PIR sensor"
      PICS: OCC.C.A0012
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read pir-unoccupied-to-occupied-threshold  1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906696.122069][2361:2361] CHIP:IM: Received Read request
          [1657906696.122210][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906696.122265][2361:2361] CHIP:DMG: {
          [1657906696.122312][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906696.122366][2361:2361] CHIP:DMG:        [
          [1657906696.122416][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906696.122480][2361:2361] CHIP:DMG:                {
          [1657906696.122543][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906696.122670][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906696.122744][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0012,
          [1657906696.122809][2361:2361] CHIP:DMG:                }
          [1657906696.122874][2361:2361] CHIP:DMG:
          [1657906696.122929][2361:2361] CHIP:DMG:        ],
          [1657906696.122987][2361:2361] CHIP:DMG:
          [1657906696.123042][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906696.123094][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906696.123143][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0020)
          UltrasonicOccupiedToUnoccupiedDelay optional attribute, if ultrasonic
          sensor"
      PICS: OCC.C.A0020
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read ultrasonic-occupied-to-unoccupied-delay  1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906729.107330][2361:2361] CHIP:IM: Received Read request
          [1657906729.107455][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906729.107504][2361:2361] CHIP:DMG: {
          [1657906729.107566][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906729.107620][2361:2361] CHIP:DMG:        [
          [1657906729.107664][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906729.107738][2361:2361] CHIP:DMG:                {
          [1657906729.107789][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906729.107847][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906729.107929][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0020,
          [1657906729.107984][2361:2361] CHIP:DMG:                }
          [1657906729.108038][2361:2361] CHIP:DMG:
          [1657906729.108105][2361:2361] CHIP:DMG:        ],
          [1657906729.108157][2361:2361] CHIP:DMG:
          [1657906729.108205][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906729.108269][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906729.108312][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0021)
          UltrasonicUnoccupiedToOccupiedDelay optional attribute, if ultrasonic
          sensor"
      PICS: OCC.C.A0021
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read  ultrasonic-unoccupied-to-occupied-delay 1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906752.147785][2361:2361] CHIP:IM: Received Read request
          [1657906752.147914][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906752.147963][2361:2361] CHIP:DMG: {
          [1657906752.148021][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906752.148070][2361:2361] CHIP:DMG:        [
          [1657906752.148113][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906752.148183][2361:2361] CHIP:DMG:                {
          [1657906752.148240][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906752.148304][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906752.148378][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0021,
          [1657906752.148433][2361:2361] CHIP:DMG:                }
          [1657906752.148484][2361:2361] CHIP:DMG:
          [1657906752.148551][2361:2361] CHIP:DMG:        ],
          [1657906752.148603][2361:2361] CHIP:DMG:
          [1657906752.148651][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906752.148717][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906752.148760][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0022)
          UltrasonicUnoccupiedToOccupiedThreshold optional attribute, if
          ultrasonic sensor"
      PICS: OCC.C.A0022
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome



          ./chip-tool occupancysensing read ultrasonic-unoccupied-to-occupied-threshold 1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906770.663661][2361:2361] CHIP:IM: Received Read request
          [1657906770.663787][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906770.663853][2361:2361] CHIP:DMG: {
          [1657906770.663896][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906770.663943][2361:2361] CHIP:DMG:        [
          [1657906770.663988][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906770.664055][2361:2361] CHIP:DMG:                {
          [1657906770.664107][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906770.664195][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906770.664255][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0022,
          [1657906770.664299][2361:2361] CHIP:DMG:                }
          [1657906770.664365][2361:2361] CHIP:DMG:
          [1657906770.664415][2361:2361] CHIP:DMG:        ],
          [1657906770.664466][2361:2361] CHIP:DMG:
          [1657906770.664530][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906770.664578][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906770.664621][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0030)
          PhysicalContactOccupiedToUnoccupiedDelay optional attribute, if
          Physical Contact sensor"
      PICS: OCC.C.A0030
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome

          ./chip-tool occupancysensing read physical-contact-occupied-to-unoccupied-delay 1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906788.836643][2361:2361] CHIP:IM: Received Read request
          [1657906788.836806][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906788.836862][2361:2361] CHIP:DMG: {
          [1657906788.836928][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906788.836982][2361:2361] CHIP:DMG:        [
          [1657906788.837032][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906788.837110][2361:2361] CHIP:DMG:                {
          [1657906788.837170][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906788.837246][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906788.837328][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0030,
          [1657906788.837387][2361:2361] CHIP:DMG:                }
          [1657906788.837464][2361:2361] CHIP:DMG:
          [1657906788.837520][2361:2361] CHIP:DMG:        ],
          [1657906788.837579][2361:2361] CHIP:DMG:
          [1657906788.837634][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906788.837706][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906788.837756][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0031)
          PhysicalContactUnoccupiedToOccupiedDelay optional attribute, if
          Physical Contact sensor"
      PICS: OCC.C.A0031
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read physical-contact-unoccupied-to-occupied-delay 1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906806.229307][2361:2361] CHIP:IM: Received Read request
          [1657906806.229449][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906806.229503][2361:2361] CHIP:DMG: {
          [1657906806.229572][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906806.229628][2361:2361] CHIP:DMG:        [
          [1657906806.229678][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906806.229759][2361:2361] CHIP:DMG:                {
          [1657906806.229823][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906806.229891][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906806.229972][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0031,
          [1657906806.230028][2361:2361] CHIP:DMG:                }
          [1657906806.230090][2361:2361] CHIP:DMG:
          [1657906806.230166][2361:2361] CHIP:DMG:        ],
          [1657906806.230224][2361:2361] CHIP:DMG:
          [1657906806.230279][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906806.230348][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906806.230399][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0032)
          PhysicalContactUnoccupiedToOccupiedThreshold optional attribute, if
          Physical Contact sensor"
      PICS: OCC.C.A0032
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read  physical-contact-unoccupied-to-occupied-threshold 1 1

          verify On TH(Reference app) receives the right Read Request Message for the data sent in the above command

          [1657906821.965692][2361:2361] CHIP:IM: Received Read request
          [1657906821.965776][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906821.965808][2361:2361] CHIP:DMG: {
          [1657906821.965831][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906821.965872][2361:2361] CHIP:DMG:        [
          [1657906821.965902][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906821.965937][2361:2361] CHIP:DMG:                {
          [1657906821.965971][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906821.966019][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906821.966057][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0032,
          [1657906821.966092][2361:2361] CHIP:DMG:                }
          [1657906821.966135][2361:2361] CHIP:DMG:
          [1657906821.966167][2361:2361] CHIP:DMG:        ],
          [1657906821.966197][2361:2361] CHIP:DMG:
          [1657906821.966220][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906821.966241][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906821.966277][2361:2361] CHIP:DMG: },
      disabled: true
