diff --git a/examples/darwin-framework-tool/templates/tests/tests.js b/examples/darwin-framework-tool/templates/tests/tests.js index 1355977f36cdf7..7da417d0de313b 100644 --- a/examples/darwin-framework-tool/templates/tests/tests.js +++ b/examples/darwin-framework-tool/templates/tests/tests.js @@ -78,6 +78,9 @@ function getTests() { // TODO: Test_TC_MC_3_9 does not work on Darwin for now. tests.disable('Test_TC_APPLAUNCHER_3_9'); + // TODO: Test_TC_BINFO_2_1 does not work on Darwin for now. + tests.disable('Test_TC_BINFO_2_1'); + return tests; } diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index 4d8b397123af95..bc9df3afa7b412 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -570,6 +570,9 @@ PICS: device?" id: TM.M.ManuallyControlled + - label: "Does the device implement the Tolerance attribute?" + id: A_TEMPERATURE_TOLERANCE + # Thermostat User Configuration cluster - label: "Does the device implement the TemperatureDisplayMode attribute?" id: TSUIC.S.A0000 @@ -601,7 +604,7 @@ PICS: - label: "Does the device implement the ResetWaterMarks command?" id: DGSW.S.C00 - # Thermostat cluster + # Thermostat cluster - label: "Does the device implement the OccupiedCoolingSetpoint attribute" id: A_OCCUPIEDCOOLINGSETPOINT @@ -639,26 +642,201 @@ PICS: - label: "Does the device implement the MinSetpointDeadBand attribute?" id: A_MINSETPOINTDEADBAND - - label: "Does the device implement the Tolerance attribute?" - id: A_TEMPERATURE_TOLERANCE + - label: "Does the device implement the LocalTemperature attribute?" + id: TSTAT.S.A0000 + + - label: "Does the device implement the OutdoorTemperature attribute?" + id: TSTAT.S.A0001 + + - label: "Does the device implement the Occupancy attribute?" + id: TSTAT.S.A0002 + + - label: "Does the device implement the AbsMinHeatSetpointLimit attribute?" + id: TSTAT.S.A0003 + + - label: "Does the device implement the AbsMaxHeatSetpointLimit attribute?" + id: TSTAT.S.A0004 + + - label: "Does the device implement the AbsMinCoolSetpointLimit attribute?" + id: TSTAT.S.A0005 + + - label: "Does the device implement the AbsMaxCoolSetpointLimit attribute?" + id: TSTAT.S.A0006 + + - label: "Does the device implement the PICoolingDemand attribute?" + id: TSTAT.S.A0007 + + - label: "Does the device implement the PIHeatingDemand attribute?" + id: TSTAT.S.A0008 + + - label: + "Does the device implement the HVACSystemTypeConfiguration attribute?" + id: TSTAT.S.A0009 + + - label: + "Does the device implement the LocalTemperatureCalibration attribute?" + id: TSTAT.S.A0010 + + - label: "Does the device implement the OccupiedCoolingSetpoint attribute?" + id: TSTAT.S.A0011 + + - label: "Does the device implement the OccupiedHeatingSetpoint attribute?" + id: TSTAT.S.A0012 + + - label: + "Does the device implement the UnoccupiedCoolingSetpoint attribute?" + id: TSTAT.S.A0013 + + - label: + "Does the device implement the UnoccupiedHeatingSetpoint attribute?" + id: TSTAT.S.A0014 + + - label: "Does the device implement the MinHeatSetpointLimit attribute?" + id: TSTAT.S.A0015 + + - label: "Does the device implement the MaxHeatSetpointLimit attribute?" + id: TSTAT.S.A0016 + + - label: "Does the device implement the MinCoolSetpointLimit attribute?" + id: TSTAT.S.A0017 + + - label: "Does the device implement the MaxCoolSetpointLimit attribute?" + id: TSTAT.S.A0018 + + - label: "Does the device implement the MinSetpointDeadBand attribute?" + id: TSTAT.S.A0019 + + - label: "Does the device implement the RemoteSensing attribute?" + id: TSTAT.S.A001a + + - label: + "Does the device implement the ControlSequenceOfOperation attribute?" + id: TSTAT.S.A001b + + - label: "Does the device implement the SystemMode attribute?" + id: TSTAT.S.A001c + + - label: "Does the device implement the AlarmMask attribute?" + id: TSTAT.S.A001d + + - label: "Does the device implement the ThermostatRunningMode attribute?" + id: TSTAT.S.A001e + + - label: "Does the device implement the StartOfWeek attribute?" + id: TSTAT.S.A0020 + + - label: + "Does the device implement the NumberOfWeeklyTransitions attribute?" + id: TSTAT.S.A0021 + + - label: "Does the device implement the NumberOfDailyTransitions attribute?" + id: TSTAT.S.A0022 + + - label: "Does the device implement the TemperatureSetpointHold attribute?" + id: TSTAT.S.A0023 + + - label: + "Does the device implement the TemperatureSetpointHoldDuration + attribute?" + id: TSTAT.S.A0024 + + - label: + "Does the device implement the ThermostatProgrammingOperationMode + attribute?" + id: TSTAT.S.A0025 + + - label: "Does the device implement the ThermostatRunningState attribute?" + id: TSTAT.S.A0029 + + - label: "Does the device implement the SetpointChangeSource attribute?" + id: TSTAT.S.A0030 + + - label: "Does the device implement the SetpointChangeAmount attribute?" + id: TSTAT.S.A0031 + + - label: + "Does the device implement the SetpointChangeSourceTimestamp + attribute?" + id: TSTAT.S.A0032 + + - label: "Does the device implement the OccupiedSetback attribute?" + id: TSTAT.S.A0034 + + - label: "Does the device implement the OccupiedSetbackMin attribute?" + id: TSTAT.S.A0035 + + - label: "Does the device implement the OccupiedSetbackMax attribute?" + id: TSTAT.S.A0036 + + - label: "Does the device implement the UnoccupiedSetback attribute?" + id: TSTAT.S.A0037 + + - label: "Does the device implement the UnoccupiedSetbackMin attribute?" + id: TSTAT.S.A0038 + + - label: "Does the device implement the UnoccupiedSetbackMax attribute?" + id: TSTAT.S.A0039 + + - label: "Does the device implement the EmergencyHeatDelta attribute?" + id: TSTAT.S.A003a + + - label: "Does the device implement the ACType attribute?" + id: TSTAT.S.A0040 + + - label: "Does the device implement the ACCapacity attribute?" + id: TSTAT.S.A0041 + + - label: "Does the device implement the ACRefrigerantType attribute?" + id: TSTAT.S.A0042 + + - label: "Does the device implement the ACCompressorType attribute?" + id: TSTAT.S.A0043 + + - label: "Does the device implement the ACErrorCode attribute?" + id: TSTAT.S.A0044 + + - label: "Does the device implement the ACLouverPosition attribute?" + id: TSTAT.S.A0045 + + - label: "Does the device implement the ACCoilTemperature attribute?" + id: TSTAT.S.A0046 + + - label: "Does the device implement the ACCapacityFormat attribute?" + id: TSTAT.S.A0047 + + #Thermostat commands + - label: "Does the device implement the SetpointRaiseLower command?" + id: TSTAT.S.C00.Rsp + + - label: "Does the device implement the SetWeeklySchedule command?" + id: TSTAT.S.C01.Rsp + + - label: "Does the device implement the GetWeeklySchedule command?" + id: TSTAT.S.C02.Rsp + + - label: "Does the device implement the ClearWeeklySchedule command?" + id: TSTAT.S.C03.Rsp + + - label: "Does the device implement the GetRelayStatusLog command?" + id: TSTAT.S.C04.Rsp - label: "Thermostat is capable of managing a heating device" - id: TSTAT_HEAT + id: TSTAT.S.F00 - label: "Thermostat is capable of managing a cooling device" - id: TSTAT_COOL + id: TSTAT.S.F01 - label: "Supports Occupied and Unoccupied setpoints" - id: TSTAT_OCC + id: TSTAT.S.F02 - label: "Supports a weekly schedule of setpoint transitions" - id: TSTAT_SCH + id: TSTAT.S.F03 - label: "Supports configurable setback (or span)" - id: TSTAT_SB + id: TSTAT.S.F04 - label: "Supports a System Mode of Auto" - id: TSTAT_AUTO + id: TSTAT.S.F05 #Client Commands - label: "Does the device implement sending the SetpointRaiseLower command?" diff --git a/src/app/tests/suites/certification/Test_TC_ALOGIN_1_12.yaml b/src/app/tests/suites/certification/Test_TC_ALOGIN_1_12.yaml index 5f9e3b1af91e6a..250ab154a943e9 100644 --- a/src/app/tests/suites/certification/Test_TC_ALOGIN_1_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_ALOGIN_1_12.yaml @@ -50,25 +50,25 @@ tests: command: "readAttribute" attribute: "AttributeList" response: - value: [65528, 65529, 65531, 65532, 65533] constraints: type: list + contains: [65528, 65529, 65531, 65532, 65533] - label: "Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0, 2, 3] constraints: type: list + contains: [0, 2, 3] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" response: - value: [1] constraints: type: list + contains: [1] #issue #11053 disabled steps below Global attributes missing from YAML framework - label: diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_1_3.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_1_3.yaml index 2e9638707c65c1..7014c54dec5cdd 100644 --- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_1_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_1_3.yaml @@ -60,17 +60,17 @@ tests: command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0, 1, 2] constraints: type: list + contains: [0, 1, 2] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" response: - value: [3] constraints: type: list + contains: [3] #issue #11053 disabled steps below Global attributes missing from YAML framework - label: diff --git a/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml index 4e2c8f2a4e9aa8..e9fda6db810f28 100644 --- a/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml @@ -29,96 +29,263 @@ tests: - name: "nodeId" value: nodeId - - label: "Query Data Model Revision" + - label: "TH reads Location from the DUT." + command: "readAttribute" + attribute: "Location" + response: + saveAs: CountryCode + + - label: "TH reads DataModelRevision from the DUT." PICS: BINFO.S.A0000 command: "readAttribute" attribute: "DataModelRevision" response: + saveAs: DataModelRevisionValue constraints: type: uint16 + minValue: 0 + maxValue: 65534 + + - label: "TH writes DataModelRevision from the DUT." + PICS: BINFO.S.A0000 + command: "writeAttribute" + attribute: "DataModelRevision" + arguments: + value: 4388 + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads DataModelRevision from the DUT." + PICS: BINFO.S.A0000 + command: "readAttribute" + attribute: "DataModelRevision" + response: + value: DataModelRevisionValue - - label: "Query Vendor Name" + - label: "TH reads VendorName from the DUT." PICS: BINFO.S.A0001 command: "readAttribute" attribute: "VendorName" response: + saveAs: VendorNameValue constraints: type: string maxLength: 32 - - label: "Query VendorID" + - label: "TH writes VendorName from the DUT." + PICS: BINFO.S.A0001 + command: "writeAttribute" + attribute: "VendorName" + arguments: + value: "sample" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads VendorName from the DUT." + PICS: BINFO.S.A0001 + command: "readAttribute" + attribute: "VendorName" + response: + value: VendorNameValue + + - label: "TH reads VendorID from the DUT." PICS: BINFO.S.A0002 command: "readAttribute" attribute: "VendorID" response: + saveAs: VendorIDValue constraints: type: uint16 + minValue: 1 + maxValue: 65521 + + - label: "TH writes VendorID from the DUT." + PICS: BINFO.S.A0002 + command: "writeAttribute" + attribute: "VendorID" + arguments: + value: 17 + response: + error: UNSUPPORTED_WRITE - - label: "Query Product Name" + - label: "TH reads VendorID from the DUT." + PICS: BINFO.S.A0002 + command: "readAttribute" + attribute: "VendorID" + response: + value: VendorIDValue + + - label: "TH reads ProductName from the DUT" PICS: BINFO.S.A0003 command: "readAttribute" attribute: "ProductName" response: + saveAs: ProductNameValue constraints: type: string maxLength: 32 - - label: "Query ProductID" + - label: "TH writes ProductName from the DUT." + PICS: BINFO.S.A0003 + command: "writeAttribute" + attribute: "ProductName" + arguments: + value: "newproduct" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads ProductName from the DUT" + PICS: BINFO.S.A0003 + command: "readAttribute" + attribute: "ProductName" + response: + value: ProductNameValue + + - label: "TH reads ProductID from the DUT." PICS: BINFO.S.A0004 command: "readAttribute" attribute: "ProductID" response: + saveAs: ProductIDValue constraints: type: uint16 + minValue: 1 + maxValue: 65534 + + - label: "TH writes ProductID from the DUT." + PICS: BINFO.S.A0004 + command: "writeAttribute" + attribute: "ProductID" + arguments: + value: 17697 + response: + error: UNSUPPORTED_WRITE - - label: "Query Node Label" + - label: "TH reads ProductID from the DUT." + PICS: BINFO.S.A0004 + command: "readAttribute" + attribute: "ProductID" + response: + value: ProductIDValue + + - label: "TH reads NodeLabel from the DUT" PICS: BINFO.S.A0005 command: "readAttribute" attribute: "NodeLabel" response: + saveAs: NodeLabelValue constraints: type: string maxLength: 32 - - label: "Query User Location" + - label: "TH writes NodeLabel from the DUT." + PICS: BINFO.S.A0005 + command: "writeAttribute" + attribute: "NodeLabel" + arguments: + value: "newnode" + + - label: "TH reads NodeLabel from the DUT" + PICS: BINFO.S.A0005 + command: "readAttribute" + attribute: "NodeLabel" + response: + value: "newnode" + + - label: "TH reads Location from the DUT." PICS: BINFO.S.A0006 command: "readAttribute" attribute: "Location" response: + value: CountryCode constraints: type: string maxLength: 16 - - label: "Query HardwareVersion" + - label: "TH write Location from the DUT" + PICS: BINFO.S.A0006 + command: "writeAttribute" + attribute: "Location" + arguments: + value: "in" + + - label: "TH reads Location from the DUT." + PICS: BINFO.S.A0006 + command: "readAttribute" + attribute: "Location" + response: + value: "in" + + - label: "TH reads HardwareVersion from the DUT" PICS: BINFO.S.A0007 command: "readAttribute" attribute: "HardwareVersion" response: + saveAs: HardwareVersionValue constraints: type: uint16 + minValue: 0 + maxValue: 65534 + + - label: "TH writes HardwareVersion from the DUT." + PICS: BINFO.S.A0007 + command: "writeAttribute" + attribute: "HardwareVersion" + arguments: + value: 17713 + response: + error: UNSUPPORTED_WRITE - - label: "Query HardwareVersionString" + - label: "TH reads HardwareVersion from the DUT" + PICS: BINFO.S.A0007 + command: "readAttribute" + attribute: "HardwareVersion" + response: + value: HardwareVersionValue + + - label: "TH reads HardwareVersionString from the DUT." PICS: BINFO.S.A0008 command: "readAttribute" attribute: "HardwareVersionString" response: + saveAs: HardwareVersionStringValue constraints: type: string minLength: 1 maxLength: 64 + - label: "TH writes HardwareVersionString from the DUT." + PICS: BINFO.S.A0008 + command: "writeAttribute" + attribute: "HardwareVersionString" + arguments: + value: "newhardwareversion" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads HardwareVersionString from the DUT." + PICS: BINFO.S.A0008 + command: "readAttribute" + attribute: "HardwareVersionString" + response: + value: HardwareVersionStringValue + + - label: "TH reads SoftwareVersion from the DUT" + PICS: BINFO.S.A0009 + command: "readAttribute" + attribute: "SoftwareVersion" + response: + saveAs: SoftwareVersionValue + constraints: + minValue: 0 + maxValue: 4294967294 + - label: - "TH reads SoftwareVersionString from the DUT and Verify it is of type - string and verify the format" - verification: | - ./chip-tool basic read software-version 1 0 - - [1654069233.033848][11164:11169] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0009 DataVersion: 2079473958 - [1654069233.033880][11164:11169] CHIP:TOO: SoftwareVersion: 1 - [1654069233.033902][11164:11169] CHIP:EM: Sending Standalone Ack for MessageCounter:3270959 on exchange 29106i + "Verify that the SoftwareVersion is not displayed to the end-user + through any device specific means (ex: screen, audio)" cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && BINFO.S.A000a + PICS: PICS_USER_PROMPT && BINFO.S.A0009 arguments: values: - name: "message" @@ -126,17 +293,62 @@ tests: - name: "expectedValue" value: "y" - - label: - "TH reads ManufacturingDate from the DUT and Verify it is of type - string and verify the format" - verification: | - ./chip-tool basic read manufacturing-date 1 0 + - label: "TH writes SoftwareVersion from the DUT." + PICS: BINFO.S.A0009 + command: "writeAttribute" + attribute: "SoftwareVersion" + arguments: + value: 33299 + response: + error: UNSUPPORTED_WRITE + - label: "TH reads SoftwareVersion from the DUT" + PICS: BINFO.S.A0009 + command: "readAttribute" + attribute: "SoftwareVersion" + response: + value: SoftwareVersionValue - [1640336849.202099][14335:14340] CHIP:DMG: - [1640336849.202186][14335:14340] CHIP:DMG: SuppressResponse = true, - [1640336849.202239][14335:14340] CHIP:DMG: } - [1640336849.202479][14335:14340] CHIP:TOO: Basic.ManufacturingDate response: 20210614123456ZZ + - label: "TH reads SoftwareVersionString from the DUT" + PICS: BINFO.S.A000a + command: "readAttribute" + attribute: "SoftwareVersionString" + response: + saveAs: SoftwareVersionStringValue + constraints: + minLength: 1 + maxLenght: 64 + + - label: "TH writes SoftwareVersionString from the DUT." + PICS: BINFO.S.A000a + command: "writeAttribute" + attribute: "SoftwareVersionString" + arguments: + value: "1.0" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads SoftwareVersionString from the DUT" + PICS: BINFO.S.A000a + command: "readAttribute" + attribute: "SoftwareVersionString" + response: + value: SoftwareVersionStringValue + + - label: "TH reads ManufacturingDate from the DUT." + PICS: BINFO.S.A000b + command: "readAttribute" + attribute: "ManufacturingDate" + response: + saveAs: ManufacturingDateValue + constraints: + type: string + minLength: 8 + maxLength: 16 + + - label: + "Verify if the first 8 characters specify date according to ISO 8601, + i.e, YYYYMMDD" cluster: "LogCommands" command: "UserPrompt" PICS: PICS_USER_PROMPT && BINFO.S.A000b @@ -147,26 +359,61 @@ tests: - name: "expectedValue" value: "y" - - label: "Query PartNumber" + - label: "TH writes ManufacturingDate from the DUT." + PICS: BINFO.S.A000b + command: "writeAttribute" + attribute: "ManufacturingDate" + arguments: + value: "20210814789452IN" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads ManufacturingDate from the DUT." + PICS: BINFO.S.A000b + command: "readAttribute" + attribute: "ManufacturingDate" + response: + value: ManufacturingDateValue + + - label: "TH reads PartNumber from the DUT" + PICS: BINFO.S.A000c && PART_NUM command: "readAttribute" attribute: "PartNumber" - PICS: BINFO.S.A000c response: + saveAs: PartNumberValue constraints: type: string maxLength: 32 - - label: - "TH reads ProductURL from the DUT and Verify it is of type string and - verify the format" - verification: | - ./chip-tool basic read product-url 1 0 + - label: "TH writes PartNumber from the DUT." + PICS: BINFO.S.A000c + command: "writeAttribute" + attribute: "PartNumber" + arguments: + value: "newpart" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads PartNumber from the DUT" + PICS: BINFO.S.A000c && PART_NUM + command: "readAttribute" + attribute: "PartNumber" + response: + value: PartNumberValue + - label: "TH reads ProductURL from the DUT" + PICS: BINFO.S.A000d + command: "readAttribute" + attribute: "ProductURL" + response: + saveAs: ProductURLValue + constraints: + type: string + maxLength: 256 - [1640337847.187590][14399:14404] CHIP:DMG: - [1640337847.187633][14399:14404] CHIP:DMG: SuppressResponse = true, - [1640337847.187676][14399:14404] CHIP:DMG: } - [1640337847.187868][14399:14404] CHIP:TOO: Basic.ProductURL response: + - label: + "Verify that it specifies a link to a specific web page, Verify that + it follows the syntax rules specified in RFC 3986." cluster: "LogCommands" command: "UserPrompt" PICS: PICS_USER_PROMPT && BINFO.S.A000d @@ -177,45 +424,187 @@ tests: - name: "expectedValue" value: "y" - - label: "Query ProductLabel" + - label: "TH writes ProductURL from the DUT." + PICS: BINFO.S.A000d + command: "writeAttribute" + attribute: "ProductURL" + arguments: + value: "https://www.example.com" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads ProductURL from the DUT" + PICS: BINFO.S.A000d + command: "readAttribute" + attribute: "ProductURL" + response: + value: ProductURLValue + + - label: "TH reads ProductLabel from the DUT." PICS: BINFO.S.A000e command: "readAttribute" attribute: "ProductLabel" response: + saveAs: ProductLabelValue constraints: type: string maxLength: 64 - - label: "Query SerialNumber" - PICS: BINFO.S.A000f + - label: + "Verify that it does not include the name of the vendor as defined + within the VendorName attribute" + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && BINFO.S.A000e + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: "TH writes ProductLabel from the DUT." + PICS: BINFO.S.A000e + command: "writeAttribute" + attribute: "ProductLabel" + arguments: + value: "newproductlabel" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads ProductLabel from the DUT." + PICS: BINFO.S.A000e + command: "readAttribute" + attribute: "ProductLabel" + response: + value: ProductLabelValue + + - label: "TH reads SerialNumber from the DUT." command: "readAttribute" attribute: "SerialNumber" response: + saveAs: SerialNumberValue constraints: type: string maxLength: 32 - - label: "Query LocalConfigDisabled" + - label: "TH writes SerialNumber from the DUT." + PICS: BINFO.S.A000f + command: "writeAttribute" + attribute: "SerialNumber" + arguments: + value: "newserialnumber" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads SerialNumber from the DUT." + PICS: BINFO.S.A000f + command: "readAttribute" + attribute: "SerialNumber" + response: + value: SerialNumberValue + + - label: "TH reads LocalConfigDisabled from the DUT." PICS: BINFO.S.A0010 command: "readAttribute" attribute: "LocalConfigDisabled" response: + value: false constraints: type: boolean - - label: "Query Reachable" + - label: "TH sets LocalConfigDisabled to True" + PICS: BINFO.S.A0010 + command: "writeAttribute" + attribute: "LocalConfigDisabled" + arguments: + value: true + + - label: "TH reads LocalConfigDisabled from the DUT." + PICS: BINFO.S.A0010 + command: "readAttribute" + attribute: "LocalConfigDisabled" + response: + value: true + + - label: "TH reads Reachable from the DUT." PICS: BINFO.S.A0011 command: "readAttribute" attribute: "Reachable" response: + value: true constraints: type: boolean - - label: "Query UniqueID" + - label: + "TH sends Write request message to DUT to change value of Reachable to + false" + PICS: BINFO.S.A0011 + command: "writeAttribute" + attribute: "Reachable" + arguments: + value: false + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads UniqueID from the DUT." PICS: BINFO.S.A0012 command: "readAttribute" attribute: "UniqueID" response: + saveAs: UniqueIDValue constraints: type: string maxLength: 32 + + - label: "TH writes UniqueID from the DUT." + PICS: BINFO.S.A0012 + command: "writeAttribute" + attribute: "UniqueID" + arguments: + value: "newid" + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads UniqueID from the DUT." + PICS: BINFO.S.A0012 + command: "readAttribute" + attribute: "UniqueID" + response: + value: UniqueIDValue + + - label: "TH reads CapabilityMinima attribute from the DUT." + PICS: BINFO.S.A0013 + command: "readAttribute" + attribute: "CapabilityMinima" + response: + saveAs: CapabilityMinimaValue + + - label: + "Step 56 is implicitly validating the attribute(CapabilityMinima) + constraints, as long as the payload is being parsed successfully" + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT && BINFO.S.A0013 + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: "TH writes CapabilityMinima from the DUT." + PICS: BINFO.S.A0013 + command: "writeAttribute" + attribute: "CapabilityMinima" + arguments: + value: { "CaseSessionsPerFabric": 4, "SubscriptionsPerFabric": 4 } + response: + error: UNSUPPORTED_WRITE + + - label: "TH reads CapabilityMinima attribute from the DUT." + PICS: BINFO.S.A0013 + command: "readAttribute" + attribute: "CapabilityMinima" + response: + value: CapabilityMinimaValue diff --git a/src/app/tests/suites/certification/Test_TC_CC_2_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_2_1.yaml index dfacc37a3217fe..91da2d93193ab1 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_2_1.yaml @@ -28,33 +28,32 @@ tests: - name: "nodeId" value: nodeId - - label: "Validate constraints of attribute: CurrentHue" - PICS: CC.S.A0000 + - label: "TH reads CurrentHue attribute from DUT" + PICS: CC.S.A0000 && CC.S.F00 command: "readAttribute" attribute: "CurrentHue" response: - value: 0 constraints: type: uint8 - - label: "Validate constraints of attribute: CurrentSaturation" - PICS: CC.S.A0001 + - label: "TH reads CurrentSaturation attribute from DUT" + PICS: CC.S.A0001 && CC.S.F00 command: "readAttribute" attribute: "CurrentSaturation" response: - value: 0 constraints: type: uint8 - - label: "Reads CurrentX attribute from DUT" - PICS: CC.S.A0003 + - label: "TH reads RemainingTime attribute from DUT" + PICS: CC.S.A0002 command: "readAttribute" - attribute: "CurrentX" + attribute: "RemainingTime" response: - value: 24939 + constraints: + type: uint16 - - label: "Validate constraints of attribute: CurrentX" - PICS: CC.S.A0003 + - label: "TH reads CurrentX attribute from DUT" + PICS: CC.S.A0003 && CC.S.F03 command: "readAttribute" attribute: "CurrentX" response: @@ -63,33 +62,37 @@ tests: minValue: 0 maxValue: 65279 - - label: "Reads CurrentY attribute from DUT" - PICS: CC.S.A0004 + - label: "TH reads CurrentY attribute from DUT" + PICS: CC.S.A0004 && CC.S.F04 command: "readAttribute" attribute: "CurrentY" response: - value: 24701 + constraints: + type: uint16 + minValue: 0 + maxValue: 65279 - - label: "Validate constraints of attribute: CurrentY" - PICS: CC.S.A0004 + - label: "TH reads DriftCompensation attribute from DUT" + PICS: CC.S.A0005 command: "readAttribute" - attribute: "CurrentY" + attribute: "DriftCompensation" response: constraints: - type: uint16 + type: enum8 minValue: 0 - maxValue: 65279 + maxValue: 4 - #issue #18104 - - label: "Reads ColorTemperatureMireds attribute from DUT" - PICS: PICS_SKIP_SAMPLE_APP + - label: "TH reads CompensationText attribute from DUT" + PICS: CC.S.A0005 command: "readAttribute" - attribute: "ColorTemperature" + attribute: "CompensationText" response: - value: 250 + constraints: + type: string + maxLength: 254 - - label: "Validate constraints of attribute: ColorTemperatureMireds" - PICS: CC.S.A0007 + - label: "TH reads ColorTemperatureMireds attribute from DUT" + PICS: CC.S.A0007 && CC.S.F04 command: "readAttribute" attribute: "ColorTemperature" response: @@ -98,15 +101,7 @@ tests: minValue: 0 maxValue: 65279 - #issue #18104 - - label: "Reads ColorMode attribute from DUT" - PICS: PICS_SKIP_SAMPLE_APP - command: "readAttribute" - attribute: "ColorMode" - response: - value: 1 - - - label: "Validate constraints of attribute: ColorMode" + - label: "TH reads ColorMode attribute from DUT" PICS: CC.S.A0008 command: "readAttribute" attribute: "ColorMode" @@ -116,111 +111,93 @@ tests: minValue: 0 maxValue: 2 - - label: "Validate constraints of attribute: Options" + - label: "TH reads Options attribute from DUT" PICS: CC.S.A000f command: "readAttribute" attribute: "Options" response: - value: 0 constraints: - type: map8 + type: bitmap8 + minValue: 0 + maxValue: 4 - - label: "Validate constraints of attribute: EnhancedCurrentHue" - PICS: CC.S.A4000 + - label: "TH reads EnhancedCurrentHue attribute from DUT" + PICS: CC.S.A4000 && CC.S.F01 command: "readAttribute" attribute: "EnhancedCurrentHue" response: - value: 0 constraints: type: uint16 - #issue #18104 - - label: "Validate constraints of attribute: EnhancedColorMode" - PICS: PICS_SKIP_SAMPLE_APP + - label: "TH reads EnhancedColorMode attribute from DUT" + PICS: CC.S.F02 && CC.S.A4001 command: "readAttribute" attribute: "EnhancedColorMode" response: - value: 1 constraints: type: enum8 + minValue: 0 + maxValue: 3 - - label: "Validate constraints of attribute: ColorLoopActive" - PICS: CC.S.A4002 + - label: "TH reads ColorLoopActive attribute from DUT" + PICS: CC.S.A4002 && CC.S.F02 command: "readAttribute" attribute: "ColorLoopActive" response: - value: 0 constraints: type: uint8 - - label: "Validate constraints of attribute: ColorLoopDirection" - PICS: CC.S.A4003 + - label: "TH reads ColorLoopDirection attribute from DUT" + PICS: CC.S.A4003 && CC.S.F02 command: "readAttribute" attribute: "ColorLoopDirection" response: - value: 0 constraints: type: uint8 - - label: "Validate constraints of attribute: ColorLoopTime" - PICS: CC.S.A4004 + - label: "TH reads ColorLoopTime attribute from DUT" + PICS: CC.S.A4004 && CC.S.F02 command: "readAttribute" attribute: "ColorLoopTime" response: - value: 25 constraints: type: uint16 - - label: "Validate constraints of attribute: ColorLoopStartEnhancedHue" - PICS: CC.S.A4005 + - label: "TH reads ColorLoopStartEnhancedHue attribute from DUT" + PICS: CC.S.A4005 && CC.S.F02 command: "readAttribute" attribute: "ColorLoopStartEnhancedHue" response: - value: 8960 constraints: type: uint16 - - label: "Validate constraints of attribute: ColorLoopStoredEnhancedHue" - PICS: CC.S.A4006 + - label: "TH reads ColorLoopStoredEnhancedHue attribute from DUT" + PICS: CC.S.A4006 && CC.S.F02 command: "readAttribute" attribute: "ColorLoopStoredEnhancedHue" response: - value: 0 constraints: type: uint16 - - label: "read the optional global attribute: FeatureMap" + - label: "TH reads FeatureMap attribute from DUT" command: "readAttribute" attribute: "FeatureMap" response: saveAs: FeatureMapValue - - label: "Reads ColorCapabilities attribute from DUT" + - label: "TH reads ColorCapabilities attribute from DUT" PICS: CC.S.A400a command: "readAttribute" attribute: "ColorCapabilities" response: value: FeatureMapValue - - - label: "Validate constraints of attribute: ColorCapabilities" - PICS: CC.S.A400a - command: "readAttribute" - attribute: "ColorCapabilities" - response: constraints: type: map16 minValue: 0 maxValue: 31 - - label: "Reads ColorTempPhysicalMinMireds attribute from DUT" - PICS: CC.S.A400b - command: "readAttribute" - attribute: "ColorTempPhysicalMinMireds" - response: - value: 0 - - - label: "Validate constraints of attribute: ColorTempPhysicalMinMireds" - PICS: CC.S.A400b + - label: "TH reads ColorTempPhysicalMinMireds attribute from DUT" + PICS: CC.S.A400b && CC.S.F04 command: "readAttribute" attribute: "ColorTempPhysicalMinMireds" response: @@ -229,15 +206,8 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read ColorTempPhysicalMaxMireds attribute from DUT" - PICS: CC.S.A400c - command: "readAttribute" - attribute: "ColorTempPhysicalMaxMireds" - response: - value: 65279 - - - label: "Validate constraints of attribute: ColorTempPhysicalMaxMireds" - PICS: CC.S.A400c + - label: "TH reads ColorTempPhysicalMaxMireds attribute from DUT" + PICS: CC.S.A400c && CC.S.F04 command: "readAttribute" attribute: "ColorTempPhysicalMaxMireds" response: @@ -246,8 +216,8 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: CoupleColorTempToLevelMinMireds" - PICS: CC.S.A400d + - label: "TH reads CoupleColorTempToLevelMinMireds attribute from DUT" + PICS: CC.S.A400d && CC.S.F04 command: "readAttribute" attribute: "CoupleColorTempToLevelMinMireds" response: @@ -256,8 +226,8 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: StartUpColorTemperatureMireds" - PICS: CC.S.A4010 + - label: "TH reads StartUpColorTemperatureMireds attribute from DUT" + PICS: CC.S.A4010 && CC.S.F04 command: "readAttribute" attribute: "StartUpColorTemperatureMireds" response: @@ -266,36 +236,8 @@ tests: minValue: 0 maxValue: 65279 - - label: "Validate constraints of attribute: RemainingTime" - PICS: CC.S.A0002 - command: "readAttribute" - attribute: "RemainingTime" - response: - value: 0 - constraints: - type: uint16 - - - label: "Read the optional attribute: DriftCompensation" - PICS: CC.S.A0005 - command: "readAttribute" - attribute: "DriftCompensation" - response: - constraints: - type: enum8 - minValue: 0 - maxValue: 4 - - - label: "Read the optional attribute: CompensationText" - PICS: CC.S.A0005 - command: "readAttribute" - attribute: "CompensationText" - response: - constraints: - type: string - maxLength: 254 - #Defined Primaries Information Attribute Set - - label: "Read the mandatory attribute: NumberOfPrimaries" + - label: "TH reads NumberOfPrimaries attribute from DUT" PICS: CC.S.A0010 command: "readAttribute" attribute: "NumberOfPrimaries" @@ -305,7 +247,7 @@ tests: minValue: 0 maxValue: 6 - - label: "Read the mandatory attribute: Primary1X" + - label: "TH reads Primary1X attribute from DUT" PICS: CC.S.A0011 command: "readAttribute" attribute: "Primary1X" @@ -315,7 +257,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary1Y" + - label: "TH reads Primary1Y attribute from DUT" PICS: CC.S.A0012 command: "readAttribute" attribute: "Primary1Y" @@ -325,7 +267,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary1Intensity" + - label: "TH reads Primary1Intensity attribute from DUT" PICS: CC.S.A0013 command: "readAttribute" attribute: "Primary1Intensity" @@ -333,7 +275,7 @@ tests: constraints: type: uint8 - - label: "Read the mandatory attribute: Primary2X" + - label: "TH reads Primary2X attribute from DUT" PICS: CC.S.A0015 command: "readAttribute" attribute: "Primary2X" @@ -343,7 +285,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary2Y" + - label: "TH reads Primary2Y attribute from DUT" PICS: CC.S.A0016 command: "readAttribute" attribute: "Primary2Y" @@ -353,7 +295,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Validate constraints of attribute: Primary2Intensity" + - label: "TH reads Primary2Intensity attribute from DUT" PICS: CC.S.A0017 command: "readAttribute" attribute: "Primary2Intensity" @@ -361,7 +303,7 @@ tests: constraints: type: uint8 - - label: "Read the mandatory attribute: Primary3X" + - label: "TH reads Primary3X attribute from DUT" PICS: CC.S.A0019 command: "readAttribute" attribute: "Primary3X" @@ -371,7 +313,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary3Y" + - label: "TH reads Primary3Y attribute from DUT" PICS: CC.S.A001a command: "readAttribute" attribute: "Primary3Y" @@ -381,7 +323,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary3Intensity" + - label: "TH reads Primary3Intensity attribute from DUT" PICS: CC.S.A001b command: "readAttribute" attribute: "Primary3Intensity" @@ -390,7 +332,7 @@ tests: type: uint8 #Additional Defined Primaries Information Attribute Set - - label: "Read the mandatory attribute: Primary4X" + - label: "TH reads Primary4X attribute from DUT" PICS: CC.S.A0020 command: "readAttribute" attribute: "Primary4X" @@ -400,7 +342,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary4Y" + - label: "TH reads Primary4Y attribute from DUT" PICS: CC.S.A0021 command: "readAttribute" attribute: "Primary4Y" @@ -410,7 +352,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary4Intensity" + - label: "TH reads Primary4Intensity attribute from DUT" PICS: CC.S.A0022 command: "readAttribute" attribute: "Primary4Intensity" @@ -418,7 +360,7 @@ tests: constraints: type: uint8 - - label: "Read the mandatory attribute: Primary5X" + - label: "TH reads Primary5X attribute from DUT" PICS: CC.S.A0024 command: "readAttribute" attribute: "Primary5X" @@ -428,7 +370,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary5Y" + - label: "TH reads Primary5Y attribute from DUT" PICS: CC.S.A0025 command: "readAttribute" attribute: "Primary5Y" @@ -438,7 +380,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary5Intensity" + - label: "TH reads Primary5Intensity attribute from DUT" PICS: CC.S.A0026 command: "readAttribute" attribute: "Primary5Intensity" @@ -446,7 +388,7 @@ tests: constraints: type: uint8 - - label: "Read the mandatory attribute: Primary6X" + - label: "TH reads Primary6X attribute from DUT" PICS: CC.S.A0028 command: "readAttribute" attribute: "Primary6X" @@ -456,7 +398,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary6Y" + - label: "TH reads Primary6Y attribute from DUT" PICS: CC.S.A0029 command: "readAttribute" attribute: "Primary6Y" @@ -466,7 +408,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the mandatory attribute: Primary6Intensity" + - label: "TH reads Primary6Intensity attribute from DUT" PICS: CC.S.A002a command: "readAttribute" attribute: "Primary6Intensity" @@ -475,7 +417,7 @@ tests: type: uint8 #Defined Color Points Settings Attribute Set - - label: "Read the optional attribute: WhitePointX" + - label: "TH reads WhitePointX attribute from DUT" PICS: CC.S.A0030 command: "readAttribute" attribute: "WhitePointX" @@ -485,7 +427,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: WhitePointY" + - label: "TH reads WhitePointY attribute from DUT" PICS: CC.S.A0031 command: "readAttribute" attribute: "WhitePointY" @@ -495,7 +437,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: ColorPointRX" + - label: "TH reads ColorPointRX attribute from DUT" PICS: CC.S.A0032 command: "readAttribute" attribute: "ColorPointRX" @@ -505,7 +447,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: ColorPointRY" + - label: "TH reads ColorPointRY attribute from DUT" PICS: CC.S.A0033 command: "readAttribute" attribute: "ColorPointRY" @@ -515,7 +457,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: ColorPointRIntensity" + - label: "TH reads ColorPointRIntensity attribute from DUT" PICS: CC.S.A0034 command: "readAttribute" attribute: "ColorPointRIntensity" @@ -523,7 +465,7 @@ tests: constraints: type: uint8 - - label: "Read the optional attribute: ColorPointGX" + - label: "TH reads ColorPointGX attribute from DUT" PICS: CC.S.A0036 command: "readAttribute" attribute: "ColorPointGX" @@ -533,7 +475,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: ColorPointGY" + - label: "TH reads ColorPointGY attribute from DUT" PICS: CC.S.A0037 command: "readAttribute" attribute: "ColorPointGY" @@ -543,7 +485,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: ColorPointGIntensity" + - label: "TH reads ColorPointGIntensity attribute from DUT" PICS: CC.S.A0038 command: "readAttribute" attribute: "ColorPointGIntensity" @@ -551,7 +493,7 @@ tests: constraints: type: uint8 - - label: "Read the optional attribute: ColorPointBX" + - label: "TH reads ColorPointBX attribute from DUT" PICS: CC.S.A003a command: "readAttribute" attribute: "ColorPointBX" @@ -561,7 +503,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: ColorPointBY" + - label: "TH reads ColorPointBY attribute from DUT" PICS: CC.S.A003b command: "readAttribute" attribute: "ColorPointBY" @@ -571,7 +513,7 @@ tests: minValue: 0 maxValue: 65279 - - label: "Read the optional attribute: ColorPointBIntensity" + - label: "TH reads ColorPointBIntensity attribute from DUT" PICS: CC.S.A003c command: "readAttribute" attribute: "ColorPointBIntensity" diff --git a/src/app/tests/suites/certification/Test_TC_CC_9_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_9_1.yaml index f17724fcec3317..1c3a6386fc99e9 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_9_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_9_1.yaml @@ -223,8 +223,6 @@ tests: PICS: CC.S.A4005 response: saveAs: ColorLoopStartEnhancedHue - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -287,8 +285,6 @@ tests: PICS: CC.S.A4006 response: saveAs: ColorLoopStoredEnhancedHueValue1 - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -372,8 +368,6 @@ tests: PICS: CC.S.A4005 response: saveAs: ColorLoopStartEnhancedHue2 - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -436,8 +430,6 @@ tests: PICS: CC.S.A4006 response: saveAs: ColorLoopStoredEnhancedHueValue2 - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -552,8 +544,6 @@ tests: PICS: CC.S.A4005 response: saveAs: ColorLoopStartEnhancedHue3 - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -616,8 +606,6 @@ tests: PICS: CC.S.A4006 response: saveAs: ColorLoopStoredEnhancedHueValue3 - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -701,8 +689,6 @@ tests: PICS: CC.S.A4005 response: saveAs: ColorLoopStartEnhancedHue4 - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -765,8 +751,6 @@ tests: PICS: CC.S.A4006 response: saveAs: ColorLoopStoredEnhancedHue4 - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_CC_9_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_9_2.yaml index 0260d8aadc90a0..6677f80a07296c 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_9_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_9_2.yaml @@ -164,8 +164,6 @@ tests: PICS: CC.S.A4005 response: saveAs: ColorLoopStartEnhancedHueValue - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -236,8 +234,6 @@ tests: PICS: CC.S.A4005 response: saveAs: ColorLoopStartEnhancedHue1 - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -300,8 +296,6 @@ tests: attribute: "ColorLoopStoredEnhancedHue" response: saveAs: ColorLoopStoredEnhancedHueValue - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT." command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_CC_9_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_9_3.yaml index d9d163b9bcc6a1..52c888d5b48644 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_9_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_9_3.yaml @@ -163,8 +163,6 @@ tests: PICS: CC.S.A4005 response: saveAs: ColorLoopStartEnhancedHueValue - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT" command: "readAttribute" @@ -290,8 +288,6 @@ tests: PICS: CC.S.A4006 response: saveAs: ColorLoopStoredEnhancedHueValue - constraints: - type: uint16 - label: "Read EnhancedCurrentHue attribute from DUT." command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_CGEN_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CGEN_1_1.yaml index 00c94f11026069..983145e592e4b8 100644 --- a/src/app/tests/suites/certification/Test_TC_CGEN_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CGEN_1_1.yaml @@ -56,17 +56,17 @@ tests: command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0, 2, 4] constraints: type: list + contains: [0, 2, 4] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" response: - value: [1, 3, 5] constraints: type: list + contains: [1, 3, 5] #issue #15011 - label: diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml index 0b27875e2bdfa6..69f314073cf611 100644 --- a/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_1_6.yaml @@ -60,9 +60,9 @@ tests: command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0, 2, 3] constraints: type: list + contains: [0, 2, 3] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml index 7b46c6f82f1b9e..94c30db611e942 100644 --- a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_1_11.yaml @@ -69,9 +69,9 @@ tests: command: "readAttribute" attribute: "GeneratedCommandList" response: - value: [2] constraints: type: list + contains: [2] #issue #11053 disabled steps below Global attributes missing from YAML framework - label: diff --git a/src/app/tests/suites/certification/Test_TC_DGGEN_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DGGEN_1_1.yaml index 06586558ffd83c..d27e6f29454356 100644 --- a/src/app/tests/suites/certification/Test_TC_DGGEN_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGGEN_1_1.yaml @@ -57,9 +57,9 @@ tests: command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0] constraints: type: list + contains: [0] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_FLW_1_1.yaml b/src/app/tests/suites/certification/Test_TC_FLW_1_1.yaml index ea3657e7260bbe..57fbce069a464f 100644 --- a/src/app/tests/suites/certification/Test_TC_FLW_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_FLW_1_1.yaml @@ -58,9 +58,9 @@ tests: command: "readAttribute" attribute: "AttributeList" response: - value: [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533] constraints: type: list + contains: [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533] - label: "Read the global attribute: AcceptedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_I_1_1.yaml b/src/app/tests/suites/certification/Test_TC_I_1_1.yaml index 0172010ca6af04..f6c351bd6042fb 100644 --- a/src/app/tests/suites/certification/Test_TC_I_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_I_1_1.yaml @@ -56,9 +56,9 @@ tests: command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0, 64] constraints: type: list + contains: [0, 64] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml b/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml index f7ee45a3ec4aff..f1022e5cc105a0 100644 --- a/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_1_2.yaml @@ -52,25 +52,25 @@ tests: command: "readAttribute" attribute: "AttributeList" response: - value: [65528, 65529, 65531, 65532, 65533] constraints: type: list + contains: [65528, 65529, 65531, 65532, 65533] - label: "Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0] constraints: type: list + contains: [0] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" response: - value: [1] constraints: type: list + contains: [1] #issue #11053 disabled steps below Global attributes missing from YAML framework - label: diff --git a/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml index 9290f5798aad21..bd2a45f4af5dcc 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml @@ -55,7 +55,6 @@ tests: command: "readAttribute" attribute: "current level" response: - value: 254 saveAs: CurrentLevelValue constraints: type: uint8 @@ -65,12 +64,11 @@ tests: command: "readAttribute" attribute: "remaining time" response: - value: 0 constraints: type: uint16 - label: "Reads the MinLevel attribute" - PICS: LVL.S.A0002 + PICS: LVL.S.A0002 && LVL.S.F01 command: "readAttribute" attribute: "min level" response: @@ -78,11 +76,9 @@ tests: saveAs: MinLevelValue constraints: type: uint8 - minValue: 0 - maxValue: 1 - label: "Reads the MinLevel attribute" - PICS: LVL.S.A0002 + PICS: LVL.S.A0002 && !LVL.S.F01 command: "readAttribute" attribute: "min level" response: @@ -93,7 +89,7 @@ tests: maxValue: 1 - label: "Reads the MaxLevel attribute" - PICS: LVL.S.A0003 + PICS: LVL.S.A0003 && LVL.S.F01 command: "readAttribute" attribute: "max level" response: @@ -101,18 +97,17 @@ tests: saveAs: MaxLevelValue constraints: type: uint8 - minValue: 1 - maxValue: 254 + minValue: MinLevelValue - label: "Reads the MaxLevel attribute" - PICS: LVL.S.A0003 + PICS: LVL.S.A0003 && !LVL.S.F01 command: "readAttribute" attribute: "max level" response: saveAs: MaxLevelValue1 constraints: type: uint8 - minValue: 1 + minValue: MinLevelValue1 maxValue: 254 - label: "Step 4b & 4C Reads the CurrentLevel attribute" @@ -162,7 +157,7 @@ tests: type: uint16 - label: "Step 7b & 7C Reads the CurrentFrequency attribute" - PICS: LVL.S.A0004 && LVL.S.A0005 + PICS: LVL.S.A0004 && LVL.S.A0005 && LVL.S.A0006 command: "readAttribute" attribute: "current frequency" response: @@ -181,7 +176,7 @@ tests: type: uint16 - label: "Reads the OnLevel attribute " - PICS: LVL.S.F01 + PICS: LVL.S.F01 && LVL.S.A0011 command: "readAttribute" attribute: "on level" response: @@ -191,7 +186,7 @@ tests: maxValue: MaxLevelValue - label: "Reads the OnLevel attribute " - PICS: " !LVL.S.F01 " + PICS: LVL.S.A0011 && !LVL.S.F01 command: "readAttribute" attribute: "on level" response: diff --git a/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml index 9ab73869aa45ea..a980933889edfc 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_3_1.yaml @@ -102,14 +102,6 @@ tests: response: value: 100 - - label: "Reads On Off Transition Time attribute from DUT" - PICS: LVL.S.A0010 - command: "readAttribute" - attribute: "On Off Transition Time" - response: - constraints: - type: uint16 - - label: "sends a Move to level command" PICS: LVL.S.C00.Rsp && LVL.S.A0010 command: "MoveToLevel" @@ -144,9 +136,11 @@ tests: command: "readAttribute" attribute: "on off transition time" response: + saveAs: OnOffTransitionTimeValue constraints: type: uint16 + # Null is not supported here 0xFFFF is considerd as Null - label: "sends a Move to level command" PICS: LVL.S.C00.Rsp && LVL.S.A0010 command: "MoveToLevel" @@ -155,7 +149,7 @@ tests: - name: "level" value: 64 - name: "transitionTime" - value: 0 + value: 0xFFFF - name: "optionMask" value: 1 - name: "optionOverride" diff --git a/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml index b9e25ebcfad545..f84299a70cbc01 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_6_1.yaml @@ -110,8 +110,8 @@ tests: attribute: "current level" response: constraints: - minValue: 23 - maxValue: 27 + minValue: 22 + maxValue: 32 notValue: CurrentLevelValue - label: "Sends a move up command to DUT" @@ -162,8 +162,8 @@ tests: attribute: "current level" response: constraints: - minValue: 48 - maxValue: 52 + minValue: 45 + maxValue: 55 notValue: CurrentLevelValue - label: "Reset level to 254" diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_1_4.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_1_4.yaml index a14f4bd8845f98..4ddd8516ba2a78 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_1_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_1_4.yaml @@ -60,9 +60,9 @@ tests: command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0, 1, 2, 3] constraints: type: list + contains: [0, 1, 2, 3] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml index df84b4beafe19a..390b78ba468ba0 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml @@ -68,9 +68,9 @@ tests: command: "readAttribute" attribute: "GeneratedCommandList" response: - value: [10] constraints: type: list + contains: [10] #issue #11053 disabled steps below Global attributes missing from YAML framework - label: diff --git a/src/app/tests/suites/certification/Test_TC_MOD_1_1.yaml b/src/app/tests/suites/certification/Test_TC_MOD_1_1.yaml index bcaaea583eea12..3ef72b6c865f20 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_1_1.yaml @@ -56,9 +56,9 @@ tests: command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0] constraints: type: list + contains: [0] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_OO_1_1.yaml b/src/app/tests/suites/certification/Test_TC_OO_1_1.yaml index baa28ef6b658cf..015f5c641624ad 100644 --- a/src/app/tests/suites/certification/Test_TC_OO_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_OO_1_1.yaml @@ -70,9 +70,9 @@ tests: attribute: "AcceptedCommandList" PICS: OO_LT response: - value: [0, 1, 2, 64, 65, 66] constraints: type: list + contains: [0, 1, 2, 64, 65, 66] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_OO_2_3.yaml b/src/app/tests/suites/certification/Test_TC_OO_2_3.yaml index 9abe1b5e2b0e88..00e1b44596f270 100644 --- a/src/app/tests/suites/certification/Test_TC_OO_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_OO_2_3.yaml @@ -287,8 +287,8 @@ tests: PICS: OO.S.A4001 response: constraints: - minValue: 295 - maxValue: 305 + minValue: 270 + maxValue: 320 - label: "9b:Reads OffWaitTime attribute from DUT" command: "readAttribute" @@ -382,8 +382,8 @@ tests: PICS: OO.S.A4001 response: constraints: - minValue: 295 - maxValue: 305 + minValue: 270 + maxValue: 325 - label: "10e:Reads OffWaitTime attribute from DUT" command: "readAttribute" @@ -430,8 +430,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 295 - maxValue: 305 + minValue: 270 + maxValue: 320 - label: "Wait 10000ms" cluster: "DelayCommands" @@ -473,8 +473,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 195 - maxValue: 205 + minValue: 180 + maxValue: 220 - label: "Wait 10000ms" cluster: "DelayCommands" @@ -563,8 +563,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 295 - maxValue: 305 + minValue: 270 + maxValue: 320 - label: "Wait 30000ms" cluster: "DelayCommands" @@ -751,8 +751,8 @@ tests: PICS: PICS_SKIP_SAMPLE_APP && OO.S.A4001 response: constraints: - minValue: 295 - maxValue: 305 + minValue: 270 + maxValue: 320 # Issue 19159 OffWaitTime value mismatch: expected 300 but got 0 - label: "18b:Reads OffWaitTime attribute from DUT" @@ -815,8 +815,8 @@ tests: PICS: OO.S.A4001 response: constraints: - minValue: 195 - maxValue: 205 + minValue: 180 + maxValue: 220 - label: "19c:Reads OffWaitTime attribute from DUT" command: "readAttribute" @@ -849,8 +849,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 295 - maxValue: 305 + minValue: 270 + maxValue: 320 - label: "21a:Sends OnWithTimedOff command to DUT" command: "OnWithTimedOff" @@ -884,8 +884,8 @@ tests: PICS: PICS_SKIP_SAMPLE_APP && OO.S.A4002 response: constraints: - minValue: 195 - maxValue: 205 + minValue: 180 + maxValue: 220 - label: "22a:Send On Command" PICS: OO.S.C01.Rsp @@ -956,8 +956,8 @@ tests: PICS: OO.S.A4002 response: constraints: - minValue: 295 - maxValue: 305 + minValue: 270 + maxValue: 320 - label: "Wait 40000ms" cluster: "DelayCommands" @@ -1015,8 +1015,8 @@ tests: PICS: OO.S.A4001 response: constraints: - minValue: 295 - maxValue: 305 + minValue: 270 + maxValue: 320 - label: "24b:Reads OffWaitTime attribute from DUT" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_TGTNAV_1_9.yaml b/src/app/tests/suites/certification/Test_TC_TGTNAV_1_9.yaml index 33cfdc60a6d576..3b7467459f9b51 100644 --- a/src/app/tests/suites/certification/Test_TC_TGTNAV_1_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_TGTNAV_1_9.yaml @@ -51,34 +51,34 @@ tests: command: "readAttribute" attribute: "AttributeList" response: - value: [0, 1, 65528, 65529, 65531, 65532, 65533] constraints: type: list + contains: [0, 1, 65528, 65529, 65531, 65532, 65533] - label: "Read the global attribute: AttributeList" - PICS: "!MC_TGTNAV.S.A0001" + PICS: " !MC_TGTNAV.S.A0001 " command: "readAttribute" attribute: "AttributeList" response: - value: [0, 65528, 65529, 65531, 65532, 65533] constraints: type: list + contains: [0, 65528, 65529, 65531, 65532, 65533] - label: "Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" response: - value: [0] constraints: type: list + contains: [0] - label: "Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" response: - value: [1] constraints: type: list + contains: [1] #issue #11053 disabled steps below Global attributes missing from YAML framework - label: diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml index 8fbcb156eb24d1..6a50edb897f2cd 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml @@ -38,8 +38,8 @@ tests: - label: "Read the optional global attribute constraints: FeatureMap" PICS: - ( TSTAT_HEAT || TSTAT_COOL || TSTAT_OCC || TSTAT_SCH || TSTAT_SB || - TSTAT_AUTO ) + TSTAT.S.F00 || TSTAT.S.F01 || TSTAT.S.F02 || TSTAT.S.F03 || + TSTAT.S.F04 || TSTAT.S.F05 command: "readAttribute" attribute: "FeatureMap" response: diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml index 979fe2b669af25..52a27e40c3a941 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml @@ -28,17 +28,34 @@ tests: - name: "nodeId" value: nodeId - - label: - "Reads constraints of mandatory attributes from DUT: LocalTemperature" + - label: "Reads mandatory attributes from DUT: LocalTemperature" command: "readAttribute" attribute: "LocalTemperature" + PICS: TSTAT.S.A0000 response: constraints: type: int16 - - label: - "Reads constraints of mandatory attributes from DUT: - AbsMinHeatSetpointLimit" + - label: "Read OutdoorTemperature attribute from the DUT" + PICS: TSTAT.S.A0001 + command: "readAttribute" + attribute: "OutdoorTemperature" + response: + constraints: + type: int16 + + - label: "Read Occupancy attribute from the DUT" + PICS: TSTAT.S.A0002 + command: "readAttribute" + attribute: "Occupancy" + response: + constraints: + type: int16 + minValue: 0 + maxValue: 1 + + - label: "Reads mandatory attributes from DUT: AbsMinHeatSetpointLimit" + PICS: TSTAT.S.A0003 command: "readAttribute" attribute: "AbsMinHeatSetpointLimit" response: @@ -47,9 +64,8 @@ tests: minValue: 700 maxValue: 3000 - - label: - "Reads constraints of mandatory attributes from DUT: - AbsMaxHeatSetpointLimit" + - label: "Reads mandatory attributes from DUT: AbsMaxHeatSetpointLimit" + PICS: TSTAT.S.A0004 command: "readAttribute" attribute: "AbsMaxHeatSetpointLimit" response: @@ -58,10 +74,8 @@ tests: minValue: 700 maxValue: 3000 - - label: - "Reads constraints of optional attributes from DUT: - AbsMinCoolSetpointLimit" - optional: true + - label: "Reads optional attributes from DUT: AbsMinCoolSetpointLimit" + PICS: TSTAT.S.A0005 command: "readAttribute" attribute: "AbsMinCoolSetpointLimit" response: @@ -70,10 +84,8 @@ tests: minValue: 1600 maxValue: 3200 - - label: - "Reads constraints of optional attributes from DUT: - AbsMaxCoolSetpointLimit" - optional: true + - label: "Reads optional attributes from DUT: AbsMaxCoolSetpointLimit" + PICS: TSTAT.S.A0006 command: "readAttribute" attribute: "AbsMaxCoolSetpointLimit" response: @@ -82,105 +94,48 @@ tests: minValue: 1600 maxValue: 3200 - #issue #18319 - - label: - "Read PICoolingDemand attribute from the DUT Verify that the DUT - responds with a uint8 value.The value has to be in the range of 0 to - 100" - verification: | - ./apps/chip-tool thermostat read pi-cooling-demand 54321 1 + - label: "Read PICoolingDemand attribute from the DUT" + PICS: TSTAT.S.A0007 + command: "readAttribute" + attribute: "PICoolingDemand" + response: + constraints: + type: uint8 + minValue: 0 + maxValue: 100 - [1651147835.214624][10638:10643] CHIP:DMG: ReportDataMessage = - [1651147835.214675][10638:10643] CHIP:DMG: { - [1651147835.214714][10638:10643] CHIP:DMG: AttributeReportIBs = - [1651147835.214772][10638:10643] CHIP:DMG: [ - [1651147835.214816][10638:10643] CHIP:DMG: AttributeReportIB = - [1651147835.214881][10638:10643] CHIP:DMG: { - [1651147835.214928][10638:10643] CHIP:DMG: AttributeStatusIB = - [1651147835.214985][10638:10643] CHIP:DMG: { - [1651147835.215039][10638:10643] CHIP:DMG: AttributePathIB = - [1651147835.215100][10638:10643] CHIP:DMG: { - [1651147835.215162][10638:10643] CHIP:DMG: Endpoint = 0x1, - [1651147835.215228][10638:10643] CHIP:DMG: Cluster = 0x201, - [1651147835.215293][10638:10643] CHIP:DMG: Attribute = 0x0000_0007, - [1651147835.215351][10638:10643] CHIP:DMG: } - [1651147835.215416][10638:10643] CHIP:DMG: - [1651147835.215469][10638:10643] CHIP:DMG: StatusIB = - [1651147835.215535][10638:10643] CHIP:DMG: { - [1651147835.215597][10638:10643] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147835.215657][10638:10643] CHIP:DMG: }, - [1651147835.215717][10638:10643] CHIP:DMG: - [1651147835.215772][10638:10643] CHIP:DMG: }, - [1651147835.215833][10638:10643] CHIP:DMG: - [1651147835.215879][10638:10643] CHIP:DMG: }, - [1651147835.215935][10638:10643] CHIP:DMG: - [1651147835.215978][10638:10643] CHIP:DMG: ], - [1651147835.216033][10638:10643] CHIP:DMG: - [1651147835.216078][10638:10643] CHIP:DMG: SuppressResponse = true, - [1651147835.216124][10638:10643] CHIP:DMG: InteractionModelRevision = 1 - [1651147835.216167][10638:10643] CHIP:DMG: } - [1651147835.216348][10638:10643] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read PIHeatingDemand attribute from the DUT" + PICS: TSTAT.S.A0008 + command: "readAttribute" + attribute: "PIHeatingDemand" + response: + constraints: + type: uint8 + minValue: 0 + maxValue: 100 - - label: - "Read PIHeatingDemand attribute from the DUT and Verify that the DUT - responds with a uint8 value.The value has to be in the range of 0 to - 100" - verification: | - ./apps/chip-tool thermostat read pi-heating-demand 54321 1 + - label: "Read HVACSystemTypeConfiguration attribute from the DUT" + PICS: TSTAT.S.A0009 + command: "readAttribute" + attribute: "HVACSystemTypeConfiguration" + response: + constraints: + type: map8 + minValue: 0 + maxValue: 63 - [1651147869.659064][10648:10653] CHIP:DMG: ReportDataMessage = - [1651147869.659093][10648:10653] CHIP:DMG: { - [1651147869.659116][10648:10653] CHIP:DMG: AttributeReportIBs = - [1651147869.659149][10648:10653] CHIP:DMG: [ - [1651147869.659174][10648:10653] CHIP:DMG: AttributeReportIB = - [1651147869.659215][10648:10653] CHIP:DMG: { - [1651147869.659244][10648:10653] CHIP:DMG: AttributeStatusIB = - [1651147869.659277][10648:10653] CHIP:DMG: { - [1651147869.659308][10648:10653] CHIP:DMG: AttributePathIB = - [1651147869.659373][10648:10653] CHIP:DMG: { - [1651147869.659411][10648:10653] CHIP:DMG: Endpoint = 0x1, - [1651147869.659469][10648:10653] CHIP:DMG: Cluster = 0x201, - [1651147869.659511][10648:10653] CHIP:DMG: Attribute = 0x0000_0008, - [1651147869.659567][10648:10653] CHIP:DMG: } - [1651147869.659629][10648:10653] CHIP:DMG: - [1651147869.659688][10648:10653] CHIP:DMG: StatusIB = - [1651147869.659729][10648:10653] CHIP:DMG: { - [1651147869.659794][10648:10653] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147869.659852][10648:10653] CHIP:DMG: }, - [1651147869.659916][10648:10653] CHIP:DMG: - [1651147869.659948][10648:10653] CHIP:DMG: }, - [1651147869.660004][10648:10653] CHIP:DMG: - [1651147869.660062][10648:10653] CHIP:DMG: }, - [1651147869.660098][10648:10653] CHIP:DMG: - [1651147869.660123][10648:10653] CHIP:DMG: ], - [1651147869.660178][10648:10653] CHIP:DMG: - [1651147869.660230][10648:10653] CHIP:DMG: SuppressResponse = true, - [1651147869.660277][10648:10653] CHIP:DMG: InteractionModelRevision = 1 - [1651147869.660304][10648:10653] CHIP:DMG: } - [1651147869.660459][10648:10653] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read LocalTemperatureCalibration attribute from the DUT" + PICS: TSTAT.S.A0010 + command: "readAttribute" + attribute: "LocalTemperatureCalibration" + response: + constraints: + type: int8 + minValue: 25 + maxValue: -25 - - label: - "Reads constraints of optional attributes from DUT: - OccupiedCoolingSetpoint" - optional: true + - label: "Reads optional attributes from DUT: OccupiedCoolingSetpoint" + PICS: TSTAT.S.A0011 command: "readAttribute" attribute: "OccupiedCoolingSetpoint" response: @@ -189,9 +144,8 @@ tests: minValue: 1600 maxValue: 2600 - - label: - "Reads constraints of mandatory attributes from DUT: - OccupiedHeatingSetpoint" + - label: "Reads mandatory attributes from DUT: OccupiedHeatingSetpoint" + PICS: TSTAT.S.A0012 command: "readAttribute" attribute: "OccupiedHeatingSetpoint" response: @@ -200,108 +154,32 @@ tests: minValue: 700 maxValue: 2600 - - label: - "Read UnoccupiedCoolingSetpoint attribute from the DUT and Verify that - the DUT responds with an int16 value" - verification: | - ./apps/chip-tool thermostat read unoccupied-cooling-setpoint 54321 1 - [1651148145.862809][10702:10707] CHIP:DMG: ReportDataMessage = - [1651148145.862848][10702:10707] CHIP:DMG: { - [1651148145.862880][10702:10707] CHIP:DMG: AttributeReportIBs = - [1651148145.862930][10702:10707] CHIP:DMG: [ - [1651148145.862966][10702:10707] CHIP:DMG: AttributeReportIB = - [1651148145.863018][10702:10707] CHIP:DMG: { - [1651148145.863057][10702:10707] CHIP:DMG: AttributeStatusIB = - [1651148145.863109][10702:10707] CHIP:DMG: { - [1651148145.863156][10702:10707] CHIP:DMG: AttributePathIB = - [1651148145.863205][10702:10707] CHIP:DMG: { - [1651148145.863250][10702:10707] CHIP:DMG: Endpoint = 0x1, - [1651148145.863307][10702:10707] CHIP:DMG: Cluster = 0x201, - [1651148145.863360][10702:10707] CHIP:DMG: Attribute = 0x0000_0013, - [1651148145.863408][10702:10707] CHIP:DMG: } - [1651148145.863466][10702:10707] CHIP:DMG: - [1651148145.863513][10702:10707] CHIP:DMG: StatusIB = - [1651148145.863562][10702:10707] CHIP:DMG: { - [1651148145.863609][10702:10707] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651148145.863658][10702:10707] CHIP:DMG: }, - [1651148145.863707][10702:10707] CHIP:DMG: - [1651148145.863750][10702:10707] CHIP:DMG: }, - [1651148145.863799][10702:10707] CHIP:DMG: - [1651148145.863836][10702:10707] CHIP:DMG: }, - [1651148145.863883][10702:10707] CHIP:DMG: - [1651148145.863920][10702:10707] CHIP:DMG: ], - [1651148145.863965][10702:10707] CHIP:DMG: - [1651148145.864000][10702:10707] CHIP:DMG: SuppressResponse = true, - [1651148145.864037][10702:10707] CHIP:DMG: InteractionModelRevision = 1 - [1651148145.864072][10702:10707] CHIP:DMG: } - [1651148145.864219][10702:10707] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read UnoccupiedCoolingSetpoint attribute from the DUT" + PICS: TSTAT.S.A0013 + command: "readAttribute" + attribute: "UnoccupiedCoolingSetpoint" + response: + constraints: + type: int16 - - label: - "Read UnoccupiedHeatingSetpoint attribute from the DUT and Verify that - the DUT responds with an int16 value" - verification: | - ./apps/chip-tool thermostat read occupied-heating-setpoint 54321 1 - [1651148114.140452][10694:10699] CHIP:DMG: ReportDataMessage = - [1651148114.140501][10694:10699] CHIP:DMG: { - [1651148114.140541][10694:10699] CHIP:DMG: AttributeReportIBs = - [1651148114.140597][10694:10699] CHIP:DMG: [ - [1651148114.140643][10694:10699] CHIP:DMG: AttributeReportIB = - [1651148114.140798][10694:10699] CHIP:DMG: { - [1651148114.140855][10694:10699] CHIP:DMG: AttributeDataIB = - [1651148114.140914][10694:10699] CHIP:DMG: { - [1651148114.141054][10694:10699] CHIP:DMG: DataVersion = 0xeb3241b, - [1651148114.141118][10694:10699] CHIP:DMG: AttributePathIB = - [1651148114.141179][10694:10699] CHIP:DMG: { - [1651148114.141285][10694:10699] CHIP:DMG: Endpoint = 0x1, - [1651148114.141396][10694:10699] CHIP:DMG: Cluster = 0x201, - [1651148114.141474][10694:10699] CHIP:DMG: Attribute = 0x0000_0012, - [1651148114.141667][10694:10699] CHIP:DMG: } - [1651148114.141780][10694:10699] CHIP:DMG: - [1651148114.141945][10694:10699] CHIP:DMG: Data = 2000, - [1651148114.142024][10694:10699] CHIP:DMG: }, - [1651148114.142136][10694:10699] CHIP:DMG: - [1651148114.142195][10694:10699] CHIP:DMG: }, - [1651148114.142263][10694:10699] CHIP:DMG: - [1651148114.142399][10694:10699] CHIP:DMG: ], - [1651148114.142466][10694:10699] CHIP:DMG: - [1651148114.142517][10694:10699] CHIP:DMG: SuppressResponse = true, - [1651148114.142569][10694:10699] CHIP:DMG: InteractionModelRevision = 1 - [1651148114.142698][10694:10699] CHIP:DMG: } - [1651148114.143048][10694:10699] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0201 Attribute 0x0000_0012 DataVersion: 246621211 - [1651148114.143195][10694:10699] CHIP:TOO: occupied heating setpoint: 2000 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read UnoccupiedHeatingSetpoint attribute from the DUT" + PICS: TSTAT.S.A0014 + command: "readAttribute" + attribute: "UnoccupiedHeatingSetpoint" + response: + constraints: + type: int16 - - label: - "Reads constraints of mandatory attributes from DUT: - MinHeatSetpointLimit" + - label: "Reads mandatory attributes from DUT: MinHeatSetpointLimit" + PICS: TSTAT.S.A0015 command: "readAttribute" attribute: "MinHeatSetpointLimit" response: constraints: type: int16 - minValue: 700 - maxValue: 3000 - - label: - "Reads constraints of mandatory attributes from DUT: - MaxHeatSetpointLimit" + - label: "Reads mandatory attributes from DUT: MaxHeatSetpointLimit" + PICS: TSTAT.S.A0016 command: "readAttribute" attribute: "MaxHeatSetpointLimit" response: @@ -310,10 +188,8 @@ tests: minValue: 700 maxValue: 3000 - - label: - "Reads constraints of optional attributes from DUT: - MinCoolSetpointLimit" - optional: true + - label: "Reads optional attributes from DUT: MinCoolSetpointLimit" + PICS: TSTAT.S.A0017 command: "readAttribute" attribute: "MinCoolSetpointLimit" response: @@ -322,10 +198,8 @@ tests: minValue: 1600 maxValue: 3200 - - label: - "Reads constraints of optional attributes from DUT: - MaxCoolSetpointLimit" - optional: true + - label: "Reads optional attributes from DUT: MaxCoolSetpointLimit" + PICS: TSTAT.S.A0018 command: "readAttribute" attribute: "MaxCoolSetpointLimit" response: @@ -334,9 +208,28 @@ tests: minValue: 1600 maxValue: 3200 - - label: - "Reads constraints of mandatory attributes from DUT: - ControlSequenceOfOperation" + - label: "Reads optional attributes from DUT: MinSetpointDeadBand" + PICS: TSTAT.S.A0019 + command: "readAttribute" + attribute: "MinSetpointDeadBand" + response: + constraints: + type: int8 + minValue: 0 + maxValue: 25 + + - label: "Read RemoteSensing attribute from the DUT" + PICS: TSTAT.S.A001a + command: "readAttribute" + attribute: "RemoteSensing" + response: + constraints: + type: map8 + minValue: 0 + maxValue: 7 + + - label: "Reads mandatory attributes from DUT: ControlSequenceOfOperation" + PICS: TSTAT.S.A001b command: "readAttribute" attribute: "ControlSequenceOfOperation" response: @@ -345,7 +238,8 @@ tests: minValue: 0 maxValue: 5 - - label: "Reads constraints of mandatory attributes from DUT: SystemMode" + - label: "Reads mandatory attributes from DUT: SystemMode" + PICS: TSTAT.S.A001c command: "readAttribute" attribute: "SystemMode" response: @@ -355,11 +249,11 @@ tests: maxValue: 9 - label: - "Read OutdoorTemperature attribute from the DUT and Verify the - datatype" + "Read AlarmMask attribute from the DUT and Verify that the DUT + responds with a map8 value.The value has to be in the range of 0x00 to + 0x07." verification: | - ./apps/chip-tool thermostat read outdoor-temperature 54321 1 - + ./apps/chip-tool thermostat read alarm-mask 54321 1 [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = [1651147597.962928][10583:10588] CHIP:DMG: { [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = @@ -372,7 +266,7 @@ tests: [1651147597.963286][10583:10588] CHIP:DMG: { [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0001, + [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_001D, [1651147597.963575][10583:10588] CHIP:DMG: } [1651147597.963641][10583:10588] CHIP:DMG: [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = @@ -392,7 +286,7 @@ tests: [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT + PICS: PICS_USER_PROMPT && TSTAT.S.A001d arguments: values: - name: "message" @@ -400,1097 +294,233 @@ tests: - name: "expectedValue" value: "y" - - label: - "Read Occupancy attribute from the DUT and Verify the datatype and - response value" - verification: | - ./apps/chip-tool thermostat read occupancy 54321 1 + - label: "Read ThermostatRunningMode attribute from the DUT" + PICS: TSTAT.S.A001e + command: "readAttribute" + attribute: "ThermostatRunningMode" + response: + constraints: + type: enum8 + minValue: 0 + maxValue: 4 - [1651147633.547776][10591:10596] CHIP:DMG: ReportDataMessage = - [1651147633.547816][10591:10596] CHIP:DMG: { - [1651147633.547848][10591:10596] CHIP:DMG: AttributeReportIBs = - [1651147633.547893][10591:10596] CHIP:DMG: [ - [1651147633.547929][10591:10596] CHIP:DMG: AttributeReportIB = - [1651147633.547988][10591:10596] CHIP:DMG: { - [1651147633.548028][10591:10596] CHIP:DMG: AttributeStatusIB = - [1651147633.548075][10591:10596] CHIP:DMG: { - [1651147633.548114][10591:10596] CHIP:DMG: AttributePathIB = - [1651147633.548168][10591:10596] CHIP:DMG: { - [1651147633.548222][10591:10596] CHIP:DMG: Endpoint = 0x1, - [1651147633.548278][10591:10596] CHIP:DMG: Cluster = 0x201, - [1651147633.548330][10591:10596] CHIP:DMG: Attribute = 0x0000_0002, - [1651147633.548383][10591:10596] CHIP:DMG: } - [1651147633.548446][10591:10596] CHIP:DMG: - [1651147633.548491][10591:10596] CHIP:DMG: StatusIB = - [1651147633.548538][10591:10596] CHIP:DMG: { - [1651147633.548585][10591:10596] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147633.548633][10591:10596] CHIP:DMG: }, - [1651147633.548679][10591:10596] CHIP:DMG: - [1651147633.548722][10591:10596] CHIP:DMG: }, - [1651147633.548773][10591:10596] CHIP:DMG: - [1651147633.548813][10591:10596] CHIP:DMG: }, - [1651147633.548860][10591:10596] CHIP:DMG: - [1651147633.548898][10591:10596] CHIP:DMG: ], - [1651147633.548942][10591:10596] CHIP:DMG: - [1651147633.548978][10591:10596] CHIP:DMG: SuppressResponse = true, - [1651147633.549016][10591:10596] CHIP:DMG: InteractionModelRevision = 1 - [1651147633.549050][10591:10596] CHIP:DMG: } - [1651147633.549200][10591:10596] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Reads constraints of optional attributes from DUT: StartOfWeek" + PICS: TSTAT.S.A0020 + command: "readAttribute" + attribute: "StartOfWeek" + response: + constraints: + type: enum8 + minValue: 0 + maxValue: 6 - - label: - "Read HVACSystemTypeConfiguration attribute from the DUT and Verify - that the DUT responds with a map8 value. The value has to be in the - range of 0x00 to 0x3f" - verification: | - ./apps/chip-tool thermostat read hvac-system-type-configuration 54321 1 + - label: "Reads optional attributes from DUT: NumberOfWeeklyTransitions" + PICS: TSTAT.S.A0021 + command: "readAttribute" + attribute: "NumberOfWeeklyTransitions" + response: + constraints: + type: uint8 - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0009, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Reads optional attributes from DUT: NumberOfDailyTransitions" + PICS: TSTAT.S.A0022 + command: "readAttribute" + attribute: "NumberOfDailyTransitions" + response: + constraints: + type: uint8 - - label: - "Read LocalTemperatureCalibration attribute from the DUT and Verify - that the DUT responds with an int8 value.The value has to be in the - range of -25 to 25" - verification: | - ./apps/chip-tool thermostat read local-temperature-calibration 54321 1 + - label: "Read TemperatureSetpointHold attribute from the DUT" + PICS: TSTAT.S.A0023 + command: "readAttribute" + attribute: "TemperatureSetpointHold" + response: + constraints: + type: enum8 + minValue: 0 + maxValue: 1 - [1651147993.335400][10670:10675] CHIP:DMG: ReportDataMessage = - [1651147993.335427][10670:10675] CHIP:DMG: { - [1651147993.335448][10670:10675] CHIP:DMG: AttributeReportIBs = - [1651147993.335480][10670:10675] CHIP:DMG: [ - [1651147993.335504][10670:10675] CHIP:DMG: AttributeReportIB = - [1651147993.335539][10670:10675] CHIP:DMG: { - [1651147993.335567][10670:10675] CHIP:DMG: AttributeStatusIB = - [1651147993.335599][10670:10675] CHIP:DMG: { - [1651147993.335626][10670:10675] CHIP:DMG: AttributePathIB = - [1651147993.335659][10670:10675] CHIP:DMG: { - [1651147993.335695][10670:10675] CHIP:DMG: Endpoint = 0x1, - [1651147993.335727][10670:10675] CHIP:DMG: Cluster = 0x201, - [1651147993.335763][10670:10675] CHIP:DMG: Attribute = 0x0000_0010, - [1651147993.335797][10670:10675] CHIP:DMG: } - [1651147993.335833][10670:10675] CHIP:DMG: - [1651147993.335868][10670:10675] CHIP:DMG: StatusIB = - [1651147993.335902][10670:10675] CHIP:DMG: { - [1651147993.335933][10670:10675] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147993.335968][10670:10675] CHIP:DMG: }, - [1651147993.336002][10670:10675] CHIP:DMG: - [1651147993.336029][10670:10675] CHIP:DMG: }, - [1651147993.336063][10670:10675] CHIP:DMG: - [1651147993.336089][10670:10675] CHIP:DMG: }, - [1651147993.336122][10670:10675] CHIP:DMG: - [1651147993.336143][10670:10675] CHIP:DMG: ], - [1651147993.336174][10670:10675] CHIP:DMG: - [1651147993.336198][10670:10675] CHIP:DMG: SuppressResponse = true, - [1651147993.336224][10670:10675] CHIP:DMG: InteractionModelRevision = 1 - [1651147993.336245][10670:10675] CHIP:DMG: } - [1651147993.336348][10670:10675] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read TemperatureSetpointHoldDuration attribute from the DUT" + PICS: TSTAT.S.A0024 + command: "readAttribute" + attribute: "TemperatureSetpointHoldDuration" + response: + constraints: + type: uint16 + minValue: 0 + maxValue: 1440 - - label: - "Reads constraints of optional attributes from DUT: - MinSetpointDeadBand" - optional: true + - label: "Read ThermostatProgrammingOperationMode attribute from the DUT" + PICS: TSTAT.S.A0025 command: "readAttribute" - attribute: "MinSetpointDeadBand" + attribute: "ThermostatProgrammingOperationMode" response: constraints: - type: int8 + type: map8 minValue: 0 - maxValue: 25 + maxValue: 7 - - label: - "Read RemoteSensing attribute from the DUT and Verify that the DUT - responds with a map8 value. The value has to be in the range of 0x00 - to 0x07" - verification: | - ./apps/chip-tool thermostat read remote-sensing 54321 1 + - label: "Read ThermostatRunningState attribute from the DUT" + PICS: TSTAT.S.A0029 + command: "readAttribute" + attribute: "ThermostatRunningState" + response: + constraints: + type: map16 + minValue: 0 + maxValue: 127 - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_001A, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read SetpointChangeSource attribute from the DUT" + PICS: TSTAT.S.A0030 + command: "readAttribute" + attribute: "SetpointChangeSource" + response: + constraints: + type: enum8 + minValue: 0 + maxValue: 2 - - label: - "Read AlarmMask attribute from the DUT and Verify that the DUT - responds with a map8 value.The value has to be in the range of 0x00 to - 0x07." - verification: | - ./apps/chip-tool thermostat read alarm-mask 54321 1 + - label: "Read SetpointChangeAmount attribute from the DUT" + PICS: TSTAT.S.A0031 + command: "readAttribute" + attribute: "SetpointChangeAmount" + response: + constraints: + type: int16 - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_001D, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read SetpointChangeSourceTimestamp attribute from the DUT" + PICS: TSTAT.S.A0032 + command: "readAttribute" + attribute: "SetpointChangeSourceTimestamp" + response: + constraints: + type: utc - - label: - "Read ThermostatRunningMode attribute from the DUT and Verify that the - DUT responds with an enum8 value.The value has to be 0, 3 or 4" - verification: | - ./apps/chip-tool thermostat read thermostat-running-mode 54321 1 + - label: "Read OccupiedSetback attribute from the DUT" + PICS: TSTAT.S.A0034 + command: "readAttribute" + attribute: "OccupiedSetback" + response: + constraints: + type: uint8 - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_001E, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read OccupiedSetbackMin attribute from the DUT" + PICS: TSTAT.S.A0035 + command: "readAttribute" + attribute: "OccupiedSetbackMin" + response: + constraints: + type: uint8 - - label: "Reads constraints of optional attributes from DUT: StartOfWeek" - optional: true + - label: "Read OccupiedSetbackMax attribute from the DUT" + PICS: TSTAT.S.A0036 command: "readAttribute" - attribute: "StartOfWeek" + attribute: "OccupiedSetbackMax" response: constraints: - type: enum8 - minValue: 0 - maxValue: 6 + type: uint8 - - label: - "Reads constraints of optional attributes from DUT: - NumberOfWeeklyTransitions" - optional: true + - label: "Read UnoccupiedSetback attribute from the DUT" + PICS: TSTAT.S.A0037 command: "readAttribute" - attribute: "NumberOfWeeklyTransitions" + attribute: "UnoccupiedSetback" response: constraints: type: uint8 - - label: - "Reads constraints of optional attributes from DUT: - NumberOfDailyTransitions" - optional: true + - label: "Read UnoccupiedSetbackMin attribute from the DUT" + PICS: TSTAT.S.A0038 command: "readAttribute" - attribute: "NumberOfDailyTransitions" + attribute: "UnoccupiedSetbackMin" response: constraints: type: uint8 - - label: - "Read TemperatureSetpointHold attribute from the DUT and Verify that - the DUT responds with an enum8 value.The value has to 0 or 1" - verification: | - ./apps/chip-tool thermostat read temperature-setpoint-hold 54321 1 + - label: "Read UnoccupiedSetbackMax attribute from the DUT" + PICS: TSTAT.S.A0039 + command: "readAttribute" + attribute: "UnoccupiedSetbackMax" + response: + constraints: + type: uint8 - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0023, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read EmergencyHeatDelta attribute from the DUT" + PICS: TSTAT.S.A003a + command: "readAttribute" + attribute: "EmergencyHeatDelta" + response: + constraints: + type: uint8 - - label: - "Read TemperatureSetpointHoldDuration attribute from the DUT and - Verify that the DUT responds with a uint16 value or NULL.The value has - to be in the range of 0 to 1440" - verification: | - ./apps/chip-tool thermostat read temperature-setpoint-hold-duration 54321 1 + - label: "Read ACType attribute from the DUT" + PICS: TSTAT.S.A0040 + command: "readAttribute" + attribute: "ACType" + response: + constraints: + type: enum8 + minValue: 0 + maxValue: 4 - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0024, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read ACCapacity attribute from the DUT" + PICS: TSTAT.S.A0041 + command: "readAttribute" + attribute: "ACCapacity" + response: + constraints: + type: uint16 - - label: - "Read ThermostatProgrammingOperationMode attribute from the DUT and - Verify that the DUT responds with a map8 value.The value has to be in - the range of 0x00 to 0x07" - verification: | - ./apps/chip-tool thermostat read thermostat-programming-operation-mode 54321 1 + - label: "Read ACRefrigerantType attribute from the DUT" + PICS: TSTAT.S.A0042 + command: "readAttribute" + attribute: "ACRefrigerantType" + response: + constraints: + type: enum8 + minValue: 0 + maxValue: 3 - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0025, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read ACCompressorType attribute from the DUT" + PICS: TSTAT.S.A0043 + command: "readAttribute" + attribute: "ACCompressorType" + response: + constraints: + type: enum8 + minValue: 0 + maxValue: 3 - - label: - "Read ThermostatRunningState attribute from the DUT and Verify that - the DUT responds with a map16 value.The value has to be in the range - of 0x00 to 0x7F" - verification: | - ./apps/chip-tool thermostat read thermostat-running-mode 54321 1 + - label: "Read ACErrorCode attribute from the DUT" + PICS: TSTAT.S.A0044 + command: "readAttribute" + attribute: "ACErrorCode" + response: + constraints: + type: map32 - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_001E, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read SetpointChangeSource attribute from the DUT and Verify that the - DUT responds with an enum8 value. The value has to be in the range of - 0 to 2" - verification: | - ./apps/chip-tool thermostat read setpoint-change-source 54321 1 - - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0030, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read SetpointChangeAmount attribute from the DUT and Verify that the - DUT responds with an int16 value or NULL" - verification: | - ./apps/chip-tool thermostat read setpoint-change-amount 54321 1 - - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0031, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read SetpointChangeSourceTimestamp attribute from the DUT and Verify - that the DUT responds with a utc value" - verification: | - ./apps/chip-tool thermostat read setpoint-change-source-timestamp 54321 1 - - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0001, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read OccupiedSetback attribute from the DUT and Verify that the DUT - responds with a uint8 value or NULL" - verification: | - Attribute Not implemented in the SDK - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read OccupiedSetbackMin attribute from the DUT and Verify that the - DUT responds with a uint8 value or NULL" - verification: | - Attribute Not implemented in the SDK - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read OccupiedSetbackMax attribute from the DUT and Verify that the - DUT responds with a uint8 value or NULL" - verification: | - Attribute Not implemented in the SDK - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read UnoccupiedSetback attribute from the DUT and Verify that the DUT - responds with a uint8 value or NULL" - verification: | - Attribute Not implemented in the SDK - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read UnoccupiedSetbackMin attribute from the DUT and Verify that the - DUT responds with a uint8 value or NULL" - verification: | - Attribute Not implemented in the SDK - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read UnoccupiedSetbackMax attribute from the DUT and Verify that the - DUT responds with a uint8 value or NULL" - verification: | - Attribute Not implemented in the SDK - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read EmergencyHeatDelta attribute from the DUT and Verify that the - DUT responds with a uint8 value or NULL" - verification: | - Attribute Not implemented in the SDK - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read ACType attribute from the DUT and Verify that the DUT responds - with an enum8 value. The value has to be in the range of 0 to 4" - verification: | - ./apps/chip-tool thermostat read ac-type 54321 1 - - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0040, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read ACCapacity attribute from the DUT and Verify that the DUT - responds with a uint16 value" - verification: | - ./apps/chip-tool thermostat read ac-capacity 54321 1 - - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0041, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read ACRefrigerantType attribute from the DUT and VVerify that the - DUT responds with an enum8 value.The value has to be in the range of 0 - to 3" - verification: | - ./apps/chip-tool thermostat read ac-refrigerant-type 54321 1 - - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0042, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read ACCompressorType attribute from the DUT and Verify that the DUT - responds with an enum8 value.The value has to be in the range of 0 to - 3" - verification: | - ./apps/chip-tool thermostat read ac-compressor 54321 1 - - Attribute Not implemented in the SDK - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read ACErrorCode attribute from the DUT and Verify that the DUT - responds with a map32 value" - verification: | - ./apps/chip-tool thermostat read ac-error-code 54321 1 - - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0044, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read ACLouverPosition attribute from the DUT and Verify that the DUT - responds with an enum8 value.The value has to be in the range of 1 to - 5" - verification: | - ./apps/chip-tool thermostat read ac-louver-position 54321 1 - - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0045, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - - label: - "Read ACCoilTemperature attribute from the DUT and Verify that the DUT - responds with an int16 value or NULL" - verification: | - ./apps/chip-tool thermostat read ac-coil-temperature 54321 1 - - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0046, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read ACLouverPosition attribute from the DUT" + PICS: TSTAT.S.A0045 + command: "readAttribute" + attribute: "ACLouverPosition" + response: + constraints: + type: enum8 + minValue: 1 + maxValue: 5 - - label: - "Read ACCapacityFormat attribute from the DUT and Verify that the DUT - responds with an enum8 value.The value has to be 0." - verification: | - ./apps/chip-tool thermostat read ac-capacity-format 54321 1 + - label: "Read ACCoilTemperature attribute from the DUT" + PICS: TSTAT.S.A0046 + command: "readAttribute" + attribute: "ACCoilTemperature" + response: + constraints: + type: int16 - [1651147597.962878][10583:10588] CHIP:DMG: ReportDataMessage = - [1651147597.962928][10583:10588] CHIP:DMG: { - [1651147597.962957][10583:10588] CHIP:DMG: AttributeReportIBs = - [1651147597.963014][10583:10588] CHIP:DMG: [ - [1651147597.963047][10583:10588] CHIP:DMG: AttributeReportIB = - [1651147597.963103][10583:10588] CHIP:DMG: { - [1651147597.963138][10583:10588] CHIP:DMG: AttributeStatusIB = - [1651147597.963177][10583:10588] CHIP:DMG: { - [1651147597.963226][10583:10588] CHIP:DMG: AttributePathIB = - [1651147597.963286][10583:10588] CHIP:DMG: { - [1651147597.963329][10583:10588] CHIP:DMG: Endpoint = 0x1, - [1651147597.963389][10583:10588] CHIP:DMG: Cluster = 0x201, - [1651147597.963449][10583:10588] CHIP:DMG: Attribute = 0x0000_0047, - [1651147597.963575][10583:10588] CHIP:DMG: } - [1651147597.963641][10583:10588] CHIP:DMG: - [1651147597.963683][10583:10588] CHIP:DMG: StatusIB = - [1651147597.963724][10583:10588] CHIP:DMG: { - [1651147597.963785][10583:10588] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1651147597.963846][10583:10588] CHIP:DMG: }, - [1651147597.963892][10583:10588] CHIP:DMG: - [1651147597.963945][10583:10588] CHIP:DMG: }, - [1651147597.963991][10583:10588] CHIP:DMG: - [1651147597.964040][10583:10588] CHIP:DMG: }, - [1651147597.964092][10583:10588] CHIP:DMG: - [1651147597.964125][10583:10588] CHIP:DMG: ], - [1651147597.964180][10583:10588] CHIP:DMG: - [1651147597.964213][10583:10588] CHIP:DMG: SuppressResponse = true, - [1651147597.964258][10583:10588] CHIP:DMG: InteractionModelRevision = 1 - [1651147597.964290][10583:10588] CHIP:DMG: } - [1651147597.964450][10583:10588] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" + - label: "Read ACCapacityFormat attribute from the DUT" + PICS: TSTAT.S.A0047 + command: "readAttribute" + attribute: "ACCapacityformat" + response: + value: 0 + constraints: + type: enum8 diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_2_2.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_2_2.yaml index 29abdb67949e91..e763489c1e2795 100644 --- a/src/app/tests/suites/certification/Test_TC_WNCV_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_WNCV_2_2.yaml @@ -46,20 +46,3 @@ tests: value: "Please enter 'y' for success" - name: "expectedValue" value: "y" - - - label: - "Reads ConfigStatus attribute from DUT, value of bit 0 must be 1b - operational" - verification: | - ./chip-tool windowcovering read config-status 1 1 - [1650882400.614314][8634:8639] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0102 Attribute 0x0000_0007 DataVersion: 366273182 - [1650882400.614428][8634:8639] CHIP:TOO: ConfigStatus: 27 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT && WNCV.S.A0007 && WNCV.S.F01 && WNCV.S.F04 - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values index 645c7386554f85..843e6394dbae04 100644 --- a/src/app/tests/suites/certification/ci-pics-values +++ b/src/app/tests/suites/certification/ci-pics-values @@ -112,12 +112,6 @@ WNCV.C.C01.Tx=1 WNCV.C.C05.Tx=1 WNCV.C.C08.Tx=1 A_TEMPERATURE_TOLERANCE=1 -TSTAT_OCC=1 -TSTAT_HEAT=1 -TSTAT_COOL=1 -TSTAT_SCH=1 -TSTAT_SB=1 -TSTAT_AUTO=1 # Color Control Cluster CC.S.A0000=1 @@ -1294,4 +1288,69 @@ OPCREDS.C.C07.Tx=1 OPCREDS.C.C08.Rsp=1 OPCREDS.C.C09.Tx=1 OPCREDS.C.C0a.Tx=1 -OPCREDS.C.C0b.Tx=1 \ No newline at end of file +OPCREDS.C.C0b.Tx=1 + +#Thermostat +TSTAT.S.A0000=1 +TSTAT.S.A0001=0 +TSTAT.S.A0002=0 +TSTAT.S.A0003=1 +TSTAT.S.A0004=1 +TSTAT.S.A0005=1 +TSTAT.S.A0006=1 +TSTAT.S.A0007=0 +TSTAT.S.A0008=0 +TSTAT.S.A0009=0 +TSTAT.S.A0010=0 +TSTAT.S.A0011=1 +TSTAT.S.A0012=1 +TSTAT.S.A0013=0 +TSTAT.S.A0014=0 +TSTAT.S.A0015=1 +TSTAT.S.A0016=1 +TSTAT.S.A0017=1 +TSTAT.S.A0018=1 +TSTAT.S.A0019=1 +TSTAT.S.A001a=0 +TSTAT.S.A001b=1 +TSTAT.S.A001c=1 +TSTAT.S.A001d=0 +TSTAT.S.A001e=0 +TSTAT.S.A0020=0 +TSTAT.S.A0021=0 +TSTAT.S.A0022=0 +TSTAT.S.A0023=0 +TSTAT.S.A0024=0 +TSTAT.S.A0025=0 +TSTAT.S.A0029=0 +TSTAT.S.A0030=0 +TSTAT.S.A0031=0 +TSTAT.S.A0032=0 +TSTAT.S.A0034=0 +TSTAT.S.A0035=0 +TSTAT.S.A0036=0 +TSTAT.S.A0037=0 +TSTAT.S.A0038=0 +TSTAT.S.A0039=0 +TSTAT.S.A003a=0 +TSTAT.S.A0040=0 +TSTAT.S.A0041=0 +TSTAT.S.A0042=0 +TSTAT.S.A0043=0 +TSTAT.S.A0044=0 +TSTAT.S.A0045=0 +TSTAT.S.A0046=0 +TSTAT.S.A0047=0 +#commands +TSTAT.S.C00.Rsp=1 +TSTAT.S.C01.Rsp=1 +TSTAT.S.C02.Rsp=1 +TSTAT.S.C03.Rsp=1 +TSTAT.S.C04.Rsp=1 +#Device capabilities +TSTAT.S.F00=1 +TSTAT.S.F01=1 +TSTAT.S.F02=1 +TSTAT.S.F03=1 +TSTAT.S.F04=1 +TSTAT.S.F05=1 \ No newline at end of file diff --git a/src/app/tests/suites/tests.js b/src/app/tests/suites/tests.js index c31999ac3f06e4..b354d8be397579 100644 --- a/src/app/tests/suites/tests.js +++ b/src/app/tests/suites/tests.js @@ -90,7 +90,11 @@ function getManualTests() { "Test_TC_BDX_2_5", ]; - const bridge = ["Test_TC_BR_1", "Test_TC_BR_2", "Test_TC_BR_3"]; + const bridge = [ + "Test_TC_BR_1", + "Test_TC_BR_2", + "Test_TC_BR_3", + ]; const DeviceAttestation = [ "Test_TC_DA_1_1", @@ -142,7 +146,10 @@ function getManualTests() { "Test_TC_DLOG_3_1", ]; - const Descriptor = ["Test_TC_DESC_2_1", "Test_TC_DESC_2_2"]; + const Descriptor = [ + "Test_TC_DESC_2_1", + "Test_TC_DESC_2_2", + ]; const EthernetNetworkDiagnostics = [ "Test_TC_DGETH_1_1", @@ -163,9 +170,15 @@ function getManualTests() { "Test_TC_DGGEN_3_2", ]; - const Identify = ["Test_TC_I_3_1", "Test_TC_I_3_2"]; + const Identify = [ + "Test_TC_I_3_1", + "Test_TC_I_3_2", + ]; - const IlluminanceMeasurement = ["Test_TC_ILL_2_2", "Test_TC_ILL_3_1"]; + const IlluminanceMeasurement = [ + "Test_TC_ILL_2_2", + "Test_TC_ILL_3_1", + ]; const InteractionDataModel = [ "Test_TC_IDM_1_1", @@ -315,9 +328,15 @@ function getManualTests() { "Test_TC_DGWIFI_3_2", ]; - const WindowCovering = ["Test_TC_WNCV_6_1", "Test_TC_WNCV_7_1"]; + const WindowCovering = [ + "Test_TC_WNCV_6_1", + "Test_TC_WNCV_7_1", + ]; - const FlowMeasurement = ["Test_TC_FLW_2_2", "Test_TC_FLW_3_1"]; + const FlowMeasurement = [ + "Test_TC_FLW_2_2", + "Test_TC_FLW_3_1", + ]; const OccupancySensing = [ "Test_TC_OCC_2_2", @@ -327,11 +346,20 @@ function getManualTests() { "Test_TC_OCC_3_2", ]; - const PressureMeasurement = ["Test_TC_PRS_2_2", "Test_TC_PRS_3_1"]; + const PressureMeasurement = [ + "Test_TC_PRS_2_2", + "Test_TC_PRS_3_1", + ]; - const PowerSource = ["Test_TC_PS_2_2", "Test_TC_PS_3_1"]; + const PowerSource = [ + "Test_TC_PS_2_2", + "Test_TC_PS_3_1", + ]; - const BooleanState = ["Test_TC_BOOL_2_2", "Test_TC_BOOL_3_1"]; + const BooleanState = [ + "Test_TC_BOOL_2_2", + "Test_TC_BOOL_3_1", + ]; const ColorControl = [ "Test_TC_CC_2_2", @@ -370,9 +398,16 @@ function getManualTests() { "Test_TC_LVL_8_1", ]; - const OnOff = ["Test_TC_OO_2_3", "Test_TC_OO_3_1", "Test_TC_OO_3_2"]; + const OnOff = [ + "Test_TC_OO_2_3", + "Test_TC_OO_3_1", + "Test_TC_OO_3_2", + ]; - const RelativeHumidityMeasurement = ["Test_TC_RH_2_2", "Test_TC_RH_3_1"]; + const RelativeHumidityMeasurement = [ + "Test_TC_RH_2_2", + "Test_TC_RH_3_1", + ]; const Switch = [ "Test_TC_SWTCH_1_1", @@ -381,11 +416,19 @@ function getManualTests() { "Test_TC_SWTCH_3_2", ]; - const TemperatureMeasurement = ["Test_TC_TMP_2_2", "Test_TC_TMP_3_1"]; + const TemperatureMeasurement = [ + "Test_TC_TMP_2_2", + "Test_TC_TMP_3_1", + ]; - const Thermostat = ["Test_TC_TSTAT_3_1", "Test_TC_TSTAT_3_2"]; + const Thermostat = [ + "Test_TC_TSTAT_3_1", + "Test_TC_TSTAT_3_2", + ]; - const ThermostatUserConfiguration = ["Test_TC_TSUIC_3_1"]; + const ThermostatUserConfiguration = [ + "Test_TC_TSUIC_3_1", + ]; const ThreadNetworkDiagnostics = [ "Test_TC_DGTHREAD_1_1", @@ -439,7 +482,9 @@ function getManualTests() { "Test_TC_S_3_1", ]; - const PumpConfigurationControl = ["Test_TC_PCC_3_1"]; + const PumpConfigurationControl = [ + "Test_TC_PCC_3_1", + ]; const tests = [ DeviceDiscovery, @@ -495,11 +540,18 @@ function getManualTests() { } function getTests() { - const AccessControl = ["TestAccessControlCluster"]; + const AccessControl = [ + "TestAccessControlCluster", + ]; - const BooleanState = ["Test_TC_BOOL_1_1", "Test_TC_BOOL_2_1"]; + const BooleanState = [ + "Test_TC_BOOL_1_1", + "Test_TC_BOOL_2_1", + ]; - const Actions = ["Test_TC_ACT_1_1"]; + const Actions = [ + "Test_TC_ACT_1_1", + ]; const ColorControl = [ "Test_TC_CC_1_1", @@ -524,20 +576,33 @@ function getTests() { "Test_TC_CC_8_1", ]; - const DeviceManagement = ["Test_TC_BINFO_2_1"]; + const DeviceManagement = [ + "Test_TC_BINFO_2_1", + ]; - const Descriptor = ["Test_TC_DESC_1_1"]; + const Descriptor = [ + "Test_TC_DESC_1_1", + ]; const EthernetNetworkDiagnostics = [ "Test_TC_DGETH_2_1", "Test_TC_DGETH_2_2", ]; - const FlowMeasurement = ["Test_TC_FLW_1_1", "Test_TC_FLW_2_1"]; + const FlowMeasurement = [ + "Test_TC_FLW_1_1", + "Test_TC_FLW_2_1", + ]; - const GeneralCommissioning = ["Test_TC_CGEN_1_1", "Test_TC_CGEN_2_1"]; + const GeneralCommissioning = [ + "Test_TC_CGEN_1_1", + "Test_TC_CGEN_2_1", + ]; - const GeneralDiagnostics = ["Test_TC_DGGEN_1_1", "Test_TC_DGGEN_2_1"]; + const GeneralDiagnostics = [ + "Test_TC_DGGEN_1_1", + "Test_TC_DGGEN_2_1", + ]; const Identify = [ "Test_TC_I_1_1", @@ -546,9 +611,15 @@ function getTests() { "Test_TC_I_2_3", ]; - const IlluminanceMeasurement = ["Test_TC_ILL_1_1", "Test_TC_ILL_2_1"]; + const IlluminanceMeasurement = [ + "Test_TC_ILL_1_1", + "Test_TC_ILL_2_1", + ]; - const OccupancySensing = ["Test_TC_OCC_1_1", "Test_TC_OCC_2_1"]; + const OccupancySensing = [ + "Test_TC_OCC_1_1", + "Test_TC_OCC_2_1", + ]; const LevelControl = [ "Test_TC_LVL_1_1", @@ -607,11 +678,18 @@ function getTests() { "Test_TC_CONTENTLAUNCHER_10_1", ]; - const ModeSelect = ["Test_TC_MOD_1_1"]; + const ModeSelect = [ + "Test_TC_MOD_1_1", + ]; - const MultipleFabrics = ["Test_TC_CADMIN_1_3", "Test_TC_CADMIN_1_4"]; + const MultipleFabrics = [ + "Test_TC_CADMIN_1_3", + "Test_TC_CADMIN_1_4", + ]; - const OTASoftwareUpdate = ["OTA_SuccessfulTransfer"]; + const OTASoftwareUpdate = [ + "OTA_SuccessfulTransfer", + ]; const OnOff = [ "Test_TC_OO_1_1", @@ -620,9 +698,15 @@ function getTests() { "Test_TC_OO_2_4", ]; - const PowerSource = ["Test_TC_PS_1_1", "Test_TC_PS_2_1"]; + const PowerSource = [ + "Test_TC_PS_1_1", + "Test_TC_PS_2_1", + ]; - const PressureMeasurement = ["Test_TC_PRS_1_1", "Test_TC_PRS_2_1"]; + const PressureMeasurement = [ + "Test_TC_PRS_1_1", + "Test_TC_PRS_2_1", + ]; const PumpConfigurationControl = [ "Test_TC_PCC_1_1", @@ -632,15 +716,27 @@ function getTests() { "Test_TC_PCC_2_4", ]; - const PowerSourceConfiguration = ["Test_TC_PSCFG_1_1"]; + const PowerSourceConfiguration = [ + "Test_TC_PSCFG_1_1", + ]; - const RelativeHumidityMeasurement = ["Test_TC_RH_1_1", "Test_TC_RH_2_1"]; + const RelativeHumidityMeasurement = [ + "Test_TC_RH_1_1", + "Test_TC_RH_2_1", + ]; - const SecureChannel = ["Test_TC_SC_4_2"]; + const SecureChannel = [ + "Test_TC_SC_4_2", + ]; - const Switch = ["Test_TC_SWTCH_2_1"]; + const Switch = [ + "Test_TC_SWTCH_2_1", + ]; - const TemperatureMeasurement = ["Test_TC_TMP_1_1", "Test_TC_TMP_2_1"]; + const TemperatureMeasurement = [ + "Test_TC_TMP_1_1", + "Test_TC_TMP_2_1", + ]; const Thermostat = [ "Test_TC_TSTAT_1_1", @@ -661,7 +757,10 @@ function getTests() { "Test_TC_DGTHREAD_2_4", ]; - const WiFiNetworkDiagnostics = ["Test_TC_DGWIFI_2_1", "Test_TC_DGWIFI_2_3"]; + const WiFiNetworkDiagnostics = [ + "Test_TC_DGWIFI_2_1", + "Test_TC_DGWIFI_2_3", + ]; const WindowCovering = [ "Test_TC_WNCV_1_1", @@ -722,7 +821,9 @@ function getTests() { "TestFanControl", ]; - const MultiAdmin = ["TestMultiAdmin"]; + const MultiAdmin = [ + "TestMultiAdmin", + ]; const SoftwareDiagnostics = [ "Test_TC_DGSW_2_1", @@ -730,7 +831,9 @@ function getTests() { "Test_TC_DGSW_2_3", ]; - const Subscriptions = ["TestSubscribe_OnOff"]; + const Subscriptions = [ + "TestSubscribe_OnOff", + ]; const DoorLock = [ "DL_UsersAndCredentials", diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 35dc4236d77909..2e70a80a5a4ec8 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -2429,7 +2429,7 @@ class Test_TC_CC_1_1Suite : public TestCommand class Test_TC_CC_2_1Suite : public TestCommand { public: - Test_TC_CC_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_2_1", 61, credsIssuerConfig) + Test_TC_CC_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CC_2_1", 54, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -2473,7 +2473,6 @@ class Test_TC_CC_2_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentHue", value, 0U)); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; @@ -2482,7 +2481,6 @@ class Test_TC_CC_2_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentSaturation", value, 0U)); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; @@ -2491,7 +2489,7 @@ class Test_TC_CC_2_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentX", value, 24939U)); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); } break; case 4: @@ -2509,25 +2507,28 @@ class Test_TC_CC_2_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentY", value, 24701U)); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint16_t value; + uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4U)); } break; case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint16_t value; + chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorTemperature", value, 250U)); + VerifyOrReturn(CheckConstraintType("value", "", "string")); + VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 254)); } break; case 8: @@ -2541,14 +2542,6 @@ class Test_TC_CC_2_1Suite : public TestCommand } break; case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorMode", value, 1U)); - } - break; - case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -2558,79 +2551,75 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 2U)); } break; - case 11: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("options", value, 0U)); - VerifyOrReturn(CheckConstraintType("value", "", "map8")); + VerifyOrReturn(CheckConstraintType("value", "", "bitmap8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4U)); } break; - case 12: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("enhancedCurrentHue", value, 0U)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); } break; - case 13: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("enhancedColorMode", value, 1U)); VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U)); } break; - case 14: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopActive", value, 0U)); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 15: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopDirection", value, 0U)); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 16: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopTime", value, 25U)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); } break; - case 17: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopStartEnhancedHue", value, 8960U)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); } break; - case 18: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorLoopStoredEnhancedHue", value, 0U)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); } break; - case 19: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -2638,33 +2627,18 @@ class Test_TC_CC_2_1Suite : public TestCommand FeatureMapValue = value; } break; - case 20: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValue("colorCapabilities", value, FeatureMapValue)); - } - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "map16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 31U)); } break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorTempPhysicalMinMireds", value, 0U)); - } - break; - case 23: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2674,15 +2648,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("colorTempPhysicalMaxMireds", value, 65279U)); - } - break; - case 25: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2692,7 +2658,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 26: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2702,7 +2668,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 27: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2712,35 +2678,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("remainingTime", value, 0U)); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - } - break; - case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 4U)); - } - break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::CharSpan value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 254)); - } - break; - case 31: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -2750,7 +2688,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 6U)); } break; - case 32: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2760,7 +2698,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 33: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2770,7 +2708,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 34: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -2778,7 +2716,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 35: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2788,7 +2726,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 36: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2798,7 +2736,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 37: + case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -2806,7 +2744,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 38: + case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2816,7 +2754,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 39: + case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2826,7 +2764,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 40: + case 33: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -2834,7 +2772,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 41: + case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2844,7 +2782,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 42: + case 35: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2854,7 +2792,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 43: + case 36: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -2862,7 +2800,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 44: + case 37: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2872,7 +2810,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 45: + case 38: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2882,7 +2820,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 46: + case 39: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -2890,7 +2828,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 47: + case 40: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2900,7 +2838,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 48: + case 41: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2910,7 +2848,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 49: + case 42: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -2918,7 +2856,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 50: + case 43: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2928,7 +2866,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 51: + case 44: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2938,7 +2876,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 52: + case 45: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2948,7 +2886,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 53: + case 46: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2958,7 +2896,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 54: + case 47: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -2966,7 +2904,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 55: + case 48: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2976,7 +2914,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 56: + case 49: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -2986,7 +2924,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 57: + case 50: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -2994,7 +2932,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "uint8")); } break; - case 58: + case 51: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -3004,7 +2942,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 59: + case 52: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; @@ -3014,7 +2952,7 @@ class Test_TC_CC_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 65279U)); } break; - case 60: + case 53: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::Nullable value; @@ -3045,360 +2983,318 @@ class Test_TC_CC_2_1Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Validate constraints of attribute: CurrentHue"); - VerifyOrDo(!ShouldSkip("CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(1, "TH reads CurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A0000 && CC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Validate constraints of attribute: CurrentSaturation"); - VerifyOrDo(!ShouldSkip("CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "TH reads CurrentSaturation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A0001 && CC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Reads CurrentX attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, - chip::NullOptional); + LogStep(3, "TH reads RemainingTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::RemainingTime::Id, + true, chip::NullOptional); } case 4: { - LogStep(4, "Validate constraints of attribute: CurrentX"); - VerifyOrDo(!ShouldSkip("CC.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "TH reads CurrentX attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A0003 && CC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Reads CurrentY attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "TH reads CurrentY attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A0004 && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Validate constraints of attribute: CurrentY"); - VerifyOrDo(!ShouldSkip("CC.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id, true, - chip::NullOptional); + LogStep(6, "TH reads DriftCompensation attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::DriftCompensation::Id, + true, chip::NullOptional); } case 7: { - LogStep(7, "Reads ColorTemperatureMireds attribute from DUT"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, + LogStep(7, "TH reads CompensationText attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CompensationText::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Validate constraints of attribute: ColorTemperatureMireds"); - VerifyOrDo(!ShouldSkip("CC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "TH reads ColorTemperatureMireds attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A0007 && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperature::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Reads ColorMode attribute from DUT"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorMode::Id, true, - chip::NullOptional); - } - case 10: { - LogStep(10, "Validate constraints of attribute: ColorMode"); + LogStep(9, "TH reads ColorMode attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorMode::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "Validate constraints of attribute: Options"); + case 10: { + LogStep(10, "TH reads Options attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Options::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Validate constraints of attribute: EnhancedCurrentHue"); - VerifyOrDo(!ShouldSkip("CC.S.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 11: { + LogStep(11, "TH reads EnhancedCurrentHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A4000 && CC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Validate constraints of attribute: EnhancedColorMode"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 12: { + LogStep(12, "TH reads EnhancedColorMode attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.F02 && CC.S.A4001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedColorMode::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "Validate constraints of attribute: ColorLoopActive"); - VerifyOrDo(!ShouldSkip("CC.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 13: { + LogStep(13, "TH reads ColorLoopActive attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A4002 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "Validate constraints of attribute: ColorLoopDirection"); - VerifyOrDo(!ShouldSkip("CC.S.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 14: { + LogStep(14, "TH reads ColorLoopDirection attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A4003 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "Validate constraints of attribute: ColorLoopTime"); - VerifyOrDo(!ShouldSkip("CC.S.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 15: { + LogStep(15, "TH reads ColorLoopTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A4004 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Validate constraints of attribute: ColorLoopStartEnhancedHue"); - VerifyOrDo(!ShouldSkip("CC.S.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 16: { + LogStep(16, "TH reads ColorLoopStartEnhancedHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A4005 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id, true, chip::NullOptional); } - case 18: { - LogStep(18, "Validate constraints of attribute: ColorLoopStoredEnhancedHue"); - VerifyOrDo(!ShouldSkip("CC.S.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 17: { + LogStep(17, "TH reads ColorLoopStoredEnhancedHue attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A4006 && CC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id, true, chip::NullOptional); } - case 19: { - LogStep(19, "read the optional global attribute: FeatureMap"); + case 18: { + LogStep(18, "TH reads FeatureMap attribute from DUT"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::FeatureMap::Id, true, chip::NullOptional); } - case 20: { - LogStep(20, "Reads ColorCapabilities attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A400a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorCapabilities::Id, - true, chip::NullOptional); - } - case 21: { - LogStep(21, "Validate constraints of attribute: ColorCapabilities"); + case 19: { + LogStep(19, "TH reads ColorCapabilities attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A400a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorCapabilities::Id, true, chip::NullOptional); } - case 22: { - LogStep(22, "Reads ColorTempPhysicalMinMireds attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, - ColorControl::Attributes::ColorTempPhysicalMinMireds::Id, true, chip::NullOptional); - } - case 23: { - LogStep(23, "Validate constraints of attribute: ColorTempPhysicalMinMireds"); - VerifyOrDo(!ShouldSkip("CC.S.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 20: { + LogStep(20, "TH reads ColorTempPhysicalMinMireds attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A400b && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id, true, chip::NullOptional); } - case 24: { - LogStep(24, "Read ColorTempPhysicalMaxMireds attribute from DUT"); - VerifyOrDo(!ShouldSkip("CC.S.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, - ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id, true, chip::NullOptional); - } - case 25: { - LogStep(25, "Validate constraints of attribute: ColorTempPhysicalMaxMireds"); - VerifyOrDo(!ShouldSkip("CC.S.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 21: { + LogStep(21, "TH reads ColorTempPhysicalMaxMireds attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A400c && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id, true, chip::NullOptional); } - case 26: { - LogStep(26, "Read the optional attribute: CoupleColorTempToLevelMinMireds"); - VerifyOrDo(!ShouldSkip("CC.S.A400d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 22: { + LogStep(22, "TH reads CoupleColorTempToLevelMinMireds attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A400d && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CoupleColorTempToLevelMinMireds::Id, true, chip::NullOptional); } - case 27: { - LogStep(27, "Read the optional attribute: StartUpColorTemperatureMireds"); - VerifyOrDo(!ShouldSkip("CC.S.A4010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 23: { + LogStep(23, "TH reads StartUpColorTemperatureMireds attribute from DUT"); + VerifyOrDo(!ShouldSkip("CC.S.A4010 && CC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::StartUpColorTemperatureMireds::Id, true, chip::NullOptional); } - case 28: { - LogStep(28, "Validate constraints of attribute: RemainingTime"); - VerifyOrDo(!ShouldSkip("CC.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::RemainingTime::Id, - true, chip::NullOptional); - } - case 29: { - LogStep(29, "Read the optional attribute: DriftCompensation"); - VerifyOrDo(!ShouldSkip("CC.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::DriftCompensation::Id, - true, chip::NullOptional); - } - case 30: { - LogStep(30, "Read the optional attribute: CompensationText"); - VerifyOrDo(!ShouldSkip("CC.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CompensationText::Id, - true, chip::NullOptional); - } - case 31: { - LogStep(31, "Read the mandatory attribute: NumberOfPrimaries"); + case 24: { + LogStep(24, "TH reads NumberOfPrimaries attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::NumberOfPrimaries::Id, true, chip::NullOptional); } - case 32: { - LogStep(32, "Read the mandatory attribute: Primary1X"); + case 25: { + LogStep(25, "TH reads Primary1X attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1X::Id, true, chip::NullOptional); } - case 33: { - LogStep(33, "Read the mandatory attribute: Primary1Y"); + case 26: { + LogStep(26, "TH reads Primary1Y attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Y::Id, true, chip::NullOptional); } - case 34: { - LogStep(34, "Read the mandatory attribute: Primary1Intensity"); + case 27: { + LogStep(27, "TH reads Primary1Intensity attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Intensity::Id, true, chip::NullOptional); } - case 35: { - LogStep(35, "Read the mandatory attribute: Primary2X"); + case 28: { + LogStep(28, "TH reads Primary2X attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2X::Id, true, chip::NullOptional); } - case 36: { - LogStep(36, "Read the mandatory attribute: Primary2Y"); + case 29: { + LogStep(29, "TH reads Primary2Y attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Y::Id, true, chip::NullOptional); } - case 37: { - LogStep(37, "Validate constraints of attribute: Primary2Intensity"); + case 30: { + LogStep(30, "TH reads Primary2Intensity attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Intensity::Id, true, chip::NullOptional); } - case 38: { - LogStep(38, "Read the mandatory attribute: Primary3X"); + case 31: { + LogStep(31, "TH reads Primary3X attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3X::Id, true, chip::NullOptional); } - case 39: { - LogStep(39, "Read the mandatory attribute: Primary3Y"); + case 32: { + LogStep(32, "TH reads Primary3Y attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Y::Id, true, chip::NullOptional); } - case 40: { - LogStep(40, "Read the mandatory attribute: Primary3Intensity"); + case 33: { + LogStep(33, "TH reads Primary3Intensity attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Intensity::Id, true, chip::NullOptional); } - case 41: { - LogStep(41, "Read the mandatory attribute: Primary4X"); + case 34: { + LogStep(34, "TH reads Primary4X attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4X::Id, true, chip::NullOptional); } - case 42: { - LogStep(42, "Read the mandatory attribute: Primary4Y"); + case 35: { + LogStep(35, "TH reads Primary4Y attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Y::Id, true, chip::NullOptional); } - case 43: { - LogStep(43, "Read the mandatory attribute: Primary4Intensity"); + case 36: { + LogStep(36, "TH reads Primary4Intensity attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Intensity::Id, true, chip::NullOptional); } - case 44: { - LogStep(44, "Read the mandatory attribute: Primary5X"); + case 37: { + LogStep(37, "TH reads Primary5X attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5X::Id, true, chip::NullOptional); } - case 45: { - LogStep(45, "Read the mandatory attribute: Primary5Y"); + case 38: { + LogStep(38, "TH reads Primary5Y attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Y::Id, true, chip::NullOptional); } - case 46: { - LogStep(46, "Read the mandatory attribute: Primary5Intensity"); + case 39: { + LogStep(39, "TH reads Primary5Intensity attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Intensity::Id, true, chip::NullOptional); } - case 47: { - LogStep(47, "Read the mandatory attribute: Primary6X"); + case 40: { + LogStep(40, "TH reads Primary6X attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6X::Id, true, chip::NullOptional); } - case 48: { - LogStep(48, "Read the mandatory attribute: Primary6Y"); + case 41: { + LogStep(41, "TH reads Primary6Y attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Y::Id, true, chip::NullOptional); } - case 49: { - LogStep(49, "Read the mandatory attribute: Primary6Intensity"); + case 42: { + LogStep(42, "TH reads Primary6Intensity attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Intensity::Id, true, chip::NullOptional); } - case 50: { - LogStep(50, "Read the optional attribute: WhitePointX"); + case 43: { + LogStep(43, "TH reads WhitePointX attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointX::Id, true, chip::NullOptional); } - case 51: { - LogStep(51, "Read the optional attribute: WhitePointY"); + case 44: { + LogStep(44, "TH reads WhitePointY attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointY::Id, true, chip::NullOptional); } - case 52: { - LogStep(52, "Read the optional attribute: ColorPointRX"); + case 45: { + LogStep(45, "TH reads ColorPointRX attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRX::Id, true, chip::NullOptional); } - case 53: { - LogStep(53, "Read the optional attribute: ColorPointRY"); + case 46: { + LogStep(46, "TH reads ColorPointRY attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRY::Id, true, chip::NullOptional); } - case 54: { - LogStep(54, "Read the optional attribute: ColorPointRIntensity"); + case 47: { + LogStep(47, "TH reads ColorPointRIntensity attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0034"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRIntensity::Id, true, chip::NullOptional); } - case 55: { - LogStep(55, "Read the optional attribute: ColorPointGX"); + case 48: { + LogStep(48, "TH reads ColorPointGX attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0036"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGX::Id, true, chip::NullOptional); } - case 56: { - LogStep(56, "Read the optional attribute: ColorPointGY"); + case 49: { + LogStep(49, "TH reads ColorPointGY attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0037"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGY::Id, true, chip::NullOptional); } - case 57: { - LogStep(57, "Read the optional attribute: ColorPointGIntensity"); + case 50: { + LogStep(50, "TH reads ColorPointGIntensity attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGIntensity::Id, true, chip::NullOptional); } - case 58: { - LogStep(58, "Read the optional attribute: ColorPointBX"); + case 51: { + LogStep(51, "TH reads ColorPointBX attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBX::Id, true, chip::NullOptional); } - case 59: { - LogStep(59, "Read the optional attribute: ColorPointBY"); + case 52: { + LogStep(52, "TH reads ColorPointBY attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A003b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBY::Id, true, chip::NullOptional); } - case 60: { - LogStep(60, "Read the optional attribute: ColorPointBIntensity"); + case 53: { + LogStep(53, "TH reads ColorPointBIntensity attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.A003c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBIntensity::Id, true, chip::NullOptional); @@ -9725,7 +9621,7 @@ class Test_TC_CC_8_1Suite : public TestCommand class Test_TC_BINFO_2_1Suite : public TestCommand { public: - Test_TC_BINFO_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BINFO_2_1", 19, credsIssuerConfig) + Test_TC_BINFO_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BINFO_2_1", 66, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -9733,7 +9629,69 @@ class Test_TC_BINFO_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_BINFO_2_1Suite() {} + ~Test_TC_BINFO_2_1Suite() + { + if (CountryCodeBuffer != nullptr) + { + chip::Platform::MemoryFree(CountryCodeBuffer); + CountryCodeBuffer = nullptr; + } + if (VendorNameValueBuffer != nullptr) + { + chip::Platform::MemoryFree(VendorNameValueBuffer); + VendorNameValueBuffer = nullptr; + } + if (ProductNameValueBuffer != nullptr) + { + chip::Platform::MemoryFree(ProductNameValueBuffer); + ProductNameValueBuffer = nullptr; + } + if (NodeLabelValueBuffer != nullptr) + { + chip::Platform::MemoryFree(NodeLabelValueBuffer); + NodeLabelValueBuffer = nullptr; + } + if (HardwareVersionStringValueBuffer != nullptr) + { + chip::Platform::MemoryFree(HardwareVersionStringValueBuffer); + HardwareVersionStringValueBuffer = nullptr; + } + if (SoftwareVersionStringValueBuffer != nullptr) + { + chip::Platform::MemoryFree(SoftwareVersionStringValueBuffer); + SoftwareVersionStringValueBuffer = nullptr; + } + if (ManufacturingDateValueBuffer != nullptr) + { + chip::Platform::MemoryFree(ManufacturingDateValueBuffer); + ManufacturingDateValueBuffer = nullptr; + } + if (PartNumberValueBuffer != nullptr) + { + chip::Platform::MemoryFree(PartNumberValueBuffer); + PartNumberValueBuffer = nullptr; + } + if (ProductURLValueBuffer != nullptr) + { + chip::Platform::MemoryFree(ProductURLValueBuffer); + ProductURLValueBuffer = nullptr; + } + if (ProductLabelValueBuffer != nullptr) + { + chip::Platform::MemoryFree(ProductLabelValueBuffer); + ProductLabelValueBuffer = nullptr; + } + if (SerialNumberValueBuffer != nullptr) + { + chip::Platform::MemoryFree(SerialNumberValueBuffer); + SerialNumberValueBuffer = nullptr; + } + if (UniqueIDValueBuffer != nullptr) + { + chip::Platform::MemoryFree(UniqueIDValueBuffer); + UniqueIDValueBuffer = nullptr; + } + } chip::System::Clock::Timeout GetWaitDuration() const override { @@ -9746,6 +9704,37 @@ class Test_TC_BINFO_2_1Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + char * CountryCodeBuffer = nullptr; + chip::CharSpan CountryCode; + uint16_t DataModelRevisionValue; + char * VendorNameValueBuffer = nullptr; + chip::CharSpan VendorNameValue; + chip::VendorId VendorIDValue; + char * ProductNameValueBuffer = nullptr; + chip::CharSpan ProductNameValue; + uint16_t ProductIDValue; + char * NodeLabelValueBuffer = nullptr; + chip::CharSpan NodeLabelValue; + uint16_t HardwareVersionValue; + char * HardwareVersionStringValueBuffer = nullptr; + chip::CharSpan HardwareVersionStringValue; + uint32_t SoftwareVersionValue; + char * SoftwareVersionStringValueBuffer = nullptr; + chip::CharSpan SoftwareVersionStringValue; + char * ManufacturingDateValueBuffer = nullptr; + chip::CharSpan ManufacturingDateValue; + char * PartNumberValueBuffer = nullptr; + chip::CharSpan PartNumberValue; + char * ProductURLValueBuffer = nullptr; + chip::CharSpan ProductURLValue; + char * ProductLabelValueBuffer = nullptr; + chip::CharSpan ProductLabelValue; + char * SerialNumberValueBuffer = nullptr; + chip::CharSpan SerialNumberValue; + char * UniqueIDValueBuffer = nullptr; + chip::CharSpan UniqueIDValue; + chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType CapabilityMinimaValue; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -9763,74 +9752,210 @@ class Test_TC_BINFO_2_1Suite : public TestCommand shouldContinue = true; break; case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + if (CountryCodeBuffer != nullptr) + { + chip::Platform::MemoryFree(CountryCodeBuffer); + } + CountryCodeBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(CountryCodeBuffer, value.data(), value.size()); + CountryCode = chip::CharSpan(CountryCodeBuffer, value.size()); + } + break; + case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65534U)); + DataModelRevisionValue = value; } break; - case 2: + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("dataModelRevision", value, DataModelRevisionValue)); + } + break; + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + if (VendorNameValueBuffer != nullptr) + { + chip::Platform::MemoryFree(VendorNameValueBuffer); + } + VendorNameValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(VendorNameValueBuffer, value.data(), value.size()); + VendorNameValue = chip::CharSpan(VendorNameValueBuffer, value.size()); } break; - case 3: + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("vendorName", value, VendorNameValue)); + } + break; + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::VendorId value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65521U)); + VendorIDValue = value; } break; - case 4: + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::VendorId value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("vendorID", value, VendorIDValue)); + } + break; + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + if (ProductNameValueBuffer != nullptr) + { + chip::Platform::MemoryFree(ProductNameValueBuffer); + } + ProductNameValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(ProductNameValueBuffer, value.data(), value.size()); + ProductNameValue = chip::CharSpan(ProductNameValueBuffer, value.size()); } break; - case 5: + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("productName", value, ProductNameValue)); + } + break; + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65534U)); + ProductIDValue = value; } break; - case 6: + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("productID", value, ProductIDValue)); + } + break; + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + if (NodeLabelValueBuffer != nullptr) + { + chip::Platform::MemoryFree(NodeLabelValueBuffer); + } + NodeLabelValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(NodeLabelValueBuffer, value.data(), value.size()); + NodeLabelValue = chip::CharSpan(NodeLabelValueBuffer, value.size()); } break; - case 7: + case 18: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 19: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("nodeLabel", value, chip::CharSpan("newnode", 7))); + } + break; + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("location", value, CountryCode)); VerifyOrReturn(CheckConstraintType("value", "", "string")); VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 16)); } break; - case 8: + case 21: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("location", value, chip::CharSpan("in", 2))); + } + break; + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 65534U)); + HardwareVersionValue = value; } break; - case 9: + case 24: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 25: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("hardwareVersion", value, HardwareVersionValue)); + } + break; + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::CharSpan value; @@ -9838,70 +9963,304 @@ class Test_TC_BINFO_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "", "string")); VerifyOrReturn(CheckConstraintMinLength("value", value.size(), 1)); VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 64)); + if (HardwareVersionStringValueBuffer != nullptr) + { + chip::Platform::MemoryFree(HardwareVersionStringValueBuffer); + } + HardwareVersionStringValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(HardwareVersionStringValueBuffer, value.data(), value.size()); + HardwareVersionStringValue = chip::CharSpan(HardwareVersionStringValueBuffer, value.size()); } break; - case 10: + case 27: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 28: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("hardwareVersionString", value, HardwareVersionStringValue)); + } + break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0UL)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4294967294UL)); + SoftwareVersionValue = value; + } + break; + case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 11: + case 31: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 32: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("softwareVersion", value, SoftwareVersionValue)); + } + break; + case 33: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinLength("value", value.size(), 1)); + if (SoftwareVersionStringValueBuffer != nullptr) + { + chip::Platform::MemoryFree(SoftwareVersionStringValueBuffer); + } + SoftwareVersionStringValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(SoftwareVersionStringValueBuffer, value.data(), value.size()); + SoftwareVersionStringValue = chip::CharSpan(SoftwareVersionStringValueBuffer, value.size()); + } + break; + case 34: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 35: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("softwareVersionString", value, SoftwareVersionStringValue)); + } + break; + case 36: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "string")); + VerifyOrReturn(CheckConstraintMinLength("value", value.size(), 8)); + VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 16)); + if (ManufacturingDateValueBuffer != nullptr) + { + chip::Platform::MemoryFree(ManufacturingDateValueBuffer); + } + ManufacturingDateValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(ManufacturingDateValueBuffer, value.data(), value.size()); + ManufacturingDateValue = chip::CharSpan(ManufacturingDateValueBuffer, value.size()); + } + break; + case 37: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 12: + case 38: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 39: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("manufacturingDate", value, ManufacturingDateValue)); + } + break; + case 40: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + if (PartNumberValueBuffer != nullptr) + { + chip::Platform::MemoryFree(PartNumberValueBuffer); + } + PartNumberValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(PartNumberValueBuffer, value.data(), value.size()); + PartNumberValue = chip::CharSpan(PartNumberValueBuffer, value.size()); } break; - case 13: + case 41: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 42: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("partNumber", value, PartNumberValue)); + } + break; + case 43: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "string")); + VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 256)); + if (ProductURLValueBuffer != nullptr) + { + chip::Platform::MemoryFree(ProductURLValueBuffer); + } + ProductURLValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(ProductURLValueBuffer, value.data(), value.size()); + ProductURLValue = chip::CharSpan(ProductURLValueBuffer, value.size()); + } + break; + case 44: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 14: + case 45: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 46: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("productURL", value, ProductURLValue)); + } + break; + case 47: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 64)); + if (ProductLabelValueBuffer != nullptr) + { + chip::Platform::MemoryFree(ProductLabelValueBuffer); + } + ProductLabelValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(ProductLabelValueBuffer, value.data(), value.size()); + ProductLabelValue = chip::CharSpan(ProductLabelValueBuffer, value.size()); } break; - case 15: + case 48: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 49: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 50: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("productLabel", value, ProductLabelValue)); + } + break; + case 51: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + if (SerialNumberValueBuffer != nullptr) + { + chip::Platform::MemoryFree(SerialNumberValueBuffer); + } + SerialNumberValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(SerialNumberValueBuffer, value.data(), value.size()); + SerialNumberValue = chip::CharSpan(SerialNumberValueBuffer, value.size()); } break; - case 16: + case 52: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 53: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("serialNumber", value, SerialNumberValue)); + } + break; + case 54: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("localConfigDisabled", value, false)); VerifyOrReturn(CheckConstraintType("value", "", "boolean")); } break; - case 17: + case 55: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 56: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { bool value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("localConfigDisabled", value, true)); + } + break; + case 57: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + bool value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("reachable", value, true)); VerifyOrReturn(CheckConstraintType("value", "", "boolean")); } break; - case 18: + case 58: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 59: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::CharSpan value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "string")); VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 32)); + if (UniqueIDValueBuffer != nullptr) + { + chip::Platform::MemoryFree(UniqueIDValueBuffer); + } + UniqueIDValueBuffer = static_cast(chip::Platform::MemoryAlloc(value.size())); + memcpy(UniqueIDValueBuffer, value.data(), value.size()); + UniqueIDValue = chip::CharSpan(UniqueIDValueBuffer, value.size()); + } + break; + case 60: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 61: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::CharSpan value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValueAsString("uniqueID", value, UniqueIDValue)); + } + break; + case 62: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + CapabilityMinimaValue = value; + } + break; + case 63: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 64: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_WRITE)); + break; + case 65: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); } break; default: @@ -9927,62 +10286,210 @@ class Test_TC_BINFO_2_1Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Query Data Model Revision"); + LogStep(1, "TH reads Location from the DUT."); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, true, + chip::NullOptional); + } + case 2: { + LogStep(2, "TH reads DataModelRevision from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id, true, chip::NullOptional); } - case 2: { - LogStep(2, "Query Vendor Name"); + case 3: { + LogStep(3, "TH writes DataModelRevision from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint16_t value; + value = 4388U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 4: { + LogStep(4, "TH reads DataModelRevision from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id, true, + chip::NullOptional); + } + case 5: { + LogStep(5, "TH reads VendorName from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorName::Id, true, chip::NullOptional); } - case 3: { - LogStep(3, "Query VendorID"); + case 6: { + LogStep(6, "TH writes VendorName from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("samplegarbage: not in length on purpose", 6); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorName::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 7: { + LogStep(7, "TH reads VendorName from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorName::Id, true, + chip::NullOptional); + } + case 8: { + LogStep(8, "TH reads VendorID from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorID::Id, true, chip::NullOptional); } - case 4: { - LogStep(4, "Query Product Name"); + case 9: { + LogStep(9, "TH writes VendorID from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::VendorId value; + value = static_cast(17); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorID::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 10: { + LogStep(10, "TH reads VendorID from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorID::Id, true, + chip::NullOptional); + } + case 11: { + LogStep(11, "TH reads ProductName from the DUT"); VerifyOrDo(!ShouldSkip("BINFO.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductName::Id, true, chip::NullOptional); } - case 5: { - LogStep(5, "Query ProductID"); + case 12: { + LogStep(12, "TH writes ProductName from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("newproductgarbage: not in length on purpose", 10); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductName::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 13: { + LogStep(13, "TH reads ProductName from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductName::Id, true, + chip::NullOptional); + } + case 14: { + LogStep(14, "TH reads ProductID from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductID::Id, true, chip::NullOptional); } - case 6: { - LogStep(6, "Query Node Label"); + case 15: { + LogStep(15, "TH writes ProductID from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint16_t value; + value = 17697U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductID::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 16: { + LogStep(16, "TH reads ProductID from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductID::Id, true, + chip::NullOptional); + } + case 17: { + LogStep(17, "TH reads NodeLabel from the DUT"); VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true, chip::NullOptional); } - case 7: { - LogStep(7, "Query User Location"); + case 18: { + LogStep(18, "TH writes NodeLabel from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("newnodegarbage: not in length on purpose", 7); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 19: { + LogStep(19, "TH reads NodeLabel from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true, + chip::NullOptional); + } + case 20: { + LogStep(20, "TH reads Location from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, true, chip::NullOptional); } - case 8: { - LogStep(8, "Query HardwareVersion"); + case 21: { + LogStep(21, "TH write Location from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("ingarbage: not in length on purpose", 2); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 22: { + LogStep(22, "TH reads Location from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, true, + chip::NullOptional); + } + case 23: { + LogStep(23, "TH reads HardwareVersion from the DUT"); VerifyOrDo(!ShouldSkip("BINFO.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersion::Id, true, chip::NullOptional); } - case 9: { - LogStep(9, "Query HardwareVersionString"); + case 24: { + LogStep(24, "TH writes HardwareVersion from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint16_t value; + value = 17713U; + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersion::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 25: { + LogStep(25, "TH reads HardwareVersion from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersion::Id, true, + chip::NullOptional); + } + case 26: { + LogStep(26, "TH reads HardwareVersionString from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersionString::Id, true, chip::NullOptional); } - case 10: { - LogStep(10, "TH reads SoftwareVersionString from the DUT and Verify it is of type string and verify the format"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && BINFO.S.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 27: { + LogStep(27, "TH writes HardwareVersionString from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("newhardwareversiongarbage: not in length on purpose", 18); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersionString::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 28: { + LogStep(28, "TH reads HardwareVersionString from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersionString::Id, true, + chip::NullOptional); + } + case 29: { + LogStep(29, "TH reads SoftwareVersion from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersion::Id, true, + chip::NullOptional); + } + case 30: { + LogStep(30, + "Verify that the SoftwareVersion is not displayed to the end-user through any device specific means (ex: " + "screen, audio)"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && BINFO.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -9990,8 +10497,50 @@ class Test_TC_BINFO_2_1Suite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } - case 11: { - LogStep(11, "TH reads ManufacturingDate from the DUT and Verify it is of type string and verify the format"); + case 31: { + LogStep(31, "TH writes SoftwareVersion from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + uint32_t value; + value = 33299UL; + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersion::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 32: { + LogStep(32, "TH reads SoftwareVersion from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersion::Id, true, + chip::NullOptional); + } + case 33: { + LogStep(33, "TH reads SoftwareVersionString from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersionString::Id, true, + chip::NullOptional); + } + case 34: { + LogStep(34, "TH writes SoftwareVersionString from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("1.0garbage: not in length on purpose", 3); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersionString::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 35: { + LogStep(35, "TH reads SoftwareVersionString from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersionString::Id, true, + chip::NullOptional); + } + case 36: { + LogStep(36, "TH reads ManufacturingDate from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ManufacturingDate::Id, true, + chip::NullOptional); + } + case 37: { + LogStep(37, "Verify if the first 8 characters specify date according to ISO 8601, i.e, YYYYMMDD"); VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && BINFO.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; @@ -10000,14 +10549,52 @@ class Test_TC_BINFO_2_1Suite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } - case 12: { - LogStep(12, "Query PartNumber"); + case 38: { + LogStep(38, "TH writes ManufacturingDate from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("20210814789452INgarbage: not in length on purpose", 16); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ManufacturingDate::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 39: { + LogStep(39, "TH reads ManufacturingDate from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ManufacturingDate::Id, true, + chip::NullOptional); + } + case 40: { + LogStep(40, "TH reads PartNumber from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A000c && PART_NUM"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::PartNumber::Id, true, + chip::NullOptional); + } + case 41: { + LogStep(41, "TH writes PartNumber from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("newpartgarbage: not in length on purpose", 7); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::PartNumber::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 42: { + LogStep(42, "TH reads PartNumber from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A000c && PART_NUM"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::PartNumber::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "TH reads ProductURL from the DUT and Verify it is of type string and verify the format"); + case 43: { + LogStep(43, "TH reads ProductURL from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductURL::Id, true, + chip::NullOptional); + } + case 44: { + LogStep(44, + "Verify that it specifies a link to a specific web page, Verify that it follows the syntax rules specified in " + "RFC 3986."); VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && BINFO.S.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; @@ -10016,36 +10603,165 @@ class Test_TC_BINFO_2_1Suite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } - case 14: { - LogStep(14, "Query ProductLabel"); + case 45: { + LogStep(45, "TH writes ProductURL from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("https://www.example.comgarbage: not in length on purpose", 23); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductURL::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 46: { + LogStep(46, "TH reads ProductURL from the DUT"); + VerifyOrDo(!ShouldSkip("BINFO.S.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductURL::Id, true, + chip::NullOptional); + } + case 47: { + LogStep(47, "TH reads ProductLabel from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductLabel::Id, true, chip::NullOptional); } - case 15: { - LogStep(15, "Query SerialNumber"); + case 48: { + LogStep(48, "Verify that it does not include the name of the vendor as defined within the VendorName attribute"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && BINFO.S.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 49: { + LogStep(49, "TH writes ProductLabel from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("newproductlabelgarbage: not in length on purpose", 15); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductLabel::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 50: { + LogStep(50, "TH reads ProductLabel from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductLabel::Id, true, + chip::NullOptional); + } + case 51: { + LogStep(51, "TH reads SerialNumber from the DUT."); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SerialNumber::Id, true, + chip::NullOptional); + } + case 52: { + LogStep(52, "TH writes SerialNumber from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("newserialnumbergarbage: not in length on purpose", 15); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SerialNumber::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 53: { + LogStep(53, "TH reads SerialNumber from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SerialNumber::Id, true, chip::NullOptional); } - case 16: { - LogStep(16, "Query LocalConfigDisabled"); + case 54: { + LogStep(54, "TH reads LocalConfigDisabled from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Query Reachable"); + case 55: { + LogStep(55, "TH sets LocalConfigDisabled to True"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + bool value; + value = true; + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 56: { + LogStep(56, "TH reads LocalConfigDisabled from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, true, + chip::NullOptional); + } + case 57: { + LogStep(57, "TH reads Reachable from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Reachable::Id, true, chip::NullOptional); } - case 18: { - LogStep(18, "Query UniqueID"); + case 58: { + LogStep(58, "TH sends Write request message to DUT to change value of Reachable to false"); + VerifyOrDo(!ShouldSkip("BINFO.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + bool value; + value = false; + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Reachable::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 59: { + LogStep(59, "TH reads UniqueID from the DUT."); VerifyOrDo(!ShouldSkip("BINFO.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::UniqueID::Id, true, chip::NullOptional); } + case 60: { + LogStep(60, "TH writes UniqueID from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::CharSpan value; + value = chip::Span("newidgarbage: not in length on purpose", 5); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::UniqueID::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 61: { + LogStep(61, "TH reads UniqueID from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::UniqueID::Id, true, + chip::NullOptional); + } + case 62: { + LogStep(62, "TH reads CapabilityMinima attribute from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::CapabilityMinima::Id, true, + chip::NullOptional); + } + case 63: { + LogStep(63, + "Step 56 is implicitly validating the attribute(CapabilityMinima) constraints, as long as the payload is being " + "parsed successfully"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && BINFO.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 64: { + LogStep(64, "TH writes CapabilityMinima from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type value; + + value.caseSessionsPerFabric = 4U; + value.subscriptionsPerFabric = 4U; + + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::CapabilityMinima::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 65: { + LogStep(65, "TH reads CapabilityMinima attribute from the DUT."); + VerifyOrDo(!ShouldSkip("BINFO.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::CapabilityMinima::Id, true, + chip::NullOptional); + } } return CHIP_NO_ERROR; } @@ -10747,29 +11463,16 @@ class Test_TC_FLW_1_1Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 0)); - VerifyOrReturn(CheckValue("attributeList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 1)); - VerifyOrReturn(CheckValue("attributeList[1]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 2)); - VerifyOrReturn(CheckValue("attributeList[2]", iter_0.GetValue(), 2UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 3)); - VerifyOrReturn(CheckValue("attributeList[3]", iter_0.GetValue(), 3UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 4)); - VerifyOrReturn(CheckValue("attributeList[4]", iter_0.GetValue(), 65528UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 5)); - VerifyOrReturn(CheckValue("attributeList[5]", iter_0.GetValue(), 65529UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 6)); - VerifyOrReturn(CheckValue("attributeList[6]", iter_0.GetValue(), 65531UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 7)); - VerifyOrReturn(CheckValue("attributeList[7]", iter_0.GetValue(), 65532UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 8)); - VerifyOrReturn(CheckValue("attributeList[8]", iter_0.GetValue(), 65533UL)); - VerifyOrReturn(CheckNoMoreListItems("attributeList", iter_0, 9)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; case 5: @@ -11076,17 +11779,10 @@ class Test_TC_CGEN_1_1Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 1)); - VerifyOrReturn(CheckValue("acceptedCommandList[1]", iter_0.GetValue(), 2UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 2)); - VerifyOrReturn(CheckValue("acceptedCommandList[2]", iter_0.GetValue(), 4UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 3)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; case 5: @@ -11094,17 +11790,10 @@ class Test_TC_CGEN_1_1Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("generatedCommandList[0]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 1)); - VerifyOrReturn(CheckValue("generatedCommandList[1]", iter_0.GetValue(), 3UL)); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 2)); - VerifyOrReturn(CheckValue("generatedCommandList[2]", iter_0.GetValue(), 5UL)); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 3)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); } break; case 6: @@ -11434,13 +12123,8 @@ class Test_TC_DGGEN_1_1Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; case 5: @@ -11868,15 +12552,9 @@ class Test_TC_I_1_1Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 1)); - VerifyOrReturn(CheckValue("acceptedCommandList[1]", iter_0.GetValue(), 64UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 2)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 64UL)); } break; case 5: @@ -13185,7 +13863,6 @@ class Test_TC_LVL_2_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentLevel", value, 254U)); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); CurrentLevelValue = value; } @@ -13195,7 +13872,6 @@ class Test_TC_LVL_2_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("remainingTime", value, 0U)); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); } break; @@ -13206,8 +13882,6 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValue("minLevel", value, 1U)); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 1U)); MinLevelValue = value; } break; @@ -13229,8 +13903,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValue("maxLevel", value, 254U)); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinLevelValue)); MaxLevelValue = value; } break; @@ -13240,7 +13913,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, MinLevelValue1)); VerifyOrReturn(CheckConstraintMaxValue("value", value, 254U)); MaxLevelValue1 = value; } @@ -13427,25 +14100,25 @@ class Test_TC_LVL_2_1Suite : public TestCommand } case 5: { LogStep(5, "Reads the MinLevel attribute"); - VerifyOrDo(!ShouldSkip("LVL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("LVL.S.A0002 && LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinLevel::Id, true, chip::NullOptional); } case 6: { LogStep(6, "Reads the MinLevel attribute"); - VerifyOrDo(!ShouldSkip("LVL.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("LVL.S.A0002 && !LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinLevel::Id, true, chip::NullOptional); } case 7: { LogStep(7, "Reads the MaxLevel attribute"); - VerifyOrDo(!ShouldSkip("LVL.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("LVL.S.A0003 && LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxLevel::Id, true, chip::NullOptional); } case 8: { LogStep(8, "Reads the MaxLevel attribute"); - VerifyOrDo(!ShouldSkip("LVL.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("LVL.S.A0003 && !LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxLevel::Id, true, chip::NullOptional); } @@ -13481,7 +14154,7 @@ class Test_TC_LVL_2_1Suite : public TestCommand } case 14: { LogStep(14, "Step 7b & 7C Reads the CurrentFrequency attribute"); - VerifyOrDo(!ShouldSkip("LVL.S.A0004 && LVL.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("LVL.S.A0004 && LVL.S.A0005 && LVL.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentFrequency::Id, true, chip::NullOptional); } @@ -13493,13 +14166,13 @@ class Test_TC_LVL_2_1Suite : public TestCommand } case 16: { LogStep(16, "Reads the OnLevel attribute "); - VerifyOrDo(!ShouldSkip("LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("LVL.S.F01 && LVL.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id, true, chip::NullOptional); } case 17: { LogStep(17, "Reads the OnLevel attribute "); - VerifyOrDo(!ShouldSkip(" !LVL.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("LVL.S.A0011 && !LVL.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id, true, chip::NullOptional); } @@ -13892,7 +14565,7 @@ class Test_TC_LVL_2_2Suite : public TestCommand class Test_TC_LVL_3_1Suite : public TestCommand { public: - Test_TC_LVL_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_3_1", 19, credsIssuerConfig) + Test_TC_LVL_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_3_1", 18, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -13913,6 +14586,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + uint16_t OnOffTransitionTimeValue; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -13977,20 +14652,12 @@ class Test_TC_LVL_3_1Suite : public TestCommand break; case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); - } break; case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 12: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -13998,22 +14665,23 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel", value, 128U)); } break; - case 13: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + OnOffTransitionTimeValue = value; } break; - case 14: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 15: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 16: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -14021,10 +14689,10 @@ class Test_TC_LVL_3_1Suite : public TestCommand VerifyOrReturn(CheckValue("currentLevel", value, 64U)); } break; - case 17: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 18: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -14117,13 +14785,7 @@ class Test_TC_LVL_3_1Suite : public TestCommand chip::NullOptional); } case 9: { - LogStep(9, "Reads On Off Transition Time attribute from DUT"); - VerifyOrDo(!ShouldSkip("LVL.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, - LevelControl::Attributes::OnOffTransitionTime::Id, true, chip::NullOptional); - } - case 10: { - LogStep(10, "sends a Move to level command"); + LogStep(9, "sends a Move to level command"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -14136,33 +14798,33 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 11: { - LogStep(11, "Wait 11000ms"); + case 10: { + LogStep(10, "Wait 11000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 11000UL; return WaitForMs(kIdentityAlpha, value); } - case 12: { - LogStep(12, "Reads CurrentLevel attribute from DUT"); + case 11: { + LogStep(11, "Reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Reads the OnOffTransitionTime attribute from the DUT"); + case 12: { + LogStep(12, "Reads the OnOffTransitionTime attribute from the DUT"); VerifyOrDo(!ShouldSkip("LVL.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id, true, chip::NullOptional); } - case 14: { - LogStep(14, "sends a Move to level command"); + case 13: { + LogStep(13, "sends a Move to level command"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; value.level = 64U; - value.transitionTime = 0U; + value.transitionTime = 65535U; value.optionMask = 1U; value.optionOverride = 1U; return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevel::Id, value, @@ -14170,21 +14832,21 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 15: { - LogStep(15, "Wait 1000ms"); + case 14: { + LogStep(14, "Wait 1000ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 1000UL; return WaitForMs(kIdentityAlpha, value); } - case 16: { - LogStep(16, "Reads CurrentLevel attribute from DUT"); + case 15: { + LogStep(15, "Reads CurrentLevel attribute from DUT"); VerifyOrDo(!ShouldSkip("LVL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, chip::NullOptional); } - case 17: { - LogStep(17, "Reset level to 254"); + case 16: { + LogStep(16, "Reset level to 254"); VerifyOrDo(!ShouldSkip("LVL.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LevelControl::Commands::MoveToLevel::Type value; @@ -14197,8 +14859,8 @@ class Test_TC_LVL_3_1Suite : public TestCommand ); } - case 18: { - LogStep(18, "Wait 100ms"); + case 17: { + LogStep(17, "Wait 100ms"); ListFreer listFreer; chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 100UL; @@ -14842,8 +15504,8 @@ class Test_TC_LVL_6_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 23U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 27U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 22U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 32U)); VerifyOrReturn(CheckConstraintNotValue("value", value, CurrentLevelValue)); } break; @@ -14866,8 +15528,8 @@ class Test_TC_LVL_6_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 48U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 52U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 45U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 55U)); VerifyOrReturn(CheckConstraintNotValue("value", value, CurrentLevelValue)); } break; @@ -15288,21 +15950,12 @@ class Test_TC_KEYPADINPUT_1_2Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 0)); - VerifyOrReturn(CheckValue("attributeList[0]", iter_0.GetValue(), 65528UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 1)); - VerifyOrReturn(CheckValue("attributeList[1]", iter_0.GetValue(), 65529UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 2)); - VerifyOrReturn(CheckValue("attributeList[2]", iter_0.GetValue(), 65531UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 3)); - VerifyOrReturn(CheckValue("attributeList[3]", iter_0.GetValue(), 65532UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 4)); - VerifyOrReturn(CheckValue("attributeList[4]", iter_0.GetValue(), 65533UL)); - VerifyOrReturn(CheckNoMoreListItems("attributeList", iter_0, 5)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; case 4: @@ -15310,13 +15963,8 @@ class Test_TC_KEYPADINPUT_1_2Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; case 5: @@ -15324,13 +15972,8 @@ class Test_TC_KEYPADINPUT_1_2Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("generatedCommandList[0]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; case 6: @@ -15479,17 +16122,10 @@ class Test_TC_APPLAUNCHER_1_3Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 1)); - VerifyOrReturn(CheckValue("acceptedCommandList[1]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 2)); - VerifyOrReturn(CheckValue("acceptedCommandList[2]", iter_0.GetValue(), 2UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 3)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; case 5: @@ -15497,13 +16133,8 @@ class Test_TC_APPLAUNCHER_1_3Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("generatedCommandList[0]", iter_0.GetValue(), 3UL)); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; case 6: @@ -15653,19 +16284,11 @@ class Test_TC_MEDIAINPUT_1_4Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 1)); - VerifyOrReturn(CheckValue("acceptedCommandList[1]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 2)); - VerifyOrReturn(CheckValue("acceptedCommandList[2]", iter_0.GetValue(), 2UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 3)); - VerifyOrReturn(CheckValue("acceptedCommandList[3]", iter_0.GetValue(), 3UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 4)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; case 5: @@ -15991,17 +16614,10 @@ class Test_TC_CHANNEL_1_6Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 1)); - VerifyOrReturn(CheckValue("acceptedCommandList[1]", iter_0.GetValue(), 2UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 2)); - VerifyOrReturn(CheckValue("acceptedCommandList[2]", iter_0.GetValue(), 3UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 3)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; case 5: @@ -16172,13 +16788,8 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("generatedCommandList[0]", iter_0.GetValue(), 10UL)); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; case 6: @@ -16475,25 +17086,14 @@ class Test_TC_TGTNAV_1_9Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 0)); - VerifyOrReturn(CheckValue("attributeList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 1)); - VerifyOrReturn(CheckValue("attributeList[1]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 2)); - VerifyOrReturn(CheckValue("attributeList[2]", iter_0.GetValue(), 65528UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 3)); - VerifyOrReturn(CheckValue("attributeList[3]", iter_0.GetValue(), 65529UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 4)); - VerifyOrReturn(CheckValue("attributeList[4]", iter_0.GetValue(), 65531UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 5)); - VerifyOrReturn(CheckValue("attributeList[5]", iter_0.GetValue(), 65532UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 6)); - VerifyOrReturn(CheckValue("attributeList[6]", iter_0.GetValue(), 65533UL)); - VerifyOrReturn(CheckNoMoreListItems("attributeList", iter_0, 7)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; case 4: @@ -16501,23 +17101,13 @@ class Test_TC_TGTNAV_1_9Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 0)); - VerifyOrReturn(CheckValue("attributeList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 1)); - VerifyOrReturn(CheckValue("attributeList[1]", iter_0.GetValue(), 65528UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 2)); - VerifyOrReturn(CheckValue("attributeList[2]", iter_0.GetValue(), 65529UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 3)); - VerifyOrReturn(CheckValue("attributeList[3]", iter_0.GetValue(), 65531UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 4)); - VerifyOrReturn(CheckValue("attributeList[4]", iter_0.GetValue(), 65532UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 5)); - VerifyOrReturn(CheckValue("attributeList[5]", iter_0.GetValue(), 65533UL)); - VerifyOrReturn(CheckNoMoreListItems("attributeList", iter_0, 6)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; case 5: @@ -16525,13 +17115,8 @@ class Test_TC_TGTNAV_1_9Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; case 6: @@ -16539,13 +17124,8 @@ class Test_TC_TGTNAV_1_9Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("generatedCommandList[0]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; case 7: @@ -16592,7 +17172,7 @@ class Test_TC_TGTNAV_1_9Suite : public TestCommand } case 4: { LogStep(4, "Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!MC_TGTNAV.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip(" !MC_TGTNAV.S.A0001 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TargetNavigator::Id, TargetNavigator::Attributes::AttributeList::Id, true, chip::NullOptional); } @@ -16879,13 +17459,8 @@ class Test_TC_CONTENTLAUNCHER_1_11Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("generatedCommandList[0]", iter_0.GetValue(), 2UL)); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; case 6: @@ -17023,21 +17598,12 @@ class Test_TC_ALOGIN_1_12Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 0)); - VerifyOrReturn(CheckValue("attributeList[0]", iter_0.GetValue(), 65528UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 1)); - VerifyOrReturn(CheckValue("attributeList[1]", iter_0.GetValue(), 65529UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 2)); - VerifyOrReturn(CheckValue("attributeList[2]", iter_0.GetValue(), 65531UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 3)); - VerifyOrReturn(CheckValue("attributeList[3]", iter_0.GetValue(), 65532UL)); - VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 4)); - VerifyOrReturn(CheckValue("attributeList[4]", iter_0.GetValue(), 65533UL)); - VerifyOrReturn(CheckNoMoreListItems("attributeList", iter_0, 5)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; case 4: @@ -17045,17 +17611,10 @@ class Test_TC_ALOGIN_1_12Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 1)); - VerifyOrReturn(CheckValue("acceptedCommandList[1]", iter_0.GetValue(), 2UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 2)); - VerifyOrReturn(CheckValue("acceptedCommandList[2]", iter_0.GetValue(), 3UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 3)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; case 5: @@ -17063,13 +17622,8 @@ class Test_TC_ALOGIN_1_12Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("generatedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("generatedCommandList[0]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; case 6: @@ -20686,13 +21240,8 @@ class Test_TC_MOD_1_1Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 1)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; case 5: @@ -22005,23 +22554,13 @@ class Test_TC_OO_1_1Suite : public TestCommand { chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 0)); - VerifyOrReturn(CheckValue("acceptedCommandList[0]", iter_0.GetValue(), 0UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 1)); - VerifyOrReturn(CheckValue("acceptedCommandList[1]", iter_0.GetValue(), 1UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 2)); - VerifyOrReturn(CheckValue("acceptedCommandList[2]", iter_0.GetValue(), 2UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 3)); - VerifyOrReturn(CheckValue("acceptedCommandList[3]", iter_0.GetValue(), 64UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 4)); - VerifyOrReturn(CheckValue("acceptedCommandList[4]", iter_0.GetValue(), 65UL)); - VerifyOrReturn(CheckNextListItemDecodes("acceptedCommandList", iter_0, 5)); - VerifyOrReturn(CheckValue("acceptedCommandList[5]", iter_0.GetValue(), 66UL)); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 6)); - } VerifyOrReturn(CheckConstraintType("value", "", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 64UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 66UL)); } break; case 5: @@ -27238,7 +27777,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand } case 2: { LogStep(2, "Read the optional global attribute constraints: FeatureMap"); - VerifyOrDo(!ShouldSkip("( TSTAT_HEAT || TSTAT_COOL || TSTAT_OCC || TSTAT_SCH || TSTAT_SB || TSTAT_AUTO )"), + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01 || TSTAT.S.F02 || TSTAT.S.F03 || TSTAT.S.F04 || TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::FeatureMap::Id, true, chip::NullOptional); @@ -27324,42 +27863,42 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - int16_t value; + chip::app::DataModel::Nullable value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "int16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - int16_t value; + uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "int16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 1U)); } break; case 4: - if (IsUnsupported(status.mStatus)) - { - return; - } VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "int16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; case 5: - if (IsUnsupported(status.mStatus)) + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - return; + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "int16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } + break; + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; @@ -27369,45 +27908,55 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); } break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 8: - if (IsUnsupported(status.mStatus)) - { - return; - } VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "int16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 2600)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + } + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 100U)); } break; case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - int16_t value; + uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "int16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 2600)); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 100U)); } break; case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "map8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 63U)); + } break; case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + int8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "int8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 25)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, -25)); + } break; case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -27415,8 +27964,8 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "int16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 2600)); } break; case 13: @@ -27426,90 +27975,102 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "int16")); VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 2600)); } break; case 14: - if (IsUnsupported(status.mStatus)) - { - return; - } VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "int16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); } break; case 15: - if (IsUnsupported(status.mStatus)) - { - return; - } VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "", "int16")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); } break; case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::Clusters::Thermostat::ThermostatControlSequence value; + int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U)); + VerifyOrReturn(CheckConstraintType("value", "", "int16")); } break; case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint8_t value; + int16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 9U)); + VerifyOrReturn(CheckConstraintType("value", "", "int16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 700)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3000)); } break; case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "int16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + } break; case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + int16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "int16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1600)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3200)); + } break; case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + int8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "int8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 25)); + } break; case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 22: - if (IsUnsupported(status.mStatus)) { - return; + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "map8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 7U)); } + break; + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - int8_t value; + chip::app::Clusters::Thermostat::ThermostatControlSequence value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "int8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 25)); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U)); } break; case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 9U)); + } break; case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -27517,13 +28078,15 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand break; case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 26: - if (IsUnsupported(status.mStatus)) { - return; + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4U)); } + break; + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -27534,10 +28097,6 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand } break; case 27: - if (IsUnsupported(status.mStatus)) - { - return; - } VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -27546,10 +28105,6 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand } break; case 28: - if (IsUnsupported(status.mStatus)) - { - return; - } VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint8_t value; @@ -27559,91 +28114,198 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand break; case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 1U)); + } break; case 30: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 1440U)); + } break; case 31: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "map8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 7U)); + } break; case 32: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "map16")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 127U)); + } break; case 33: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 2U)); + } break; case 34: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "int16")); + } break; case 35: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "utc")); + } break; case 36: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + } break; case 37: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + } break; case 38: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + } break; case 39: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + } break; case 40: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + } break; case 41: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + } break; case 42: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint8")); + } break; case 43: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 4U)); + } break; case 44: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "uint16")); + } break; case 45: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U)); + } break; case 46: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U)); + } break; case 47: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "map32")); + } break; case 48: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 5U)); + } break; case 49: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "", "int16")); + } break; case 50: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("ACCapacityformat", value, 0U)); + VerifyOrReturn(CheckConstraintType("value", "", "enum8")); + } break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); @@ -27668,182 +28330,148 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "Reads constraints of mandatory attributes from DUT: LocalTemperature"); + LogStep(1, "Reads mandatory attributes from DUT: LocalTemperature"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::LocalTemperature::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Reads constraints of mandatory attributes from DUT: AbsMinHeatSetpointLimit"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::AbsMinHeatSetpointLimit::Id, true, chip::NullOptional); + LogStep(2, "Read OutdoorTemperature attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OutdoorTemperature::Id, + true, chip::NullOptional); } case 3: { - LogStep(3, "Reads constraints of mandatory attributes from DUT: AbsMaxHeatSetpointLimit"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::AbsMaxHeatSetpointLimit::Id, true, chip::NullOptional); + LogStep(3, "Read Occupancy attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::Occupancy::Id, true, + chip::NullOptional); } case 4: { - LogStep(4, "Reads constraints of optional attributes from DUT: AbsMinCoolSetpointLimit"); + LogStep(4, "Reads mandatory attributes from DUT: AbsMinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::AbsMinCoolSetpointLimit::Id, true, chip::NullOptional); + Thermostat::Attributes::AbsMinHeatSetpointLimit::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Reads constraints of optional attributes from DUT: AbsMaxCoolSetpointLimit"); + LogStep(5, "Reads mandatory attributes from DUT: AbsMaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::AbsMaxCoolSetpointLimit::Id, true, chip::NullOptional); + Thermostat::Attributes::AbsMaxHeatSetpointLimit::Id, true, chip::NullOptional); } case 6: { - LogStep(6, - "Read PICoolingDemand attribute from the DUT Verify that the DUT responds with a uint8 value.The value has to " - "be in the range of 0 to 100"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(6, "Reads optional attributes from DUT: AbsMinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMinCoolSetpointLimit::Id, true, chip::NullOptional); } case 7: { - LogStep(7, - "Read PIHeatingDemand attribute from the DUT and Verify that the DUT responds with a uint8 value.The value has " - "to be in the range of 0 to 100"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(7, "Reads optional attributes from DUT: AbsMaxCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::AbsMaxCoolSetpointLimit::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Reads constraints of optional attributes from DUT: OccupiedCoolingSetpoint"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); + LogStep(8, "Read PICoolingDemand attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::PICoolingDemand::Id, true, + chip::NullOptional); } case 9: { - LogStep(9, "Reads constraints of mandatory attributes from DUT: OccupiedHeatingSetpoint"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); + LogStep(9, "Read PIHeatingDemand attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::PIHeatingDemand::Id, true, + chip::NullOptional); } case 10: { - LogStep(10, - "Read UnoccupiedCoolingSetpoint attribute from the DUT and Verify that the DUT responds with an int16 value"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(10, "Read HVACSystemTypeConfiguration attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::HVACSystemTypeConfiguration::Id, true, chip::NullOptional); } case 11: { - LogStep(11, - "Read UnoccupiedHeatingSetpoint attribute from the DUT and Verify that the DUT responds with an int16 value"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(11, "Read LocalTemperatureCalibration attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::LocalTemperatureCalibration::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Reads constraints of mandatory attributes from DUT: MinHeatSetpointLimit"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, - true, chip::NullOptional); + LogStep(12, "Reads optional attributes from DUT: OccupiedCoolingSetpoint"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedCoolingSetpoint::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Reads constraints of mandatory attributes from DUT: MaxHeatSetpointLimit"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, - true, chip::NullOptional); + LogStep(13, "Reads mandatory attributes from DUT: OccupiedHeatingSetpoint"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::OccupiedHeatingSetpoint::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Reads constraints of optional attributes from DUT: MinCoolSetpointLimit"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, - true, chip::NullOptional); + LogStep(14, "Read UnoccupiedCoolingSetpoint attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedCoolingSetpoint::Id, true, chip::NullOptional); } case 15: { - LogStep(15, "Reads constraints of optional attributes from DUT: MaxCoolSetpointLimit"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, - true, chip::NullOptional); + LogStep(15, "Read UnoccupiedHeatingSetpoint attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::UnoccupiedHeatingSetpoint::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Reads constraints of mandatory attributes from DUT: ControlSequenceOfOperation"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, - Thermostat::Attributes::ControlSequenceOfOperation::Id, true, chip::NullOptional); + LogStep(16, "Reads mandatory attributes from DUT: MinHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinHeatSetpointLimit::Id, + true, chip::NullOptional); } case 17: { - LogStep(17, "Reads constraints of mandatory attributes from DUT: SystemMode"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::SystemMode::Id, true, - chip::NullOptional); + LogStep(17, "Reads mandatory attributes from DUT: MaxHeatSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxHeatSetpointLimit::Id, + true, chip::NullOptional); } case 18: { - LogStep(18, "Read OutdoorTemperature attribute from the DUT and Verify the datatype"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(18, "Reads optional attributes from DUT: MinCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinCoolSetpointLimit::Id, + true, chip::NullOptional); } case 19: { - LogStep(19, "Read Occupancy attribute from the DUT and Verify the datatype and response value"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(19, "Reads optional attributes from DUT: MaxCoolSetpointLimit"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MaxCoolSetpointLimit::Id, + true, chip::NullOptional); } case 20: { - LogStep(20, - "Read HVACSystemTypeConfiguration attribute from the DUT and Verify that the DUT responds with a map8 value. " - "The value has to be in the range of 0x00 to 0x3f"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(20, "Reads optional attributes from DUT: MinSetpointDeadBand"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, + true, chip::NullOptional); } case 21: { - LogStep(21, - "Read LocalTemperatureCalibration attribute from the DUT and Verify that the DUT responds with an int8 " - "value.The value has to be in the range of -25 to 25"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(21, "Read RemoteSensing attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::RemoteSensing::Id, true, + chip::NullOptional); } case 22: { - LogStep(22, "Reads constraints of optional attributes from DUT: MinSetpointDeadBand"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::MinSetpointDeadBand::Id, - true, chip::NullOptional); + LogStep(22, "Reads mandatory attributes from DUT: ControlSequenceOfOperation"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::ControlSequenceOfOperation::Id, true, chip::NullOptional); } case 23: { - LogStep(23, - "Read RemoteSensing attribute from the DUT and Verify that the DUT responds with a map8 value. The value has " - "to be in the range of 0x00 to 0x07"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(23, "Reads mandatory attributes from DUT: SystemMode"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A001c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::SystemMode::Id, true, + chip::NullOptional); } case 24: { LogStep(24, "Read AlarmMask attribute from the DUT and Verify that the DUT responds with a map8 value.The value has to be " "in the range of 0x00 to 0x07."); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && TSTAT.S.A001d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -27852,281 +28480,160 @@ class Test_TC_TSTAT_2_1Suite : public TestCommand return UserPrompt(kIdentityAlpha, value); } case 25: { - LogStep(25, - "Read ThermostatRunningMode attribute from the DUT and Verify that the DUT responds with an enum8 value.The " - "value has to be 0, 3 or 4"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(25, "Read ThermostatRunningMode attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A001e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ThermostatRunningMode::Id, + true, chip::NullOptional); } case 26: { LogStep(26, "Reads constraints of optional attributes from DUT: StartOfWeek"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::StartOfWeek::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Reads constraints of optional attributes from DUT: NumberOfWeeklyTransitions"); + LogStep(27, "Reads optional attributes from DUT: NumberOfWeeklyTransitions"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::NumberOfWeeklyTransitions::Id, true, chip::NullOptional); } case 28: { - LogStep(28, "Reads constraints of optional attributes from DUT: NumberOfDailyTransitions"); + LogStep(28, "Reads optional attributes from DUT: NumberOfDailyTransitions"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::NumberOfDailyTransitions::Id, true, chip::NullOptional); } case 29: { - LogStep(29, - "Read TemperatureSetpointHold attribute from the DUT and Verify that the DUT responds with an enum8 value.The " - "value has to 0 or 1"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(29, "Read TemperatureSetpointHold attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::TemperatureSetpointHold::Id, true, chip::NullOptional); } case 30: { - LogStep(30, - "Read TemperatureSetpointHoldDuration attribute from the DUT and Verify that the DUT responds with a uint16 " - "value or NULL.The value has to be in the range of 0 to 1440"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(30, "Read TemperatureSetpointHoldDuration attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::TemperatureSetpointHoldDuration::Id, true, chip::NullOptional); } case 31: { - LogStep(31, - "Read ThermostatProgrammingOperationMode attribute from the DUT and Verify that the DUT responds with a map8 " - "value.The value has to be in the range of 0x00 to 0x07"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(31, "Read ThermostatProgrammingOperationMode attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::ThermostatProgrammingOperationMode::Id, true, chip::NullOptional); } case 32: { - LogStep(32, - "Read ThermostatRunningState attribute from the DUT and Verify that the DUT responds with a map16 value.The " - "value has to be in the range of 0x00 to 0x7F"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(32, "Read ThermostatRunningState attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ThermostatRunningState::Id, + true, chip::NullOptional); } case 33: { - LogStep(33, - "Read SetpointChangeSource attribute from the DUT and Verify that the DUT responds with an enum8 value. The " - "value has to be in the range of 0 to 2"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(33, "Read SetpointChangeSource attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::SetpointChangeSource::Id, + true, chip::NullOptional); } case 34: { - LogStep( - 34, - "Read SetpointChangeAmount attribute from the DUT and Verify that the DUT responds with an int16 value or NULL"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(34, "Read SetpointChangeAmount attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::SetpointChangeAmount::Id, + true, chip::NullOptional); } case 35: { - LogStep(35, - "Read SetpointChangeSourceTimestamp attribute from the DUT and Verify that the DUT responds with a utc value"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(35, "Read SetpointChangeSourceTimestamp attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, + Thermostat::Attributes::SetpointChangeSourceTimestamp::Id, true, chip::NullOptional); } case 36: { - LogStep(36, "Read OccupiedSetback attribute from the DUT and Verify that the DUT responds with a uint8 value or NULL"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(36, "Read OccupiedSetback attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0034"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedSetback::Id, true, + chip::NullOptional); } case 37: { - LogStep(37, - "Read OccupiedSetbackMin attribute from the DUT and Verify that the DUT responds with a uint8 value or NULL"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(37, "Read OccupiedSetbackMin attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0035"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedSetbackMin::Id, + true, chip::NullOptional); } case 38: { - LogStep(38, - "Read OccupiedSetbackMax attribute from the DUT and Verify that the DUT responds with a uint8 value or NULL"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(38, "Read OccupiedSetbackMax attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0036"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::OccupiedSetbackMax::Id, + true, chip::NullOptional); } case 39: { - LogStep(39, - "Read UnoccupiedSetback attribute from the DUT and Verify that the DUT responds with a uint8 value or NULL"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(39, "Read UnoccupiedSetback attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0037"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedSetback::Id, + true, chip::NullOptional); } case 40: { - LogStep(40, - "Read UnoccupiedSetbackMin attribute from the DUT and Verify that the DUT responds with a uint8 value or NULL"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(40, "Read UnoccupiedSetbackMin attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedSetbackMin::Id, + true, chip::NullOptional); } case 41: { - LogStep(41, - "Read UnoccupiedSetbackMax attribute from the DUT and Verify that the DUT responds with a uint8 value or NULL"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(41, "Read UnoccupiedSetbackMax attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0039"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::UnoccupiedSetbackMax::Id, + true, chip::NullOptional); } case 42: { - LogStep(42, - "Read EmergencyHeatDelta attribute from the DUT and Verify that the DUT responds with a uint8 value or NULL"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(42, "Read EmergencyHeatDelta attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::EmergencyHeatDelta::Id, + true, chip::NullOptional); } case 43: { - LogStep(43, - "Read ACType attribute from the DUT and Verify that the DUT responds with an enum8 value. The value has to be " - "in the range of 0 to 4"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(43, "Read ACType attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0040"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACType::Id, true, + chip::NullOptional); } case 44: { - LogStep(44, "Read ACCapacity attribute from the DUT and Verify that the DUT responds with a uint16 value"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(44, "Read ACCapacity attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0041"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACCapacity::Id, true, + chip::NullOptional); } case 45: { - LogStep(45, - "Read ACRefrigerantType attribute from the DUT and VVerify that the DUT responds with an enum8 value.The value " - "has to be in the range of 0 to 3"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(45, "Read ACRefrigerantType attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0042"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACRefrigerantType::Id, + true, chip::NullOptional); } case 46: { - LogStep(46, - "Read ACCompressorType attribute from the DUT and Verify that the DUT responds with an enum8 value.The value " - "has to be in the range of 0 to 3"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(46, "Read ACCompressorType attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0043"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACCompressorType::Id, true, + chip::NullOptional); } case 47: { - LogStep(47, "Read ACErrorCode attribute from the DUT and Verify that the DUT responds with a map32 value"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(47, "Read ACErrorCode attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0044"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACErrorCode::Id, true, + chip::NullOptional); } case 48: { - LogStep(48, - "Read ACLouverPosition attribute from the DUT and Verify that the DUT responds with an enum8 value.The value " - "has to be in the range of 1 to 5"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(48, "Read ACLouverPosition attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0045"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACLouverPosition::Id, true, + chip::NullOptional); } case 49: { - LogStep(49, - "Read ACCoilTemperature attribute from the DUT and Verify that the DUT responds with an int16 value or NULL"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(49, "Read ACCoilTemperature attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0046"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACCoilTemperature::Id, + true, chip::NullOptional); } case 50: { - LogStep(50, - "Read ACCapacityFormat attribute from the DUT and Verify that the DUT responds with an enum8 value.The value " - "has to be 0."); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(50, "Read ACCapacityFormat attribute from the DUT"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0047"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ACCapacityformat::Id, true, + chip::NullOptional); } } return CHIP_NO_ERROR; @@ -33215,7 +33722,7 @@ class Test_TC_WNCV_2_1Suite : public TestCommand class Test_TC_WNCV_2_2Suite : public TestCommand { public: - Test_TC_WNCV_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_WNCV_2_2", 3, credsIssuerConfig) + Test_TC_WNCV_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_WNCV_2_2", 2, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -33256,10 +33763,6 @@ class Test_TC_WNCV_2_2Suite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -33295,17 +33798,6 @@ class Test_TC_WNCV_2_2Suite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } - case 2: { - LogStep(2, "Reads ConfigStatus attribute from DUT, value of bit 0 must be 1b operational"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && WNCV.S.A0007 && WNCV.S.F01 && WNCV.S.F04"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } } return CHIP_NO_ERROR; } @@ -79253,7 +79745,6 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStartEnhancedHue = value; } break; @@ -79297,7 +79788,6 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStoredEnhancedHueValue1 = value; } break; @@ -79348,7 +79838,6 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStartEnhancedHue2 = value; } break; @@ -79392,7 +79881,6 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStoredEnhancedHueValue2 = value; } break; @@ -79458,7 +79946,6 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStartEnhancedHue3 = value; } break; @@ -79502,7 +79989,6 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStoredEnhancedHueValue3 = value; } break; @@ -79553,7 +80039,6 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStartEnhancedHue4 = value; } break; @@ -79597,7 +80082,6 @@ class Test_TC_CC_9_1Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStoredEnhancedHue4 = value; } break; @@ -80388,7 +80872,6 @@ class Test_TC_CC_9_2Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStartEnhancedHueValue = value; } break; @@ -80436,7 +80919,6 @@ class Test_TC_CC_9_2Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStartEnhancedHue1 = value; } break; @@ -80480,7 +80962,6 @@ class Test_TC_CC_9_2Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStoredEnhancedHueValue = value; } break; @@ -80889,7 +81370,6 @@ class Test_TC_CC_9_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStartEnhancedHueValue = value; } break; @@ -80972,7 +81452,6 @@ class Test_TC_CC_9_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "", "uint16")); ColorLoopStoredEnhancedHueValue = value; } break; @@ -82283,8 +82762,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 295U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 305U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); } break; case 37: @@ -82332,8 +82811,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 295U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 305U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 325U)); } break; case 47: @@ -82372,8 +82851,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 295U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 305U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); } break; case 53: @@ -82404,8 +82883,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 195U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 205U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 180U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 220U)); } break; case 58: @@ -82473,8 +82952,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 295U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 305U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); } break; case 70: @@ -82621,8 +83100,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 295U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 305U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); } break; case 93: @@ -82660,8 +83139,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 195U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 205U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 180U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 220U)); } break; case 100: @@ -82696,8 +83175,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 295U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 305U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); } break; case 105: @@ -82724,8 +83203,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 195U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 205U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 180U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 220U)); } break; case 109: @@ -82786,8 +83265,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 295U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 305U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); } break; case 119: @@ -82835,8 +83314,8 @@ class Test_TC_OO_2_3Suite : public TestCommand { uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintMinValue("value", value, 295U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 305U)); + VerifyOrReturn(CheckConstraintMinValue("value", value, 270U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 320U)); } break; case 126: diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 57ab8802b38cdd..c3892fe544540d 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -57,7 +57,6 @@ class TestList : public Command { printf("Test_TC_CC_7_3\n"); printf("Test_TC_CC_7_4\n"); printf("Test_TC_CC_8_1\n"); - printf("Test_TC_BINFO_2_1\n"); printf("Test_TC_DESC_1_1\n"); printf("Test_TC_DGETH_2_1\n"); printf("Test_TC_DGETH_2_2\n"); @@ -3002,480 +3001,424 @@ class Test_TC_CC_2_1 : public TestCommandBridge { err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); break; case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Validate constraints of attribute: CurrentHue\n"); - if (ShouldSkip("CC.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 1 : TH reads CurrentHue attribute from DUT\n"); + if (ShouldSkip("CC.S.A0000 && CC.S.F00")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeCurrentHue_1(); + err = TestThReadsCurrentHueAttributeFromDut_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Validate constraints of attribute: CurrentSaturation\n"); - if (ShouldSkip("CC.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 2 : TH reads CurrentSaturation attribute from DUT\n"); + if (ShouldSkip("CC.S.A0001 && CC.S.F00")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeCurrentSaturation_2(); + err = TestThReadsCurrentSaturationAttributeFromDut_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Reads CurrentX attribute from DUT\n"); - if (ShouldSkip("CC.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads RemainingTime attribute from DUT\n"); + if (ShouldSkip("CC.S.A0002")) { NextTest(); return; } - err = TestReadsCurrentXAttributeFromDut_3(); + err = TestThReadsRemainingTimeAttributeFromDut_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Validate constraints of attribute: CurrentX\n"); - if (ShouldSkip("CC.S.A0003")) { + ChipLogProgress(chipTool, " ***** Test Step 4 : TH reads CurrentX attribute from DUT\n"); + if (ShouldSkip("CC.S.A0003 && CC.S.F03")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeCurrentX_4(); + err = TestThReadsCurrentXAttributeFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Reads CurrentY attribute from DUT\n"); - if (ShouldSkip("CC.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads CurrentY attribute from DUT\n"); + if (ShouldSkip("CC.S.A0004 && CC.S.F04")) { NextTest(); return; } - err = TestReadsCurrentYAttributeFromDut_5(); + err = TestThReadsCurrentYAttributeFromDut_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Validate constraints of attribute: CurrentY\n"); - if (ShouldSkip("CC.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : TH reads DriftCompensation attribute from DUT\n"); + if (ShouldSkip("CC.S.A0005")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeCurrentY_6(); + err = TestThReadsDriftCompensationAttributeFromDut_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Reads ColorTemperatureMireds attribute from DUT\n"); - if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads CompensationText attribute from DUT\n"); + if (ShouldSkip("CC.S.A0005")) { NextTest(); return; } - err = TestReadsColorTemperatureMiredsAttributeFromDut_7(); + err = TestThReadsCompensationTextAttributeFromDut_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Validate constraints of attribute: ColorTemperatureMireds\n"); - if (ShouldSkip("CC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 8 : TH reads ColorTemperatureMireds attribute from DUT\n"); + if (ShouldSkip("CC.S.A0007 && CC.S.F04")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeColorTemperatureMireds_8(); + err = TestThReadsColorTemperatureMiredsAttributeFromDut_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Reads ColorMode attribute from DUT\n"); - if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : TH reads ColorMode attribute from DUT\n"); + if (ShouldSkip("CC.S.A0008")) { NextTest(); return; } - err = TestReadsColorModeAttributeFromDut_9(); + err = TestThReadsColorModeAttributeFromDut_9(); break; case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Validate constraints of attribute: ColorMode\n"); - if (ShouldSkip("CC.S.A0008")) { + ChipLogProgress(chipTool, " ***** Test Step 10 : TH reads Options attribute from DUT\n"); + if (ShouldSkip("CC.S.A000f")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeColorMode_10(); + err = TestThReadsOptionsAttributeFromDut_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Validate constraints of attribute: Options\n"); - if (ShouldSkip("CC.S.A000f")) { + ChipLogProgress(chipTool, " ***** Test Step 11 : TH reads EnhancedCurrentHue attribute from DUT\n"); + if (ShouldSkip("CC.S.A4000 && CC.S.F01")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeOptions_11(); + err = TestThReadsEnhancedCurrentHueAttributeFromDut_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Validate constraints of attribute: EnhancedCurrentHue\n"); - if (ShouldSkip("CC.S.A4000")) { + ChipLogProgress(chipTool, " ***** Test Step 12 : TH reads EnhancedColorMode attribute from DUT\n"); + if (ShouldSkip("CC.S.F02 && CC.S.A4001")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeEnhancedCurrentHue_12(); + err = TestThReadsEnhancedColorModeAttributeFromDut_12(); break; case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Validate constraints of attribute: EnhancedColorMode\n"); - if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + ChipLogProgress(chipTool, " ***** Test Step 13 : TH reads ColorLoopActive attribute from DUT\n"); + if (ShouldSkip("CC.S.A4002 && CC.S.F02")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeEnhancedColorMode_13(); + err = TestThReadsColorLoopActiveAttributeFromDut_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Validate constraints of attribute: ColorLoopActive\n"); - if (ShouldSkip("CC.S.A4002")) { + ChipLogProgress(chipTool, " ***** Test Step 14 : TH reads ColorLoopDirection attribute from DUT\n"); + if (ShouldSkip("CC.S.A4003 && CC.S.F02")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeColorLoopActive_14(); + err = TestThReadsColorLoopDirectionAttributeFromDut_14(); break; case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Validate constraints of attribute: ColorLoopDirection\n"); - if (ShouldSkip("CC.S.A4003")) { + ChipLogProgress(chipTool, " ***** Test Step 15 : TH reads ColorLoopTime attribute from DUT\n"); + if (ShouldSkip("CC.S.A4004 && CC.S.F02")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeColorLoopDirection_15(); + err = TestThReadsColorLoopTimeAttributeFromDut_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Validate constraints of attribute: ColorLoopTime\n"); - if (ShouldSkip("CC.S.A4004")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : TH reads ColorLoopStartEnhancedHue attribute from DUT\n"); + if (ShouldSkip("CC.S.A4005 && CC.S.F02")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeColorLoopTime_16(); + err = TestThReadsColorLoopStartEnhancedHueAttributeFromDut_16(); break; case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Validate constraints of attribute: ColorLoopStartEnhancedHue\n"); - if (ShouldSkip("CC.S.A4005")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : TH reads ColorLoopStoredEnhancedHue attribute from DUT\n"); + if (ShouldSkip("CC.S.A4006 && CC.S.F02")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeColorLoopStartEnhancedHue_17(); + err = TestThReadsColorLoopStoredEnhancedHueAttributeFromDut_17(); break; case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Validate constraints of attribute: ColorLoopStoredEnhancedHue\n"); - if (ShouldSkip("CC.S.A4006")) { + ChipLogProgress(chipTool, " ***** Test Step 18 : TH reads FeatureMap attribute from DUT\n"); + err = TestThReadsFeatureMapAttributeFromDut_18(); + break; + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : TH reads ColorCapabilities attribute from DUT\n"); + if (ShouldSkip("CC.S.A400a")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeColorLoopStoredEnhancedHue_18(); - break; - case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : read the optional global attribute: FeatureMap\n"); - err = TestReadTheOptionalGlobalAttributeFeatureMap_19(); + err = TestThReadsColorCapabilitiesAttributeFromDut_19(); break; case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Reads ColorCapabilities attribute from DUT\n"); - if (ShouldSkip("CC.S.A400a")) { + ChipLogProgress(chipTool, " ***** Test Step 20 : TH reads ColorTempPhysicalMinMireds attribute from DUT\n"); + if (ShouldSkip("CC.S.A400b && CC.S.F04")) { NextTest(); return; } - err = TestReadsColorCapabilitiesAttributeFromDut_20(); + err = TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_20(); break; case 21: - ChipLogProgress(chipTool, " ***** Test Step 21 : Validate constraints of attribute: ColorCapabilities\n"); - if (ShouldSkip("CC.S.A400a")) { + ChipLogProgress(chipTool, " ***** Test Step 21 : TH reads ColorTempPhysicalMaxMireds attribute from DUT\n"); + if (ShouldSkip("CC.S.A400c && CC.S.F04")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeColorCapabilities_21(); + err = TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_21(); break; case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : Reads ColorTempPhysicalMinMireds attribute from DUT\n"); - if (ShouldSkip("CC.S.A400b")) { + ChipLogProgress(chipTool, " ***** Test Step 22 : TH reads CoupleColorTempToLevelMinMireds attribute from DUT\n"); + if (ShouldSkip("CC.S.A400d && CC.S.F04")) { NextTest(); return; } - err = TestReadsColorTempPhysicalMinMiredsAttributeFromDut_22(); + err = TestThReadsCoupleColorTempToLevelMinMiredsAttributeFromDut_22(); break; case 23: - ChipLogProgress(chipTool, " ***** Test Step 23 : Validate constraints of attribute: ColorTempPhysicalMinMireds\n"); - if (ShouldSkip("CC.S.A400b")) { + ChipLogProgress(chipTool, " ***** Test Step 23 : TH reads StartUpColorTemperatureMireds attribute from DUT\n"); + if (ShouldSkip("CC.S.A4010 && CC.S.F04")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributeColorTempPhysicalMinMireds_23(); + err = TestThReadsStartUpColorTemperatureMiredsAttributeFromDut_23(); break; case 24: - ChipLogProgress(chipTool, " ***** Test Step 24 : Read ColorTempPhysicalMaxMireds attribute from DUT\n"); - if (ShouldSkip("CC.S.A400c")) { - NextTest(); - return; - } - err = TestReadColorTempPhysicalMaxMiredsAttributeFromDut_24(); - break; - case 25: - ChipLogProgress(chipTool, " ***** Test Step 25 : Validate constraints of attribute: ColorTempPhysicalMaxMireds\n"); - if (ShouldSkip("CC.S.A400c")) { - NextTest(); - return; - } - err = TestValidateConstraintsOfAttributeColorTempPhysicalMaxMireds_25(); - break; - case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Read the optional attribute: CoupleColorTempToLevelMinMireds\n"); - if (ShouldSkip("CC.S.A400d")) { - NextTest(); - return; - } - err = TestReadTheOptionalAttributeCoupleColorTempToLevelMinMireds_26(); - break; - case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Read the optional attribute: StartUpColorTemperatureMireds\n"); - if (ShouldSkip("CC.S.A4010")) { - NextTest(); - return; - } - err = TestReadTheOptionalAttributeStartUpColorTemperatureMireds_27(); - break; - case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Validate constraints of attribute: RemainingTime\n"); - if (ShouldSkip("CC.S.A0002")) { - NextTest(); - return; - } - err = TestValidateConstraintsOfAttributeRemainingTime_28(); - break; - case 29: - ChipLogProgress(chipTool, " ***** Test Step 29 : Read the optional attribute: DriftCompensation\n"); - if (ShouldSkip("CC.S.A0005")) { - NextTest(); - return; - } - err = TestReadTheOptionalAttributeDriftCompensation_29(); - break; - case 30: - ChipLogProgress(chipTool, " ***** Test Step 30 : Read the optional attribute: CompensationText\n"); - if (ShouldSkip("CC.S.A0005")) { - NextTest(); - return; - } - err = TestReadTheOptionalAttributeCompensationText_30(); - break; - case 31: - ChipLogProgress(chipTool, " ***** Test Step 31 : Read the mandatory attribute: NumberOfPrimaries\n"); + ChipLogProgress(chipTool, " ***** Test Step 24 : TH reads NumberOfPrimaries attribute from DUT\n"); if (ShouldSkip("CC.S.A0010")) { NextTest(); return; } - err = TestReadTheMandatoryAttributeNumberOfPrimaries_31(); + err = TestThReadsNumberOfPrimariesAttributeFromDut_24(); break; - case 32: - ChipLogProgress(chipTool, " ***** Test Step 32 : Read the mandatory attribute: Primary1X\n"); + case 25: + ChipLogProgress(chipTool, " ***** Test Step 25 : TH reads Primary1X attribute from DUT\n"); if (ShouldSkip("CC.S.A0011")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary1X_32(); + err = TestThReadsPrimary1XAttributeFromDut_25(); break; - case 33: - ChipLogProgress(chipTool, " ***** Test Step 33 : Read the mandatory attribute: Primary1Y\n"); + case 26: + ChipLogProgress(chipTool, " ***** Test Step 26 : TH reads Primary1Y attribute from DUT\n"); if (ShouldSkip("CC.S.A0012")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary1Y_33(); + err = TestThReadsPrimary1YAttributeFromDut_26(); break; - case 34: - ChipLogProgress(chipTool, " ***** Test Step 34 : Read the mandatory attribute: Primary1Intensity\n"); + case 27: + ChipLogProgress(chipTool, " ***** Test Step 27 : TH reads Primary1Intensity attribute from DUT\n"); if (ShouldSkip("CC.S.A0013")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary1Intensity_34(); + err = TestThReadsPrimary1IntensityAttributeFromDut_27(); break; - case 35: - ChipLogProgress(chipTool, " ***** Test Step 35 : Read the mandatory attribute: Primary2X\n"); + case 28: + ChipLogProgress(chipTool, " ***** Test Step 28 : TH reads Primary2X attribute from DUT\n"); if (ShouldSkip("CC.S.A0015")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary2X_35(); + err = TestThReadsPrimary2XAttributeFromDut_28(); break; - case 36: - ChipLogProgress(chipTool, " ***** Test Step 36 : Read the mandatory attribute: Primary2Y\n"); + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : TH reads Primary2Y attribute from DUT\n"); if (ShouldSkip("CC.S.A0016")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary2Y_36(); + err = TestThReadsPrimary2YAttributeFromDut_29(); break; - case 37: - ChipLogProgress(chipTool, " ***** Test Step 37 : Validate constraints of attribute: Primary2Intensity\n"); + case 30: + ChipLogProgress(chipTool, " ***** Test Step 30 : TH reads Primary2Intensity attribute from DUT\n"); if (ShouldSkip("CC.S.A0017")) { NextTest(); return; } - err = TestValidateConstraintsOfAttributePrimary2Intensity_37(); + err = TestThReadsPrimary2IntensityAttributeFromDut_30(); break; - case 38: - ChipLogProgress(chipTool, " ***** Test Step 38 : Read the mandatory attribute: Primary3X\n"); + case 31: + ChipLogProgress(chipTool, " ***** Test Step 31 : TH reads Primary3X attribute from DUT\n"); if (ShouldSkip("CC.S.A0019")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary3X_38(); + err = TestThReadsPrimary3XAttributeFromDut_31(); break; - case 39: - ChipLogProgress(chipTool, " ***** Test Step 39 : Read the mandatory attribute: Primary3Y\n"); + case 32: + ChipLogProgress(chipTool, " ***** Test Step 32 : TH reads Primary3Y attribute from DUT\n"); if (ShouldSkip("CC.S.A001a")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary3Y_39(); + err = TestThReadsPrimary3YAttributeFromDut_32(); break; - case 40: - ChipLogProgress(chipTool, " ***** Test Step 40 : Read the mandatory attribute: Primary3Intensity\n"); + case 33: + ChipLogProgress(chipTool, " ***** Test Step 33 : TH reads Primary3Intensity attribute from DUT\n"); if (ShouldSkip("CC.S.A001b")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary3Intensity_40(); + err = TestThReadsPrimary3IntensityAttributeFromDut_33(); break; - case 41: - ChipLogProgress(chipTool, " ***** Test Step 41 : Read the mandatory attribute: Primary4X\n"); + case 34: + ChipLogProgress(chipTool, " ***** Test Step 34 : TH reads Primary4X attribute from DUT\n"); if (ShouldSkip("CC.S.A0020")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary4X_41(); + err = TestThReadsPrimary4XAttributeFromDut_34(); break; - case 42: - ChipLogProgress(chipTool, " ***** Test Step 42 : Read the mandatory attribute: Primary4Y\n"); + case 35: + ChipLogProgress(chipTool, " ***** Test Step 35 : TH reads Primary4Y attribute from DUT\n"); if (ShouldSkip("CC.S.A0021")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary4Y_42(); + err = TestThReadsPrimary4YAttributeFromDut_35(); break; - case 43: - ChipLogProgress(chipTool, " ***** Test Step 43 : Read the mandatory attribute: Primary4Intensity\n"); + case 36: + ChipLogProgress(chipTool, " ***** Test Step 36 : TH reads Primary4Intensity attribute from DUT\n"); if (ShouldSkip("CC.S.A0022")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary4Intensity_43(); + err = TestThReadsPrimary4IntensityAttributeFromDut_36(); break; - case 44: - ChipLogProgress(chipTool, " ***** Test Step 44 : Read the mandatory attribute: Primary5X\n"); + case 37: + ChipLogProgress(chipTool, " ***** Test Step 37 : TH reads Primary5X attribute from DUT\n"); if (ShouldSkip("CC.S.A0024")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary5X_44(); + err = TestThReadsPrimary5XAttributeFromDut_37(); break; - case 45: - ChipLogProgress(chipTool, " ***** Test Step 45 : Read the mandatory attribute: Primary5Y\n"); + case 38: + ChipLogProgress(chipTool, " ***** Test Step 38 : TH reads Primary5Y attribute from DUT\n"); if (ShouldSkip("CC.S.A0025")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary5Y_45(); + err = TestThReadsPrimary5YAttributeFromDut_38(); break; - case 46: - ChipLogProgress(chipTool, " ***** Test Step 46 : Read the mandatory attribute: Primary5Intensity\n"); + case 39: + ChipLogProgress(chipTool, " ***** Test Step 39 : TH reads Primary5Intensity attribute from DUT\n"); if (ShouldSkip("CC.S.A0026")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary5Intensity_46(); + err = TestThReadsPrimary5IntensityAttributeFromDut_39(); break; - case 47: - ChipLogProgress(chipTool, " ***** Test Step 47 : Read the mandatory attribute: Primary6X\n"); + case 40: + ChipLogProgress(chipTool, " ***** Test Step 40 : TH reads Primary6X attribute from DUT\n"); if (ShouldSkip("CC.S.A0028")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary6X_47(); + err = TestThReadsPrimary6XAttributeFromDut_40(); break; - case 48: - ChipLogProgress(chipTool, " ***** Test Step 48 : Read the mandatory attribute: Primary6Y\n"); + case 41: + ChipLogProgress(chipTool, " ***** Test Step 41 : TH reads Primary6Y attribute from DUT\n"); if (ShouldSkip("CC.S.A0029")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary6Y_48(); + err = TestThReadsPrimary6YAttributeFromDut_41(); break; - case 49: - ChipLogProgress(chipTool, " ***** Test Step 49 : Read the mandatory attribute: Primary6Intensity\n"); + case 42: + ChipLogProgress(chipTool, " ***** Test Step 42 : TH reads Primary6Intensity attribute from DUT\n"); if (ShouldSkip("CC.S.A002a")) { NextTest(); return; } - err = TestReadTheMandatoryAttributePrimary6Intensity_49(); + err = TestThReadsPrimary6IntensityAttributeFromDut_42(); break; - case 50: - ChipLogProgress(chipTool, " ***** Test Step 50 : Read the optional attribute: WhitePointX\n"); + case 43: + ChipLogProgress(chipTool, " ***** Test Step 43 : TH reads WhitePointX attribute from DUT\n"); if (ShouldSkip("CC.S.A0030")) { NextTest(); return; } - err = TestReadTheOptionalAttributeWhitePointX_50(); + err = TestThReadsWhitePointXAttributeFromDut_43(); break; - case 51: - ChipLogProgress(chipTool, " ***** Test Step 51 : Read the optional attribute: WhitePointY\n"); + case 44: + ChipLogProgress(chipTool, " ***** Test Step 44 : TH reads WhitePointY attribute from DUT\n"); if (ShouldSkip("CC.S.A0031")) { NextTest(); return; } - err = TestReadTheOptionalAttributeWhitePointY_51(); + err = TestThReadsWhitePointYAttributeFromDut_44(); break; - case 52: - ChipLogProgress(chipTool, " ***** Test Step 52 : Read the optional attribute: ColorPointRX\n"); + case 45: + ChipLogProgress(chipTool, " ***** Test Step 45 : TH reads ColorPointRX attribute from DUT\n"); if (ShouldSkip("CC.S.A0032")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorPointRX_52(); + err = TestThReadsColorPointRXAttributeFromDut_45(); break; - case 53: - ChipLogProgress(chipTool, " ***** Test Step 53 : Read the optional attribute: ColorPointRY\n"); + case 46: + ChipLogProgress(chipTool, " ***** Test Step 46 : TH reads ColorPointRY attribute from DUT\n"); if (ShouldSkip("CC.S.A0033")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorPointRY_53(); + err = TestThReadsColorPointRYAttributeFromDut_46(); break; - case 54: - ChipLogProgress(chipTool, " ***** Test Step 54 : Read the optional attribute: ColorPointRIntensity\n"); + case 47: + ChipLogProgress(chipTool, " ***** Test Step 47 : TH reads ColorPointRIntensity attribute from DUT\n"); if (ShouldSkip("CC.S.A0034")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorPointRIntensity_54(); + err = TestThReadsColorPointRIntensityAttributeFromDut_47(); break; - case 55: - ChipLogProgress(chipTool, " ***** Test Step 55 : Read the optional attribute: ColorPointGX\n"); + case 48: + ChipLogProgress(chipTool, " ***** Test Step 48 : TH reads ColorPointGX attribute from DUT\n"); if (ShouldSkip("CC.S.A0036")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorPointGX_55(); + err = TestThReadsColorPointGXAttributeFromDut_48(); break; - case 56: - ChipLogProgress(chipTool, " ***** Test Step 56 : Read the optional attribute: ColorPointGY\n"); + case 49: + ChipLogProgress(chipTool, " ***** Test Step 49 : TH reads ColorPointGY attribute from DUT\n"); if (ShouldSkip("CC.S.A0037")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorPointGY_56(); + err = TestThReadsColorPointGYAttributeFromDut_49(); break; - case 57: - ChipLogProgress(chipTool, " ***** Test Step 57 : Read the optional attribute: ColorPointGIntensity\n"); + case 50: + ChipLogProgress(chipTool, " ***** Test Step 50 : TH reads ColorPointGIntensity attribute from DUT\n"); if (ShouldSkip("CC.S.A0038")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorPointGIntensity_57(); + err = TestThReadsColorPointGIntensityAttributeFromDut_50(); break; - case 58: - ChipLogProgress(chipTool, " ***** Test Step 58 : Read the optional attribute: ColorPointBX\n"); + case 51: + ChipLogProgress(chipTool, " ***** Test Step 51 : TH reads ColorPointBX attribute from DUT\n"); if (ShouldSkip("CC.S.A003a")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorPointBX_58(); + err = TestThReadsColorPointBXAttributeFromDut_51(); break; - case 59: - ChipLogProgress(chipTool, " ***** Test Step 59 : Read the optional attribute: ColorPointBY\n"); + case 52: + ChipLogProgress(chipTool, " ***** Test Step 52 : TH reads ColorPointBY attribute from DUT\n"); if (ShouldSkip("CC.S.A003b")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorPointBY_59(); + err = TestThReadsColorPointBYAttributeFromDut_52(); break; - case 60: - ChipLogProgress(chipTool, " ***** Test Step 60 : Read the optional attribute: ColorPointBIntensity\n"); + case 53: + ChipLogProgress(chipTool, " ***** Test Step 53 : TH reads ColorPointBIntensity attribute from DUT\n"); if (ShouldSkip("CC.S.A003c")) { NextTest(); return; } - err = TestReadTheOptionalAttributeColorPointBIntensity_60(); + err = TestThReadsColorPointBIntensityAttributeFromDut_53(); break; } @@ -3650,27 +3593,6 @@ class Test_TC_CC_2_1 : public TestCommandBridge { case 53: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 54: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 55: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 56: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 57: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 58: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 59: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 60: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -3684,7 +3606,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 61; + const uint16_t mTestCount = 54; chip::Optional mNodeId; chip::Optional mCluster; @@ -3698,7 +3620,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return WaitForCommissionee("alpha", value); } - CHIP_ERROR TestValidateConstraintsOfAttributeCurrentHue_1() + CHIP_ERROR TestThReadsCurrentHueAttributeFromDut_1() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3707,15 +3629,10 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: CurrentHue Error: %@", err); + NSLog(@"TH reads CurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("CurrentHue", actualValue, 0U)); - } - VerifyOrReturn(CheckConstraintType("currentHue", "", "uint8")); NextTest(); }]; @@ -3723,7 +3640,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeCurrentSaturation_2() + CHIP_ERROR TestThReadsCurrentSaturationAttributeFromDut_2() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3732,15 +3649,10 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: CurrentSaturation Error: %@", err); + NSLog(@"TH reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("CurrentSaturation", actualValue, 0U)); - } - VerifyOrReturn(CheckConstraintType("currentSaturation", "", "uint8")); NextTest(); }]; @@ -3748,7 +3660,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsCurrentXAttributeFromDut_3() + CHIP_ERROR TestThReadsRemainingTimeAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3756,23 +3668,19 @@ class Test_TC_CC_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentX attribute from DUT Error: %@", err); + [cluster readAttributeRemainingTimeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads RemainingTime attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("CurrentX", actualValue, 24939U)); - } - + VerifyOrReturn(CheckConstraintType("remainingTime", "", "uint16")); NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeCurrentX_4() + CHIP_ERROR TestThReadsCurrentXAttributeFromDut_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3781,7 +3689,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: CurrentX Error: %@", err); + NSLog(@"TH reads CurrentX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -3795,7 +3703,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsCurrentYAttributeFromDut_5() + CHIP_ERROR TestThReadsCurrentYAttributeFromDut_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3804,14 +3712,13 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads CurrentY attribute from DUT Error: %@", err); + NSLog(@"TH reads CurrentY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("CurrentY", actualValue, 24701U)); - } + VerifyOrReturn(CheckConstraintType("currentY", "", "uint16")); + VerifyOrReturn(CheckConstraintMinValue("currentY", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("currentY", [value unsignedShortValue], 65279U)); NextTest(); }]; @@ -3819,7 +3726,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeCurrentY_6() + CHIP_ERROR TestThReadsDriftCompensationAttributeFromDut_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3827,14 +3734,14 @@ class Test_TC_CC_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeCurrentYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: CurrentY Error: %@", err); + [cluster readAttributeDriftCompensationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads DriftCompensation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("currentY", "", "uint16")); - VerifyOrReturn(CheckConstraintMinValue("currentY", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("currentY", [value unsignedShortValue], 65279U)); + VerifyOrReturn(CheckConstraintType("driftCompensation", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("driftCompensation", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("driftCompensation", [value unsignedCharValue], 4U)); NextTest(); }]; @@ -3842,7 +3749,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsColorTemperatureMiredsAttributeFromDut_7() + CHIP_ERROR TestThReadsCompensationTextAttributeFromDut_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3850,23 +3757,20 @@ class Test_TC_CC_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads ColorTemperatureMireds attribute from DUT Error: %@", err); + [cluster readAttributeCompensationTextWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads CompensationText attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("ColorTemperature", actualValue, 250U)); - } - + VerifyOrReturn(CheckConstraintType("compensationText", "", "string")); + VerifyOrReturn(CheckConstraintMaxLength("compensationText", [value length], 254)); NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeColorTemperatureMireds_8() + CHIP_ERROR TestThReadsColorTemperatureMiredsAttributeFromDut_8() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3875,7 +3779,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorTemperatureMireds Error: %@", err); + NSLog(@"TH reads ColorTemperatureMireds attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -3889,31 +3793,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsColorModeAttributeFromDut_9() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorModeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads ColorMode attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ColorMode", actualValue, 1U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestValidateConstraintsOfAttributeColorMode_10() + CHIP_ERROR TestThReadsColorModeAttributeFromDut_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3922,7 +3802,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorModeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorMode Error: %@", err); + NSLog(@"TH reads ColorMode attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -3936,7 +3816,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeOptions_11() + CHIP_ERROR TestThReadsOptionsAttributeFromDut_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3945,23 +3825,21 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeOptionsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: Options Error: %@", err); + NSLog(@"TH reads Options attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("Options", actualValue, 0U)); - } + VerifyOrReturn(CheckConstraintType("options", "", "bitmap8")); + VerifyOrReturn(CheckConstraintMinValue("options", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("options", [value unsignedCharValue], 4U)); - VerifyOrReturn(CheckConstraintType("options", "", "map8")); NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeEnhancedCurrentHue_12() + CHIP_ERROR TestThReadsEnhancedCurrentHueAttributeFromDut_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3970,15 +3848,10 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedCurrentHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: EnhancedCurrentHue Error: %@", err); + NSLog(@"TH reads EnhancedCurrentHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("EnhancedCurrentHue", actualValue, 0U)); - } - VerifyOrReturn(CheckConstraintType("enhancedCurrentHue", "", "uint16")); NextTest(); }]; @@ -3986,7 +3859,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeEnhancedColorMode_13() + CHIP_ERROR TestThReadsEnhancedColorModeAttributeFromDut_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -3995,23 +3868,21 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedColorModeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: EnhancedColorMode Error: %@", err); + NSLog(@"TH reads EnhancedColorMode attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("EnhancedColorMode", actualValue, 1U)); - } - VerifyOrReturn(CheckConstraintType("enhancedColorMode", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("enhancedColorMode", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("enhancedColorMode", [value unsignedCharValue], 3U)); + NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeColorLoopActive_14() + CHIP_ERROR TestThReadsColorLoopActiveAttributeFromDut_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4020,15 +3891,10 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorLoopActiveWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorLoopActive Error: %@", err); + NSLog(@"TH reads ColorLoopActive attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("ColorLoopActive", actualValue, 0U)); - } - VerifyOrReturn(CheckConstraintType("colorLoopActive", "", "uint8")); NextTest(); }]; @@ -4036,7 +3902,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeColorLoopDirection_15() + CHIP_ERROR TestThReadsColorLoopDirectionAttributeFromDut_14() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4045,15 +3911,10 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorLoopDirectionWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorLoopDirection Error: %@", err); + NSLog(@"TH reads ColorLoopDirection attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("ColorLoopDirection", actualValue, 0U)); - } - VerifyOrReturn(CheckConstraintType("colorLoopDirection", "", "uint8")); NextTest(); }]; @@ -4061,7 +3922,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeColorLoopTime_16() + CHIP_ERROR TestThReadsColorLoopTimeAttributeFromDut_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4070,15 +3931,10 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorLoopTimeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorLoopTime Error: %@", err); + NSLog(@"TH reads ColorLoopTime attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("ColorLoopTime", actualValue, 25U)); - } - VerifyOrReturn(CheckConstraintType("colorLoopTime", "", "uint16")); NextTest(); }]; @@ -4086,7 +3942,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeColorLoopStartEnhancedHue_17() + CHIP_ERROR TestThReadsColorLoopStartEnhancedHueAttributeFromDut_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4096,15 +3952,10 @@ class Test_TC_CC_2_1 : public TestCommandBridge { [cluster readAttributeColorLoopStartEnhancedHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorLoopStartEnhancedHue Error: %@", err); + NSLog(@"TH reads ColorLoopStartEnhancedHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("ColorLoopStartEnhancedHue", actualValue, 8960U)); - } - VerifyOrReturn(CheckConstraintType("colorLoopStartEnhancedHue", "", "uint16")); NextTest(); }]; @@ -4112,7 +3963,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeColorLoopStoredEnhancedHue_18() + CHIP_ERROR TestThReadsColorLoopStoredEnhancedHueAttributeFromDut_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4122,15 +3973,10 @@ class Test_TC_CC_2_1 : public TestCommandBridge { [cluster readAttributeColorLoopStoredEnhancedHueWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorLoopStoredEnhancedHue Error: %@", err); + NSLog(@"TH reads ColorLoopStoredEnhancedHue attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("ColorLoopStoredEnhancedHue", actualValue, 0U)); - } - VerifyOrReturn(CheckConstraintType("colorLoopStoredEnhancedHue", "", "uint16")); NextTest(); }]; @@ -4139,7 +3985,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { } NSNumber * _Nonnull FeatureMapValue; - CHIP_ERROR TestReadTheOptionalGlobalAttributeFeatureMap_19() + CHIP_ERROR TestThReadsFeatureMapAttributeFromDut_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4148,7 +3994,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"read the optional global attribute: FeatureMap Error: %@", err); + NSLog(@"TH reads FeatureMap attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4162,7 +4008,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsColorCapabilitiesAttributeFromDut_20() + CHIP_ERROR TestThReadsColorCapabilitiesAttributeFromDut_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4171,7 +4017,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorCapabilitiesWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads ColorCapabilities attribute from DUT Error: %@", err); + NSLog(@"TH reads ColorCapabilities attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4180,25 +4026,6 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("ColorCapabilities", actualValue, FeatureMapValue)); } - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestValidateConstraintsOfAttributeColorCapabilities_21() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeColorCapabilitiesWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorCapabilities Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("colorCapabilities", "", "map16")); VerifyOrReturn(CheckConstraintMinValue("colorCapabilities", [value unsignedShortValue], 0U)); VerifyOrReturn(CheckConstraintMaxValue("colorCapabilities", [value unsignedShortValue], 31U)); @@ -4209,32 +4036,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsColorTempPhysicalMinMiredsAttributeFromDut_22() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster - readAttributeColorTempPhysicalMinMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads ColorTempPhysicalMinMireds attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ColorTempPhysicalMinMireds", actualValue, 0U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestValidateConstraintsOfAttributeColorTempPhysicalMinMireds_23() + CHIP_ERROR TestThReadsColorTempPhysicalMinMiredsAttributeFromDut_20() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4244,7 +4046,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { [cluster readAttributeColorTempPhysicalMinMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorTempPhysicalMinMireds Error: %@", err); + NSLog(@"TH reads ColorTempPhysicalMinMireds attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4258,7 +4060,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadColorTempPhysicalMaxMiredsAttributeFromDut_24() + CHIP_ERROR TestThReadsColorTempPhysicalMaxMiredsAttributeFromDut_21() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4268,32 +4070,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { [cluster readAttributeColorTempPhysicalMaxMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read ColorTempPhysicalMaxMireds attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ColorTempPhysicalMaxMireds", actualValue, 65279U)); - } - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestValidateConstraintsOfAttributeColorTempPhysicalMaxMireds_25() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster - readAttributeColorTempPhysicalMaxMiredsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: ColorTempPhysicalMaxMireds Error: %@", err); + NSLog(@"TH reads ColorTempPhysicalMaxMireds attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4307,7 +4084,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeCoupleColorTempToLevelMinMireds_26() + CHIP_ERROR TestThReadsCoupleColorTempToLevelMinMiredsAttributeFromDut_22() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4317,7 +4094,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { [cluster readAttributeCoupleColorTempToLevelMinMiredsWithCompletionHandler:^( NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: CoupleColorTempToLevelMinMireds Error: %@", err); + NSLog(@"TH reads CoupleColorTempToLevelMinMireds attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4332,7 +4109,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeStartUpColorTemperatureMireds_27() + CHIP_ERROR TestThReadsStartUpColorTemperatureMiredsAttributeFromDut_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4342,7 +4119,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { [cluster readAttributeStartUpColorTemperatureMiredsWithCompletionHandler:^( NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: StartUpColorTemperatureMireds Error: %@", err); + NSLog(@"TH reads StartUpColorTemperatureMireds attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4356,76 +4133,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributeRemainingTime_28() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeRemainingTimeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: RemainingTime Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("RemainingTime", actualValue, 0U)); - } - - VerifyOrReturn(CheckConstraintType("remainingTime", "", "uint16")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheOptionalAttributeDriftCompensation_29() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeDriftCompensationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: DriftCompensation Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("driftCompensation", "", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("driftCompensation", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("driftCompensation", [value unsignedCharValue], 4U)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheOptionalAttributeCompensationText_30() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeCompensationTextWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: CompensationText Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("compensationText", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("compensationText", [value length], 254)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheMandatoryAttributeNumberOfPrimaries_31() + CHIP_ERROR TestThReadsNumberOfPrimariesAttributeFromDut_24() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4434,7 +4142,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeNumberOfPrimariesWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: NumberOfPrimaries Error: %@", err); + NSLog(@"TH reads NumberOfPrimaries attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4451,7 +4159,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary1X_32() + CHIP_ERROR TestThReadsPrimary1XAttributeFromDut_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4460,7 +4168,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary1XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary1X Error: %@", err); + NSLog(@"TH reads Primary1X attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4474,7 +4182,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary1Y_33() + CHIP_ERROR TestThReadsPrimary1YAttributeFromDut_26() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4483,7 +4191,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary1YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary1Y Error: %@", err); + NSLog(@"TH reads Primary1Y attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4497,7 +4205,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary1Intensity_34() + CHIP_ERROR TestThReadsPrimary1IntensityAttributeFromDut_27() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4506,7 +4214,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary1IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary1Intensity Error: %@", err); + NSLog(@"TH reads Primary1Intensity attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4521,7 +4229,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary2X_35() + CHIP_ERROR TestThReadsPrimary2XAttributeFromDut_28() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4530,7 +4238,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary2XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary2X Error: %@", err); + NSLog(@"TH reads Primary2X attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4544,7 +4252,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary2Y_36() + CHIP_ERROR TestThReadsPrimary2YAttributeFromDut_29() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4553,7 +4261,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary2YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary2Y Error: %@", err); + NSLog(@"TH reads Primary2Y attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4567,7 +4275,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestValidateConstraintsOfAttributePrimary2Intensity_37() + CHIP_ERROR TestThReadsPrimary2IntensityAttributeFromDut_30() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4576,7 +4284,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary2IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Validate constraints of attribute: Primary2Intensity Error: %@", err); + NSLog(@"TH reads Primary2Intensity attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4591,7 +4299,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary3X_38() + CHIP_ERROR TestThReadsPrimary3XAttributeFromDut_31() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4600,7 +4308,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary3XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary3X Error: %@", err); + NSLog(@"TH reads Primary3X attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4614,7 +4322,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary3Y_39() + CHIP_ERROR TestThReadsPrimary3YAttributeFromDut_32() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4623,7 +4331,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary3YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary3Y Error: %@", err); + NSLog(@"TH reads Primary3Y attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4637,7 +4345,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary3Intensity_40() + CHIP_ERROR TestThReadsPrimary3IntensityAttributeFromDut_33() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4646,7 +4354,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary3IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary3Intensity Error: %@", err); + NSLog(@"TH reads Primary3Intensity attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4661,7 +4369,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary4X_41() + CHIP_ERROR TestThReadsPrimary4XAttributeFromDut_34() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4670,7 +4378,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary4XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary4X Error: %@", err); + NSLog(@"TH reads Primary4X attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4684,7 +4392,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary4Y_42() + CHIP_ERROR TestThReadsPrimary4YAttributeFromDut_35() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4693,7 +4401,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary4YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary4Y Error: %@", err); + NSLog(@"TH reads Primary4Y attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4707,7 +4415,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary4Intensity_43() + CHIP_ERROR TestThReadsPrimary4IntensityAttributeFromDut_36() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4716,7 +4424,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary4IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary4Intensity Error: %@", err); + NSLog(@"TH reads Primary4Intensity attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4731,7 +4439,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary5X_44() + CHIP_ERROR TestThReadsPrimary5XAttributeFromDut_37() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4740,7 +4448,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary5XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary5X Error: %@", err); + NSLog(@"TH reads Primary5X attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4754,7 +4462,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary5Y_45() + CHIP_ERROR TestThReadsPrimary5YAttributeFromDut_38() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4763,7 +4471,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary5YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary5Y Error: %@", err); + NSLog(@"TH reads Primary5Y attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4777,7 +4485,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary5Intensity_46() + CHIP_ERROR TestThReadsPrimary5IntensityAttributeFromDut_39() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4786,7 +4494,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary5IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary5Intensity Error: %@", err); + NSLog(@"TH reads Primary5Intensity attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4801,7 +4509,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary6X_47() + CHIP_ERROR TestThReadsPrimary6XAttributeFromDut_40() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4810,7 +4518,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary6XWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary6X Error: %@", err); + NSLog(@"TH reads Primary6X attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4824,7 +4532,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary6Y_48() + CHIP_ERROR TestThReadsPrimary6YAttributeFromDut_41() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4833,7 +4541,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary6YWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary6Y Error: %@", err); + NSLog(@"TH reads Primary6Y attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4847,7 +4555,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheMandatoryAttributePrimary6Intensity_49() + CHIP_ERROR TestThReadsPrimary6IntensityAttributeFromDut_42() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4856,7 +4564,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributePrimary6IntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the mandatory attribute: Primary6Intensity Error: %@", err); + NSLog(@"TH reads Primary6Intensity attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4871,7 +4579,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeWhitePointX_50() + CHIP_ERROR TestThReadsWhitePointXAttributeFromDut_43() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4880,7 +4588,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeWhitePointXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: WhitePointX Error: %@", err); + NSLog(@"TH reads WhitePointX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4894,7 +4602,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeWhitePointY_51() + CHIP_ERROR TestThReadsWhitePointYAttributeFromDut_44() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4903,7 +4611,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeWhitePointYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: WhitePointY Error: %@", err); + NSLog(@"TH reads WhitePointY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4917,7 +4625,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorPointRX_52() + CHIP_ERROR TestThReadsColorPointRXAttributeFromDut_45() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4926,7 +4634,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorPointRXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ColorPointRX Error: %@", err); + NSLog(@"TH reads ColorPointRX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4940,7 +4648,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorPointRY_53() + CHIP_ERROR TestThReadsColorPointRYAttributeFromDut_46() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4949,7 +4657,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorPointRYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ColorPointRY Error: %@", err); + NSLog(@"TH reads ColorPointRY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4963,7 +4671,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorPointRIntensity_54() + CHIP_ERROR TestThReadsColorPointRIntensityAttributeFromDut_47() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4972,7 +4680,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorPointRIntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ColorPointRIntensity Error: %@", err); + NSLog(@"TH reads ColorPointRIntensity attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -4987,7 +4695,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorPointGX_55() + CHIP_ERROR TestThReadsColorPointGXAttributeFromDut_48() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -4996,7 +4704,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorPointGXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ColorPointGX Error: %@", err); + NSLog(@"TH reads ColorPointGX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -5010,7 +4718,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorPointGY_56() + CHIP_ERROR TestThReadsColorPointGYAttributeFromDut_49() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -5019,7 +4727,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorPointGYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ColorPointGY Error: %@", err); + NSLog(@"TH reads ColorPointGY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -5033,7 +4741,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorPointGIntensity_57() + CHIP_ERROR TestThReadsColorPointGIntensityAttributeFromDut_50() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -5042,7 +4750,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorPointGIntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ColorPointGIntensity Error: %@", err); + NSLog(@"TH reads ColorPointGIntensity attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -5057,7 +4765,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorPointBX_58() + CHIP_ERROR TestThReadsColorPointBXAttributeFromDut_51() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -5066,7 +4774,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorPointBXWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ColorPointBX Error: %@", err); + NSLog(@"TH reads ColorPointBX attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -5080,7 +4788,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorPointBY_59() + CHIP_ERROR TestThReadsColorPointBYAttributeFromDut_52() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -5089,7 +4797,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorPointBYWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ColorPointBY Error: %@", err); + NSLog(@"TH reads ColorPointBY attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -5103,7 +4811,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTheOptionalAttributeColorPointBIntensity_60() + CHIP_ERROR TestThReadsColorPointBIntensityAttributeFromDut_53() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterColorControl * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device @@ -5112,7 +4820,7 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorPointBIntensityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the optional attribute: ColorPointBIntensity Error: %@", err); + NSLog(@"TH reads ColorPointBIntensity attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -16772,11 +16480,282 @@ class Test_TC_CC_8_1 : public TestCommandBridge { } }; -class Test_TC_BINFO_2_1 : public TestCommandBridge { +class Test_TC_DESC_1_1 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_DESC_1_1() + : TestCommandBridge("Test_TC_DESC_1_1") + , mTestIndex(0) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) + + ~Test_TC_DESC_1_1() {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_DESC_1_1\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_DESC_1_1\n"); + SetCommandExitStatus(CHIP_NO_ERROR); + return; + } + + Wait(); + + // Ensure we increment mTestIndex before we start running the relevant + // command. That way if we lose the timeslice after we send the message + // but before our function call returns, we won't end up with an + // incorrect mTestIndex value observed when we get the response. + switch (mTestIndex++) { + case 0: + ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); + err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); + break; + case 1: + ChipLogProgress(chipTool, " ***** Test Step 1 : Read the global attribute: ClusterRevision\n"); + err = TestReadTheGlobalAttributeClusterRevision_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); + err = TestReadTheGlobalAttributeFeatureMap_2(); + break; + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); + err = TestReadTheGlobalAttributeAttributeList_3(); + break; + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AcceptedCommandList\n"); + err = TestReadTheGlobalAttributeAcceptedCommandList_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: GeneratedCommandList\n"); + err = TestReadTheGlobalAttributeGeneratedCommandList_5(); + break; + case 6: + ChipLogProgress(chipTool, + " ***** Test Step 6 : Read EventList attribute from the DUT and Verify that the DUT response provides a list of " + "supported events.\n"); + if (ShouldSkip("PICS_USER_PROMPT")) { + NextTest(); + return; + } + err = TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_6(); + break; + } + + if (CHIP_NO_ERROR != err) { + ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); + SetCommandExitStatus(err); + } + } + + void OnStatusUpdate(const chip::app::StatusIB & status) override + { + switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + } + + // Go on to the next test. + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + std::atomic_uint16_t mTestIndex; + const uint16_t mTestCount = 7; + + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() + { + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("alpha", value); + } + + CHIP_ERROR TestReadTheGlobalAttributeClusterRevision_1() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device + endpoint:0 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeClusterRevisionWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: ClusterRevision Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 1U)); + } + + VerifyOrReturn(CheckConstraintType("clusterRevision", "", "uint16")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device + endpoint:0 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: FeatureMap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "", "map32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device + endpoint:0 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_4() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device + endpoint:0 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(0))); + } + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_5() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device + endpoint:0 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeGeneratedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read the global attribute: GeneratedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(0))); + } + + VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_6() + { + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } +}; + +class Test_TC_DGETH_2_1 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_BINFO_2_1() - : TestCommandBridge("Test_TC_BINFO_2_1") + Test_TC_DGETH_2_1() + : TestCommandBridge("Test_TC_DGETH_2_1") , mTestIndex(0) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); @@ -16786,7 +16765,7 @@ class Test_TC_BINFO_2_1 : public TestCommandBridge { } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - ~Test_TC_BINFO_2_1() {} + ~Test_TC_DGETH_2_1() {} /////////// TestCommand Interface ///////// void NextTest() override @@ -16794,11 +16773,11 @@ class Test_TC_BINFO_2_1 : public TestCommandBridge { CHIP_ERROR err = CHIP_NO_ERROR; if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_BINFO_2_1\n"); + ChipLogProgress(chipTool, " **** Test Start: Test_TC_DGETH_2_1\n"); } if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_BINFO_2_1\n"); + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_DGETH_2_1\n"); SetCommandExitStatus(CHIP_NO_ERROR); return; } @@ -16815,1011 +16794,146 @@ class Test_TC_BINFO_2_1 : public TestCommandBridge { err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); break; case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Query Data Model Revision\n"); - if (ShouldSkip("BINFO.S.A0000")) { + ChipLogProgress(chipTool, " ***** Test Step 1 : Read PHYRate attribute constraints\n"); + if (ShouldSkip("DGETH.S.A0000")) { NextTest(); return; } - err = TestQueryDataModelRevision_1(); + err = TestReadPHYRateAttributeConstraints_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Query Vendor Name\n"); - if (ShouldSkip("BINFO.S.A0001")) { + ChipLogProgress(chipTool, " ***** Test Step 2 : Read FullDuplex attribute constraints\n"); + if (ShouldSkip("DGETH.S.A0001")) { NextTest(); return; } - err = TestQueryVendorName_2(); + err = TestReadFullDuplexAttributeConstraints_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Query VendorID\n"); - if (ShouldSkip("BINFO.S.A0002")) { + ChipLogProgress(chipTool, " ***** Test Step 3 : Read PacketRxCount attribute constraints\n"); + if (ShouldSkip("DGETH.S.A0002")) { NextTest(); return; } - err = TestQueryVendorID_3(); + err = TestReadPacketRxCountAttributeConstraints_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Query Product Name\n"); - if (ShouldSkip("BINFO.S.A0003")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Read PacketRxCount value from DUT and verify the number of packets received on ethernet " + "network interface\n"); + if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0002")) { NextTest(); return; } - err = TestQueryProductName_4(); + err = TestReadPacketRxCountValueFromDutAndVerifyTheNumberOfPacketsReceivedOnEthernetNetworkInterface_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Query ProductID\n"); - if (ShouldSkip("BINFO.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : Read PacketTxCount attribute constraints\n"); + if (ShouldSkip("DGETH.S.A0003")) { NextTest(); return; } - err = TestQueryProductID_5(); + err = TestReadPacketTxCountAttributeConstraints_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Query Node Label\n"); - if (ShouldSkip("BINFO.S.A0005")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Read PacketTxCount value from DUT and verify the number of packets received on ethernet " + "network interface\n"); + if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0003")) { NextTest(); return; } - err = TestQueryNodeLabel_6(); + err = TestReadPacketTxCountValueFromDutAndVerifyTheNumberOfPacketsReceivedOnEthernetNetworkInterface_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Query User Location\n"); - if (ShouldSkip("BINFO.S.A0006")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Read TxErrCount attribute constraints\n"); + if (ShouldSkip("DGETH.S.A0004")) { NextTest(); return; } - err = TestQueryUserLocation_7(); + err = TestReadTxErrCountAttributeConstraints_7(); break; case 8: - ChipLogProgress(chipTool, " ***** Test Step 8 : Query HardwareVersion\n"); - if (ShouldSkip("BINFO.S.A0007")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Read TxErrCount value from DUT and verify value indicates the number of failed packet " + "transmission on ethernet network interface\n"); + if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0004")) { NextTest(); return; } - err = TestQueryHardwareVersion_8(); + err = TestReadTxErrCountValueFromDutAndVerifyValueIndicatesTheNumberOfFailedPacketTransmissionOnEthernetNetworkInterface_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Query HardwareVersionString\n"); - if (ShouldSkip("BINFO.S.A0008")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : Read CollisionCount attribute constraints\n"); + if (ShouldSkip("DGETH.S.A0005")) { NextTest(); return; } - err = TestQueryHardwareVersionString_9(); + err = TestReadCollisionCountAttributeConstraints_9(); break; case 10: ChipLogProgress(chipTool, - " ***** Test Step 10 : TH reads SoftwareVersionString from the DUT and Verify it is of type string and verify the " - "format\n"); - if (ShouldSkip("PICS_USER_PROMPT && BINFO.S.A000a")) { + " ***** Test Step 10 : Read CollisionCount value from DUT and verify value indicates the number of collision " + "occurred while transmitting packets on ethernet network interface\n"); + if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0005")) { NextTest(); return; } - err = TestThReadsSoftwareVersionStringFromTheDutAndVerifyItIsOfTypeStringAndVerifyTheFormat_10(); + err = TestReadCollisionCountValueFromDutAndVerifyValueIndicatesTheNumberOfCollisionOccurredWhileTransmittingPacketsOnEthernetNetworkInterface_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : TH reads ManufacturingDate from the DUT and Verify it is of type string and verify the " - "format\n"); - if (ShouldSkip("PICS_USER_PROMPT && BINFO.S.A000b")) { + ChipLogProgress(chipTool, " ***** Test Step 11 : Read OverrunCount attribute constraints\n"); + if (ShouldSkip("DGETH.S.A0006")) { NextTest(); return; } - err = TestThReadsManufacturingDateFromTheDutAndVerifyItIsOfTypeStringAndVerifyTheFormat_11(); + err = TestReadOverrunCountAttributeConstraints_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Query PartNumber\n"); - if (ShouldSkip("BINFO.S.A000c")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Read OverrunCount value from DUT and verify value indicates the number of packets dropped " + "due to lack of buffer memory on ethernet network interface\n"); + if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0006")) { NextTest(); return; } - err = TestQueryPartNumber_12(); + err = TestReadOverrunCountValueFromDutAndVerifyValueIndicatesTheNumberOfPacketsDroppedDueToLackOfBufferMemoryOnEthernetNetworkInterface_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : TH reads ProductURL from the DUT and Verify it is of type string and verify the format\n"); - if (ShouldSkip("PICS_USER_PROMPT && BINFO.S.A000d")) { + ChipLogProgress(chipTool, " ***** Test Step 13 : Read CarrierDetect attribute constraints\n"); + if (ShouldSkip("DGETH.S.A0007")) { NextTest(); return; } - err = TestThReadsProductURLFromTheDutAndVerifyItIsOfTypeStringAndVerifyTheFormat_13(); + err = TestReadCarrierDetectAttributeConstraints_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Query ProductLabel\n"); - if (ShouldSkip("BINFO.S.A000e")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Read CarrierDetect value from DUT and verify value indicates the presence of carrier detect " + "control signal on ethernet network interface\n"); + if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0007")) { NextTest(); return; } - err = TestQueryProductLabel_14(); + err = TestReadCarrierDetectValueFromDutAndVerifyValueIndicatesThePresenceOfCarrierDetectControlSignalOnEthernetNetworkInterface_14(); break; case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Query SerialNumber\n"); - if (ShouldSkip("BINFO.S.A000f")) { + ChipLogProgress(chipTool, " ***** Test Step 15 : Read TimeSinceReset attribute constraints\n"); + if (ShouldSkip("DGETH.S.A0008")) { NextTest(); return; } - err = TestQuerySerialNumber_15(); + err = TestReadTimeSinceResetAttributeConstraints_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Query LocalConfigDisabled\n"); - if (ShouldSkip("BINFO.S.A0010")) { - NextTest(); - return; - } - err = TestQueryLocalConfigDisabled_16(); - break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Query Reachable\n"); - if (ShouldSkip("BINFO.S.A0011")) { - NextTest(); - return; - } - err = TestQueryReachable_17(); - break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Query UniqueID\n"); - if (ShouldSkip("BINFO.S.A0012")) { + ChipLogProgress(chipTool, + " ***** Test Step 16 : Read TimeSinceReset value from DUT and verify the value indicates the duration of time, in " + "minutes\n"); + if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0008")) { NextTest(); return; } - err = TestQueryUniqueID_18(); - break; - } - - if (CHIP_NO_ERROR != err) { - ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); - SetCommandExitStatus(err); - } - } - - void OnStatusUpdate(const chip::app::StatusIB & status) override - { - switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - } - - // Go on to the next test. - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 19; - - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() - { - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee("alpha", value); - } - - CHIP_ERROR TestQueryDataModelRevision_1() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeDataModelRevisionWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query Data Model Revision Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("dataModelRevision", "", "uint16")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryVendorName_2() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeVendorNameWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query Vendor Name Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("vendorName", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("vendorName", [value length], 32)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryVendorID_3() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeVendorIDWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query VendorID Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("vendorID", "", "uint16")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryProductName_4() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeProductNameWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query Product Name Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("productName", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("productName", [value length], 32)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryProductID_5() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeProductIDWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query ProductID Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("productID", "", "uint16")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryNodeLabel_6() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeNodeLabelWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query Node Label Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("nodeLabel", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("nodeLabel", [value length], 32)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryUserLocation_7() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeLocationWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query User Location Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("location", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("location", [value length], 16)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryHardwareVersion_8() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeHardwareVersionWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query HardwareVersion Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("hardwareVersion", "", "uint16")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryHardwareVersionString_9() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeHardwareVersionStringWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query HardwareVersionString Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("hardwareVersionString", "", "string")); - VerifyOrReturn(CheckConstraintMinLength("hardwareVersionString", [value length], 1)); - VerifyOrReturn(CheckConstraintMaxLength("hardwareVersionString", [value length], 64)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestThReadsSoftwareVersionStringFromTheDutAndVerifyItIsOfTypeStringAndVerifyTheFormat_10() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR TestThReadsManufacturingDateFromTheDutAndVerifyItIsOfTypeStringAndVerifyTheFormat_11() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR TestQueryPartNumber_12() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributePartNumberWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query PartNumber Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("partNumber", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("partNumber", [value length], 32)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestThReadsProductURLFromTheDutAndVerifyItIsOfTypeStringAndVerifyTheFormat_13() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR TestQueryProductLabel_14() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeProductLabelWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query ProductLabel Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("productLabel", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("productLabel", [value length], 64)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQuerySerialNumber_15() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeSerialNumberWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query SerialNumber Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("serialNumber", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("serialNumber", [value length], 32)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryLocalConfigDisabled_16() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeLocalConfigDisabledWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query LocalConfigDisabled Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("localConfigDisabled", "", "boolean")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryReachable_17() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeReachableWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query Reachable Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("reachable", "", "boolean")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestQueryUniqueID_18() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterBasic * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeUniqueIDWithCompletionHandler:^(NSString * _Nullable value, NSError * _Nullable err) { - NSLog(@"Query UniqueID Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("uniqueID", "", "string")); - VerifyOrReturn(CheckConstraintMaxLength("uniqueID", [value length], 32)); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DESC_1_1 : public TestCommandBridge { -public: - // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_DESC_1_1() - : TestCommandBridge("Test_TC_DESC_1_1") - , mTestIndex(0) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - - ~Test_TC_DESC_1_1() {} - - /////////// TestCommand Interface ///////// - void NextTest() override - { - CHIP_ERROR err = CHIP_NO_ERROR; - - if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_DESC_1_1\n"); - } - - if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_DESC_1_1\n"); - SetCommandExitStatus(CHIP_NO_ERROR); - return; - } - - Wait(); - - // Ensure we increment mTestIndex before we start running the relevant - // command. That way if we lose the timeslice after we send the message - // but before our function call returns, we won't end up with an - // incorrect mTestIndex value observed when we get the response. - switch (mTestIndex++) { - case 0: - ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); - err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); - break; - case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Read the global attribute: ClusterRevision\n"); - err = TestReadTheGlobalAttributeClusterRevision_1(); - break; - case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read the global attribute: FeatureMap\n"); - err = TestReadTheGlobalAttributeFeatureMap_2(); - break; - case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read the global attribute: AttributeList\n"); - err = TestReadTheGlobalAttributeAttributeList_3(); - break; - case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AcceptedCommandList\n"); - err = TestReadTheGlobalAttributeAcceptedCommandList_4(); - break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Read the global attribute: GeneratedCommandList\n"); - err = TestReadTheGlobalAttributeGeneratedCommandList_5(); - break; - case 6: - ChipLogProgress(chipTool, - " ***** Test Step 6 : Read EventList attribute from the DUT and Verify that the DUT response provides a list of " - "supported events.\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { - NextTest(); - return; - } - err = TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_6(); - break; - } - - if (CHIP_NO_ERROR != err) { - ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); - SetCommandExitStatus(err); - } - } - - void OnStatusUpdate(const chip::app::StatusIB & status) override - { - switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - } - - // Go on to the next test. - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 7; - - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() - { - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee("alpha", value); - } - - CHIP_ERROR TestReadTheGlobalAttributeClusterRevision_1() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device - endpoint:0 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeClusterRevisionWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: ClusterRevision Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 1U)); - } - - VerifyOrReturn(CheckConstraintType("clusterRevision", "", "uint16")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeFeatureMap_2() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device - endpoint:0 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeFeatureMapWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: FeatureMap Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); - } - - VerifyOrReturn(CheckConstraintType("featureMap", "", "map32")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeAttributeList_3() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device - endpoint:0 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAttributeListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: AttributeList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 2UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); - - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeAcceptedCommandList_4() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device - endpoint:0 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeAcceptedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: AcceptedCommandList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(0))); - } - - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadTheGlobalAttributeGeneratedCommandList_5() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterDescriptor * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device - endpoint:0 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeGeneratedCommandListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Read the global attribute: GeneratedCommandList Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(0))); - } - - VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestReadEventListAttributeFromTheDutAndVerifyThatTheDutResponseProvidesAListOfSupportedEvents_6() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } -}; - -class Test_TC_DGETH_2_1 : public TestCommandBridge { -public: - // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_DGETH_2_1() - : TestCommandBridge("Test_TC_DGETH_2_1") - , mTestIndex(0) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - - ~Test_TC_DGETH_2_1() {} - - /////////// TestCommand Interface ///////// - void NextTest() override - { - CHIP_ERROR err = CHIP_NO_ERROR; - - if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_DGETH_2_1\n"); - } - - if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_DGETH_2_1\n"); - SetCommandExitStatus(CHIP_NO_ERROR); - return; - } - - Wait(); - - // Ensure we increment mTestIndex before we start running the relevant - // command. That way if we lose the timeslice after we send the message - // but before our function call returns, we won't end up with an - // incorrect mTestIndex value observed when we get the response. - switch (mTestIndex++) { - case 0: - ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); - err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); - break; - case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Read PHYRate attribute constraints\n"); - if (ShouldSkip("DGETH.S.A0000")) { - NextTest(); - return; - } - err = TestReadPHYRateAttributeConstraints_1(); - break; - case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Read FullDuplex attribute constraints\n"); - if (ShouldSkip("DGETH.S.A0001")) { - NextTest(); - return; - } - err = TestReadFullDuplexAttributeConstraints_2(); - break; - case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Read PacketRxCount attribute constraints\n"); - if (ShouldSkip("DGETH.S.A0002")) { - NextTest(); - return; - } - err = TestReadPacketRxCountAttributeConstraints_3(); - break; - case 4: - ChipLogProgress(chipTool, - " ***** Test Step 4 : Read PacketRxCount value from DUT and verify the number of packets received on ethernet " - "network interface\n"); - if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0002")) { - NextTest(); - return; - } - err = TestReadPacketRxCountValueFromDutAndVerifyTheNumberOfPacketsReceivedOnEthernetNetworkInterface_4(); - break; - case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Read PacketTxCount attribute constraints\n"); - if (ShouldSkip("DGETH.S.A0003")) { - NextTest(); - return; - } - err = TestReadPacketTxCountAttributeConstraints_5(); - break; - case 6: - ChipLogProgress(chipTool, - " ***** Test Step 6 : Read PacketTxCount value from DUT and verify the number of packets received on ethernet " - "network interface\n"); - if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0003")) { - NextTest(); - return; - } - err = TestReadPacketTxCountValueFromDutAndVerifyTheNumberOfPacketsReceivedOnEthernetNetworkInterface_6(); - break; - case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Read TxErrCount attribute constraints\n"); - if (ShouldSkip("DGETH.S.A0004")) { - NextTest(); - return; - } - err = TestReadTxErrCountAttributeConstraints_7(); - break; - case 8: - ChipLogProgress(chipTool, - " ***** Test Step 8 : Read TxErrCount value from DUT and verify value indicates the number of failed packet " - "transmission on ethernet network interface\n"); - if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0004")) { - NextTest(); - return; - } - err = TestReadTxErrCountValueFromDutAndVerifyValueIndicatesTheNumberOfFailedPacketTransmissionOnEthernetNetworkInterface_8(); - break; - case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Read CollisionCount attribute constraints\n"); - if (ShouldSkip("DGETH.S.A0005")) { - NextTest(); - return; - } - err = TestReadCollisionCountAttributeConstraints_9(); - break; - case 10: - ChipLogProgress(chipTool, - " ***** Test Step 10 : Read CollisionCount value from DUT and verify value indicates the number of collision " - "occurred while transmitting packets on ethernet network interface\n"); - if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0005")) { - NextTest(); - return; - } - err = TestReadCollisionCountValueFromDutAndVerifyValueIndicatesTheNumberOfCollisionOccurredWhileTransmittingPacketsOnEthernetNetworkInterface_10(); - break; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Read OverrunCount attribute constraints\n"); - if (ShouldSkip("DGETH.S.A0006")) { - NextTest(); - return; - } - err = TestReadOverrunCountAttributeConstraints_11(); - break; - case 12: - ChipLogProgress(chipTool, - " ***** Test Step 12 : Read OverrunCount value from DUT and verify value indicates the number of packets dropped " - "due to lack of buffer memory on ethernet network interface\n"); - if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0006")) { - NextTest(); - return; - } - err = TestReadOverrunCountValueFromDutAndVerifyValueIndicatesTheNumberOfPacketsDroppedDueToLackOfBufferMemoryOnEthernetNetworkInterface_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Read CarrierDetect attribute constraints\n"); - if (ShouldSkip("DGETH.S.A0007")) { - NextTest(); - return; - } - err = TestReadCarrierDetectAttributeConstraints_13(); - break; - case 14: - ChipLogProgress(chipTool, - " ***** Test Step 14 : Read CarrierDetect value from DUT and verify value indicates the presence of carrier detect " - "control signal on ethernet network interface\n"); - if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0007")) { - NextTest(); - return; - } - err = TestReadCarrierDetectValueFromDutAndVerifyValueIndicatesThePresenceOfCarrierDetectControlSignalOnEthernetNetworkInterface_14(); - break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Read TimeSinceReset attribute constraints\n"); - if (ShouldSkip("DGETH.S.A0008")) { - NextTest(); - return; - } - err = TestReadTimeSinceResetAttributeConstraints_15(); - break; - case 16: - ChipLogProgress(chipTool, - " ***** Test Step 16 : Read TimeSinceReset value from DUT and verify the value indicates the duration of time, in " - "minutes\n"); - if (ShouldSkip("PICS_USER_PROMPT && DGETH.S.A0008")) { - NextTest(); - return; - } - err = TestReadTimeSinceResetValueFromDutAndVerifyTheValueIndicatesTheDurationOfTimeInMinutes_16(); + err = TestReadTimeSinceResetValueFromDutAndVerifyTheValueIndicatesTheDurationOfTimeInMinutes_16(); break; } @@ -18684,21 +17798,17 @@ class Test_TC_FLW_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AttributeList", [actualValue count], static_cast(9))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 1UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 2UL)); - VerifyOrReturn(CheckValue("", actualValue[3], 3UL)); - VerifyOrReturn(CheckValue("", actualValue[4], 65528UL)); - VerifyOrReturn(CheckValue("", actualValue[5], 65529UL)); - VerifyOrReturn(CheckValue("", actualValue[6], 65531UL)); - VerifyOrReturn(CheckValue("", actualValue[7], 65532UL)); - VerifyOrReturn(CheckValue("", actualValue[8], 65533UL)); - } - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + NextTest(); }]; @@ -19213,15 +18323,11 @@ class Test_TC_CGEN_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(3))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 2UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 4UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 4UL)); + NextTest(); }]; @@ -19241,15 +18347,11 @@ class Test_TC_CGEN_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(3))); - VerifyOrReturn(CheckValue("", actualValue[0], 1UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 3UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 5UL)); - } - VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 5UL)); + NextTest(); }]; @@ -19817,13 +18919,9 @@ class Test_TC_DGGEN_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + NextTest(); }]; @@ -20517,14 +19615,10 @@ class Test_TC_I_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(2))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 64UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 64UL)); + NextTest(); }]; @@ -22602,7 +21696,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { break; case 5: ChipLogProgress(chipTool, " ***** Test Step 5 : Reads the MinLevel attribute\n"); - if (ShouldSkip("LVL.S.A0002")) { + if (ShouldSkip("LVL.S.A0002 && LVL.S.F01")) { NextTest(); return; } @@ -22610,7 +21704,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { break; case 6: ChipLogProgress(chipTool, " ***** Test Step 6 : Reads the MinLevel attribute\n"); - if (ShouldSkip("LVL.S.A0002")) { + if (ShouldSkip("LVL.S.A0002 && !LVL.S.F01")) { NextTest(); return; } @@ -22618,7 +21712,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { break; case 7: ChipLogProgress(chipTool, " ***** Test Step 7 : Reads the MaxLevel attribute\n"); - if (ShouldSkip("LVL.S.A0003")) { + if (ShouldSkip("LVL.S.A0003 && LVL.S.F01")) { NextTest(); return; } @@ -22626,7 +21720,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { break; case 8: ChipLogProgress(chipTool, " ***** Test Step 8 : Reads the MaxLevel attribute\n"); - if (ShouldSkip("LVL.S.A0003")) { + if (ShouldSkip("LVL.S.A0003 && !LVL.S.F01")) { NextTest(); return; } @@ -22674,7 +21768,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { break; case 14: ChipLogProgress(chipTool, " ***** Test Step 14 : Step 7b & 7C Reads the CurrentFrequency attribute\n"); - if (ShouldSkip("LVL.S.A0004 && LVL.S.A0005")) { + if (ShouldSkip("LVL.S.A0004 && LVL.S.A0005 && LVL.S.A0006")) { NextTest(); return; } @@ -22690,7 +21784,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { break; case 16: ChipLogProgress(chipTool, " ***** Test Step 16 : Reads the OnLevel attribute \n"); - if (ShouldSkip("LVL.S.F01")) { + if (ShouldSkip("LVL.S.F01 && LVL.S.A0011")) { NextTest(); return; } @@ -22698,7 +21792,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { break; case 17: ChipLogProgress(chipTool, " ***** Test Step 17 : Reads the OnLevel attribute \n"); - if (ShouldSkip(" !LVL.S.F01 ")) { + if (ShouldSkip("LVL.S.A0011 && !LVL.S.F01")) { NextTest(); return; } @@ -22897,11 +21991,6 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("current level", actualValue, 254U)); - } - VerifyOrReturn(CheckConstraintType("currentLevel", "", "uint8")); { CurrentLevelValue = value; @@ -22926,11 +22015,6 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("remaining time", actualValue, 0U)); - } - VerifyOrReturn(CheckConstraintType("remainingTime", "", "uint16")); NextTest(); }]; @@ -22958,8 +22042,6 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { } VerifyOrReturn(CheckConstraintType("minLevel", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("minLevel", [value unsignedCharValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("minLevel", [value unsignedCharValue], 1U)); { MinLevelValue = value; } @@ -23017,8 +22099,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { } VerifyOrReturn(CheckConstraintType("maxLevel", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("maxLevel", [value unsignedCharValue], 1U)); - VerifyOrReturn(CheckConstraintMaxValue("maxLevel", [value unsignedCharValue], 254U)); + VerifyOrReturn(CheckConstraintMinValue("maxLevel", [value unsignedCharValue], MinLevelValue)); { MaxLevelValue = value; } @@ -23044,7 +22125,7 @@ class Test_TC_LVL_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("maxLevel", "", "uint8")); - VerifyOrReturn(CheckConstraintMinValue("maxLevel", [value unsignedCharValue], 1U)); + VerifyOrReturn(CheckConstraintMinValue("maxLevel", [value unsignedCharValue], MinLevelValue1)); VerifyOrReturn(CheckConstraintMaxValue("maxLevel", [value unsignedCharValue], 254U)); { MaxLevelValue1 = value; @@ -24280,72 +23361,64 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { err = TestReadsCurrentLevelAttributeFromDut_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Reads On Off Transition Time attribute from DUT\n"); - if (ShouldSkip("LVL.S.A0010")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : sends a Move to level command\n"); + if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010")) { NextTest(); return; } - err = TestReadsOnOffTransitionTimeAttributeFromDut_9(); + err = TestSendsAMoveToLevelCommand_9(); break; case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : sends a Move to level command\n"); - if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010")) { - NextTest(); - return; - } - err = TestSendsAMoveToLevelCommand_10(); + ChipLogProgress(chipTool, " ***** Test Step 10 : Wait 11000ms\n"); + err = TestWait11000ms_10(); break; case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Wait 11000ms\n"); - err = TestWait11000ms_11(); - break; - case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Reads CurrentLevel attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 11 : Reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0000 && LVL.S.M.VarRate")) { NextTest(); return; } - err = TestReadsCurrentLevelAttributeFromDut_12(); + err = TestReadsCurrentLevelAttributeFromDut_11(); break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Reads the OnOffTransitionTime attribute from the DUT\n"); + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Reads the OnOffTransitionTime attribute from the DUT\n"); if (ShouldSkip("LVL.S.A0010")) { NextTest(); return; } - err = TestReadsTheOnOffTransitionTimeAttributeFromTheDut_13(); + err = TestReadsTheOnOffTransitionTimeAttributeFromTheDut_12(); break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : sends a Move to level command\n"); + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : sends a Move to level command\n"); if (ShouldSkip("LVL.S.C00.Rsp && LVL.S.A0010")) { NextTest(); return; } - err = TestSendsAMoveToLevelCommand_14(); + err = TestSendsAMoveToLevelCommand_13(); break; - case 15: - ChipLogProgress(chipTool, " ***** Test Step 15 : Wait 1000ms\n"); - err = TestWait1000ms_15(); + case 14: + ChipLogProgress(chipTool, " ***** Test Step 14 : Wait 1000ms\n"); + err = TestWait1000ms_14(); break; - case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Reads CurrentLevel attribute from DUT\n"); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Reads CurrentLevel attribute from DUT\n"); if (ShouldSkip("LVL.S.A0000")) { NextTest(); return; } - err = TestReadsCurrentLevelAttributeFromDut_16(); + err = TestReadsCurrentLevelAttributeFromDut_15(); break; - case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Reset level to 254\n"); + case 16: + ChipLogProgress(chipTool, " ***** Test Step 16 : Reset level to 254\n"); if (ShouldSkip("LVL.S.C00.Rsp")) { NextTest(); return; } - err = TestResetLevelTo254_17(); + err = TestResetLevelTo254_16(); break; - case 18: - ChipLogProgress(chipTool, " ***** Test Step 18 : Wait 100ms\n"); - err = TestWait100ms_18(); + case 17: + ChipLogProgress(chipTool, " ***** Test Step 17 : Wait 100ms\n"); + err = TestWait100ms_17(); break; } @@ -24412,9 +23485,6 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -24428,7 +23498,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 19; + const uint16_t mTestCount = 18; chip::Optional mNodeId; chip::Optional mCluster; @@ -24594,27 +23664,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsOnOffTransitionTimeAttributeFromDut_9() - { - MTRBaseDevice * device = GetDevice("alpha"); - MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device - endpoint:1 - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeOnOffTransitionTimeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads On Off Transition Time attribute from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - VerifyOrReturn(CheckConstraintType("onOffTransitionTime", "", "uint16")); - NextTest(); - }]; - - return CHIP_NO_ERROR; - } - - CHIP_ERROR TestSendsAMoveToLevelCommand_10() + CHIP_ERROR TestSendsAMoveToLevelCommand_9() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24639,14 +23689,14 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait11000ms_11() + CHIP_ERROR TestWait11000ms_10() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 11000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_12() + CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_11() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24669,8 +23719,9 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } + NSNumber * _Nonnull OnOffTransitionTimeValue; - CHIP_ERROR TestReadsTheOnOffTransitionTimeAttributeFromTheDut_13() + CHIP_ERROR TestReadsTheOnOffTransitionTimeAttributeFromTheDut_12() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24684,13 +23735,17 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("onOffTransitionTime", "", "uint16")); + { + OnOffTransitionTimeValue = value; + } + NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestSendsAMoveToLevelCommand_14() + CHIP_ERROR TestSendsAMoveToLevelCommand_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24700,7 +23755,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { __auto_type * params = [[MTRLevelControlClusterMoveToLevelParams alloc] init]; params.level = [NSNumber numberWithUnsignedChar:64U]; - params.transitionTime = [NSNumber numberWithUnsignedShort:0U]; + params.transitionTime = [NSNumber numberWithUnsignedShort:65535U]; params.optionMask = [NSNumber numberWithUnsignedChar:1U]; params.optionOverride = [NSNumber numberWithUnsignedChar:1U]; [cluster moveToLevelWithParams:params @@ -24715,14 +23770,14 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait1000ms_15() + CHIP_ERROR TestWait1000ms_14() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 1000UL; return WaitForMs("alpha", value); } - CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_16() + CHIP_ERROR TestReadsCurrentLevelAttributeFromDut_15() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24746,7 +23801,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestResetLevelTo254_17() + CHIP_ERROR TestResetLevelTo254_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterLevelControl * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device @@ -24771,7 +23826,7 @@ class Test_TC_LVL_3_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestWait100ms_18() + CHIP_ERROR TestWait100ms_17() { chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; value.ms = 100UL; @@ -26143,8 +25198,8 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintMinValue("currentLevel", [value unsignedCharValue], 23U)); - VerifyOrReturn(CheckConstraintMaxValue("currentLevel", [value unsignedCharValue], 27U)); + VerifyOrReturn(CheckConstraintMinValue("currentLevel", [value unsignedCharValue], 22U)); + VerifyOrReturn(CheckConstraintMaxValue("currentLevel", [value unsignedCharValue], 32U)); VerifyOrReturn(CheckConstraintNotValue("currentLevel", value, CurrentLevelValue)); NextTest(); @@ -26230,8 +25285,8 @@ class Test_TC_LVL_6_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintMinValue("currentLevel", [value unsignedCharValue], 48U)); - VerifyOrReturn(CheckConstraintMaxValue("currentLevel", [value unsignedCharValue], 52U)); + VerifyOrReturn(CheckConstraintMinValue("currentLevel", [value unsignedCharValue], 45U)); + VerifyOrReturn(CheckConstraintMaxValue("currentLevel", [value unsignedCharValue], 55U)); VerifyOrReturn(CheckConstraintNotValue("currentLevel", value, CurrentLevelValue)); NextTest(); @@ -26731,17 +25786,13 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AttributeList", [actualValue count], static_cast(5))); - VerifyOrReturn(CheckValue("", actualValue[0], 65528UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 65529UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 65531UL)); - VerifyOrReturn(CheckValue("", actualValue[3], 65532UL)); - VerifyOrReturn(CheckValue("", actualValue[4], 65533UL)); - } - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + NextTest(); }]; @@ -26761,13 +25812,9 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + NextTest(); }]; @@ -26787,13 +25834,9 @@ class Test_TC_KEYPADINPUT_1_2 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 1UL)); - } - VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 1UL)); + NextTest(); }]; @@ -27038,15 +26081,11 @@ class Test_TC_APPLAUNCHER_1_3 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(3))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 1UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 2UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 2UL)); + NextTest(); }]; @@ -27066,13 +26105,9 @@ class Test_TC_APPLAUNCHER_1_3 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 3UL)); - } - VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 3UL)); + NextTest(); }]; @@ -27317,16 +26352,12 @@ class Test_TC_MEDIAINPUT_1_4 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(4))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 1UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 2UL)); - VerifyOrReturn(CheckValue("", actualValue[3], 3UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 3UL)); + NextTest(); }]; @@ -27843,15 +26874,11 @@ class Test_TC_CHANNEL_1_6 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(3))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 2UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 3UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 3UL)); + NextTest(); }]; @@ -28133,13 +27160,9 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 10UL)); - } - VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 10UL)); + NextTest(); }]; @@ -28482,7 +27505,7 @@ class Test_TC_TGTNAV_1_9 : public TestCommandBridge { break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Read the global attribute: AttributeList\n"); - if (ShouldSkip("!MC_TGTNAV.S.A0001")) { + if (ShouldSkip(" !MC_TGTNAV.S.A0001 ")) { NextTest(); return; } @@ -28631,19 +27654,15 @@ class Test_TC_TGTNAV_1_9 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AttributeList", [actualValue count], static_cast(7))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 1UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 65528UL)); - VerifyOrReturn(CheckValue("", actualValue[3], 65529UL)); - VerifyOrReturn(CheckValue("", actualValue[4], 65531UL)); - VerifyOrReturn(CheckValue("", actualValue[5], 65532UL)); - VerifyOrReturn(CheckValue("", actualValue[6], 65533UL)); - } - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + NextTest(); }]; @@ -28663,18 +27682,14 @@ class Test_TC_TGTNAV_1_9 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AttributeList", [actualValue count], static_cast(6))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 65528UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 65529UL)); - VerifyOrReturn(CheckValue("", actualValue[3], 65531UL)); - VerifyOrReturn(CheckValue("", actualValue[4], 65532UL)); - VerifyOrReturn(CheckValue("", actualValue[5], 65533UL)); - } - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + NextTest(); }]; @@ -28694,13 +27709,9 @@ class Test_TC_TGTNAV_1_9 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + NextTest(); }]; @@ -28720,13 +27731,9 @@ class Test_TC_TGTNAV_1_9 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 1UL)); - } - VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 1UL)); + NextTest(); }]; @@ -29268,13 +28275,9 @@ class Test_TC_CONTENTLAUNCHER_1_11 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 2UL)); - } - VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 2UL)); + NextTest(); }]; @@ -29485,17 +28488,13 @@ class Test_TC_ALOGIN_1_12 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AttributeList", [actualValue count], static_cast(5))); - VerifyOrReturn(CheckValue("", actualValue[0], 65528UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 65529UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 65531UL)); - VerifyOrReturn(CheckValue("", actualValue[3], 65532UL)); - VerifyOrReturn(CheckValue("", actualValue[4], 65533UL)); - } - VerifyOrReturn(CheckConstraintType("attributeList", "", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + NextTest(); }]; @@ -29515,15 +28514,11 @@ class Test_TC_ALOGIN_1_12 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(3))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 2UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 3UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 3UL)); + NextTest(); }]; @@ -29543,13 +28538,9 @@ class Test_TC_ALOGIN_1_12 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("GeneratedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 1UL)); - } - VerifyOrReturn(CheckConstraintType("generatedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 1UL)); + NextTest(); }]; @@ -34906,13 +33897,9 @@ class Test_TC_MOD_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(1))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + NextTest(); }]; @@ -37113,18 +36100,14 @@ class Test_TC_OO_1_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - { - id actualValue = value; - VerifyOrReturn(CheckValue("AcceptedCommandList", [actualValue count], static_cast(6))); - VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); - VerifyOrReturn(CheckValue("", actualValue[1], 1UL)); - VerifyOrReturn(CheckValue("", actualValue[2], 2UL)); - VerifyOrReturn(CheckValue("", actualValue[3], 64UL)); - VerifyOrReturn(CheckValue("", actualValue[4], 65UL)); - VerifyOrReturn(CheckValue("", actualValue[5], 66UL)); - } - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 64UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 65UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 66UL)); + NextTest(); }]; @@ -44969,7 +43952,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Read the optional global attribute constraints: FeatureMap\n"); - if (ShouldSkip("( TSTAT_HEAT || TSTAT_COOL || TSTAT_OCC || TSTAT_SCH || TSTAT_SB || TSTAT_AUTO )")) { + if (ShouldSkip("TSTAT.S.F00 || TSTAT.S.F01 || TSTAT.S.F02 || TSTAT.S.F03 || TSTAT.S.F04 || TSTAT.S.F05")) { NextTest(); return; } @@ -45226,415 +44209,406 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); break; case 1: - ChipLogProgress( - chipTool, " ***** Test Step 1 : Reads constraints of mandatory attributes from DUT: LocalTemperature\n"); - err = TestReadsConstraintsOfMandatoryAttributesFromDutLocalTemperature_1(); + ChipLogProgress(chipTool, " ***** Test Step 1 : Reads mandatory attributes from DUT: LocalTemperature\n"); + if (ShouldSkip("TSTAT.S.A0000")) { + NextTest(); + return; + } + err = TestReadsMandatoryAttributesFromDutLocalTemperature_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Reads constraints of mandatory attributes from DUT: AbsMinHeatSetpointLimit\n"); - err = TestReadsConstraintsOfMandatoryAttributesFromDutAbsMinHeatSetpointLimit_2(); + ChipLogProgress(chipTool, " ***** Test Step 2 : Read OutdoorTemperature attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0001")) { + NextTest(); + return; + } + err = TestReadOutdoorTemperatureAttributeFromTheDut_2(); break; case 3: - ChipLogProgress( - chipTool, " ***** Test Step 3 : Reads constraints of mandatory attributes from DUT: AbsMaxHeatSetpointLimit\n"); - err = TestReadsConstraintsOfMandatoryAttributesFromDutAbsMaxHeatSetpointLimit_3(); + ChipLogProgress(chipTool, " ***** Test Step 3 : Read Occupancy attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0002")) { + NextTest(); + return; + } + err = TestReadOccupancyAttributeFromTheDut_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Reads constraints of optional attributes from DUT: AbsMinCoolSetpointLimit\n"); - err = TestReadsConstraintsOfOptionalAttributesFromDutAbsMinCoolSetpointLimit_4(); + ChipLogProgress(chipTool, " ***** Test Step 4 : Reads mandatory attributes from DUT: AbsMinHeatSetpointLimit\n"); + if (ShouldSkip("TSTAT.S.A0003")) { + NextTest(); + return; + } + err = TestReadsMandatoryAttributesFromDutAbsMinHeatSetpointLimit_4(); break; case 5: - ChipLogProgress( - chipTool, " ***** Test Step 5 : Reads constraints of optional attributes from DUT: AbsMaxCoolSetpointLimit\n"); - err = TestReadsConstraintsOfOptionalAttributesFromDutAbsMaxCoolSetpointLimit_5(); + ChipLogProgress(chipTool, " ***** Test Step 5 : Reads mandatory attributes from DUT: AbsMaxHeatSetpointLimit\n"); + if (ShouldSkip("TSTAT.S.A0004")) { + NextTest(); + return; + } + err = TestReadsMandatoryAttributesFromDutAbsMaxHeatSetpointLimit_5(); break; case 6: - ChipLogProgress(chipTool, - " ***** Test Step 6 : Read PICoolingDemand attribute from the DUT Verify that the DUT responds with a uint8 " - "value.The value has to be in the range of 0 to 100\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 6 : Reads optional attributes from DUT: AbsMinCoolSetpointLimit\n"); + if (ShouldSkip("TSTAT.S.A0005")) { NextTest(); return; } - err = TestReadPICoolingDemandAttributeFromTheDutVerifyThatTheDutRespondsWithAUint8ValueTheValueHasToBeInTheRangeOf0To100_6(); + err = TestReadsOptionalAttributesFromDutAbsMinCoolSetpointLimit_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Read PIHeatingDemand attribute from the DUT and Verify that the DUT responds with a uint8 " - "value.The value has to be in the range of 0 to 100\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Reads optional attributes from DUT: AbsMaxCoolSetpointLimit\n"); + if (ShouldSkip("TSTAT.S.A0006")) { NextTest(); return; } - err = TestReadPIHeatingDemandAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueTheValueHasToBeInTheRangeOf0To100_7(); + err = TestReadsOptionalAttributesFromDutAbsMaxCoolSetpointLimit_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Reads constraints of optional attributes from DUT: OccupiedCoolingSetpoint\n"); - err = TestReadsConstraintsOfOptionalAttributesFromDutOccupiedCoolingSetpoint_8(); + ChipLogProgress(chipTool, " ***** Test Step 8 : Read PICoolingDemand attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0007")) { + NextTest(); + return; + } + err = TestReadPICoolingDemandAttributeFromTheDut_8(); break; case 9: - ChipLogProgress( - chipTool, " ***** Test Step 9 : Reads constraints of mandatory attributes from DUT: OccupiedHeatingSetpoint\n"); - err = TestReadsConstraintsOfMandatoryAttributesFromDutOccupiedHeatingSetpoint_9(); + ChipLogProgress(chipTool, " ***** Test Step 9 : Read PIHeatingDemand attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0008")) { + NextTest(); + return; + } + err = TestReadPIHeatingDemandAttributeFromTheDut_9(); break; case 10: - ChipLogProgress(chipTool, - " ***** Test Step 10 : Read UnoccupiedCoolingSetpoint attribute from the DUT and Verify that the DUT responds with " - "an int16 value\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 10 : Read HVACSystemTypeConfiguration attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0009")) { NextTest(); return; } - err = TestReadUnoccupiedCoolingSetpointAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt16Value_10(); + err = TestReadHVACSystemTypeConfigurationAttributeFromTheDut_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Read UnoccupiedHeatingSetpoint attribute from the DUT and Verify that the DUT responds with " - "an int16 value\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 11 : Read LocalTemperatureCalibration attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0010")) { NextTest(); return; } - err = TestReadUnoccupiedHeatingSetpointAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt16Value_11(); + err = TestReadLocalTemperatureCalibrationAttributeFromTheDut_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Reads constraints of mandatory attributes from DUT: MinHeatSetpointLimit\n"); - err = TestReadsConstraintsOfMandatoryAttributesFromDutMinHeatSetpointLimit_12(); + ChipLogProgress(chipTool, " ***** Test Step 12 : Reads optional attributes from DUT: OccupiedCoolingSetpoint\n"); + if (ShouldSkip("TSTAT.S.A0011")) { + NextTest(); + return; + } + err = TestReadsOptionalAttributesFromDutOccupiedCoolingSetpoint_12(); break; case 13: - ChipLogProgress( - chipTool, " ***** Test Step 13 : Reads constraints of mandatory attributes from DUT: MaxHeatSetpointLimit\n"); - err = TestReadsConstraintsOfMandatoryAttributesFromDutMaxHeatSetpointLimit_13(); + ChipLogProgress(chipTool, " ***** Test Step 13 : Reads mandatory attributes from DUT: OccupiedHeatingSetpoint\n"); + if (ShouldSkip("TSTAT.S.A0012")) { + NextTest(); + return; + } + err = TestReadsMandatoryAttributesFromDutOccupiedHeatingSetpoint_13(); break; case 14: - ChipLogProgress( - chipTool, " ***** Test Step 14 : Reads constraints of optional attributes from DUT: MinCoolSetpointLimit\n"); - err = TestReadsConstraintsOfOptionalAttributesFromDutMinCoolSetpointLimit_14(); + ChipLogProgress(chipTool, " ***** Test Step 14 : Read UnoccupiedCoolingSetpoint attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0013")) { + NextTest(); + return; + } + err = TestReadUnoccupiedCoolingSetpointAttributeFromTheDut_14(); break; case 15: - ChipLogProgress( - chipTool, " ***** Test Step 15 : Reads constraints of optional attributes from DUT: MaxCoolSetpointLimit\n"); - err = TestReadsConstraintsOfOptionalAttributesFromDutMaxCoolSetpointLimit_15(); + ChipLogProgress(chipTool, " ***** Test Step 15 : Read UnoccupiedHeatingSetpoint attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0014")) { + NextTest(); + return; + } + err = TestReadUnoccupiedHeatingSetpointAttributeFromTheDut_15(); break; case 16: - ChipLogProgress( - chipTool, " ***** Test Step 16 : Reads constraints of mandatory attributes from DUT: ControlSequenceOfOperation\n"); - err = TestReadsConstraintsOfMandatoryAttributesFromDutControlSequenceOfOperation_16(); + ChipLogProgress(chipTool, " ***** Test Step 16 : Reads mandatory attributes from DUT: MinHeatSetpointLimit\n"); + if (ShouldSkip("TSTAT.S.A0015")) { + NextTest(); + return; + } + err = TestReadsMandatoryAttributesFromDutMinHeatSetpointLimit_16(); break; case 17: - ChipLogProgress(chipTool, " ***** Test Step 17 : Reads constraints of mandatory attributes from DUT: SystemMode\n"); - err = TestReadsConstraintsOfMandatoryAttributesFromDutSystemMode_17(); + ChipLogProgress(chipTool, " ***** Test Step 17 : Reads mandatory attributes from DUT: MaxHeatSetpointLimit\n"); + if (ShouldSkip("TSTAT.S.A0016")) { + NextTest(); + return; + } + err = TestReadsMandatoryAttributesFromDutMaxHeatSetpointLimit_17(); break; case 18: - ChipLogProgress( - chipTool, " ***** Test Step 18 : Read OutdoorTemperature attribute from the DUT and Verify the datatype\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 18 : Reads optional attributes from DUT: MinCoolSetpointLimit\n"); + if (ShouldSkip("TSTAT.S.A0017")) { NextTest(); return; } - err = TestReadOutdoorTemperatureAttributeFromTheDutAndVerifyTheDatatype_18(); + err = TestReadsOptionalAttributesFromDutMinCoolSetpointLimit_18(); break; case 19: - ChipLogProgress(chipTool, - " ***** Test Step 19 : Read Occupancy attribute from the DUT and Verify the datatype and response value\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 19 : Reads optional attributes from DUT: MaxCoolSetpointLimit\n"); + if (ShouldSkip("TSTAT.S.A0018")) { NextTest(); return; } - err = TestReadOccupancyAttributeFromTheDutAndVerifyTheDatatypeAndResponseValue_19(); + err = TestReadsOptionalAttributesFromDutMaxCoolSetpointLimit_19(); break; case 20: - ChipLogProgress(chipTool, - " ***** Test Step 20 : Read HVACSystemTypeConfiguration attribute from the DUT and Verify that the DUT responds " - "with a map8 value. The value has to be in the range of 0x00 to 0x3f\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 20 : Reads optional attributes from DUT: MinSetpointDeadBand\n"); + if (ShouldSkip("TSTAT.S.A0019")) { NextTest(); return; } - err = TestReadHVACSystemTypeConfigurationAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap8ValueTheValueHasToBeInTheRangeOf0x00To0x3f_20(); + err = TestReadsOptionalAttributesFromDutMinSetpointDeadBand_20(); break; case 21: - ChipLogProgress(chipTool, - " ***** Test Step 21 : Read LocalTemperatureCalibration attribute from the DUT and Verify that the DUT responds " - "with an int8 value.The value has to be in the range of -25 to 25\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 21 : Read RemoteSensing attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A001a")) { NextTest(); return; } - err = TestReadLocalTemperatureCalibrationAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt8ValueTheValueHasToBeInTheRangeOf25To25_21(); + err = TestReadRemoteSensingAttributeFromTheDut_21(); break; case 22: - ChipLogProgress( - chipTool, " ***** Test Step 22 : Reads constraints of optional attributes from DUT: MinSetpointDeadBand\n"); - err = TestReadsConstraintsOfOptionalAttributesFromDutMinSetpointDeadBand_22(); + ChipLogProgress(chipTool, " ***** Test Step 22 : Reads mandatory attributes from DUT: ControlSequenceOfOperation\n"); + if (ShouldSkip("TSTAT.S.A001b")) { + NextTest(); + return; + } + err = TestReadsMandatoryAttributesFromDutControlSequenceOfOperation_22(); break; case 23: - ChipLogProgress(chipTool, - " ***** Test Step 23 : Read RemoteSensing attribute from the DUT and Verify that the DUT responds with a map8 " - "value. The value has to be in the range of 0x00 to 0x07\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 23 : Reads mandatory attributes from DUT: SystemMode\n"); + if (ShouldSkip("TSTAT.S.A001c")) { NextTest(); return; } - err = TestReadRemoteSensingAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap8ValueTheValueHasToBeInTheRangeOf0x00To0x07_23(); + err = TestReadsMandatoryAttributesFromDutSystemMode_23(); break; case 24: ChipLogProgress(chipTool, " ***** Test Step 24 : Read AlarmMask attribute from the DUT and Verify that the DUT responds with a map8 " "value.The value has to be in the range of 0x00 to 0x07.\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + if (ShouldSkip("PICS_USER_PROMPT && TSTAT.S.A001d")) { NextTest(); return; } err = TestReadAlarmMaskAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap8ValueTheValueHasToBeInTheRangeOf0x00To0x07_24(); break; case 25: - ChipLogProgress(chipTool, - " ***** Test Step 25 : Read ThermostatRunningMode attribute from the DUT and Verify that the DUT responds with an " - "enum8 value.The value has to be 0, 3 or 4\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 25 : Read ThermostatRunningMode attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A001e")) { NextTest(); return; } - err = TestReadThermostatRunningModeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBe03Or4_25(); + err = TestReadThermostatRunningModeAttributeFromTheDut_25(); break; case 26: ChipLogProgress(chipTool, " ***** Test Step 26 : Reads constraints of optional attributes from DUT: StartOfWeek\n"); + if (ShouldSkip("TSTAT.S.A0020")) { + NextTest(); + return; + } err = TestReadsConstraintsOfOptionalAttributesFromDutStartOfWeek_26(); break; case 27: - ChipLogProgress( - chipTool, " ***** Test Step 27 : Reads constraints of optional attributes from DUT: NumberOfWeeklyTransitions\n"); - err = TestReadsConstraintsOfOptionalAttributesFromDutNumberOfWeeklyTransitions_27(); + ChipLogProgress(chipTool, " ***** Test Step 27 : Reads optional attributes from DUT: NumberOfWeeklyTransitions\n"); + if (ShouldSkip("TSTAT.S.A0021")) { + NextTest(); + return; + } + err = TestReadsOptionalAttributesFromDutNumberOfWeeklyTransitions_27(); break; case 28: - ChipLogProgress( - chipTool, " ***** Test Step 28 : Reads constraints of optional attributes from DUT: NumberOfDailyTransitions\n"); - err = TestReadsConstraintsOfOptionalAttributesFromDutNumberOfDailyTransitions_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Reads optional attributes from DUT: NumberOfDailyTransitions\n"); + if (ShouldSkip("TSTAT.S.A0022")) { + NextTest(); + return; + } + err = TestReadsOptionalAttributesFromDutNumberOfDailyTransitions_28(); break; case 29: - ChipLogProgress(chipTool, - " ***** Test Step 29 : Read TemperatureSetpointHold attribute from the DUT and Verify that the DUT responds with " - "an enum8 value.The value has to 0 or 1\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 29 : Read TemperatureSetpointHold attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0023")) { NextTest(); return; } - err = TestReadTemperatureSetpointHoldAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasTo0Or1_29(); + err = TestReadTemperatureSetpointHoldAttributeFromTheDut_29(); break; case 30: - ChipLogProgress(chipTool, - " ***** Test Step 30 : Read TemperatureSetpointHoldDuration attribute from the DUT and Verify that the DUT " - "responds with a uint16 value or NULL.The value has to be in the range of 0 to 1440\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 30 : Read TemperatureSetpointHoldDuration attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0024")) { NextTest(); return; } - err = TestReadTemperatureSetpointHoldDurationAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint16ValueOrNULLTheValueHasToBeInTheRangeOf0To1440_30(); + err = TestReadTemperatureSetpointHoldDurationAttributeFromTheDut_30(); break; case 31: - ChipLogProgress(chipTool, - " ***** Test Step 31 : Read ThermostatProgrammingOperationMode attribute from the DUT and Verify that the DUT " - "responds with a map8 value.The value has to be in the range of 0x00 to 0x07\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 31 : Read ThermostatProgrammingOperationMode attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0025")) { NextTest(); return; } - err = TestReadThermostatProgrammingOperationModeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap8ValueTheValueHasToBeInTheRangeOf0x00To0x07_31(); + err = TestReadThermostatProgrammingOperationModeAttributeFromTheDut_31(); break; case 32: - ChipLogProgress(chipTool, - " ***** Test Step 32 : Read ThermostatRunningState attribute from the DUT and Verify that the DUT responds with a " - "map16 value.The value has to be in the range of 0x00 to 0x7F\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 32 : Read ThermostatRunningState attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0029")) { NextTest(); return; } - err = TestReadThermostatRunningStateAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap16ValueTheValueHasToBeInTheRangeOf0x00To0x7F_32(); + err = TestReadThermostatRunningStateAttributeFromTheDut_32(); break; case 33: - ChipLogProgress(chipTool, - " ***** Test Step 33 : Read SetpointChangeSource attribute from the DUT and Verify that the DUT responds with an " - "enum8 value. The value has to be in the range of 0 to 2\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 33 : Read SetpointChangeSource attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0030")) { NextTest(); return; } - err = TestReadSetpointChangeSourceAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf0To2_33(); + err = TestReadSetpointChangeSourceAttributeFromTheDut_33(); break; case 34: - ChipLogProgress(chipTool, - " ***** Test Step 34 : Read SetpointChangeAmount attribute from the DUT and Verify that the DUT responds with an " - "int16 value or NULL\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 34 : Read SetpointChangeAmount attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0031")) { NextTest(); return; } - err = TestReadSetpointChangeAmountAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt16ValueOrNull_34(); + err = TestReadSetpointChangeAmountAttributeFromTheDut_34(); break; case 35: - ChipLogProgress(chipTool, - " ***** Test Step 35 : Read SetpointChangeSourceTimestamp attribute from the DUT and Verify that the DUT responds " - "with a utc value\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 35 : Read SetpointChangeSourceTimestamp attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0032")) { NextTest(); return; } - err = TestReadSetpointChangeSourceTimestampAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUtcValue_35(); + err = TestReadSetpointChangeSourceTimestampAttributeFromTheDut_35(); break; case 36: - ChipLogProgress(chipTool, - " ***** Test Step 36 : Read OccupiedSetback attribute from the DUT and Verify that the DUT responds with a uint8 " - "value or NULL\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 36 : Read OccupiedSetback attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0034")) { NextTest(); return; } - err = TestReadOccupiedSetbackAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_36(); + err = TestReadOccupiedSetbackAttributeFromTheDut_36(); break; case 37: - ChipLogProgress(chipTool, - " ***** Test Step 37 : Read OccupiedSetbackMin attribute from the DUT and Verify that the DUT responds with a " - "uint8 value or NULL\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 37 : Read OccupiedSetbackMin attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0035")) { NextTest(); return; } - err = TestReadOccupiedSetbackMinAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_37(); + err = TestReadOccupiedSetbackMinAttributeFromTheDut_37(); break; case 38: - ChipLogProgress(chipTool, - " ***** Test Step 38 : Read OccupiedSetbackMax attribute from the DUT and Verify that the DUT responds with a " - "uint8 value or NULL\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 38 : Read OccupiedSetbackMax attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0036")) { NextTest(); return; } - err = TestReadOccupiedSetbackMaxAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_38(); + err = TestReadOccupiedSetbackMaxAttributeFromTheDut_38(); break; case 39: - ChipLogProgress(chipTool, - " ***** Test Step 39 : Read UnoccupiedSetback attribute from the DUT and Verify that the DUT responds with a uint8 " - "value or NULL\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 39 : Read UnoccupiedSetback attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0037")) { NextTest(); return; } - err = TestReadUnoccupiedSetbackAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_39(); + err = TestReadUnoccupiedSetbackAttributeFromTheDut_39(); break; case 40: - ChipLogProgress(chipTool, - " ***** Test Step 40 : Read UnoccupiedSetbackMin attribute from the DUT and Verify that the DUT responds with a " - "uint8 value or NULL\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 40 : Read UnoccupiedSetbackMin attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0038")) { NextTest(); return; } - err = TestReadUnoccupiedSetbackMinAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_40(); + err = TestReadUnoccupiedSetbackMinAttributeFromTheDut_40(); break; case 41: - ChipLogProgress(chipTool, - " ***** Test Step 41 : Read UnoccupiedSetbackMax attribute from the DUT and Verify that the DUT responds with a " - "uint8 value or NULL\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 41 : Read UnoccupiedSetbackMax attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0039")) { NextTest(); return; } - err = TestReadUnoccupiedSetbackMaxAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_41(); + err = TestReadUnoccupiedSetbackMaxAttributeFromTheDut_41(); break; case 42: - ChipLogProgress(chipTool, - " ***** Test Step 42 : Read EmergencyHeatDelta attribute from the DUT and Verify that the DUT responds with a " - "uint8 value or NULL\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 42 : Read EmergencyHeatDelta attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A003a")) { NextTest(); return; } - err = TestReadEmergencyHeatDeltaAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_42(); + err = TestReadEmergencyHeatDeltaAttributeFromTheDut_42(); break; case 43: - ChipLogProgress(chipTool, - " ***** Test Step 43 : Read ACType attribute from the DUT and Verify that the DUT responds with an enum8 value. " - "The value has to be in the range of 0 to 4\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 43 : Read ACType attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0040")) { NextTest(); return; } - err = TestReadACTypeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf0To4_43(); + err = TestReadACTypeAttributeFromTheDut_43(); break; case 44: - ChipLogProgress(chipTool, - " ***** Test Step 44 : Read ACCapacity attribute from the DUT and Verify that the DUT responds with a uint16 " - "value\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 44 : Read ACCapacity attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0041")) { NextTest(); return; } - err = TestReadACCapacityAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint16Value_44(); + err = TestReadACCapacityAttributeFromTheDut_44(); break; case 45: - ChipLogProgress(chipTool, - " ***** Test Step 45 : Read ACRefrigerantType attribute from the DUT and VVerify that the DUT responds with an " - "enum8 value.The value has to be in the range of 0 to 3\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 45 : Read ACRefrigerantType attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0042")) { NextTest(); return; } - err = TestReadACRefrigerantTypeAttributeFromTheDutAndVVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf0To3_45(); + err = TestReadACRefrigerantTypeAttributeFromTheDut_45(); break; case 46: - ChipLogProgress(chipTool, - " ***** Test Step 46 : Read ACCompressorType attribute from the DUT and Verify that the DUT responds with an enum8 " - "value.The value has to be in the range of 0 to 3\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 46 : Read ACCompressorType attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0043")) { NextTest(); return; } - err = TestReadACCompressorTypeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf0To3_46(); + err = TestReadACCompressorTypeAttributeFromTheDut_46(); break; case 47: - ChipLogProgress(chipTool, - " ***** Test Step 47 : Read ACErrorCode attribute from the DUT and Verify that the DUT responds with a map32 " - "value\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 47 : Read ACErrorCode attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0044")) { NextTest(); return; } - err = TestReadACErrorCodeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap32Value_47(); + err = TestReadACErrorCodeAttributeFromTheDut_47(); break; case 48: - ChipLogProgress(chipTool, - " ***** Test Step 48 : Read ACLouverPosition attribute from the DUT and Verify that the DUT responds with an enum8 " - "value.The value has to be in the range of 1 to 5\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 48 : Read ACLouverPosition attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0045")) { NextTest(); return; } - err = TestReadACLouverPositionAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf1To5_48(); + err = TestReadACLouverPositionAttributeFromTheDut_48(); break; case 49: - ChipLogProgress(chipTool, - " ***** Test Step 49 : Read ACCoilTemperature attribute from the DUT and Verify that the DUT responds with an " - "int16 value or NULL\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 49 : Read ACCoilTemperature attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0046")) { NextTest(); return; } - err = TestReadACCoilTemperatureAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt16ValueOrNull_49(); + err = TestReadACCoilTemperatureAttributeFromTheDut_49(); break; case 50: - ChipLogProgress(chipTool, - " ***** Test Step 50 : Read ACCapacityFormat attribute from the DUT and Verify that the DUT responds with an enum8 " - "value.The value has to be 0.\n"); - if (ShouldSkip("PICS_USER_PROMPT")) { + ChipLogProgress(chipTool, " ***** Test Step 50 : Read ACCapacityFormat attribute from the DUT\n"); + if (ShouldSkip("TSTAT.S.A0047")) { NextTest(); return; } - err = TestReadACCapacityFormatAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBe0_50(); + err = TestReadACCapacityFormatAttributeFromTheDut_50(); break; } @@ -45827,7 +44801,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return WaitForCommissionee("alpha", value); } - CHIP_ERROR TestReadsConstraintsOfMandatoryAttributesFromDutLocalTemperature_1() + CHIP_ERROR TestReadsMandatoryAttributesFromDutLocalTemperature_1() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -45836,7 +44810,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeLocalTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of mandatory attributes from DUT: LocalTemperature Error: %@", err); + NSLog(@"Reads mandatory attributes from DUT: LocalTemperature Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -45851,7 +44825,54 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfMandatoryAttributesFromDutAbsMinHeatSetpointLimit_2() + CHIP_ERROR TestReadOutdoorTemperatureAttributeFromTheDut_2() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeOutdoorTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read OutdoorTemperature attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("outdoorTemperature", "", "int16")); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadOccupancyAttributeFromTheDut_3() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeOccupancyWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read Occupancy attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("occupancy", "", "int16")); + VerifyOrReturn(CheckConstraintMinValue("occupancy", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("occupancy", [value unsignedCharValue], 1U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadsMandatoryAttributesFromDutAbsMinHeatSetpointLimit_4() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -45860,7 +44881,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAbsMinHeatSetpointLimitWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of mandatory attributes from DUT: AbsMinHeatSetpointLimit Error: %@", err); + NSLog(@"Reads mandatory attributes from DUT: AbsMinHeatSetpointLimit Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -45874,7 +44895,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfMandatoryAttributesFromDutAbsMaxHeatSetpointLimit_3() + CHIP_ERROR TestReadsMandatoryAttributesFromDutAbsMaxHeatSetpointLimit_5() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -45883,7 +44904,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAbsMaxHeatSetpointLimitWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of mandatory attributes from DUT: AbsMaxHeatSetpointLimit Error: %@", err); + NSLog(@"Reads mandatory attributes from DUT: AbsMaxHeatSetpointLimit Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -45897,7 +44918,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutAbsMinCoolSetpointLimit_4() + CHIP_ERROR TestReadsOptionalAttributesFromDutAbsMinCoolSetpointLimit_6() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -45906,12 +44927,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAbsMinCoolSetpointLimitWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of optional attributes from DUT: AbsMinCoolSetpointLimit Error: %@", err); - - if (err.code == MTRInteractionErrorCodeUnsupportedAttribute) { - NextTest(); - return; - } + NSLog(@"Reads optional attributes from DUT: AbsMinCoolSetpointLimit Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -45925,7 +44941,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutAbsMaxCoolSetpointLimit_5() + CHIP_ERROR TestReadsOptionalAttributesFromDutAbsMaxCoolSetpointLimit_7() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -45934,12 +44950,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAbsMaxCoolSetpointLimitWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of optional attributes from DUT: AbsMaxCoolSetpointLimit Error: %@", err); - - if (err.code == MTRInteractionErrorCodeUnsupportedAttribute) { - NextTest(); - return; - } + NSLog(@"Reads optional attributes from DUT: AbsMaxCoolSetpointLimit Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -45953,27 +44964,53 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadPICoolingDemandAttributeFromTheDutVerifyThatTheDutRespondsWithAUint8ValueTheValueHasToBeInTheRangeOf0To100_6() + CHIP_ERROR TestReadPICoolingDemandAttributeFromTheDut_8() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributePICoolingDemandWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read PICoolingDemand attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("PICoolingDemand", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("PICoolingDemand", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("PICoolingDemand", [value unsignedCharValue], 100U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadPIHeatingDemandAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueTheValueHasToBeInTheRangeOf0To100_7() + CHIP_ERROR TestReadPIHeatingDemandAttributeFromTheDut_9() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributePIHeatingDemandWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read PIHeatingDemand attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("PIHeatingDemand", "", "uint8")); + VerifyOrReturn(CheckConstraintMinValue("PIHeatingDemand", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("PIHeatingDemand", [value unsignedCharValue], 100U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutOccupiedCoolingSetpoint_8() + CHIP_ERROR TestReadHVACSystemTypeConfigurationAttributeFromTheDut_10() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -45981,13 +45018,56 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeOccupiedCoolingSetpointWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of optional attributes from DUT: OccupiedCoolingSetpoint Error: %@", err); + [cluster + readAttributeHVACSystemTypeConfigurationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read HVACSystemTypeConfiguration attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("HVACSystemTypeConfiguration", "", "map8")); + VerifyOrReturn(CheckConstraintMinValue("HVACSystemTypeConfiguration", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("HVACSystemTypeConfiguration", [value unsignedCharValue], 63U)); - if (err.code == MTRInteractionErrorCodeUnsupportedAttribute) { NextTest(); - return; - } + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadLocalTemperatureCalibrationAttributeFromTheDut_11() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster + readAttributeLocalTemperatureCalibrationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read LocalTemperatureCalibration attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("localTemperatureCalibration", "", "int8")); + VerifyOrReturn(CheckConstraintMinValue("localTemperatureCalibration", [value charValue], 25)); + VerifyOrReturn(CheckConstraintMaxValue("localTemperatureCalibration", [value charValue], -25)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadsOptionalAttributesFromDutOccupiedCoolingSetpoint_12() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeOccupiedCoolingSetpointWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads optional attributes from DUT: OccupiedCoolingSetpoint Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -46001,7 +45081,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfMandatoryAttributesFromDutOccupiedHeatingSetpoint_9() + CHIP_ERROR TestReadsMandatoryAttributesFromDutOccupiedHeatingSetpoint_13() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46010,7 +45090,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeOccupiedHeatingSetpointWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of mandatory attributes from DUT: OccupiedHeatingSetpoint Error: %@", err); + NSLog(@"Reads mandatory attributes from DUT: OccupiedHeatingSetpoint Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -46024,25 +45104,49 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadUnoccupiedCoolingSetpointAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt16Value_10() + CHIP_ERROR TestReadUnoccupiedCoolingSetpointAttributeFromTheDut_14() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster + readAttributeUnoccupiedCoolingSetpointWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read UnoccupiedCoolingSetpoint attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("unoccupiedCoolingSetpoint", "", "int16")); + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadUnoccupiedHeatingSetpointAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt16Value_11() + CHIP_ERROR TestReadUnoccupiedHeatingSetpointAttributeFromTheDut_15() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster + readAttributeUnoccupiedHeatingSetpointWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read UnoccupiedHeatingSetpoint attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("unoccupiedHeatingSetpoint", "", "int16")); + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfMandatoryAttributesFromDutMinHeatSetpointLimit_12() + CHIP_ERROR TestReadsMandatoryAttributesFromDutMinHeatSetpointLimit_16() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46051,21 +45155,18 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeMinHeatSetpointLimitWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of mandatory attributes from DUT: MinHeatSetpointLimit Error: %@", err); + NSLog(@"Reads mandatory attributes from DUT: MinHeatSetpointLimit Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("minHeatSetpointLimit", "", "int16")); - VerifyOrReturn(CheckConstraintMinValue("minHeatSetpointLimit", [value shortValue], 700)); - VerifyOrReturn(CheckConstraintMaxValue("minHeatSetpointLimit", [value shortValue], 3000)); - NextTest(); }]; return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfMandatoryAttributesFromDutMaxHeatSetpointLimit_13() + CHIP_ERROR TestReadsMandatoryAttributesFromDutMaxHeatSetpointLimit_17() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46074,7 +45175,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeMaxHeatSetpointLimitWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of mandatory attributes from DUT: MaxHeatSetpointLimit Error: %@", err); + NSLog(@"Reads mandatory attributes from DUT: MaxHeatSetpointLimit Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -46088,7 +45189,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutMinCoolSetpointLimit_14() + CHIP_ERROR TestReadsOptionalAttributesFromDutMinCoolSetpointLimit_18() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46097,12 +45198,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeMinCoolSetpointLimitWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of optional attributes from DUT: MinCoolSetpointLimit Error: %@", err); - - if (err.code == MTRInteractionErrorCodeUnsupportedAttribute) { - NextTest(); - return; - } + NSLog(@"Reads optional attributes from DUT: MinCoolSetpointLimit Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -46116,7 +45212,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutMaxCoolSetpointLimit_15() + CHIP_ERROR TestReadsOptionalAttributesFromDutMaxCoolSetpointLimit_19() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46125,12 +45221,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeMaxCoolSetpointLimitWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of optional attributes from DUT: MaxCoolSetpointLimit Error: %@", err); - - if (err.code == MTRInteractionErrorCodeUnsupportedAttribute) { - NextTest(); - return; - } + NSLog(@"Reads optional attributes from DUT: MaxCoolSetpointLimit Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -46144,7 +45235,53 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfMandatoryAttributesFromDutControlSequenceOfOperation_16() + CHIP_ERROR TestReadsOptionalAttributesFromDutMinSetpointDeadBand_20() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeMinSetpointDeadBandWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads optional attributes from DUT: MinSetpointDeadBand Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("minSetpointDeadBand", "", "int8")); + VerifyOrReturn(CheckConstraintMinValue("minSetpointDeadBand", [value charValue], 0)); + VerifyOrReturn(CheckConstraintMaxValue("minSetpointDeadBand", [value charValue], 25)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadRemoteSensingAttributeFromTheDut_21() + { + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeRemoteSensingWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read RemoteSensing attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("remoteSensing", "", "map8")); + VerifyOrReturn(CheckConstraintMinValue("remoteSensing", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("remoteSensing", [value unsignedCharValue], 7U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadsMandatoryAttributesFromDutControlSequenceOfOperation_22() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46154,7 +45291,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { [cluster readAttributeControlSequenceOfOperationWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of mandatory attributes from DUT: ControlSequenceOfOperation Error: %@", err); + NSLog(@"Reads mandatory attributes from DUT: ControlSequenceOfOperation Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -46168,7 +45305,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfMandatoryAttributesFromDutSystemMode_17() + CHIP_ERROR TestReadsMandatoryAttributesFromDutSystemMode_23() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46177,7 +45314,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeSystemModeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of mandatory attributes from DUT: SystemMode Error: %@", err); + NSLog(@"Reads mandatory attributes from DUT: SystemMode Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -46191,36 +45328,8 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadOutdoorTemperatureAttributeFromTheDutAndVerifyTheDatatype_18() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR TestReadOccupancyAttributeFromTheDutAndVerifyTheDatatypeAndResponseValue_19() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR - TestReadHVACSystemTypeConfigurationAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap8ValueTheValueHasToBeInTheRangeOf0x00To0x3f_20() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - CHIP_ERROR - TestReadLocalTemperatureCalibrationAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt8ValueTheValueHasToBeInTheRangeOf25To25_21() + TestReadAlarmMaskAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap8ValueTheValueHasToBeInTheRangeOf0x00To0x07_24() { chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -46229,7 +45338,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return UserPrompt("alpha", value); } - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutMinSetpointDeadBand_22() + CHIP_ERROR TestReadThermostatRunningModeAttributeFromTheDut_25() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46237,19 +45346,14 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeMinSetpointDeadBandWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of optional attributes from DUT: MinSetpointDeadBand Error: %@", err); - - if (err.code == MTRInteractionErrorCodeUnsupportedAttribute) { - NextTest(); - return; - } + [cluster readAttributeThermostatRunningModeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ThermostatRunningMode attribute from the DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("minSetpointDeadBand", "", "int8")); - VerifyOrReturn(CheckConstraintMinValue("minSetpointDeadBand", [value charValue], 0)); - VerifyOrReturn(CheckConstraintMaxValue("minSetpointDeadBand", [value charValue], 25)); + VerifyOrReturn(CheckConstraintType("thermostatRunningMode", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("thermostatRunningMode", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("thermostatRunningMode", [value unsignedCharValue], 4U)); NextTest(); }]; @@ -46257,35 +45361,6 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadRemoteSensingAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap8ValueTheValueHasToBeInTheRangeOf0x00To0x07_23() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR - TestReadAlarmMaskAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap8ValueTheValueHasToBeInTheRangeOf0x00To0x07_24() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - - CHIP_ERROR TestReadThermostatRunningModeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBe03Or4_25() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutStartOfWeek_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -46297,11 +45372,6 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { [cluster readAttributeStartOfWeekWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { NSLog(@"Reads constraints of optional attributes from DUT: StartOfWeek Error: %@", err); - if (err.code == MTRInteractionErrorCodeUnsupportedAttribute) { - NextTest(); - return; - } - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); VerifyOrReturn(CheckConstraintType("startOfWeek", "", "enum8")); @@ -46314,7 +45384,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutNumberOfWeeklyTransitions_27() + CHIP_ERROR TestReadsOptionalAttributesFromDutNumberOfWeeklyTransitions_27() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46324,12 +45394,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { [cluster readAttributeNumberOfWeeklyTransitionsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of optional attributes from DUT: NumberOfWeeklyTransitions Error: %@", err); - - if (err.code == MTRInteractionErrorCodeUnsupportedAttribute) { - NextTest(); - return; - } + NSLog(@"Reads optional attributes from DUT: NumberOfWeeklyTransitions Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -46340,7 +45405,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadsConstraintsOfOptionalAttributesFromDutNumberOfDailyTransitions_28() + CHIP_ERROR TestReadsOptionalAttributesFromDutNumberOfDailyTransitions_28() { MTRBaseDevice * device = GetDevice("alpha"); MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device @@ -46349,12 +45414,7 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeNumberOfDailyTransitionsWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Reads constraints of optional attributes from DUT: NumberOfDailyTransitions Error: %@", err); - - if (err.code == MTRInteractionErrorCodeUnsupportedAttribute) { - NextTest(); - return; - } + NSLog(@"Reads optional attributes from DUT: NumberOfDailyTransitions Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -46365,209 +45425,516 @@ class Test_TC_TSTAT_2_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestReadTemperatureSetpointHoldAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasTo0Or1_29() + CHIP_ERROR TestReadTemperatureSetpointHoldAttributeFromTheDut_29() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeTemperatureSetpointHoldWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read TemperatureSetpointHold attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("temperatureSetpointHold", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("temperatureSetpointHold", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("temperatureSetpointHold", [value unsignedCharValue], 1U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadTemperatureSetpointHoldDurationAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint16ValueOrNULLTheValueHasToBeInTheRangeOf0To1440_30() + CHIP_ERROR TestReadTemperatureSetpointHoldDurationAttributeFromTheDut_30() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeTemperatureSetpointHoldDurationWithCompletionHandler:^( + NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read TemperatureSetpointHoldDuration attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("temperatureSetpointHoldDuration", "", "uint16")); + VerifyOrReturn( + CheckConstraintMinValue("temperatureSetpointHoldDuration", [value unsignedShortValue], 0U)); + VerifyOrReturn( + CheckConstraintMaxValue("temperatureSetpointHoldDuration", [value unsignedShortValue], 1440U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadThermostatProgrammingOperationModeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap8ValueTheValueHasToBeInTheRangeOf0x00To0x07_31() + CHIP_ERROR TestReadThermostatProgrammingOperationModeAttributeFromTheDut_31() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeThermostatProgrammingOperationModeWithCompletionHandler:^( + NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ThermostatProgrammingOperationMode attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("thermostatProgrammingOperationMode", "", "map8")); + VerifyOrReturn(CheckConstraintMinValue("thermostatProgrammingOperationMode", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("thermostatProgrammingOperationMode", [value unsignedCharValue], 7U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadThermostatRunningStateAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap16ValueTheValueHasToBeInTheRangeOf0x00To0x7F_32() + CHIP_ERROR TestReadThermostatRunningStateAttributeFromTheDut_32() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeThermostatRunningStateWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ThermostatRunningState attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("thermostatRunningState", "", "map16")); + VerifyOrReturn(CheckConstraintMinValue("thermostatRunningState", [value unsignedShortValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("thermostatRunningState", [value unsignedShortValue], 127U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadSetpointChangeSourceAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf0To2_33() + CHIP_ERROR TestReadSetpointChangeSourceAttributeFromTheDut_33() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeSetpointChangeSourceWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read SetpointChangeSource attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("setpointChangeSource", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("setpointChangeSource", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("setpointChangeSource", [value unsignedCharValue], 2U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadSetpointChangeAmountAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt16ValueOrNull_34() + CHIP_ERROR TestReadSetpointChangeAmountAttributeFromTheDut_34() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeSetpointChangeAmountWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read SetpointChangeAmount attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("setpointChangeAmount", "", "int16")); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadSetpointChangeSourceTimestampAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUtcValue_35() + CHIP_ERROR TestReadSetpointChangeSourceTimestampAttributeFromTheDut_35() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster + readAttributeSetpointChangeSourceTimestampWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read SetpointChangeSourceTimestamp attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("setpointChangeSourceTimestamp", "", "utc")); + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadOccupiedSetbackAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_36() + CHIP_ERROR TestReadOccupiedSetbackAttributeFromTheDut_36() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeOccupiedSetbackWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read OccupiedSetback attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("occupiedSetback", "", "uint8")); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadOccupiedSetbackMinAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_37() + CHIP_ERROR TestReadOccupiedSetbackMinAttributeFromTheDut_37() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeOccupiedSetbackMinWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read OccupiedSetbackMin attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("occupiedSetbackMin", "", "uint8")); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadOccupiedSetbackMaxAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_38() + CHIP_ERROR TestReadOccupiedSetbackMaxAttributeFromTheDut_38() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeOccupiedSetbackMaxWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read OccupiedSetbackMax attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("occupiedSetbackMax", "", "uint8")); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadUnoccupiedSetbackAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_39() + CHIP_ERROR TestReadUnoccupiedSetbackAttributeFromTheDut_39() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeUnoccupiedSetbackWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read UnoccupiedSetback attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("unoccupiedSetback", "", "uint8")); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadUnoccupiedSetbackMinAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_40() + CHIP_ERROR TestReadUnoccupiedSetbackMinAttributeFromTheDut_40() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeUnoccupiedSetbackMinWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read UnoccupiedSetbackMin attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("unoccupiedSetbackMin", "", "uint8")); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadUnoccupiedSetbackMaxAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_41() + CHIP_ERROR TestReadUnoccupiedSetbackMaxAttributeFromTheDut_41() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeUnoccupiedSetbackMaxWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read UnoccupiedSetbackMax attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("unoccupiedSetbackMax", "", "uint8")); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadEmergencyHeatDeltaAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint8ValueOrNull_42() + CHIP_ERROR TestReadEmergencyHeatDeltaAttributeFromTheDut_42() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeEmergencyHeatDeltaWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read EmergencyHeatDelta attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("emergencyHeatDelta", "", "uint8")); + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadACTypeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf0To4_43() + CHIP_ERROR TestReadACTypeAttributeFromTheDut_43() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeACTypeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ACType attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("ACType", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("ACType", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("ACType", [value unsignedCharValue], 4U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadACCapacityAttributeFromTheDutAndVerifyThatTheDutRespondsWithAUint16Value_44() + CHIP_ERROR TestReadACCapacityAttributeFromTheDut_44() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeACCapacityWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ACCapacity attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("ACCapacity", "", "uint16")); + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadACRefrigerantTypeAttributeFromTheDutAndVVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf0To3_45() + CHIP_ERROR TestReadACRefrigerantTypeAttributeFromTheDut_45() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeACRefrigerantTypeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ACRefrigerantType attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("ACRefrigerantType", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("ACRefrigerantType", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("ACRefrigerantType", [value unsignedCharValue], 3U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadACCompressorTypeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf0To3_46() + CHIP_ERROR TestReadACCompressorTypeAttributeFromTheDut_46() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeACCompressorTypeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ACCompressorType attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("ACCompressorType", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("ACCompressorType", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("ACCompressorType", [value unsignedCharValue], 3U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadACErrorCodeAttributeFromTheDutAndVerifyThatTheDutRespondsWithAMap32Value_47() + CHIP_ERROR TestReadACErrorCodeAttributeFromTheDut_47() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeACErrorCodeWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ACErrorCode attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("ACErrorCode", "", "map32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR - TestReadACLouverPositionAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBeInTheRangeOf1To5_48() + CHIP_ERROR TestReadACLouverPositionAttributeFromTheDut_48() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeACLouverPositionWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ACLouverPosition attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("ACLouverPosition", "", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("ACLouverPosition", [value unsignedCharValue], 1U)); + VerifyOrReturn(CheckConstraintMaxValue("ACLouverPosition", [value unsignedCharValue], 5U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadACCoilTemperatureAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnInt16ValueOrNull_49() + CHIP_ERROR TestReadACCoilTemperatureAttributeFromTheDut_49() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeACCoilTemperatureWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ACCoilTemperature attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("ACCoilTemperature", "", "int16")); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; } - CHIP_ERROR TestReadACCapacityFormatAttributeFromTheDutAndVerifyThatTheDutRespondsWithAnEnum8ValueTheValueHasToBe0_50() + CHIP_ERROR TestReadACCapacityFormatAttributeFromTheDut_50() { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); + MTRBaseDevice * device = GetDevice("alpha"); + MTRBaseClusterThermostat * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device + endpoint:1 + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeACCapacityformatWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read ACCapacityFormat attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("ACCapacityformat", actualValue, 0U)); + } + + VerifyOrReturn(CheckConstraintType("ACCapacityformat", "", "enum8")); + NextTest(); + }]; + + return CHIP_NO_ERROR; } }; @@ -54398,15 +53765,6 @@ class Test_TC_WNCV_2_2 : public TestCommandBridge { } err = TestReadsConfigStatusAttributeFromDutIfPaLfValueOfBit3MustBe1bElse0bIfPaTlValueOfBit4MustBe1bElse0b_1(); break; - case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Reads ConfigStatus attribute from DUT, value of bit 0 must be 1b operational\n"); - if (ShouldSkip("PICS_USER_PROMPT && WNCV.S.A0007 && WNCV.S.F01 && WNCV.S.F04")) { - NextTest(); - return; - } - err = TestReadsConfigStatusAttributeFromDutValueOfBit0MustBe1bOperational_2(); - break; } if (CHIP_NO_ERROR != err) { @@ -54424,9 +53782,6 @@ class Test_TC_WNCV_2_2 : public TestCommandBridge { case 1: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; } // Go on to the next test. @@ -54440,7 +53795,7 @@ class Test_TC_WNCV_2_2 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 3; + const uint16_t mTestCount = 2; chip::Optional mNodeId; chip::Optional mCluster; @@ -54462,15 +53817,6 @@ class Test_TC_WNCV_2_2 : public TestCommandBridge { value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt("alpha", value); } - - CHIP_ERROR TestReadsConfigStatusAttributeFromDutValueOfBit0MustBe1bOperational_2() - { - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt("alpha", value); - } }; class Test_TC_WNCV_2_3 : public TestCommandBridge { @@ -108470,7 +107816,6 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), - make_unique(), make_unique(), make_unique(), make_unique(),