// SPDX-License-Identifier: GPL-2.0 #include "testqPrefDisplay.h" #include "core/pref.h" #include "core/qthelper.h" #include "core/settings/qPref.h" #include #include void TestQPrefDisplay::initTestCase() { QCoreApplication::setOrganizationName("Subsurface"); QCoreApplication::setOrganizationDomain("subsurface.hohndel.org"); QCoreApplication::setApplicationName("SubsurfaceTestQPrefDisplay"); } void TestQPrefDisplay::test_struct_get() { // Test struct pref -> get func. auto display = qPrefDisplay::instance(); prefs.display_invalid_dives = true; prefs.divelist_font = copy_qstring("comic"); prefs.font_size = 12.0; prefs.show_developer = false; prefs.theme = copy_qstring("myTheme"); QCOMPARE(display->display_invalid_dives(), prefs.display_invalid_dives); QCOMPARE(display->divelist_font(), QString(prefs.divelist_font)); QCOMPARE(display->font_size(), prefs.font_size); QCOMPARE(display->show_developer(), prefs.show_developer); QCOMPARE(display->theme(), QString(prefs.theme)); } void TestQPrefDisplay::test_set_struct() { // Test set func -> struct pref auto display = qPrefDisplay::instance(); display->set_display_invalid_dives(true); display->set_divelist_font("doNotCareAtAll"); display->set_font_size(12.0); display->set_show_developer(false); display->set_theme("myTheme"); QCOMPARE(prefs.display_invalid_dives, true); QCOMPARE(prefs.divelist_font, "doNotCareAtAll"); QCOMPARE(prefs.font_size, 12.0); QCOMPARE(prefs.show_developer, false); QCOMPARE(prefs.theme, "myTheme"); } void TestQPrefDisplay::test_set_load_struct() { // test set func -> load -> struct pref auto display = qPrefDisplay::instance(); display->set_display_invalid_dives(false); display->set_divelist_font("doNotCareString"); display->set_font_size(15.0); display->set_show_developer(true); display->set_theme("myTheme2"); prefs.display_invalid_dives = true; prefs.divelist_font = copy_qstring("doNotCareAtAll"); prefs.font_size = 12.0; prefs.show_developer = false; prefs.theme = copy_qstring("myTheme"); display->load(); QCOMPARE(prefs.display_invalid_dives, false); QCOMPARE(prefs.divelist_font, "doNotCareString"); QCOMPARE(prefs.font_size, 15.0); QCOMPARE(prefs.show_developer, true); QCOMPARE(prefs.theme, "myTheme2"); } void TestQPrefDisplay::test_struct_disk() { // test struct prefs -> disk auto display = qPrefDisplay::instance(); prefs.display_invalid_dives = true; prefs.divelist_font = copy_qstring("doNotCareAtAll"); prefs.font_size = 17.0; prefs.show_developer = false; prefs.theme = copy_qstring("myTheme3"); display->sync(); prefs.display_invalid_dives = false; prefs.divelist_font = copy_qstring("noString"); prefs.font_size = 11.0; prefs.show_developer = true; prefs.theme = copy_qstring("myTheme"); display->load(); QCOMPARE(prefs.display_invalid_dives, true); QCOMPARE(prefs.divelist_font, "doNotCareAtAll"); QCOMPARE(prefs.font_size, 17.0); QCOMPARE(prefs.show_developer, false); QCOMPARE(prefs.theme, "myTheme3"); } void TestQPrefDisplay::test_multiple() { // test multiple instances have the same information auto display_direct = qPrefDisplay::instance(); prefs.divelist_font = copy_qstring("comic"); auto display = qPrefDisplay::instance(); prefs.font_size = 15.0; QCOMPARE(display->divelist_font(), display_direct->divelist_font()); QCOMPARE(display->divelist_font(), QString("comic")); QCOMPARE(display->font_size(), display_direct->font_size()); QCOMPARE(display->font_size(), 15.0); } QTEST_MAIN(TestQPrefDisplay)