# Copyright (c) 2023 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.

name: Operational State Tests

config:
    nodeId: 0x12344321
    cluster: "Operational State"
    endpoint: 1

tests:
    - label: "Wait for the commissioned device to be retrieved"
      cluster: "DelayCommands"
      command: "WaitForCommissionee"
      arguments:
          values:
              - name: "nodeId"
                value: nodeId

    - label: "Read Phase List"
      command: "readAttribute"
      attribute: "PhaseList"
      response:
          value: null

    - label: "Read current Phase"
      command: "readAttribute"
      attribute: "CurrentPhase"
      response:
          value: null

    - label: "Read Countdown Time"
      command: "readAttribute"
      attribute: "CountdownTime"
      response:
          value: null

    - label: "Read Operational State List"
      command: "readAttribute"
      attribute: "OperationalStateList"
      response:
          value:
              [
                  { OperationalStateID: 0 },
                  { OperationalStateID: 1 },
                  { OperationalStateID: 2 },
                  { OperationalStateID: 3 },
              ]

    - label: "Read current Operational Error"
      command: "readAttribute"
      attribute: "OperationalError"
      response:
          value: { ErrorStateID: 0 }

    - label: "Read current Operational State"
      command: "readAttribute"
      attribute: "OperationalState"
      response:
          value: 0

    - label: "Start Command"
      command: "Start"
      response:
          values:
              - name: "CommandResponseState"
                value: { ErrorStateID: 0 }

    - label: "Read current Operational State"
      command: "readAttribute"
      attribute: "OperationalState"
      response:
          value: 1

    - label: "Pause Command"
      command: "Pause"
      response:
          values:
              - name: "CommandResponseState"
                value: { ErrorStateID: 0 }

    - label: "Read current Operational State"
      command: "readAttribute"
      attribute: "OperationalState"
      response:
          value: 2

    - label: "Resume Command"
      command: "Resume"
      response:
          values:
              - name: "CommandResponseState"
                value: { ErrorStateID: 0 }

    - label: "Read current Operational State"
      command: "readAttribute"
      attribute: "OperationalState"
      response:
          value: 1

    - label: "Stop Command"
      command: "Stop"
      response:
          values:
              - name: "CommandResponseState"
                value: { ErrorStateID: 0 }

    - label: "Read current Operational State"
      command: "readAttribute"
      attribute: "OperationalState"
      response:
          value: 0
