# 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.14. [TC-CC-6.1] Color Temperature MoveTo functionality with server as
    DUT

PICS:
    - CC.S

config:
    nodeId: 0x12344321
    cluster: "Color Control"
    endpoint: 1
    ConfigWait:
        type: int16u
        defaultValue: 5000

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

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

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

    - label: "Step 1a: TH reads ColorTempPhysicalMinMireds attribute from DUT"
      PICS: CC.S.F04 && CC.S.A400b
      command: "readAttribute"
      attribute: "ColorTempPhysicalMinMireds"
      response:
          saveAs: ColorTempPhysicalMinMiredsValue
          constraints:
              type: int16u
              minValue: 0
              maxValue: 65279

    - label: "Step 1b: TH reads ColorTempPhysicalMaxMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A400c
      command: "readAttribute"
      attribute: "ColorTempPhysicalMaxMireds"
      response:
          saveAs: ColorTempPhysicalMaxMiredsValue
          constraints:
              type: int16u
              minValue: 0
              maxValue: 65279

    - label: "Step 1c: TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007
      command: "readAttribute"
      attribute: "ColorTemperatureMireds"
      response:
          constraints:
              type: int16u
              minValue: ColorTempPhysicalMinMiredsValue
              maxValue: ColorTempPhysicalMaxMiredsValue

    - label:
          "Step 2a: TH sends MoveToColorTemperature command to DUT with
          ColorTemperatureMireds=310 and TransitionTime=0 (immediately)."
      PICS: CC.S.F04 && CC.S.C0a.Rsp
      command: "MoveToColorTemperature"
      arguments:
          values:
              - name: "ColorTemperatureMireds"
                value: 310
              - name: "TransitionTime"
                value: 0
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - label: "Wait 100ms"
      PICS: CC.S.F04
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 100

    - label:
          "Step 2b: TH sends MoveToColorTemperatur command to DUT with
          ColorTemperatureMireds=250 and TransitionTime=300 (30s)."
      PICS: CC.S.F04 && CC.S.C0a.Rsp
      command: "MoveToColorTemperature"
      arguments:
          values:
              - name: "ColorTemperatureMireds"
                value: 250
              - name: "TransitionTime"
                value: 300
              - name: "OptionsMask"
                value: 0
              - name: "OptionsOverride"
                value: 0

    - label: "Wait 10s"
      PICS: CC.S.F04
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "Step 2c: TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && CC.S.C0a.Rsp
      command: "readAttribute"
      attribute: "ColorTemperatureMireds"
      response:
          constraints:
              minValue: 246
              maxValue: 334

    - label: "Wait 10s"
      PICS: CC.S.F04
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "Step 2d: TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && CC.S.C0a.Rsp
      command: "readAttribute"
      attribute: "ColorTemperatureMireds"
      response:
          constraints:
              minValue: 230
              maxValue: 310

    - label: "Wait 10s"
      PICS: CC.S.F04
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 10000

    - label: "Step 2e: TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && CC.S.C0a.Rsp
      command: "readAttribute"
      attribute: "ColorTemperatureMireds"
      response:
          constraints:
              minValue: 212
              maxValue: 288

    - label: "Wait 5s"
      PICS: CC.S.F04
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: 5000

    - label: "Step 2f: TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && CC.S.C0a.Rsp
      command: "readAttribute"
      attribute: "ColorTemperatureMireds"
      response:
          constraints:
              minValue: 212
              maxValue: 288

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

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

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

    - label: "Wait to turn Off light"
      cluster: "DelayCommands"
      command: "WaitForMs"
      arguments:
          values:
              - name: "ms"
                value: ConfigWait

    - 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
