mirror of
https://github.com/esphome/esphome.git
synced 2026-09-11 15:27:33 +00:00
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
63 lines
2.0 KiB
C++
63 lines
2.0 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include "esphome/components/atm90e32/atm90e32.h"
|
|
|
|
namespace esphome::atm90e32::testing {
|
|
|
|
TEST(ATM90E32OffsetRegisterVerification, AcceptsExactSignedReadback) {
|
|
EXPECT_TRUE(offset_register_value_matches(0x007B, 123));
|
|
EXPECT_TRUE(offset_register_value_matches(0xFF85, -123));
|
|
}
|
|
|
|
TEST(ATM90E32OffsetRegisterVerification, RejectsMismatchedReadback) {
|
|
EXPECT_FALSE(offset_register_value_matches(0x007C, 123));
|
|
EXPECT_FALSE(offset_register_value_matches(0xFF84, -123));
|
|
}
|
|
|
|
TEST(ATM90E32OffsetRestoreState, ReportsVerifiedStoredValuesAsRestored) {
|
|
const auto state = resolve_offset_restore_state(true, true, false);
|
|
|
|
EXPECT_TRUE(state.restored);
|
|
EXPECT_TRUE(state.values_verified);
|
|
}
|
|
|
|
TEST(ATM90E32OffsetRestoreState, ReportsVerifiedConfigFallbackAsNotRestored) {
|
|
const auto state = resolve_offset_restore_state(true, false, true);
|
|
|
|
EXPECT_FALSE(state.restored);
|
|
EXPECT_TRUE(state.values_verified);
|
|
}
|
|
|
|
TEST(ATM90E32OffsetRestoreState, ReportsFailedConfigFallbackAsUnverified) {
|
|
const auto state = resolve_offset_restore_state(true, false, false);
|
|
|
|
EXPECT_FALSE(state.restored);
|
|
EXPECT_FALSE(state.values_verified);
|
|
}
|
|
|
|
TEST(ATM90E32OffsetRestoreState, ReportsConfigWithoutStoredValuesAsNotRestored) {
|
|
const auto state = resolve_offset_restore_state(false, true, false);
|
|
|
|
EXPECT_FALSE(state.restored);
|
|
EXPECT_TRUE(state.values_verified);
|
|
}
|
|
|
|
TEST(ATM90E32OffsetPersistence, RollsBackStoredValuesOrZeroSentinel) {
|
|
const OffsetCalibration previous[3]{{1, -1}, {2, -2}, {3, -3}};
|
|
OffsetCalibration rollback[3]{};
|
|
|
|
prepare_offset_rollback(previous, true, rollback);
|
|
for (uint8_t phase = 0; phase < 3; phase++) {
|
|
EXPECT_EQ(rollback[phase].first_offset, previous[phase].first_offset);
|
|
EXPECT_EQ(rollback[phase].second_offset, previous[phase].second_offset);
|
|
}
|
|
|
|
prepare_offset_rollback(previous, false, rollback);
|
|
for (const auto &phase : rollback) {
|
|
EXPECT_EQ(phase.first_offset, 0);
|
|
EXPECT_EQ(phase.second_offset, 0);
|
|
}
|
|
}
|
|
|
|
} // namespace esphome::atm90e32::testing
|