# 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: 3.3.1. [TC-TMP-3.1] Attributes with client as DUT

PICS:
    - TMP.C
    - TMP.C.AM-READ
    - TMP.C.AO-READ
    - TMP.C.AM-WRITE
    - TMP.C.AO-WRITE

config:
    nodeId: 0x12344321
    cluster: "Basic"
    endpoint: 0

tests:
    - label:
          "DUT reads all supported mandatory attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool temperaturemeasurement read measured-value 1 1

          Verify DUT receives measured-value attribute response on the TH(all-clusters-app) Log:

          1650880412.037722][15013:15013] CHIP:DMG: ReadRequestMessage =
          [1650880412.037749][15013:15013] CHIP:DMG: {
          [1650880412.037772][15013:15013] CHIP:DMG:         AttributePathIBs =
          [1650880412.037799][15013:15013] CHIP:DMG:         [
          [1650880412.037823][15013:15013] CHIP:DMG:                 AttributePathIB =
          [1650880412.037876][15013:15013] CHIP:DMG:                 {
          [1650880412.037908][15013:15013] CHIP:DMG:                         Endpoint = 0x1,
          [1650880412.037938][15013:15013] CHIP:DMG:                         Cluster = 0x402,
          [1650880412.037984][15013:15013] CHIP:DMG:                         Attribute = 0x0000_0000,
          [1650880412.038023][15013:15013] CHIP:DMG:                 }
          [1650880412.038055][15013:15013] CHIP:DMG:
          [1650880412.038081][15013:15013] CHIP:DMG:         ],
          [1650880412.038110][15013:15013] CHIP:DMG:
          [1650880412.038137][15013:15013] CHIP:DMG:         isFabricFiltered = true,
          [1650880412.038162][15013:15013] CHIP:DMG:         InteractionModelRevision = 1
          [1650880412.038186][15013:15013] CHIP:DMG: },
          [1650880412.038259][15013:15013] CHIP:DMG: IM RH moving to [Generatin


          ./chip-tool temperaturemeasurement read max-measured-value 1 1

          Verify DUT receives max-measured-value  attribute response on the TH(all-clusters-app) Log:

          [1650880462.518114][15013:15013] CHIP:DMG: ReadRequestMessage =
          [1650880462.518149][15013:15013] CHIP:DMG: {
          [1650880462.518176][15013:15013] CHIP:DMG:         AttributePathIBs =
          [1650880462.518209][15013:15013] CHIP:DMG:         [
          [1650880462.518239][15013:15013] CHIP:DMG:                 AttributePathIB =
          [1650880462.518283][15013:15013] CHIP:DMG:                 {
          [1650880462.518321][15013:15013] CHIP:DMG:                         Endpoint = 0x1,
          [1650880462.518365][15013:15013] CHIP:DMG:                         Cluster = 0x402,
          [1650880462.518405][15013:15013] CHIP:DMG:                         Attribute = 0x0000_0002,
          [1650880462.518446][15013:15013] CHIP:DMG:                 }
          [1650880462.518483][15013:15013] CHIP:DMG:
          [1650880462.518557][15013:15013] CHIP:DMG:         ],
          [1650880462.518596][15013:15013] CHIP:DMG:
          [1650880462.518630][15013:15013] CHIP:DMG:         isFabricFiltered = true,
          [1650880462.518662][15013:15013] CHIP:DMG:         InteractionModelRevision = 1
          [1650880462.518690][15013:15013] CHIP:DMG: },


          ./chip-tool temperaturemeasurement read min-measured-value 1 1

          Verify DUT receives min-measured-value  attribute response on the TH(all-clusters-app) Log:

          [1650880507.409653][15013:15013] CHIP:DMG: ReadRequestMessage =
          [1650880507.409703][15013:15013] CHIP:DMG: {
          [1650880507.409727][15013:15013] CHIP:DMG:         AttributePathIBs =
          [1650880507.409753][15013:15013] CHIP:DMG:         [
          [1650880507.409778][15013:15013] CHIP:DMG:                 AttributePathIB =
          [1650880507.409809][15013:15013] CHIP:DMG:                 {
          [1650880507.409839][15013:15013] CHIP:DMG:                         Endpoint = 0x1,
          [1650880507.409874][15013:15013] CHIP:DMG:                         Cluster = 0x402,
          [1650880507.409907][15013:15013] CHIP:DMG:                         Attribute = 0x0000_0001,
          [1650880507.409936][15013:15013] CHIP:DMG:                 }
          [1650880507.409966][15013:15013] CHIP:DMG:
          [1650880507.409992][15013:15013] CHIP:DMG:         ],
          [1650880507.410021][15013:15013] CHIP:DMG:
          [1650880507.410048][15013:15013] CHIP:DMG:         isFabricFiltered = true,
          [1650880507.410073][15013:15013] CHIP:DMG:         InteractionModelRevision = 1
          [1650880507.410097][15013:15013] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads all supported optional attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool temperaturemeasurement read tolerance  1 1

          Verify DUT receives  tolerance attribute response on the TH(all-clusters-app) Log:

          [1658141616.808771][13946:13946] CHIP:IM: Received Read request
          [1658141616.808855][13946:13946] CHIP:DMG: ReadRequestMessage =
          [1658141616.808885][13946:13946] CHIP:DMG: {
          [1658141616.808909][13946:13946] CHIP:DMG:         AttributePathIBs =
          [1658141616.808942][13946:13946] CHIP:DMG:         [
          [1658141616.808969][13946:13946] CHIP:DMG:                 AttributePathIB =
          [1658141616.809001][13946:13946] CHIP:DMG:                 {
          [1658141616.809032][13946:13946] CHIP:DMG:                         Endpoint = 0x1,
          [1658141616.809068][13946:13946] CHIP:DMG:                         Cluster = 0x402,
          [1658141616.809104][13946:13946] CHIP:DMG:                         Attribute = 0x0000_0003,
          [1658141616.809138][13946:13946] CHIP:DMG:                 }
          [1658141616.809170][13946:13946] CHIP:DMG:
          [1658141616.809198][13946:13946] CHIP:DMG:         ],
          [1658141616.809230][13946:13946] CHIP:DMG:
          [1658141616.809259][13946:13946] CHIP:DMG:         isFabricFiltered = true,
          [1658141616.809288][13946:13946] CHIP:DMG:         InteractionModelRevision = 1
          [1658141616.809314][13946:13946] CHIP:DMG: },
          [1658141616.809417][13946:13946] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1658141616.809511][13946:13946] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
      disabled: true

    - label:
          "DUT writes a suitable value to all supported mandatory attributes on
          the TH one at a time in a manufacturer specific order"
      verification: |
          There is no writable mandatory attibute for this cluster
      disabled: true

    - label:
          "DUT writes a suitable value to all supported optional attributes on
          the TH one at a time in a manufacturer specific order"
      verification: |
          There is no writable Optional attibute for this cluster
      disabled: true

    - label:
          "Configure TH such that it implements mandatory and none of the
          optional attributes of the server-side of the cluster, and that it
          also reflects this in global attributes such as FeatureMap and
          AttributeList. Commission DUT to TH again"
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)
          To verify all below steps use all-clusters-minimal-app

           ./chip-tool temperaturemeasurement read measured-value 1 1
          Verify DUT receives measured-value attribute response on the TH(all-clusters-minimal-app) Log:
          1650880412.037722][15013:15013] CHIP:DMG: ReadRequestMessage =
          [1650880412.037749][15013:15013] CHIP:DMG: {
          [1650880412.037772][15013:15013] CHIP:DMG:         AttributePathIBs =
          [1650880412.037799][15013:15013] CHIP:DMG:         [
          [1650880412.037823][15013:15013] CHIP:DMG:                 AttributePathIB =
          [1650880412.037876][15013:15013] CHIP:DMG:                 {
          [1650880412.037908][15013:15013] CHIP:DMG:                         Endpoint = 0x1,
          [1650880412.037938][15013:15013] CHIP:DMG:                         Cluster = 0x402,
          [1650880412.037984][15013:15013] CHIP:DMG:                         Attribute = 0x0000_0000,
          [1650880412.038023][15013:15013] CHIP:DMG:                 }
          [1650880412.038055][15013:15013] CHIP:DMG:
          [1650880412.038081][15013:15013] CHIP:DMG:         ],
          [1650880412.038110][15013:15013] CHIP:DMG:
          [1650880412.038137][15013:15013] CHIP:DMG:         isFabricFiltered = true,
          [1650880412.038162][15013:15013] CHIP:DMG:         InteractionModelRevision = 1
          [1650880412.038186][15013:15013] CHIP:DMG: },
          [1650880412.038259][15013:15013] CHIP:DMG: IM RH moving to [Generatin


          ./chip-tool temperaturemeasurement read max-measured-value 1 1
          Verify DUT receives max-measured-value attribute response on the TH(all-clusters-minimal-app) Log:
          [1650880462.518114][15013:15013] CHIP:DMG: ReadRequestMessage =
          [1650880462.518149][15013:15013] CHIP:DMG: {
          [1650880462.518176][15013:15013] CHIP:DMG:         AttributePathIBs =
          [1650880462.518209][15013:15013] CHIP:DMG:         [
          [1650880462.518239][15013:15013] CHIP:DMG:                 AttributePathIB =
          [1650880462.518283][15013:15013] CHIP:DMG:                 {
          [1650880462.518321][15013:15013] CHIP:DMG:                         Endpoint = 0x1,
          [1650880462.518365][15013:15013] CHIP:DMG:                         Cluster = 0x402,
          [1650880462.518405][15013:15013] CHIP:DMG:                         Attribute = 0x0000_0002,
          [1650880462.518446][15013:15013] CHIP:DMG:                 }
          [1650880462.518483][15013:15013] CHIP:DMG:
          [1650880462.518557][15013:15013] CHIP:DMG:         ],
          [1650880462.518596][15013:15013] CHIP:DMG:
          [1650880462.518630][15013:15013] CHIP:DMG:         isFabricFiltered = true,
          [1650880462.518662][15013:15013] CHIP:DMG:         InteractionModelRevision = 1
          [1650880462.518690][15013:15013] CHIP:DMG: },


          ./chip-tool temperaturemeasurement read min-measured-value 1 1
          Verify DUT receives min-measured-value attribute response on the TH(all-clusters-minimal-app) Log:
          [1650880507.409653][15013:15013] CHIP:DMG: ReadRequestMessage =
          [1650880507.409703][15013:15013] CHIP:DMG: {
          [1650880507.409727][15013:15013] CHIP:DMG:         AttributePathIBs =
          [1650880507.409753][15013:15013] CHIP:DMG:         [
          [1650880507.409778][15013:15013] CHIP:DMG:                 AttributePathIB =
          [1650880507.409809][15013:15013] CHIP:DMG:                 {
          [1650880507.409839][15013:15013] CHIP:DMG:                         Endpoint = 0x1,
          [1650880507.409874][15013:15013] CHIP:DMG:                         Cluster = 0x402,
          [1650880507.409907][15013:15013] CHIP:DMG:                         Attribute = 0x0000_0001,
          [1650880507.409936][15013:15013] CHIP:DMG:                 }
          [1650880507.409966][15013:15013] CHIP:DMG:
          [1650880507.409992][15013:15013] CHIP:DMG:         ],
          [1650880507.410021][15013:15013] CHIP:DMG:
          [1650880507.410048][15013:15013] CHIP:DMG:         isFabricFiltered = true,
          [1650880507.410073][15013:15013] CHIP:DMG:         InteractionModelRevision = 1
          [1650880507.410097][15013:15013] CHIP:DMG: },"
      disabled: true

    - label:
          "DUT reads all supported optional attributes from TH one at a time in
          a manufacturer specific order"
      verification: |
          .Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          /chip-tool temperaturemeasurement read tolerance 1 1

          Verify DUT receives tolerence attribute response on the TH(all-clusters-minimal-app) Log:
           General error: 0x86 (UNSUPPORTED_ATTRIBUTE)
      disabled: true

    - label:
          "DUT writes a suitable value to all supported optional attributes on
          the TH one at a time in a manufacturer specific order"
      verification: |
          There is no writable mandatory attibute for this cluster
      disabled: true
