Bladeren bron

Add testResetRestoreReloadSettings()

Issue #450
Julien Finet 11 jaren geleden
bovenliggende
commit
7701c1004e
2 gewijzigde bestanden met toevoegingen van 150 en 0 verwijderingen
  1. 149 0
      Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp
  2. 1 0
      Libs/Widgets/ctkSettingsPanel.h

+ 149 - 0
Libs/Widgets/Testing/Cpp/ctkSettingsPanelTest.cpp

@@ -44,6 +44,9 @@ private slots:
   void testChangeProperty_data();
 
   void testEmptyQStringList();
+
+  void testResetRestoreReloadSettings();
+  void testResetRestoreReloadSettings_data();
 };
 
 //-----------------------------------------------------------------------------
@@ -235,6 +238,152 @@ void ctkSettingsPanelTester::testEmptyQStringList()
   settingsPanel.setSettings(&settings2);
 }
 
+//-----------------------------------------------------------------------------
+void ctkSettingsPanelTester::testResetRestoreReloadSettings()
+{
+  QSettings settings(QSettings::IniFormat, QSettings::UserScope, "Common ToolKit", "CTK");
+  // Clear settings
+  settings.clear();
+  settings.sync();
+
+  int settingsValue = 1;
+  int initValue = 2;
+  int newValue = 3;
+
+  QFETCH(bool, setSettingsValue);
+  if (setSettingsValue)
+    {
+    settings.setValue("key 1", settingsValue);
+    }
+
+  QSpinBox spinBox;
+  spinBox.setValue(initValue);
+
+  ctkSettingsPanel settingsPanel;
+  settingsPanel.setSettings(&settings);
+  settingsPanel.registerProperty("key 1", &spinBox, "value",
+                                 SIGNAL(valueChanged(int)));
+
+  QFETCH(bool, setSpinBoxValue);
+  if (setSpinBoxValue)
+    {
+    spinBox.setValue(newValue);
+    }
+
+  QFETCH(bool, applySettings);
+  if (applySettings)
+    {
+    settingsPanel.applySettings();
+    }
+
+  QFETCH(bool, resetSettings);
+  if (resetSettings)
+    {
+    settingsPanel.resetSettings();
+    }
+
+  QFETCH(bool, restoreDefaultSettings);
+  if (restoreDefaultSettings)
+    {
+    settingsPanel.restoreDefaultSettings();
+    }
+
+  QFETCH(bool, reloadSettings);
+  if (reloadSettings)
+    {
+    settingsPanel.reloadSettings();
+    }
+
+  QFETCH(int, finalValue);
+  QCOMPARE(settings.value("key 1").toInt(), finalValue);
+}
+
+//-----------------------------------------------------------------------------
+void ctkSettingsPanelTester::testResetRestoreReloadSettings_data()
+{
+  QTest::addColumn<bool>("setSettingsValue");
+  QTest::addColumn<bool>("setSpinBoxValue");
+  QTest::addColumn<bool>("applySettings");
+  QTest::addColumn<bool>("resetSettings");
+  QTest::addColumn<bool>("restoreDefaultSettings");
+  QTest::addColumn<bool>("reloadSettings");
+  QTest::addColumn<int>("finalValue");
+
+  int settingsValue = 1;
+  int initValue = 2;
+  int newValue = 3;
+
+  //   settings spinbox apply    reset   restore  reload  final
+  QTest::newRow("set value")
+    << false << true << false << false << false << false << newValue;
+  QTest::newRow("reload")
+    << false << true << false << false << false << true << newValue;
+  QTest::newRow("restore")
+    << false << true << false << false << true << false << initValue;
+  QTest::newRow("restore and reload")
+    << false << true << false << false << true << true << initValue;
+  QTest::newRow("reset")
+    << false << true << false << true << false << false << initValue;
+  QTest::newRow("reset and reload")
+    << false << true << false << true << false << true << initValue;
+  QTest::newRow("reset and restore")
+    << false << true << false << true << true << false << initValue;
+  QTest::newRow("reset, restore and reload")
+    << false << true << false << true << true << true << initValue;
+  QTest::newRow("apply")
+    << false << true << true << false << false << false << newValue;
+  QTest::newRow("apply and reload")
+    << false << true << true << false << false << true << newValue;
+  QTest::newRow("apply and restore")
+    << false << true << true << false << true << false << initValue;
+  QTest::newRow("apply, restore and reload")
+    << false << true << true << false << true << true << initValue;
+  QTest::newRow("apply and reset")
+    << false << true << true << true << false << false << newValue;
+  QTest::newRow("apply, reset and reload")
+    << false << true << true << true << false << true << newValue;
+  QTest::newRow("apply, reset and restore")
+    << false << true << true << true << true << false << initValue;
+  QTest::newRow("apply, reset, restore and reload")
+    << false << true << true << true << true << true << initValue;
+
+  // with existing settings
+  //   settings spinbox apply    reset   restore  reload  final
+  QTest::newRow("set value with settings")
+    << true << true << false << false << false << false << newValue;
+  QTest::newRow("reload with settings")
+    << true << true << false << false << false << true << newValue;
+  QTest::newRow("restore with settings")
+    << true << true << false << false << true << false << initValue;
+  QTest::newRow("restore and reload with settings")
+    << true << true << false << false << true << true << initValue;
+  QTest::newRow("reset with settings")
+    << true << true << false << true << false << false << settingsValue;
+  QTest::newRow("reset and reload with settings")
+    << true << true << false << true << false << true << settingsValue;
+  QTest::newRow("reset and restore with settings")
+    << true << true << false << true << true << false << initValue;
+  QTest::newRow("reset, restore and reload with settings")
+    << true << true << false << true << true << true << initValue;
+  QTest::newRow("apply with settings")
+    << true << true << true << false << false << false << newValue;
+  QTest::newRow("apply and reload with settings")
+    << true << true << true << false << false << true << newValue;
+  QTest::newRow("apply and restore with settings")
+    << true << true << true << false << true << false << initValue;
+  QTest::newRow("apply, restore and reload with settings")
+    << true << true << true << false << true << true << initValue;
+  QTest::newRow("apply and reset with settings")
+    << true << true << true << true << false << false << newValue;
+  QTest::newRow("apply, reset and reload with settings")
+    << true << true << true << true << false << true << newValue;
+  QTest::newRow("apply, reset and restore with settings")
+    << true << true << true << true << true << false << initValue;
+  QTest::newRow("apply, reset, restore and reload with settings")
+    << true << true << true << true << true << true << initValue;
+
+}
+
 // ----------------------------------------------------------------------------
 CTK_TEST_MAIN(ctkSettingsPanelTest)
 #include "moc_ctkSettingsPanelTest.cpp"

+ 1 - 0
Libs/Widgets/ctkSettingsPanel.h

@@ -115,6 +115,7 @@ public Q_SLOTS:
   ///
   /// This reloads all properties from their respective QSettings instance(s).
   /// The previous values are discarded (as in resetSettings()).
+  /// \sa resetSettings(), restoreDefaultSettings()
   virtual void reloadSettings();
 
 Q_SIGNALS: