# 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.3.1. [TC-MOD-3.1] OnMode Verification (DUT as Server)

PICS:
    - MOD.S.A0005

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

tests:
    - label: "TH reads the OnMode attribute from the DUT"
      PICS: MOD.S.A0005 && MOD.S.F00
      verification: |
          ./chip-tool modeselect read on-mode 1 1

          on TH,Verify that the DUT response The attribute is nullable, and null is  valid value.

          [1649678983.679893][10871:10876] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065073
          [1649678983.680002][10871:10876] CHIP:TOO:   OnMode: null
      disabled: true

    - label: "TH reads the CurrentMode attribute from the DUT"
      PICS: MOD.S.A0003 && MOD.S.F00
      verification: |
          ./chip-tool modeselect read current-mode 1 1

          on TH,Verify that the DUT response is an integer. Record this value for usage in steps 2b.

          [1649679034.895848][10879:10884] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073
          [1649679034.895972][10879:10884] CHIP:TOO:   CurrentMode: 4
      disabled: true

    - label:
          "If the OnMode and CurrentMode attributes have the same value, proceed
          to step 2c, Otherwise proceed to step 3a."
      PICS: MOD.S.A0003 && MOD.S.A0005 && MOD.S.F00
      verification: |
          NOTE:
          If the OnMode and CurrentMode attributes have the same value, proceed to step 2c, Otherwise proceed to step 3a.
      disabled: true

    - label: "TH reads the SupportedModes attribute from the DUT"
      PICS: MOD.S.A0002 && MOD.S.F00
      verification: |
          ./chip-tool modeselect read supported-modes 1 1

          on TH,Verify that the DUT response provides a list of supported modes

          [1654595268.854568][14400:14405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602
          [1654595268.854678][14400:14405] CHIP:TOO:   SupportedModes: 3 entries
          [1654595268.854743][14400:14405] CHIP:TOO:     [1]: {
          [1654595268.854772][14400:14405] CHIP:TOO:       Label: Black
          [1654595268.854811][14400:14405] CHIP:TOO:       Mode: 0
          [1654595268.854843][14400:14405] CHIP:TOO:       SemanticTags: 1 entries
          [1654595268.854891][14400:14405] CHIP:TOO:         [1]: {
          [1654595268.854918][14400:14405] CHIP:TOO:           MfgCode: 0
          [1654595268.854945][14400:14405] CHIP:TOO:           Value: 0
          [1654595268.854971][14400:14405] CHIP:TOO:          }
          [1654595268.855000][14400:14405] CHIP:TOO:      }
          [1654595268.855038][14400:14405] CHIP:TOO:     [2]: {
          [1654595268.855064][14400:14405] CHIP:TOO:       Label: Cappuccino
          [1654595268.855089][14400:14405] CHIP:TOO:       Mode: 4
          [1654595268.855117][14400:14405] CHIP:TOO:       SemanticTags: 1 entries
          [1654595268.855149][14400:14405] CHIP:TOO:         [1]: {
          [1654595268.855175][14400:14405] CHIP:TOO:           MfgCode: 0
          [1654595268.855199][14400:14405] CHIP:TOO:           Value: 0
          [1654595268.855223][14400:14405] CHIP:TOO:          }
          [1654595268.855249][14400:14405] CHIP:TOO:      }
          [1654595268.855284][14400:14405] CHIP:TOO:     [3]: {
          [1654595268.855310][14400:14405] CHIP:TOO:       Label: Espresso
          [1654595268.855332][14400:14405] CHIP:TOO:       Mode: 7
          [1654595268.855360][14400:14405] CHIP:TOO:       SemanticTags: 1 entries
          [1654595268.855390][14400:14405] CHIP:TOO:         [1]: {
          [1654595268.855416][14400:14405] CHIP:TOO:           MfgCode: 0
          [1654595268.855440][14400:14405] CHIP:TOO:           Value: 0
          [1654595268.855464][14400:14405] CHIP:TOO:          }
          [1654595268.855490][14400:14405] CHIP:TOO:      }
          [1649677252.376226][10804:10809] CHIP:TOO:       SemanticTag: 0
          [1649677252.376252][10804:10809] CHIP:TOO:      }
      disabled: true

    - label:
          "Select a value from the list in step 2c with a different value than
          the onMode value read in step 1. TH sends a ChangeToMode command to
          the TH with the selected value."
      PICS: MOD.S.A0002 && MOD.S.C00.Rsp && MOD.S.F00
      verification: |
          ./chip-tool modeselect change-to-mode 7 1 1

          on TH,Verify that the DUT response with a successful (value 0x00) status response.

          [1645777419.711572][4798:4803] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0050 Command=0x0000_0000 Status=0x0
      disabled: true

    - label: "TH reads sends an Off command to the DUT"
      PICS: OO.S.C00.Rsp && MOD.S.F00
      verification: |
          ./chip-tool onoff off 1 1

          on TH,Verify that the DUT response with a successful (value 0x00) status response.

          [1649679101.658594][10886:10891] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0000 Status=0x0
      disabled: true

    - label: "TH reads sends an On command to the DUT"
      PICS: OO.S.C01.Rsp && MOD.S.F00
      verification: |
          ./chip-tool onoff on 1 1

          on TH,Verify that the DUT response with a successful (value 0x00) status response.

          [1649679156.146015][10893:10898] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x0
      disabled: true

    - label: "TH reads the CurrentMode attribute from the DUT"
      PICS: MOD.S.A0003 && MOD.S.F00
      verification: |
          ./chip-tool modeselect read current-mode 1 1

          on TH,Verify that the DUT response is the integer recorded in step 1.

          [1649679202.069163][10899:10904] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073
          [1649679202.069278][10899:10904] CHIP:TOO:   CurrentMode: 4
      disabled: true
