# 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: 51.2.1. [TC-DGWIFI-2.1] Attributes with server as DUT

PICS:
    - DGWIFI.S.A
    - DGWIFI.S

config:
    nodeId: 0x12344321
    cluster: "WiFi Network Diagnostics"
    endpoint: 0

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

    - label: "TH reads BSSID attribute from DUT"
      PICS: DGWIFI.S.A0000
      command: "readAttribute"
      attribute: "bssid"
      response:
          constraints:
              type: octet_string

    #issue #13645
    - label: "Reads SecurityType attribute constraints"
      PICS: DGWIFI.S.A0001
      command: "readAttribute"
      attribute: "SecurityType"
      response:
          constraints:
              type: enum8

    - label: "Reads WiFiVersion attribute constraints"
      PICS: DGWIFI.S.A0002
      command: "readAttribute"
      attribute: "WiFiVersion"
      response:
          constraints:
              type: enum8
              minValue: 0
              maxValue: 5

    - label: "Reads ChannelNumber attribute constraints"
      PICS: DGWIFI.S.A0003
      command: "readAttribute"
      attribute: "ChannelNumber"
      response:
          constraints:
              type: int16u
              minValue: 0
              maxValue: 65535

    - label: "Reads RSSI attribute constraints"
      PICS: DGWIFI.S.A0004
      command: "readAttribute"
      attribute: "rssi"
      response:
          constraints:
              type: int8s
              minValue: -120
              maxValue: 0

    - label: "Reads BeaconLostCount attribute constraints"
      PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.A0005
      command: "readAttribute"
      attribute: "BeaconLostCount"
      response:
          constraints:
              type: int32u
              minValue: 0x0
              maxValue: 0xFFFFFFFF

    - label: "Reads BeaconRxCount attribute constraints"
      PICS: DGWIFI.S.A0006
      command: "readAttribute"
      attribute: "BeaconRxCount"
      response:
          constraints:
              type: int32u
              minValue: 0x0
              maxValue: 0xFFFFFFFF

    - label: "Reads PacketMulticastRxCount attribute constraints"
      PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.A0007
      command: "readAttribute"
      attribute: "PacketMulticastRxCount"
      response:
          constraints:
              type: int32u
              minValue: 0x0
              maxValue: 0xFFFFFFFF

    - label: "Reads PacketMulticastTxCount attribute constraints"
      PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.A0008
      command: "readAttribute"
      attribute: "PacketMulticastTxCount"
      response:
          constraints:
              type: int32u
              minValue: 0x0
              maxValue: 0xFFFFFFFF

    - label: "Reads PacketUnicastRxCount attribute constraints"
      PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.A0009
      command: "readAttribute"
      attribute: "PacketUnicastRxCount"
      response:
          constraints:
              type: int32u
              minValue: 0x0
              maxValue: 0xFFFFFFFF

    - label: "Reads PacketUnicastTxCount attribute constraints"
      PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.A000a
      command: "readAttribute"
      attribute: "PacketUnicastTxCount"
      response:
          constraints:
              type: int32u
              minValue: 0x0
              maxValue: 0xFFFFFFFF

    - label: "Reads CurrentMaxRate attribute constraints"
      PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.A000b
      command: "readAttribute"
      attribute: "CurrentMaxRate"
      response:
          constraints:
              type: int64u

    - label: "Reads OverrunCount attribute constraints"
      PICS: PICS_SKIP_SAMPLE_APP && DGWIFI.S.A000c
      command: "readAttribute"
      attribute: "OverrunCount"
      response:
          constraints:
              type: int64u
