# 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.

name: 24.2.2. [TC-LVL-2.2] Write cluster attributes (DUT as Server)

PICS:
    - LVL.S

config:
    nodeId: 0x12344321
    cluster: "Level Control"
    endpoint: 1
    OnOffTransitionTimeConfigValue:
        type: int16u
        defaultValue: 10
    OnLevelConfigValue:
        type: int8u
        defaultValue: 5
    OnTransitionTimeConfigValue:
        type: int16u
        defaultValue: 5
    OffTransitionTimeConfigValue:
        type: int16u
        defaultValue: 10
    DefaultMoveRateConfigValue:
        type: int8u
        defaultValue: 111
    StartUpCurrentLevelConfigValue:
        type: int8u
        defaultValue: 5

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

    - label: "Reads the OnOffTransitionTime attribute from the DUT"
      PICS: LVL.S.A0010
      command: "readAttribute"
      attribute: "OnOffTransitionTime"
      response:
          saveAs: OnOffTransitionTimeValue
          constraints:
              type: int16u
              minValue: 0
              maxValue: 65535

    - label: "writes the OnOffTransitionTime attribute on the DUT"
      PICS: LVL.S.A0010
      command: "writeAttribute"
      attribute: "OnOffTransitionTime"
      arguments:
          value: OnOffTransitionTimeConfigValue

    - label: "Reads the OnOffTransitionTime attribute from the DUT"
      PICS: LVL.S.A0010
      command: "readAttribute"
      attribute: "OnOffTransitionTime"
      response:
          value: OnOffTransitionTimeConfigValue
          constraints:
              type: int16u
              notValue: OnOffTransitionTimeValue

    - label: "Reads the OnLevel attribute from the DUT"
      PICS: LVL.S.A0011
      command: "readAttribute"
      attribute: "OnLevel"
      response:
          saveAs: OnLevelValue
          constraints:
              type: int8u
              minValue: 0
              maxValue: 254

    - label: "writes the OnLevel attribute on the DUT"
      PICS: LVL.S.A0011
      command: "writeAttribute"
      attribute: "OnLevel"
      arguments:
          value: OnLevelConfigValue

    - label: "Reads the OnLevel attribute from the DUT"
      PICS: LVL.S.A0011
      command: "readAttribute"
      attribute: "OnLevel"
      response:
          value: OnLevelConfigValue
          constraints:
              type: int8u
              notValue: OnLevelValue

    - label: "Reads the OnTransitionTime attribute from the DUT"
      PICS: LVL.S.A0012
      command: "readAttribute"
      attribute: "OnTransitionTime"
      response:
          saveAs: OnTransitionTimeValue
          constraints:
              type: int16u
              minValue: 0
              maxValue: 65535

    - label: "Writes the OnTransitionTime attribute on the DUT"
      PICS: LVL.S.A0012
      command: "writeAttribute"
      attribute: "OnTransitionTime"
      arguments:
          value: OnTransitionTimeConfigValue

    - label: "Reads the OnTransitionTime attribute from the DUT"
      PICS: LVL.S.A0012
      command: "readAttribute"
      attribute: "OnTransitionTime"
      response:
          value: OnTransitionTimeConfigValue
          constraints:
              type: int16u
              notValue: OnTransitionTimeValue

    - label: "Reads the OffTransitionTime attribute from the DUT"
      PICS: LVL.S.A0013
      command: "readAttribute"
      attribute: "OffTransitionTime"
      response:
          saveAs: OffTransitionTimeValue
          constraints:
              type: int16u
              minValue: 0
              maxValue: 65535

    - label: "Writes the OffTransitionTime attribute on the DUT"
      PICS: LVL.S.A0013
      command: "writeAttribute"
      attribute: "OffTransitionTime"
      arguments:
          value: OffTransitionTimeConfigValue

    - label: "Reads the OffTransitionTime attribute from the DUT"
      PICS: LVL.S.A0013
      command: "readAttribute"
      attribute: "OffTransitionTime"
      response:
          value: OffTransitionTimeConfigValue
          constraints:
              type: int16u
              notValue: OffTransitionTimeValue

    - label: "Reads the DefaultMoveRate attribute from the DUT"
      PICS: LVL.S.A0014
      command: "readAttribute"
      attribute: "DefaultMoveRate"
      response:
          saveAs: DefaultMoveRatevalue
          constraints:
              type: int8u
              minValue: 0
              maxValue: 255

    - label: "Writes the DefaultMoveRate attribute on the DUT"
      PICS: LVL.S.A0014
      command: "writeAttribute"
      attribute: "DefaultMoveRate"
      arguments:
          value: DefaultMoveRateConfigValue

    - label: "Reads the DefaultMoveRate attribute from the DUT"
      PICS: LVL.S.A0014
      command: "readAttribute"
      attribute: "DefaultMoveRate"
      response:
          value: DefaultMoveRateConfigValue
          constraints:
              type: int8u
              notValue: DefaultMoveRatevalue

    - label: "Reads the StartUpCurrentLevel attribute from the DUT"
      PICS: LVL.S.A4000
      command: "readAttribute"
      attribute: "StartUpCurrentLevel"
      response:
          saveAs: StartUpCurrentLevelValue
          constraints:
              type: int8u
              minValue: 0
              maxValue: 255

    - label: "writes the StartUpCurrentLevel attribute on the DUT"
      PICS: LVL.S.A4000
      command: "writeAttribute"
      attribute: "StartUpCurrentLevel"
      arguments:
          value: StartUpCurrentLevelConfigValue

    - label: "reads the StartUpCurrentLevel attribute from the DUT"
      PICS: LVL.S.A4000
      command: "readAttribute"
      attribute: "StartUpCurrentLevel"
      response:
          value: StartUpCurrentLevelConfigValue
          constraints:
              type: int8u
              notValue: StartUpCurrentLevelValue

    #This is a reset step that is needed to reset the value of the attribute to the default values so as to not effect other test cases.
    - label: "writes back default value of OnOffTransitionTime attribute"
      PICS: LVL.S.A0010
      command: "writeAttribute"
      attribute: "OnOffTransitionTime"
      arguments:
          value: 0
