# 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.
# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default

name: 58.2.2. [TC-I-2.2] Primary functionality with server as DUT

PICS:
    - I.S

config:
    nodeId: 0x12344321
    cluster: "Identify"
    endpoint: 1

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

    - label:
          "TH sends Identify command to DUT, with the IdentifyTime field set to
          0x003c (60s)."
      PICS: I.S.C00.Rsp
      command: "Identify"
      arguments:
          values:
              - name: "IdentifyTime"
                value: 60

    - label: "TH reads immediately IdentifyTime attribute from DUT"
      PICS: I.S.A0000
      command: "readAttribute"
      attribute: "IdentifyTime"
      response:
          constraints:
              minValue: 51
              maxValue: 69

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

    - label: "After 10 seconds, the TH reads IdentifyTime attribute from DUT"
      PICS: I.S.A0000
      command: "readAttribute"
      attribute: "IdentifyTime"
      response:
          constraints:
              minValue: 42
              maxValue: 58

    - label:
          "TH sends IdentifyQuery command to DUT and Verify
          IdentifyQueryResponse command to TH,with the Timeout field set to a
          value in the range 0x0000 to 0x0032"
      verification: |
          IdentifyQuery is not supported by Matter
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && I.S.C01.Rsp && I.S.C00.Tx
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "TH sends Identify command to DUT, with the IdentifyTime field set to
          0x0000 (stop identifying)."
      PICS: I.S.C00.Rsp
      command: "Identify"
      arguments:
          values:
              - name: "IdentifyTime"
                value: 0

    - label: "TH reads immediately IdentifyTime attribute from DUT"
      PICS: I.S.A0000
      command: "readAttribute"
      attribute: "IdentifyTime"
      response:
          value: 0

    # disabled due to IdentifyQuery not supported for matter V1.0
    #- label: "TH sends IdentifyQuery command to DUT "
    #  verification: |
    #      IdentifyQuery is not supported by Matter
    #  cluster: "LogCommands"
    #  command: "UserPrompt"
    #  PICS: PICS_USER_PROMPT && I.S.C01.Rsp && I.S.C00.Tx
    #  arguments:
    #      values:
    #          - name: "message"
    #            value: "Please enter 'y' for success"
    #          - name: "expectedValue"
    #            value: "y"

    - label:
          "TH writes a value of 0x000f (15s) to IdentifyTime attribute of DUT"
      PICS: I.S.A0000
      command: "writeAttribute"
      attribute: "IdentifyTime"
      arguments:
          value: 15

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

    - label: "After 5 seconds, the TH reads IdentifyTime attribute from DUT"
      PICS: I.S.A0000
      command: "readAttribute"
      attribute: "IdentifyTime"
      response:
          constraints:
              minValue: 5
              maxValue: 15
