# 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.12. [TC-CC-5.3] Color 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.F03 && 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 MoveToColor command to DUT, with ColorX = 33000 ColorY =
          20000 TransitionTime = 0 (immediate)"
      PICS: CC.S.F03 && CC.S.C07.Rsp
      command: "MoveToColor"
      arguments:
          values:
              - name: "colorX"
                value: 33000
              - name: "colorY"
                value: 20000
              - 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 StepColor command to DUT, with StepX = -2000, StepY = -6000,
          TransitionTime = 200 (20s)"
      command: "StepColor"
      PICS: CC.S.F03 && CC.S.C09.Rsp
      arguments:
          values:
              - name: "stepX"
                value: -20000
              - name: "stepY"
                value: -6000
              - 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 CurrentX attribute from DUT"
      command: "readAttribute"
      PICS: CC.S.F03 && CC.S.A0003 && CC.S.C08.Rsp
      attribute: "CurrentX"
      response:
          constraints:
              minValue: 13000
              maxValue: 33000

    - label: "TH reads CurrentY attribute from DUT"
      command: "readAttribute"
      PICS: CC.S.F03 && CC.S.A0004 && CC.S.C08.Rsp
      attribute: "CurrentY"
      response:
          constraints:
              minValue: 14000
              maxValue: 20000

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

    - label: "TH reads CurrentX attribute from DUT"
      command: "readAttribute"
      PICS: CC.S.F03 && CC.S.A0003 && CC.S.C08.Rsp
      attribute: "CurrentX"
      response:
          constraints:
              minValue: 13000
              maxValue: 14000

    - label: "TH reads CurrentY attribute from DUT"
      command: "readAttribute"
      PICS: CC.S.F03 && CC.S.A0004 && CC.S.C08.Rsp
      attribute: "CurrentY"
      response:
          constraints:
              minValue: 14000
              maxValue: 15000

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

    - label: "TH reads CurrentX attribute from DUT"
      command: "readAttribute"
      PICS: CC.S.F03 && CC.S.A0003 && CC.S.C08.Rsp
      attribute: "CurrentX"
      response:
          value: 13000

    - label: "TH reads CurrentY attribute from DUT"
      command: "readAttribute"
      PICS: CC.S.F03 && CC.S.A0004 && CC.S.C08.Rsp
      attribute: "CurrentY"
      response:
          value: 14000

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

    - label: "TH reads EnhancedColorMode attribute from DUT"
      PICS: CC.S.F00 && CC.S.A4001
      command: "readAttribute"
      attribute: "ColorMode"
      response:
          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
