Settings now shows Proclamations, Audio Options, System Settings, System Logs, and Back. The new SystemSettingsPage groups Email Address, License Key, WiFi Setup, Time Zone Setup, and Date Format, driven by the pure settings::systemSettingEntries() list so future entries need one row, not new menu plumbing. Adds unit tests for the entry list.
51 lines
1.8 KiB
C++
51 lines
1.8 KiB
C++
#include "settings_menu.h"
|
|
#include <gtest/gtest.h>
|
|
#include <set>
|
|
#include <string>
|
|
|
|
namespace settings = radiantwave::settings;
|
|
|
|
TEST(SystemSettingsMenuTest, ListsTheSystemSettingsInOrder) {
|
|
const auto entries = settings::systemSettingEntries();
|
|
ASSERT_EQ(entries.size(), 5u);
|
|
EXPECT_EQ(entries[0].label, "Email Address");
|
|
EXPECT_EQ(entries[0].id, settings::SystemSettingId::EmailAddress);
|
|
EXPECT_EQ(entries[1].label, "License Key");
|
|
EXPECT_EQ(entries[1].id, settings::SystemSettingId::LicenseKey);
|
|
EXPECT_EQ(entries[2].label, "WiFi Setup");
|
|
EXPECT_EQ(entries[2].id, settings::SystemSettingId::WiFiSetup);
|
|
EXPECT_EQ(entries[3].label, "Time Zone Setup");
|
|
EXPECT_EQ(entries[3].id, settings::SystemSettingId::Timezone);
|
|
EXPECT_EQ(entries[4].label, "Date Format");
|
|
EXPECT_EQ(entries[4].id, settings::SystemSettingId::DateFormat);
|
|
}
|
|
|
|
TEST(SystemSettingsMenuTest, LabelsAreNonEmptyAndUnique) {
|
|
const auto entries = settings::systemSettingEntries();
|
|
std::set<std::string> labels;
|
|
std::set<int> ids;
|
|
for (const auto& entry : entries) {
|
|
EXPECT_FALSE(entry.label.empty());
|
|
labels.insert(entry.label);
|
|
ids.insert(static_cast<int>(entry.id));
|
|
}
|
|
EXPECT_EQ(labels.size(), entries.size());
|
|
EXPECT_EQ(ids.size(), entries.size());
|
|
}
|
|
|
|
TEST(SystemSettingsMenuTest, EveryEntryMapsToAKnownPage) {
|
|
for (const auto& entry : settings::systemSettingEntries()) {
|
|
switch (entry.id) {
|
|
case settings::SystemSettingId::EmailAddress:
|
|
case settings::SystemSettingId::LicenseKey:
|
|
case settings::SystemSettingId::WiFiSetup:
|
|
case settings::SystemSettingId::Timezone:
|
|
case settings::SystemSettingId::DateFormat:
|
|
SUCCEED();
|
|
break;
|
|
default:
|
|
FAIL() << "Unhandled SystemSettingId for label " << entry.label;
|
|
}
|
|
}
|
|
}
|