#include "config-validator.hpp" #include "grouplayout.hpp" #include "ledlayout.hpp" #include using namespace phosphor::led; static void assertValidationException(const GroupMap& ledMap, error::ConfigValidationError err) { try { validateConfigV1(ledMap); ASSERT_FALSE(true); } catch (ConfigValidationException& e) { ASSERT_EQ(e.reason, err); } } TEST(validateConfig, testGoodPathLedPriority) { ActionSet group1ActionSet = { {"led1", Layout::Action::On, 0, 0, Layout::Action::On}, {"led2", Layout::Action::On, 0, 0, Layout::Action::Blink}, }; Layout::GroupLayout group1 = {0, group1ActionSet}; GroupMap ledMap = {{"group1", group1}}; validateConfigV1(ledMap); } TEST(validateConfig, testGoodPathGroupPriority) { ActionSet group1ActionSet = { {"led1", Layout::Action::On, 0, 0, std::nullopt}, {"led2", Layout::Action::On, 0, 0, std::nullopt}, }; ActionSet group2ActionSet = { {"led1", Layout::Action::On, 0, 0, std::nullopt}, {"led2", Layout::Action::On, 0, 0, std::nullopt}, }; Layout::GroupLayout group1 = {1, group1ActionSet}; Layout::GroupLayout group2 = {2, group1ActionSet}; GroupMap ledMap = { {"group1", group1}, {"group2", group2}, }; validateConfigV1(ledMap); } TEST(validateConfig, testLedPriorityMismatch) { ActionSet group1ActionSet = { {"led1", Layout::Action::On, 0, 0, Layout::Action::On}, }; ActionSet group2ActionSet = { {"led1", Layout::Action::On, 0, 0, Layout::Action::Off}, }; Layout::GroupLayout group1 = {0, group1ActionSet}; Layout::GroupLayout group2 = {0, group2ActionSet}; GroupMap ledMap = { {"group1", group1}, {"group2", group2}, }; assertValidationException(ledMap, error::LedPriorityMismatch); } TEST(validateConfig, testMissingLedPriority) { ActionSet group1ActionSet = { {"led1", Layout::Action::On, 0, 0, Layout::Action::On}, }; ActionSet group2ActionSet = { {"led1", Layout::Action::On, 0, 0, std::nullopt}, }; Layout::GroupLayout group1 = {0, group1ActionSet}; Layout::GroupLayout group2 = {0, group2ActionSet}; GroupMap ledMap = { {"group1", group1}, {"group2", group2}, }; assertValidationException(ledMap, error::MissingLedPriority); } TEST(validateConfig, testMixedLedAndGroupPriority) { ActionSet group1ActionSet = { {"led1", Layout::Action::On, 0, 0, Layout::Action::On}, }; ActionSet group2ActionSet = { {"led1", Layout::Action::On, 0, 0, Layout::Action::On}, }; Layout::GroupLayout group1 = {0, group1ActionSet}; Layout::GroupLayout group2 = {1, group2ActionSet}; GroupMap ledMap = { {"group1", group1}, {"group2", group2}, }; assertValidationException(ledMap, error::MixedLedAndGroupPriority); } TEST(validateConfig, testInvalidGroupPriority) { ActionSet group1ActionSet = { {"led1", Layout::Action::On, 0, 0, std::nullopt}, }; ActionSet group2ActionSet = { {"led1", Layout::Action::On, 0, 0, std::nullopt}, }; Layout::GroupLayout group1 = {0, group1ActionSet}; Layout::GroupLayout group2 = {1, group2ActionSet}; GroupMap ledMap = { {"group1", group1}, {"group2", group2}, }; assertValidationException(ledMap, error::InvalidGroupPriority); } TEST(validateConfig, testDuplicateGroupPriority) { ActionSet group1ActionSet = { {"led1", Layout::Action::On, 0, 0, std::nullopt}, }; ActionSet group2ActionSet = { {"led1", Layout::Action::On, 0, 0, std::nullopt}, }; Layout::GroupLayout group1 = {1, group1ActionSet}; Layout::GroupLayout group2 = {1, group2ActionSet}; GroupMap ledMap = { {"group1", group1}, {"group2", group2}, }; assertValidationException(ledMap, error::DuplicateGroupPriority); }