# 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.8. [TC-CC-4.4] MoveToHueAndSaturation functionality with server as DUT

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 MoveToHueAndSaturation command to DUT with Hue=200,
          Saturation=50 and TransitionTime=0 (immediately)"
      PICS: CC.S.F01 && CC.S.C06.Rsp
      command: "MoveToHueAndSaturation"
      arguments:
          values:
              - name: "hue"
                value: 200
              - name: "Saturation"
                value: 50
              - 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 reads CurrentHue attribute from DUT."
      PICS: CC.S.F01 && CC.S.A0000 && CC.S.C06.Rsp
      command: "readAttribute"
      attribute: "CurrentHue"
      response:
          value: 200
          constraints:
              type: int8u
              minValue: 0
              maxValue: 254

    - label:
          "TH sends MoveToHueAndSaturation command to DUT with Hue=160,
          Saturation=80 and TransitionTime=200 (20s)"
      PICS: CC.S.F01 && CC.S.C06.Rsp
      command: "MoveToHueAndSaturation"
      arguments:
          values:
              - name: "hue"
                value: 160
              - name: "Saturation"
                value: 80
              - 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: 175
              maxValue: 185

    - label: "TH reads CurrentSaturation attribute from DUT"
      PICS: CC.S.F01 && CC.S.A0001
      command: "readAttribute"
      attribute: "CurrentSaturation"
      response:
          constraints:
              minValue: 60
              maxValue: 70

    - 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: 160
              maxValue: 170

    - label: "TH reads CurrentSaturation attribute from DUT"
      PICS: CC.S.F01 && CC.S.A0001
      command: "readAttribute"
      attribute: "CurrentSaturation"
      response:
          constraints:
              type: int8u
              minValue: 70
              maxValue: 80

    - 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:
          value: 160

    - label: "TH reads CurrentSaturation attribute from DUT"
      PICS: CC.S.F01 && CC.S.A0001
      command: "readAttribute"
      attribute: "CurrentSaturation"
      response:
          value: 80

    - 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
