# 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

PICS:
    - S.S

config:
    nodeId: 0x12344321
    cluster: "Basic Information"
    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
