[mitsubishi] Use the climate_ir traits() for supported modes (#19485)

This commit is contained in:
Leonardo Rivera
2026-09-23 17:18:41 +01:00
committed by GitHub
parent b36c6bd7ca
commit 35607e99a7
4 changed files with 84 additions and 46 deletions
+6
View File
@@ -0,0 +1,6 @@
from tests.testing_helpers import ComponentManifestOverride
def override_manifest(manifest: ComponentManifestOverride) -> None:
# AUTO_LOAD sits on the climate platform, which the unit test build does not load.
manifest.dependencies = manifest.dependencies + ["climate_ir", "climate"]
@@ -0,0 +1,65 @@
#include <gtest/gtest.h>
#include "esphome/components/mitsubishi/mitsubishi.h"
namespace esphome::mitsubishi::testing {
TEST(MitsubishiClimateTest, HeatCoolOverrideAdvertisedWithoutHeat) {
MitsubishiClimate climate;
climate.set_supports_heat(false);
climate.set_supports_cool(true);
climate.set_supports_heat_cool(true);
auto traits = climate.get_traits();
EXPECT_TRUE(traits.supports_mode(climate::CLIMATE_MODE_HEAT_COOL));
EXPECT_FALSE(traits.supports_mode(climate::CLIMATE_MODE_HEAT));
}
TEST(MitsubishiClimateTest, HeatCoolOverrideHiddenWithHeatAndCool) {
MitsubishiClimate climate;
climate.set_supports_heat(true);
climate.set_supports_cool(true);
climate.set_supports_heat_cool(false);
auto traits = climate.get_traits();
EXPECT_FALSE(traits.supports_mode(climate::CLIMATE_MODE_HEAT_COOL));
EXPECT_TRUE(traits.supports_mode(climate::CLIMATE_MODE_HEAT));
EXPECT_TRUE(traits.supports_mode(climate::CLIMATE_MODE_COOL));
}
TEST(MitsubishiClimateTest, FanModesFor3Levels) {
MitsubishiClimate climate;
climate.set_fan_mode(MITSUBISHI_FAN_3L);
auto traits = climate.get_traits();
EXPECT_TRUE(traits.supports_fan_mode(climate::CLIMATE_FAN_AUTO));
EXPECT_TRUE(traits.supports_fan_mode(climate::CLIMATE_FAN_LOW));
EXPECT_TRUE(traits.supports_fan_mode(climate::CLIMATE_FAN_MEDIUM));
EXPECT_TRUE(traits.supports_fan_mode(climate::CLIMATE_FAN_HIGH));
EXPECT_FALSE(traits.supports_fan_mode(climate::CLIMATE_FAN_MIDDLE));
EXPECT_FALSE(traits.supports_fan_mode(climate::CLIMATE_FAN_QUIET));
}
TEST(MitsubishiClimateTest, FanModesFor4Levels) {
MitsubishiClimate climate;
climate.set_fan_mode(MITSUBISHI_FAN_4L);
auto traits = climate.get_traits();
EXPECT_TRUE(traits.supports_fan_mode(climate::CLIMATE_FAN_MIDDLE));
EXPECT_FALSE(traits.supports_fan_mode(climate::CLIMATE_FAN_QUIET));
}
TEST(MitsubishiClimateTest, FanModesForQuietAnd4Levels) {
MitsubishiClimate climate;
climate.set_fan_mode(MITSUBISHI_FAN_Q4L);
auto traits = climate.get_traits();
EXPECT_TRUE(traits.supports_fan_mode(climate::CLIMATE_FAN_MIDDLE));
EXPECT_TRUE(traits.supports_fan_mode(climate::CLIMATE_FAN_QUIET));
}
TEST(MitsubishiClimateTest, FanModesFollowTheLastSetFanMode) {
MitsubishiClimate climate;
climate.set_fan_mode(MITSUBISHI_FAN_Q4L);
climate.set_fan_mode(MITSUBISHI_FAN_3L);
auto traits = climate.get_traits();
EXPECT_FALSE(traits.supports_fan_mode(climate::CLIMATE_FAN_MIDDLE));
EXPECT_FALSE(traits.supports_fan_mode(climate::CLIMATE_FAN_QUIET));
EXPECT_TRUE(traits.supports_fan_mode(climate::CLIMATE_FAN_HIGH));
}
} // namespace esphome::mitsubishi::testing