# 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.5. [TC-APPLAUNCHER-3.8] Stop 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: "Stop an app with the provided application ID"
      PICS: APPLAUNCHER.S.C01.Rsp
      command: "StopApp"
      arguments:
          values:
              - name: "application"
                value:
                    {
                        catalogVendorId: catalogVendorId,
                        applicationId: applicationId,
                    }
      response:
          values:
              - name: "status"
                value: 0

    #Endpoint configuration is not supported in YAML
    - label: "Reads the Status attribute"
      PICS: PICS_USER_PROMPT
      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-tv-casting-app applicationbasic read status 1 3

          On TH verify that the Status attribute  value as 0
          [1658208937.049446][2428:2433] CHIP:DMG:         InteractionModelRevision = 1
          [1658208937.049483][2428:2433] CHIP:DMG: }
          [1658208937.049690][2428:2433] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_050D Attribute 0x0000_0005 DataVersion: 3850684771
          [1658208937.049809][2428:2433] CHIP:TOO:   Status: 0
          [1658208937.049922][2428:2433] CHIP:EM: Sending Standalone Ack for MessageCounter:75774840 on exchange 3041i
      cluster: "LogCommands"
      command: "UserPrompt"
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' after success"
              - name: "expectedValue"
                value: "y"
