# 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.1.3. [TC-BR-3] Changing name and state of a bridged device

PICS:
    - MCORE.BRIDGE

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

tests:
    - label:
          "Get the name of a bridged device: Read the NodeLabel attribute of the
          Bridged Device Basic Information cluster on the applicable endpoint"
      PICS: MCORE.BRIDGE && MCORE.BRIDGE.AllowDeviceRename
      verification: |
          Read the NodeLabel attribute of the Bridged Device Basic Information cluster with EP 3

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

          Verify in TH Log
          [1657013337.140125][5753:5758] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 3293551312
          [1657013337.140235][5753:5758] CHIP:TOO:   NodeLabel: Light 1
      disabled: true

    - label:
          "Using manufacturer provided means (i.e. NOT using Matter protocol),
          update the name of this bridged device"
      verification: |
          Press b in bridge-app

          b
          [1657013342.067936][16436:16443] CHIP:DL: Device[Light 1]: New Name="Light 1b"
      disabled: true

    - label:
          "Read the NodeLabel attribute of the Bridged Device Basic Information
          cluster on the same endpoint as in 1a"
      verification: |
          Read the NodeLabel attribute of the Bridged Device Basic Information cluster with EP 3, verify the name is changed

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

          Verify in TH Log
          [1657013347.277584][5759:5764] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 3293551313
          [1657013347.277631][5759:5764] CHIP:TOO:   NodeLabel: Light 1b
      disabled: true

    - label:
          "Choose a bridged device for which the state can be changed through a
          non-Matter interface (example: bridge manufacturer provides an app
          which can change the state of the bridged devices, e.g. change a
          lights brightness)"
      PICS: MCORE.BRIDGE && MCORE.BRIDGE.OtherControl
      verification: |
          Choose on-off cluster
      disabled: true

    - label: "Read the state (e.g. on/off, brightness) of that bridged device"
      verification: |
          Read OnOff attribute of On/Off cluster

          ./chip-tool onoff read on-off 1 3

          Verify in TH Log
          [1657004565.254591][4804:4809] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3808303316
          [1657004565.254635][4804:4809] CHIP:TOO:   OnOff: TRUE
      disabled: true

    - label:
          "Change the state (e.g. on/off, brightness) of that bridged device
          with this other interface."
      verification: |
          Press c on bridge-app to change the state
      disabled: true

    - label: "Read the state of that bridged device again (as in 2b)"
      verification: |
          Read OnOff attribute of On/Off cluster and verify the value is different comapred to step 2b

          ./chip-tool onoff read on-off 1 3

          Verify in TH Log
          [1657004454.213279][4792:4798] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3808303315
          [1657004454.213319][4792:4798] CHIP:TOO:   OnOff: FALSE
      disabled: true
