From 2a62d3dec5939443ba993828831c398e5621fb28 Mon Sep 17 00:00:00 2001 From: Rob Bultman Date: Fri, 26 Apr 2024 11:39:28 -0400 Subject: [PATCH] Merged test cases --- src/python_testing/TC_MWOCTRL_2_2.py | 87 ++++++++++++++----- src/python_testing/TC_MWOCTRL_2_3.py | 123 --------------------------- 2 files changed, 67 insertions(+), 143 deletions(-) delete mode 100644 src/python_testing/TC_MWOCTRL_2_3.py diff --git a/src/python_testing/TC_MWOCTRL_2_2.py b/src/python_testing/TC_MWOCTRL_2_2.py index a5484c586067c6..a8cac2b03d8b53 100644 --- a/src/python_testing/TC_MWOCTRL_2_2.py +++ b/src/python_testing/TC_MWOCTRL_2_2.py @@ -39,16 +39,25 @@ def desc_TC_MWOCTRL_2_2(self) -> str: def steps_TC_MWOCTRL_2_2(self) -> list[TestStep]: steps = [ TestStep(1, "Commissioning, already done", is_commissioning=True), - TestStep(2, "Read the PowerSetting attribute"), - TestStep(3, "Send the SetCookingParameters command"), - TestStep(4, "Read and verify the PowerSetting attribute"), - TestStep(5, "Cause constraint error response"), + TestStep(2, "Set MinPowerValue variable"), + TestStep(3, "Read the MinPower attribute"), + TestStep(4, "Set the MaxPowerValue variable"), + TestStep(5, "Read the MaxPower attribute"), + TestStep(6, "Set the PowerStepValue variable"), + TestStep(7, "Read the PowerStep attribute"), + TestStep(8, "Read the PowerSetting attribute"), + TestStep(9, "Send the SetCookingParameters command"), + TestStep(10, "Read and verify the PowerSetting attribute"), + TestStep(11, "Set the PowerSetting attribute to the minimum value"), + TestStep(12, "Set the PowerSetting attribute to the maximum value"), + TestStep(13, "Cause constraint error response"), ] return steps def pics_TC_MWOCTRL_2_2(self) -> list[str]: pics = [ "MWOCTRL.S", + "MWOCTRL.S.F00", ] return pics @@ -63,40 +72,78 @@ async def test_TC_MWOCTRL_2_2(self): features = Clusters.MicrowaveOvenControl.Bitmaps.Feature commands = Clusters.Objects.MicrowaveOvenControl.Commands - feature_map = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.FeatureMap) - - only_pwrnum_supported = feature_map == features.kPowerAsNumber - - if not only_pwrnum_supported: - logging.info("More than PWRNUM is supported so skipping remaining test steps") + if not feature_map & features.kPowerAsNumber: + logging.info("PWRNUM is not supported so skipping remaining test steps") self.skip_all_remaining_steps(2) return - logging.info("Only the PWRNUM feature is supported so continuing with remaining test steps") + logging.info("The PWRNUM feature is supported so continuing with remaining test steps") + self.step(2) - powerValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.PowerSetting) - asserts.assert_greater_equal(powerValue, 10, "PowerSetting is less than 10") - asserts.assert_less_equal(powerValue, 100, "PowerSetting is greater than 100") - asserts.assert_true(powerValue % 10 == 0, "PowerSetting is not a multiple of 10") + minPowerValue = 10 self.step(3) - newPowerValue = (powerValue+10) % 100 + if self.pics_guard(self.check_pics("MWOCTRL.S.F02")): + minPowerValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.MinPower) + logging.info("MinPower is %s" % minPowerValue) + asserts.assert_true(minPowerValue >= 1, "MinPower is less than 1") + + self.step(4) + maxPowerValue = 100 + + self.step(5) + if self.pics_guard(self.check_pics("MWOCTRL.S.F02")): + maxPowerValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.MaxPower) + logging.info("MaxPower is %s" % maxPowerValue) + asserts.assert_true(maxPowerValue >= minPowerValue, "MaxPower is less than MinPower") + asserts.assert_true(maxPowerValue <= 100, "MaxPower is greater than 100") + + self.step(6) + powerStepValue = 10 + + self.step(7) + if self.pics_guard(self.check_pics("MWOCTRL.S.F02")): + powerStepValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.PowerStep) + logging.info("PowerStep is %s" % powerStepValue) + asserts.assert_true(powerStepValue >= 1, "PowerStep is less than 1") + asserts.assert_true(powerStepValue <= maxPowerValue, "PowerStep is greater than MaxPower") + + self.step(8) + powerValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.PowerSetting) + asserts.assert_greater_equal(powerValue, minPowerValue, "PowerSetting is less than the minimum.") + asserts.assert_less_equal(powerValue, maxPowerValue, "PowerSetting is greater than the maxium") + asserts.assert_true((powerValue-minPowerValue) % powerStepValue == 0, "PowerSetting is not a multiple of power step") + + self.step(9) + newPowerValue = (powerValue-minPowerValue) % (maxPowerValue-minPowerValue)+powerStepValue+minPowerValue try: await self.send_single_cmd(cmd=commands.SetCookingParameters(powerSetting=newPowerValue), endpoint=endpoint) except InteractionModelError as e: asserts.assert_equal(e.status, Status.Success, "Unexpected error returned") - self.step(4) + self.step(10) powerValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.PowerSetting) asserts.assert_true(powerValue == newPowerValue, "PowerSetting was not correctly set") - self.step(5) - newPowerValue = 125 + self.step(11) + try: + await self.send_single_cmd(cmd=commands.SetCookingParameters(powerSetting=minPowerValue), endpoint=endpoint) + except InteractionModelError as e: + asserts.assert_equal(e.status, Status.Success, "Unable to set power value to minimum") + + self.step(12) + try: + await self.send_single_cmd(cmd=commands.SetCookingParameters(powerSetting=maxPowerValue), endpoint=endpoint) + except InteractionModelError as e: + asserts.assert_equal(e.status, Status.Success, "Unable to set power value to maximum") + + self.step(13) + newPowerValue = maxPowerValue+1 try: await self.send_single_cmd(cmd=commands.SetCookingParameters(powerSetting=newPowerValue), endpoint=endpoint) asserts.assert_fail("Expected an exception but received none.") except InteractionModelError as e: - asserts.assert_equal(e.status, Status.ConstraintError, "Expected ConstraintError but received a different error.") + asserts.assert_equal(e.status, Status.ConstraintError, "Expected ConstraintError but received a different response.") if __name__ == "__main__": diff --git a/src/python_testing/TC_MWOCTRL_2_3.py b/src/python_testing/TC_MWOCTRL_2_3.py deleted file mode 100644 index 20a1e730ab620a..00000000000000 --- a/src/python_testing/TC_MWOCTRL_2_3.py +++ /dev/null @@ -1,123 +0,0 @@ -# -# Copyright (c) 2024 Project CHIP Authors -# All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -import logging - -import chip.clusters as Clusters -from chip.interaction_model import InteractionModelError, Status -from matter_testing_support import MatterBaseTest, TestStep, async_test_body, default_matter_test_main -from mobly import asserts - -# This test requires several additional command line arguments -# run with -# --endpoint endpoint - - -class TC_MWOCTRL_2_3(MatterBaseTest): - - async def read_mwoctrl_attribute_expect_success(self, endpoint, attribute): - cluster = Clusters.Objects.MicrowaveOvenControl - return await self.read_single_attribute_check_success(endpoint=endpoint, cluster=cluster, attribute=attribute) - - def desc_TC_MWOCTRL_2_3(self) -> str: - return "[TC-MWOCTRL-2.3] PWRNUM functionality with DUT as Server" - - def steps_TC_MWOCTRL_2_3(self) -> list[TestStep]: - steps = [ - TestStep(1, "Commissioning, already done", is_commissioning=True), - TestStep(2, "Read the MinPower attribute"), - TestStep(3, "Read the MaxPower attribute"), - TestStep(4, "Read the PowerStep attribute"), - TestStep(5, "Read the PowerSetting attribute"), - TestStep(6, "Send the SetCookingParameters command"), - TestStep(7, "Read and verify the PowerSetting attribute"), - TestStep(8, "Cause constraint error response"), - ] - return steps - - def pics_TC_MWOCTRL_2_3(self) -> list[str]: - pics = [ - "MWOCTRL.S", - ] - return pics - - @async_test_body - async def test_TC_MWOCTRL_2_3(self): - - endpoint = self.user_params.get("endpoint", 1) - - self.step(1) - attributes = Clusters.MicrowaveOvenControl.Attributes - feature_map = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.FeatureMap) - features = Clusters.MicrowaveOvenControl.Bitmaps.Feature - commands = Clusters.Objects.MicrowaveOvenControl.Commands - - feature_map = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.FeatureMap) - - supports_pwrnum_and_limits = feature_map & (features.kPowerAsNumber or features.kPowerNumberLimits) - - if not supports_pwrnum_and_limits: - logging.info("Device does not support PWRNUM and PWRLMTS so skipping the rest of the tests.") - self.skip_all_remaining_steps(2) - return - - self.step(2) - minPowerValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.MinPower) - logging.info("MinPower is %s" % minPowerValue) - asserts.assert_true(minPowerValue >= 1, "MinPower is less than 1") - - self.step(3) - maxPowerValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.MaxPower) - logging.info("MaxPower is %s" % maxPowerValue) - asserts.assert_true(maxPowerValue >= 1, "MaxPower is less than MinPower") - asserts.assert_true(maxPowerValue <= 100, "MaxPower is greater than 100") - - self.step(4) - powerStepValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.PowerStep) - logging.info("PowerStep is %s" % powerStepValue) - asserts.assert_true(powerStepValue >= 1, "PowerStep is less than 1") - asserts.assert_true(powerStepValue <= maxPowerValue, "PowerStep is greater than MaxPower") - - self.step(5) - powerValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.PowerSetting) - logging.info("PowerSetting is %s" % powerValue) - asserts.assert_true(powerValue >= minPowerValue, "PowerSetting is less than MinPower") - asserts.assert_true(powerValue <= maxPowerValue, "PowerSetting is greater than MaxPower") - asserts.assert_true((powerValue-minPowerValue) % powerStepValue == 0, "PowerSetting is not a multiple of 10") - - self.step(6) - newPowerValue = (powerValue-minPowerValue) % (maxPowerValue-minPowerValue)+powerStepValue+minPowerValue - try: - await self.send_single_cmd(cmd=commands.SetCookingParameters(powerSetting=newPowerValue), endpoint=endpoint) - except InteractionModelError as e: - asserts.assert_equal(e.status, Status.Success, "Unexpected error returned") - - self.step(7) - powerValue = await self.read_mwoctrl_attribute_expect_success(endpoint=endpoint, attribute=attributes.PowerSetting) - asserts.assert_true(powerValue == newPowerValue, "PowerSetting was not correctly set") - - self.step(8) - newPowerValue = maxPowerValue+1 - try: - await self.send_single_cmd(cmd=commands.SetCookingParameters(powerSetting=newPowerValue), endpoint=endpoint) - asserts.assert_fail("Expected an exception but received none.") - except InteractionModelError as e: - asserts.assert_equal(e.status, Status.ConstraintError, "Expected ConstraintError but received a different response.") - - -if __name__ == "__main__": - default_matter_test_main()