# 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: Certification Tests

Test Plans:
    Bridge:
        shortname: BR
        tests:
            1:
                - name: Basics of Bridging
            2:
                - name: Changing the set of Bridged Devices
            3:
                - name: Changing names

    Secure Channel:
        shortname: SC
        tests:
            1:
                - name: MRP Retransmission Messaging
                - name: MRP MAX Message Size
                - name: MRP Message Flows
                - name: MRP max number of failed attempts verification
                - name: MRP message counter and duplicate messaging verification
            2:
                - name: PASE Session Establishment
                - name: PASE Bidirectional Connection Session Establishment
            3:
                - name: CASE Session Establishment
                - name: CASE Session Resumption
            4:
                - name: Commissionable Node Discovery - Commissionee Case
                - name: Commissionable Node Discovery - Commissioner Case
                - name: Operational Discovery - Node
                - name: Operational Discovery - Controller
                - name: Operational Discovery - Thread Node
                - name: Operational Discovery - Thread Controller
                - name: Commissioner Discovery - Commissioner
                - name: Commissioner Discovery - Commissionee

    Interaction Data Model:
        shortname: IDM
        tests:
            1:
                - name: Invoke Request Action to DUT
                - name: Invoke Response Action from DUT
            2:
                - name: ReadRequestMessage to DUT test cases

    Multiple Administrators:
        shortname: MA
        tests:
            1:
                - name: Administrator Behavior
                - name: Node Behavior
                - name: Commissioning window handling (negative test)

    Device Discovery:
        shortname: DD
        tests:
            1:
                - name: QR Code Onboarding Payload Verification
                - name: Manual Pairing Code Payload Verification
                - name: NFC Onboarding Payload Verification
                - name: Concatenation - QR Code Onboarding Payload Verification
                - name: NFC Rules of advertisement and Onboarding
                - name: QR Code Format and Label
                - name: Setup Code Format and Label
                - name:
                      QR Code Onboarding Payload Verification [DUT - Controller]
                - name:
                      Manual Pairing Code Payload Verification [DUT -
                      Controller]
                - name: NFC Onboarding Payload Verification [DUT - Controller]
                - name:
                      Concatenation - QR Code Onboarding Payload Verification
                      [DUT - Controller]
            2:
                - name: Announcement by device verification
                - name: Discovery by commissioner verification
            3:
                - name: Commissioning Flow - Concurrent
                - name: Commissioning Flow - Non-concurrent
                - name: User Directed Commissioning - Commissionee
                - name: User Directed Commissioning - Commissioner
            4:
                - name: Operational Certificate Authority Verification

    Device Management:
        shortname: DM
        tests:
            1:
                - name: Basic Cluster Server Attributes
                - name: Basic Cluster Events
                - name: Basic Cluster Server Attributes [DUT - Controller]
            2:
                - name: Operational Credential Commands
                - name: Operational Credential Attributes
            3:
                - name: Network Commissioning Attributes
                - name: Network Commissioning Commands
                - name: Network Commissioning Commands [DUT - Controller]

    Binary Input:
        shortname: BI
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT
                - name: Primary functionality with server as DUT

    Color Control:
        shortname: CC
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT
            3:
                - name: Hue MoveTo functionality with server as DUT
                - name: Hue Move functionality with server as DUT
                - name: Hue Step functionality with server as DUT
            4:
                - name: Saturation MoveTo functionality with server as DUT
                - name: Saturation Move functionality with server as DUT
                - name: Saturation Step functionality with server as DUT
                - name: MoveToHueAndSaturation functionality with server as DUT
            5:
                - name: Color MoveTo functionality with server as DUT
                - name: Color Move functionality with server as DUT
                - name: Color Step functionality with server as DUT
            6:
                - name:
                      Color Temporature MoveTo functionality with server as DUT
                - name: Color Temporature Move functionality with server as DUT
                - name: Color Temporature Step functionality with server as DUT
            7:
                - name: Enhanced MoveTo functionality with server as DUT
                - name: Enhanced Move functionality with server as DUT
                - name: Enhanced Step functionality with server as DUT
                - name:
                      MoveToEnhancedHueAndSaturation functionality with server
                      as DUT
            8:
                - name: Stop Move Step functionality with server as DUT

    Electrical Measurement:
        shortname: EMR
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT
                - name: Primary functionality with server as DUT

    Flow Measurement:
        shortname: FLW
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT
                - name: Primary functionality with server as DUT

    Level Control:
        shortname: LVL
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: MoveToLevel Verification (DUT as Server)
            3:
                - name: Move Verification (DUT as Server)
            4:
                - name: Step Verification (DUT as Server)
            5:
                - name: Stop Verification (DUT as Server)

    Media Control:
        shortname: MC
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Low Power Mode Verification (DUT as Server)
            3:
                - name: Navigation Keycode Verification
                - name: Location Keys Verification
                - name: Number Keys Verification
                - name: Press And Hold Key Press Verification
                - name: Catalog List Verification
                - name: Current App Verification
                - name: Launch Application Verification
                - name: Input List Verification
                - name: Select Input  Verification
                - name: Show and Hide Input Status Verification
                - name: Rename Input Verification
            4:
                - name: Wake-On LAN Verification
            5:
                - name: List TV Channels Verification
                - name: Change Channel by Number Verification
                - name: Skip Channel Verification

    Occupancy Sensing:
        shortname: OCC
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT

    OnOff:
        shortname: OO
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT
                - name: Primary functionality with server as DUT
                - name: Secondary functionality with server as DUT

    Pressure Measurement:
        shortname: PRS
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT

    Pump Configuration Control:
        shortname: PCC
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT

    Relative Humidity Measurement:
        shortname: RH
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT
                - name: Primary functionality with server as DUT

    Temperature Measurement:
        shortname: TM
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT
                - name: Primary functionality with server as DUT

    Window Covering:
        shortname: WNCV
        tests:
            1:
                - name: Global attributes with server as DUT
            2:
                - name: Attributes with server as DUT
                - name: ConfigStatus Attribute with server as DUT
                - name: Mode Attribute with server as DUT
                - name: Type Attribute with server as DUT
                - name: EndProductType Attribute with server as DUT
            3:
                - name:
                      UpOrOpen Command & Report Verification with server as DUT
                - name:
                      DownOrClose Command & Report Verification with server as
                      DUT
                - name: StopMotion Verification with server as DUT
                - name: UpOrOpen Long-Run Verification with server as DUT
                - name: DownOrClose Long-Run Verification with server as DUT
            4:
                - name:
                      GoToLiftPercentage Long-Run Verification with server as
                      DUT
                - name:
                      GoToTiltPercentage Long-Run Verification with server as
                      DUT
                - name:
                      GoToLiftPercentage Limits Verification with server as DUT
                - name:
                      GoToTiltPercentage Limits Verification with server as DUT
