# 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: 25.3.3. [TC-CC-3.3] Hue Step functionality with server as DUT

PICS:
    - CC.S

config:
    nodeId: 0x12344321
    cluster: "Color Control"
    endpoint: 1

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

    - label: "TH writes 0 to the Options attribute"
      PICS: CC.S.F00 && CC.S.A000f
      command: "writeAttribute"
      attribute: "Options"
      arguments:
          value: 0

    - label: "TH sends On command to DUT"
      PICS: OO.S.C01.Rsp
      cluster: "On/Off"
      command: "On"

    - label:
          "TH sends MoveToHue command to DUT with Hue=200, Direction=0x00
          (shortest distance) and TransitionTime=0 (immediately)"
      PICS: CC.S.F00 && CC.S.C00.Rsp
      command: "MoveToHue"
      arguments:
          values:
              - name: "hue"
                value: 200
              - name: "Direction"
                value: 0
              - name: "TransitionTime"
                value: 0
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - label: "Wait 100ms"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 100

    - label:
          "TH sends StepHue command to DUT with StepMode=0x01 (up), StepSize=60
          and TransitionTime=200 (20s)"
      PICS: CC.S.F00 && CC.S.C02.Rsp
      command: "StepHue"
      arguments:
          values:
              - name: "StepMode"
                value: 1
              - name: "StepSize"
                value: 60
              - name: "TransitionTime"
                value: 200
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - label: "Wait 10s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "TH reads CurrentHue attribute from DUT"
      PICS: CC.S.F00 && CC.S.A0000
      command: "readAttribute"
      attribute: "CurrentHue"
      response:
          constraints:
              minValue: 195
              maxValue: 254

    - label: "Wait 10s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "TH reads CurrentHue attribute from DUT"
      PICS: CC.S.F00 && CC.S.A0000
      command: "readAttribute"
      attribute: "CurrentHue"
      response:
          constraints:
              minValue: 4
              maxValue: 6

    - label: "Wait 5s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 5000

    - label: "TH reads CurrentHue attribute from DUT"
      PICS: CC.S.F00 && CC.S.A0000
      command: "readAttribute"
      attribute: "CurrentHue"
      response:
          constraints:
              minValue: 4
              maxValue: 6

    - label:
          "TH sends MoveToHue command to DUT with Hue=50, Direction=0x00
          (shortest distance) and TransitionTime=0 (immediately)"
      PICS: CC.S.F00 && CC.S.C00.Rsp
      command: "MoveToHue"
      arguments:
          values:
              - name: "hue"
                value: 50
              - name: "Direction"
                value: 0
              - name: "TransitionTime"
                value: 0
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - label: "Wait 100ms"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 100

    - label:
          "TH sends StepHue command to DUT with StepMode=0x03 (down),
          StepSize=60 and TransitionTime=200 (20s)"
      PICS: CC.S.F00 && CC.S.C02.Rsp
      command: "StepHue"
      arguments:
          values:
              - name: "StepMode"
                value: 3
              - name: "StepSize"
                value: 60
              - name: "TransitionTime"
                value: 200
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - label: "Wait 10s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "TH reads CurrentHue attribute from DUT"
      PICS: CC.S.F00 && CC.S.A0000
      command: "readAttribute"
      attribute: "CurrentHue"
      response:
          constraints:
              minValue: 17
              maxValue: 23

    - label: "Wait 10s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "TH reads CurrentHue attribute from DUT"
      PICS: CC.S.F00 && CC.S.A0000
      command: "readAttribute"
      attribute: "CurrentHue"
      response:
          constraints:
              minValue: 208
              maxValue: 255

    - label: "Wait 5s"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 5000

    - label: "TH reads CurrentHue attribute from DUT"
      PICS: CC.S.F00 && CC.S.A0000
      command: "readAttribute"
      attribute: "CurrentHue"
      response:
          constraints:
              minValue: 208
              maxValue: 255

    - label: "TH reads ColorMode attribute from DUT"
      PICS: CC.S.F00 && CC.S.A0008
      command: "readAttribute"
      attribute: "ColorMode"
      response:
          value: 0
          constraints:
              minValue: 0
              maxValue: 2

    - label: "TH reads EnhancedColorMode attribute from DUT"
      PICS: CC.S.F00 && CC.S.A4001
      command: "readAttribute"
      attribute: "EnhancedColorMode"
      response:
          value: 0
          constraints:
              minValue: 0
              maxValue: 3

    - label: "Turn off light that we turned on"
      PICS: OO.S.C00.Rsp
      cluster: "On/Off"
      command: "Off"

    - label: "Check on/off attribute value is false after off command"
      cluster: "On/Off"
      command: "readAttribute"
      attribute: "OnOff"
      PICS: OO.S.A0000
      response:
          value: 0
