# 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: 123.2.2. [TC-S-2.2] Primary functionality with server as DUT

config:
    nodeId: 0x12344321
    cluster: "Basic"
    endpoint: 0

tests:
    - label: "TH sends a RemoveAllGroups command to DUT."
      PICS: G.S.C04.Rsp
      verification: |
          If a status response is expected, DUT sends a response to TH with the Status field equal to 0x00 (SUCCESS).
      disabled: true

    - label:
          "preparation step for using commands from Groups cluster: TH generates
          fabric-unique GroupID, GroupName, random key, EpochKey0 and
          GroupKeySetID. TH sets GroupKeySecurityPolicy = TrustFirst (1)
          GroupKeyMulticastPolicy = PerGroupID (0) EpochStartTime0 = 0"
      verification: |

      disabled: true

    - label:
          "TH sends a AddGroup command to DUT with the GroupID field set to
          0x0001."
      PICS: G.S.C00.Rsp
      verification: |
          DUT sends a AddGroupResponse command to TH with the Status field set to 0x00 (SUCCESS) and the GroupID field set to 0x0001.
      disabled: true

    - label:
          "TH sends a RemoveAllScenes command to DUT with the GroupID field set
          to 0x0001."
      PICS: S.S.C03.Rsp
      verification: |
          DUT sends a RemoveAllScenesResponse command to TH with the Status field set to 0x00 (SUCCESS) and GroupID field set to 0x0001.
      disabled: true

    - label:
          "TH sends a GetSceneMembership command to DUT with the GroupID field
          set to 0x0001."
      PICS: S.S.C06.Rsp
      verification: |
          DUT sends a GetSceneMembershipResponse command to TH with the Status field set to 0x00 (SUCCESS), the Capacity field set to the value SC0, the GroupID field set to 0x0001 and the SceneCount field set to 0x00.
      disabled: true

    - label:
          "TH configures AC1 on DUT for all implemented application clusters
          supporting scenes."
      verification: |
          DUT is configured with AC1.
      disabled: true

    - label:
          "TH sends a StoreScene command to DUT with the GroupID field set to
          0x0001 and the SceneID field set to 0x01."
      PICS: S.S.C04.Rsp
      verification: |
          DUT sends a StoreSceneResponse command to TH with the Status field set to 0x00 (SUCCESS), the GroupID field set to 0x0001 and the SceneID field set to 0x01.
      disabled: true

    - label:
          "TH configures AC2 on DUT for all implemented application clusters
          supporting scenes."
      verification: |
          DUT is configured with AC2 which is different from AC1.
      disabled: true

    - label:
          "TH sends a RecallScene command to DUT with the GroupID field set to
          0x0001 and the SceneID field set to 0x01."
      PICS: S.S.C05.Rsp
      verification: |
          If a status response is expected, DUT sends a response to TH with the Status field equal to 0x00 (SUCCESS). DUT returns to AC1.
      disabled: true

    - label:
          "TH reads attributes SceneCount, CurrentScene, CurrentGroup and
          SceneValid from DUT."
      PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003
      verification: |
          DUT provides these attribute values: SceneCount attribute has the value (PIXIT.S.SceneTableEntriesOnFactoryNew + 1) CurrentScene attribute has the value 0x01 CurrentGroup attribute has the value G1 SceneValid attribute has the value TRUE.
      disabled: true

    - label: "By application specific means, remove the power source from DUT."
      verification: |
          DUT is powered off.
      disabled: true

    - label: "By application specific means, return the power source to DUT."
      verification: |
          DUT is powered on.
      disabled: true

    - label:
          "TH configures AC2 on DUT for all implemented application clusters
          supporting scenes."
      verification: |
          DUT is configured with AC2 which is different from AC1.
      disabled: true

    - label:
          "TH sends a RecallScene command to DUT with the GroupID field set to
          0x0001 and the SceneID field set to 0x01."
      PICS: S.S.C05.Rsp
      verification: |
          If a status response is expected, DUT sends a response to TH with the Status field equal to 0x00 (SUCCESS). DUT returns to AC1.
      disabled: true

    - label:
          "TH sends a ViewScene command to DUT with the GroupID field set to
          0x0001 and the SceneID field set to 0x01."
      PICS: S.S.C01.Rsp
      verification: |
          DUT sends a ViewSceneResponse command to TH with the Status field set to 0x00 (SUCCESS), the GroupID field set to 0x0001, the SceneID field set to 0x01, the TransitionTime field set to 0x0000 and a set of extension fields appropriate to AC1.
      disabled: true

    - label:
          "TH sends a GetSceneMembership command to DUT with the GroupID field
          set to 0x0001."
      PICS: S.S.C06.Rsp
      verification: |
          DUT sends a GetSceneMembershipResponse command to TH with the Status field set to 0x00 (SUCCESS), the Capacity field set to one of the values (SC0 - 1), 0xfe or null, the GroupID field set to 0x0001, the SceneCount field set to 0x01 and the SceneList field containing only the scene ID 0x01.
      disabled: true

    - label:
          "TH sends a RemoveAllScenes command to DUT with the GroupID field set
          to 0x0001."
      PICS: S.S.C03.Rsp
      verification: |
          DUT sends a RemoveAllScenesResponse command to TH with the Status field set to 0x00 (SUCCESS) and GroupID field set to 0x0001.
      disabled: true

    - label:
          "TH sends a GetSceneMembership command to DUT with the GroupID field
          set to 0x0001."
      PICS: S.S.C06.Rsp
      verification: |
          DUT sends a GetSceneMembershipResponse command to TH with the Status field set to 0x00 (SUCCESS), the Capacity field set to one of the values SC0, 0xfe or null, the GroupID field set to 0x0001 and the SceneCount field set to 0x00.
      disabled: true

    - label:
          "TH sends a AddScene command to DUT with the GroupID field set to
          0x0001, the SceneID field set to 0x01, the TransitionTime field set to
          0x0001 and a set of extension fields appropriate to AC1."
      PICS: S.S.C00.Rsp
      verification: |
          DUT sends a AddSceneResponse command to TH with the Status field set to 0x00 (SUCCESS), the GroupID field set to 0x0001 and the SceneID field set to 0x01.
      disabled: true

    - label:
          "TH sends a GetSceneMembership command to DUT with the GroupID field
          set to 0x0001."
      PICS: S.S.C06.Rsp
      verification: |
          DUT sends a GetSceneMembershipResponse command to TH with the Status field set to 0x00 (SUCCESS), the Capacity field set to one of the values (SC0 - 1), 0xfe or null, the GroupID field set to 0x0001, the SceneCount field set to 0x01 and the SceneList field containing only the scene ID 0x01.
      disabled: true

    - label:
          "TH sends a RemoveScene command to DUT with the GroupID field set to
          0x0001 and the SceneID field set to 0x01."
      PICS: S.S.C02.Rsp
      verification: |
          DUT sends a RemoveSceneResponse command to TH with the Status field set to 0x00 (SUCCESS), the GroupID field set to 0x0001 and the SceneID field set to 0x01.
      disabled: true

    - label:
          "TH sends a GetSceneMembership command to DUT with the GroupID field
          set to 0x0001."
      PICS: S.S.C06.Rsp
      verification: |
          DUT sends a GetSceneMembershipResponse command to TH with the Status field set to 0x00 (SUCCESS), the Capacity field set to one of the values SC0, 0xfe or null, the GroupID field set to 0x0001 and the SceneCount field set to 0x00.
      disabled: true

    - label:
          "TH configures AC2 on DUT for all implemented application clusters
          supporting scenes."
      verification: |
          DUT is configured with AC2 which is different from AC1.
      disabled: true

    - label:
          "TH sends a RecallScene command to DUT with the GroupID field set to
          0x0001 and the SceneID field set to 0x01."
      PICS: S.S.C05.Rsp
      verification: |
          If a status response is expected, DUT sends a response to TH with the Status field equal to 0x8b (NOT_FOUND).
      disabled: true

    - label:
          "TH configures AC1 on DUT for all implemented application clusters
          supporting scenes."
      verification: |
          DUT is configured with AC1.
      disabled: true

    - label:
          "TH sends a StoreScene command to DUT with the GroupID field set to
          0x0001 and the SceneID field set to 0x01."
      PICS: S.S.C04.Rsp
      verification: |
          DUT sends a StoreSceneResponse command to TH with the Status field set to 0x00 (SUCCESS), the GroupID field set to 0x0001 and the SceneID field set to 0x01.
      disabled: true

    - label:
          "TH configures AC2 on DUT for all implemented application clusters
          supporting scenes."
      verification: |
          DUT is configured with AC2 which is different to AC1.
      disabled: true

    - label:
          "TH sends a StoreScene command to DUT with the GroupID field set to
          0x0001 and the SceneID field set to 0x02."
      PICS: S.S.C04.Rsp
      verification: |
          DUT sends a StoreSceneResponse command to TH with the Status field set to 0x00 (SUCCESS) or 0x89 (INSUFFICIENT_SPACE). If SUCCESS, with the GroupID field set to 0x0001 and the SceneID field set to 0x02. If INSUFFICIENT_SPACE, the following steps SHALL NOT be executed.
      disabled: true

    - label:
          "TH sends a GetSceneMembership command to DUT with the GroupID field
          set to 0x0001."
      PICS: S.S.C06.Rsp
      verification: |
          DUT sends a GetSceneMembershipResponse command to TH with the Status field set to 0x00 (SUCCESS), the Capacity field set to one of the values (SC0 - 2), 0xfe or null, the GroupID field set to 0x0001, the SceneCount field set to 0x02 and the SceneList field containing the scene IDs 0x01 and 0x02.
      disabled: true

    - label:
          "If capacity allows, TH sends a AddGroup command to DUT with the
          GroupID field set to 0x0002."
      PICS: G.S.C00.Rsp
      verification: |
          DUT sends a AddGroupResponse command to TH with the Status field set to 0x00 (SUCCESS) and the GroupID field set to 0x0002.
      disabled: true

    - label:
          "TH sends a RemoveAllScenes command to DUT with the GroupID field set
          to 0x0002."
      PICS: S.S.C03.Rsp
      verification: |
          DUT sends a RemoveAllScenesResponse command to TH with the Status field set to 0x00 (SUCCESS) and GroupID field set to 0x0002.
      disabled: true

    - label:
          "TH sends a GetSceneMembership command to DUT with the GroupID field
          set to 0x0002."
      PICS: S.S.C06.Rsp
      verification: |
          DUT sends a GetSceneMembershipResponse command to TH with the Status field set to 0x00 (SUCCESS), the Capacity field set to the value SC1, the GroupID field set to 0x0002 and the SceneCount field set to 0x00.
      disabled: true

    - label:
          "TH configures AC3 on DUT for all implemented application clusters
          supporting scenes."
      verification: |
          DUT is configured with AC3 which is different to both AC1 and AC2.
      disabled: true

    - label:
          "TH sends a StoreScene command to DUT with the GroupID field set to
          0x0002 and the SceneID field set to 0x03."
      PICS: S.S.C04.Rsp
      verification: |
          DUT sends a StoreSceneResponse command to TH with the Status field set to 0x00 (SUCCESS) or 0x89 (INSUFFICIENT_SPACE). If SUCCESS, with the GroupID field set to 0x0002 and the SceneID field set to 0x03. IF INSUFFICIENT_SPACE, the following steps SHALL NOT be executed.
      disabled: true

    - label:
          "TH sends a GetSceneMembership command to DUT with the GroupID field
          set to 0x0002."
      PICS: S.S.C06.Rsp
      verification: |
          DUT sends a GetSceneMembershipResponse command to TH with the Status field set to 0x00 (SUCCESS), the Capacity field set to one of the values (SC1 - 3), 0xfe or null, the GroupID field set to 0x0002, the SceneCount field set to 0x01 and the SceneList field containing only the scene ID 0x03.
      disabled: true
