# 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:
    12.1.1. [TC-BINFO-1.1] Global Attributes for Basic Information Cluster
    [DUT-Server]

PICS:
    - BINFO.S

config:
    nodeId: 0x12344321
    cluster: "Basic Information"
    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 the ClusterRevision from DUT"
      PICS: BINFO.S.Afffd
      command: "readAttribute"
      attribute: "ClusterRevision"
      response:
          value: 2
          constraints:
              type: int16u

    - label: "TH reads the FeatureMap from DUT"
      PICS: BINFO.S.Afffc
      command: "readAttribute"
      attribute: "FeatureMap"
      response:
          value: 0
          constraints:
              type: bitmap32

    - label: "TH reads AttributeList from DUT"
      PICS: BINFO.S.Afffb
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains:
                  [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      19,
                      65528,
                      65529,
                      65530,
                      65531,
                      65532,
                      65533,
                  ]

    - label: "TH reads optional attribute(ManufacturingDate) in attributeList"
      PICS: BINFO.S.A000b && BINFO.S.Afffb
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [11]

    - label: "TH reads optional attribute(PartNumber) in attributeList"
      PICS: BINFO.S.A000c && BINFO.S.Afffb
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [12]

    - label: "TH reads optional attribute(ProductURL) in attributeList"
      PICS: BINFO.S.A000d && BINFO.S.Afffb
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [13]

    - label: "TH reads optional attribute(ProductLabel) in attributeList"
      PICS: BINFO.S.A000e && BINFO.S.Afffb
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [14]

    - label: "TH reads optional attribute(SerialNumber) in attributeList"
      PICS: BINFO.S.A000f && BINFO.S.Afffb
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [15]

    - label: "TH reads optional attribute(LocalConfigDisabled) in attributeList"
      PICS: BINFO.S.A0010 && BINFO.S.Afffb
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [16]

    - label: "TH reads optional attribute(Reachable) in attributeList"
      PICS: BINFO.S.A0011 && BINFO.S.Afffb
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [17]

    - label: "TH reads optional attribute(UniqueID) in attributeList"
      PICS: BINFO.S.A0012 && BINFO.S.Afffb
      command: "readAttribute"
      attribute: "AttributeList"
      response:
          constraints:
              type: list
              contains: [18]

    #List values range check support https://github.com/project-chip/connectedhomeip/issues/26570
    - label:
          "TH reads AttributeList attribute from DUT. 1.The list SHALL NOT
          contain any additional values in the standard or scoped range:
          (0x0000_0000 - 0x0000_4FFF) and (0x0000_F000 - 0x0000_FFFE). 2.The
          list MAY contain values in the Manufacturer Extensible Identifier
          (MEI) range: (0xXXXX_0000 - 0xXXXX_4FFF), where XXXX is the allowed
          MEI range (0x0001 - 0xFFF1), these values SHALL be ignored. 3.The list
          SHALL NOT contain any values in the Test Vendor or invalid range:
          (0x0000_5000 - 0x0000_EFFF and 0x0000_FFFF), (0xXXXX_5000 -
          0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the
          allowed MEI range (0x0001 - 0xFFF1)"
      verification: |
          ./chip-tool  basicinformation read attribute-list 1 0

          Verify " AttributeList " on the TH(Chip-tool) Log:
          Below is the example value which is observed in the RPI platform the value may be differ based on the dut implementation.

          [1676283398.909919][6374:6376] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_FFFB DataVersion: 1528198083
          [1676283398.910037][6374:6376] CHIP:TOO:   AttributeList: 26 entries
          [1676283398.910060][6374:6376] CHIP:TOO:     [1]: 0
          [1676283398.910075][6374:6376] CHIP:TOO:     [2]: 1
          [1676283398.910088][6374:6376] CHIP:TOO:     [3]: 2
          [1676283398.910101][6374:6376] CHIP:TOO:     [4]: 3
          [1676283398.910116][6374:6376] CHIP:TOO:     [5]: 4
          [1676283398.910132][6374:6376] CHIP:TOO:     [6]: 5
          [1676283398.910147][6374:6376] CHIP:TOO:     [7]: 6
          [1676283398.910163][6374:6376] CHIP:TOO:     [8]: 7
          [1676283398.910178][6374:6376] CHIP:TOO:     [9]: 8
          [1676283398.910194][6374:6376] CHIP:TOO:     [10]: 9
          [1676283398.910209][6374:6376] CHIP:TOO:     [11]: 10
          [1676283398.910224][6374:6376] CHIP:TOO:     [12]: 11
          [1676283398.910239][6374:6376] CHIP:TOO:     [13]: 12
          [1676283398.910254][6374:6376] CHIP:TOO:     [14]: 13
          [1676283398.910269][6374:6376] CHIP:TOO:     [15]: 14
          [1676283398.910284][6374:6376] CHIP:TOO:     [16]: 15
          [1676283398.910299][6374:6376] CHIP:TOO:     [17]: 16
          [1676283398.910313][6374:6376] CHIP:TOO:     [18]: 17
          [1676283398.910328][6374:6376] CHIP:TOO:     [19]: 18
          [1676283398.910343][6374:6376] CHIP:TOO:     [20]: 19
          [1676283398.910358][6374:6376] CHIP:TOO:     [21]: 65528
          [1676283398.910373][6374:6376] CHIP:TOO:     [22]: 65529
          [1676283398.910389][6374:6376] CHIP:TOO:     [23]: 65530
          [1676283398.910404][6374:6376] CHIP:TOO:     [24]: 65531
          [1676283398.910419][6374:6376] CHIP:TOO:     [25]: 65532
          [1676283398.910435][6374:6376] CHIP:TOO:     [26]: 65533
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && BINFO.S.Afffb
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label: "TH1 reads EventList from DUT"
      PICS:
          " BINFO.S.Afffa && !BINFO.S.E00 && !BINFO.S.E01 && !BINFO.S.E02 &&
          !BINFO.S.A0011 "
      command: "readAttribute"
      attribute: "EventList"
      response:
          value: []
          constraints:
              type: list

    - label: "Read BINFO.S.E00(StartUp) event in EventList"
      PICS: BINFO.S.E00 && BINFO.S.Afffa
      command: "readAttribute"
      attribute: "EventList"
      response:
          constraints:
              type: list
              contains: [0]

    - label: "Read BINFO.S.E01(ShutDown) event in EventList"
      PICS: BINFO.S.E01 && BINFO.S.Afffa
      command: "readAttribute"
      attribute: "EventList"
      response:
          constraints:
              type: list
              contains: [1]

    - label: "Read BINFO.S.E02(Leave) event in EventList"
      PICS: BINFO.S.E02 && BINFO.S.Afffa
      command: "readAttribute"
      attribute: "EventList"
      response:
          constraints:
              type: list
              contains: [2]

    - label: "Read (ReachableChanged) event in EventList"
      PICS: BINFO.S.A0011 && BINFO.S.Afffa
      command: "readAttribute"
      attribute: "EventList"
      response:
          constraints:
              type: list
              contains: [3]

    - label:
          "TH reads EventList attribute from DUT. 1.The list SHALL NOT contain
          any additional values in the standard or scoped range: (0x0000_0000 -
          0x0000_00FF). 2.The list MAY contain values in the Manufacturer
          Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where
          XXXX is the allowed MEI range (0x0001 - 0xFFF1), these values SHALL be
          ignored. 3.The list SHALL NOT contain any values in the Test Vendor or
          invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 -
          0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the
          allowed MEI range (0x0001 - 0xFFF1)"
      verification: |
          ./chip-tool  basicinformation read event-list 1

          Verify "EventList " consists the list of supported events (0, 1, 2)on the TH(Chip-tool) Log:

          [1676291718.628403][27706:27708] CHIP:DMG: }
          [1676291718.628931][27706:27708] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_FFFA DataVersion: 1838069172
          [1676291718.628983][27706:27708] CHIP:TOO:   EventList: 3 entries
          [1676291718.629003][27706:27708] CHIP:TOO:     [1]: 0
          [1676291718.629015][27706:27708] CHIP:TOO:     [2]: 1
          [1676291718.629026][27706:27708] CHIP:TOO:     [3]: 2
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && BINFO.S.Afffa
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "TH reads AcceptedCommandList attribute from DUT. 1.The list MAY
          contain values in the Manufacturer Extensible Identifier (MEI) range:
          (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range
          (0x0001 - 0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT
          contain any values in the Test Vendor or invalid range: (0x0000_0100 -
          0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 -
          0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1)"
      verification: |
          ./chip-tool  basicinformation read accepted-command-list 1 0

          Verify "AcceptedCommandList " consists the list of supported commands, Also verify that the DUT response with an empty list (0 entries) if there is no accepted command on the TH(Chip-tool) Log:

          [1651214820.355561][2695:2700] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_FFF9 DataVersion: 158558310
          [1651214820.355673][2695:2700] CHIP:TOO:   AcceptedCommandList: 0 entries
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && BINFO.S.Afff9
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"

    - label:
          "TH reads GeneratedCommandList attribute from DUT. 1.The list MAY
          contain values in the Manufacturer Extensible Identifier (MEI) range:
          (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range
          (0x0001 - 0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT
          contain any values in the Test Vendor or invalid range: (0x0000_0100 -
          0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 -
          0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1)"
      verification: |
          ./chip-tool  basicinformation read generated-command-list 1 0

          Verify " GeneratedCommandList " consists the list of supported commands, Also verify that the DUT response with an empty list (0 entries) if there is no generated command on the TH(Chip-tool) Log:

          [1651214861.208575][2702:2707] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_FFF8 DataVersion: 158558310
          [1651214861.208682][2702:2707] CHIP:TOO:   GeneratedCommandList: 0 entries
      cluster: "LogCommands"
      command: "UserPrompt"
      PICS: PICS_USER_PROMPT && BINFO.S.Afff8
      arguments:
          values:
              - name: "message"
                value: "Please enter 'y' for success"
              - name: "expectedValue"
                value: "y"
