# 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.15. [TC-CC-6.2] Color Temperature Move 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.F04 && 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 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: "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: "TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007
      command: "readAttribute"
      attribute: "ColorTemperature"
      response:
          constraints:
              type: int16u
              minValue: ColorTempPhysicalMinMiredsValue
              maxValue: ColorTempPhysicalMaxMiredsValue

    - label:
          "TH sends MoveToColorTemperature command to DUT with
          ColorTemperatureMireds=(ColorTempPhysicalMinMireds +
          ColorTempPhysicalMaxMireds)/2 and TransitionTime=0 (immediately)."
      PICS: CC.S.F04 && CC.S.C0a.Rsp && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol move-to-color-temperature 32639 0 0 0 1 1

          Verify in TH(chip-tool) Log:
          [1649666592.559286][9065:9070] CHIP:DMG:                                StatusIB =
          [1649666592.559322][9065:9070] CHIP:DMG:                                {
          [1649666592.559357][9065:9070] CHIP:DMG:                                        status = 0x00 (SUCCESS),
          [1649666592.559391][9065:9070] CHIP:DMG:                                },
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "TH sends MoveColorTemperature command to DUT with MoveMode = 0x01
          (up), Rate = (ColorTempPhysicalMaxMireds -
          ColorTempPhysicalMinMireds)/40"
      PICS: CC.S.F04 && CC.S.C4b.Rsp && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol move-color-temperature 1 16319 0 65279 0 0 1 1

          Verify in TH(chip-tool) Log:
          [1649666643.381403][9085:9090] CHIP:DMG:                                StatusIB =
          [1649666643.381465][9085:9090] CHIP:DMG:                                {
          [1649666643.381530][9085:9090] CHIP:DMG:                                        status = 0x00 (SUCCESS),
          [1649666643.381582][9085:9090] CHIP:DMG:                                },
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "After 10 seconds, TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read color-temperature 1 1

          Verify in TH(chip-tool) Log:
          [1649666635.306093][9078:9083] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 4087364802
          [1649666635.306184][9078:9083] CHIP:TOO:   ColorTemperature: 16000  (value can vary)
          [1649666635.306298][9078:9083] CHIP:EM: Sending Standalone Ack for MessageCounter:2077197 on exchange 1795i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "After 10 seconds, TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read color-temperature 1 1

          Verify in TH(chip-tool) Log:
          [1649666635.306093][9078:9083] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 4087364802
          [1649666635.306184][9078:9083] CHIP:TOO:   ColorTemperature: 16500  (value can vary)
          [1649666635.306298][9078:9083] CHIP:EM: Sending Standalone Ack for MessageCounter:2077197 on exchange 1795i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "After another 5 seconds, TH reads ColorTemperatureMireds attribute
          from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read color-temperature 1 1

          Verify in TH(chip-tool) Log:
          [1649666635.306093][9078:9083] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 4087364802
          [1649666635.306184][9078:9083] CHIP:TOO:   ColorTemperature: 16500  (value can vary)
          [1649666635.306298][9078:9083] CHIP:EM: Sending Standalone Ack for MessageCounter:2077197 on exchange 1795i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "TH sends MoveColorTemperature command to DUT with MoveMode =
          0x03(down), Rate = (ColorTempPhysicalMaxMireds -
          ColorTempPhysicalMinMireds)/20"
      PICS: CC.S.F04 && CC.S.C4b.Rsp && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol move-color-temperature 3 32369 0 65279 0 0 1 1

          Verify in TH(chip-tool) Log:
          [1649666643.381403][9085:9090] CHIP:DMG:                                StatusIB =
          [1649666643.381465][9085:9090] CHIP:DMG:                                {
          [1649666643.381530][9085:9090] CHIP:DMG:                                        status = 0x00 (SUCCESS),
          [1649666643.381582][9085:9090] CHIP:DMG:                                },
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "After 10 seconds, TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read color-temperature 1 1

          Verify in TH(chip-tool) Log:
          [1649666665.611446][9091:9096] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 4087365394
          [1649666665.611577][9091:9096] CHIP:TOO:   ColorTemperature: 15500 (value can vary)
          [1649666665.611685][9091:9096] CHIP:EM: Sending Standalone Ack for MessageCounter:8367884 on exchange 32174i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "After 10 seconds, TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read color-temperature 1 1

          Verify in TH(chip-tool) Log:
          [1649666665.611446][9091:9096] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 4087365394
          [1649666665.611577][9091:9096] CHIP:TOO:   ColorTemperature: 14000 (value can vary)
          [1649666665.611685][9091:9096] CHIP:EM: Sending Standalone Ack for MessageCounter:8367884 on exchange 32174i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "After another 5 seconds, TH reads ColorTemperatureMireds attribute
          from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read color-temperature 1 1

          Verify in TH(chip-tool) Log:
          [1649666665.611446][9091:9096] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 4087365394
          [1649666665.611577][9091:9096] CHIP:TOO:   ColorTemperature: 14000 (value can vary)
          [1649666665.611685][9091:9096] CHIP:EM: Sending Standalone Ack for MessageCounter:8367884 on exchange 32174i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "TH sends MoveColorTemperature command to DUT with MoveMode =
          0x01(up), Rate = (ColorTempPhysicalMaxMireds -
          ColorTempPhysicalMinMireds)/20"
      PICS: CC.S.F04 && CC.S.C4b.Rsp && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol move-color-temperature 1 32369 0 65279 0 0 1 1

          Verify in TH(chip-tool) Log:
          [1649666683.278957][9097:9102] CHIP:DMG:                                StatusIB =
          [1649666683.279020][9097:9102] CHIP:DMG:                                {
          [1649666683.279087][9097:9102] CHIP:DMG:                                        status = 0x00 (SUCCESS),
          [1649666683.279146][9097:9102] CHIP:DMG:                                },
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "After 10 seconds, TH sends MoveColorTemperature command to DUT with
          MoveMode = 0x00(stop), Rate = (ColorTempPhysicalMaxMireds -
          ColorTempPhysicalMinMireds)/20"
      PICS: CC.S.F04 && CC.S.C4b.Rsp && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol move-color-temperature 0 32369 0 65279 0 0 1 1

          Verify in TH(chip-tool) Log:
          [1649666683.278957][9097:9102] CHIP:DMG:                                StatusIB =
          [1649666683.279020][9097:9102] CHIP:DMG:                                {
          [1649666683.279087][9097:9102] CHIP:DMG:                                        status = 0x00 (SUCCESS),
          [1649666683.279146][9097:9102] CHIP:DMG:                                },
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label: "TH reads ColorTemperatureMireds attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0007 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read color-temperature 1 1

          Verify in TH(chip-tool) Log:
          [1649666800.459923][9128:9133] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 4087368020
          [1649666800.460008][9128:9133] CHIP:TOO:   ColorTemperature: 12500 (value can vary)
          [1649666800.460160][9128:9133] CHIP:EM: Sending Standalone Ack for MessageCounter:363494 on exchange 55194i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "After another 2 seconds, TH reads ColorTemperatureMireds attribute
          from DUT"
      PICS: CC.S.F04 && CC.S.A0007 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read color-temperature 1 1

          Verify in TH(chip-tool) Log:
          [1649666800.459923][9128:9133] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0007 DataVersion: 4087368020
          [1649666800.460008][9128:9133] CHIP:TOO:   ColorTemperature: 12500 (value can very)
          [1649666800.460160][9128:9133] CHIP:EM: Sending Standalone Ack for MessageCounter:363494 on exchange 55194i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label: "TH reads ColorMode attribute from DUT."
      PICS: CC.S.F04 && CC.S.A0008 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read color-mode 1 1

           Verify in TH(chip-tool) Log:
           [1659712688.315752][5086:5091] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_0008 DataVersion: 468119348
           [1659712688.315831][5086:5091] CHIP:TOO:   ColorMode: 2
           [1659712688.315957][5086:5091] CHIP:EM: Sending Standalone Ack for MessageCounter:240585607 on exchange 4537i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label: "TH reads EnhancedColorMode attribute from DUT."
      PICS: CC.S.F04 && CC.S.A4001 && PICS_USER_PROMPT
      verification: |
          ./chip-tool colorcontrol read enhanced-color-mode 1 1

          Verify in TH(chip-tool) Log:
          [1659712734.529238][5094:5099] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_4001 DataVersion: 468119348
          [1659712734.529360][5094:5099] CHIP:TOO:   EnhancedColorMode: 2
          [1659712734.529552][5094:5099] CHIP:EM: Sending Standalone Ack for MessageCounter:39175367 on exchange 3560i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - 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
