# 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: 80.2.2. [TC-MOD-2.2] ChangeToMode Verification (DUT as Client)

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

tests:
    - label: "DUT reads the SupportedModes attribute from the TH"
      verification: |
          verify on Reference app receives the right response for the data sent in the above commands

          ./chip-tool modeselect read supported-modes 1 1

          Verify in TH all-clusters-app

          [1657112483.855657][5411:5417] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 736180028
          [1657112483.855821][5411:5417] CHIP:TOO:   SupportedModes: 3 entries
          [1657112483.856016][5411:5417] CHIP:TOO:     [1]: {
          [1657112483.856069][5411:5417] CHIP:TOO:       Label: Black
          [1657112483.856158][5411:5417] CHIP:TOO:       Mode: 0
          [1657112483.856218][5411:5417] CHIP:TOO:       SemanticTags: 1 entries
          [1657112483.856281][5411:5417] CHIP:TOO:         [1]: {
          [1657112483.856397][5411:5417] CHIP:TOO:           MfgCode: 0
          [1657112483.856466][5411:5417] CHIP:TOO:           Value: 0
          [1657112483.856515][5411:5417] CHIP:TOO:          }
          [1657112483.856582][5411:5417] CHIP:TOO:      }
          [1657112483.856652][5411:5417] CHIP:TOO:     [2]: {
          [1657112483.856700][5411:5417] CHIP:TOO:       Label: Cappuccino
          [1657112483.856864][5411:5417] CHIP:TOO:       Mode: 4
          [1657112483.856924][5411:5417] CHIP:TOO:       SemanticTags: 1 entries
          [1657112483.857004][5411:5417] CHIP:TOO:         [1]: {
          [1657112483.857055][5411:5417] CHIP:TOO:           MfgCode: 0
          [1657112483.857102][5411:5417] CHIP:TOO:           Value: 0
          [1657112483.857166][5411:5417] CHIP:TOO:          }
          [1657112483.857215][5411:5417] CHIP:TOO:      }
          [1657112483.857302][5411:5417] CHIP:TOO:     [3]: {
          [1657112483.857351][5411:5417] CHIP:TOO:       Label: Espresso
          [1657112483.857414][5411:5417] CHIP:TOO:       Mode: 7
          [1657112483.857469][5411:5417] CHIP:TOO:       SemanticTags: 1 entries
          [1657112483.857549][5411:5417] CHIP:TOO:         [1]: {
          [1657112483.857598][5411:5417] CHIP:TOO:           MfgCode: 0
          [1657112483.857665][5411:5417] CHIP:TOO:           Value: 0
          [1657112483.857713][5411:5417] CHIP:TOO:          }
          [1657112483.857778][5411:5417] CHIP:TOO:      }
      disabled: true

    - label:
          "DUT sends a ChangeToMode command to the TH with a integer from the
          list in step 1"
      verification: |
          verify on Reference app receives the right response for the data sent in the above commands

           ./chip-tool modeselect change-to-mode 4 1 1

          Verify in TH all-clusters-app

          [1657112505.553012][5418:5423] CHIP:DMG: InvokeResponseMessage =
          [1657112505.553052][5418:5423] CHIP:DMG: {
          [1657112505.553091][5418:5423] CHIP:DMG:         suppressResponse = false,
          [1657112505.553133][5418:5423] CHIP:DMG:         InvokeResponseIBs =
          [1657112505.553183][5418:5423] CHIP:DMG:         [
          [1657112505.553223][5418:5423] CHIP:DMG:                 InvokeResponseIB =
          [1657112505.553276][5418:5423] CHIP:DMG:                 {
          [1657112505.553319][5418:5423] CHIP:DMG:                         CommandStatusIB =
          [1657112505.553371][5418:5423] CHIP:DMG:                         {
          [1657112505.553418][5418:5423] CHIP:DMG:                                 CommandPathIB =
          [1657112505.553473][5418:5423] CHIP:DMG:                                 {
          [1657112505.553527][5418:5423] CHIP:DMG:                                         EndpointId = 0x1,
          [1657112505.553588][5418:5423] CHIP:DMG:                                         ClusterId = 0x50,
          [1657112505.553645][5418:5423] CHIP:DMG:                                         CommandId = 0x0,
          [1657112505.553698][5418:5423] CHIP:DMG:                                 },
          [1657112505.553762][5418:5423] CHIP:DMG:
          [1657112505.553810][5418:5423] CHIP:DMG:                                 StatusIB =
          [1657112505.553870][5418:5423] CHIP:DMG:                                 {
          [1657112505.553929][5418:5423] CHIP:DMG:                                         status = 0x00 (SUCCESS),
          [1657112505.553983][5418:5423] CHIP:DMG:                                 },
          [1657112505.554037][5418:5423] CHIP:DMG:
          [1657112505.554085][5418:5423] CHIP:DMG:                         },
          [1657112505.554136][5418:5423] CHIP:DMG:
          [1657112505.554181][5418:5423] CHIP:DMG:                 },
          [1657112505.554238][5418:5423] CHIP:DMG:
          [1657112505.554277][5418:5423] CHIP:DMG:         ],
          [1657112505.554325][5418:5423] CHIP:DMG:
          [1657112505.554364][5418:5423] CHIP:DMG:         InteractionModelRevision = 1
          [1657112505.554432][5418:5423] CHIP:DMG: },
          [1657112505.554523][5418:5423] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0050 Command=0x0000_0000 Status=0x0
          [1657112505.554587][5418:5423] CHIP:DMG: ICR moving to [AwaitingDe]
      disabled: true
