# 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: 19.4.7. [TC-APPLAUNCHER-3.9] Hide Application Verification

PICS:
    - APPLAUNCHER.S

config:
    nodeId: 0x12344321
    cluster: "Application Launcher"
    endpoint: 1
    catalogVendorId:
        type: int16u
        defaultValue: 123
    applicationId:
        type: char_string
        defaultValue: "exampleid"

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

    - label: "TH sends HideApp command to DUT"
      PICS: APPLAUNCHER.S.C02.Rsp
      command: "HideApp"
      arguments:
          values:
              - name: "application"
                value:
                    {
                        catalogVendorId: catalogVendorId,
                        applicationId: applicationId,
                    }

    #Expected status attribute response ACTIVE_HIDDEN or STOPPED 'OR' condition is not supported in YAML
    - label: "Reads the Status attribute"
      verification: |
          The TH commands for this test step can be invoked using chip-tool (when DUT is a commissionee) or tv-casting-app (when DUT is a commissioner):
          ./chip-tool applicationbasic read status 1 3
          ./chip-tool applicationbasic read status 1 3

          On TH verify that the Status attribute  value as 0
          [1658209002.942766][2442:2447] CHIP:DMG: }
          [1658209002.942976][2442:2447] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_050D Attribute 0x0000_0005 DataVersion: 3850684771
          [1658209002.943067][2442:2447] CHIP:TOO:   Status: 0
          [1658209002.943177][2442:2447] CHIP:EM: Sending Standalone Ack for MessageCounter:54939405 on exchange 63408i"
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT
      arguments:
          values:
              - name: "message"
                value: "Enter 'y' after success"
              - name: "expectedValue"
                value: "y"
