Skip to content

Commit

Permalink
Fixed min negative value for QgsSettingsEntryDouble
Browse files Browse the repository at this point in the history
  • Loading branch information
domi4484 committed Apr 8, 2021
1 parent 3c5f9b1 commit be04888
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/core/settings/qgssettingsentry.cpp
Expand Up @@ -425,7 +425,7 @@ QgsSettingsEntryDouble::QgsSettingsEntryDouble( const QString &key, const QStrin
pluginName,
defaultValue,
description )
, mMinValue( std::numeric_limits<double>::min() )
, mMinValue( std::numeric_limits<double>::lowest() )
, mMaxValue( std::numeric_limits<double>::max() )
, mDisplayHintDecimals( 1 )
{
Expand Down
2 changes: 1 addition & 1 deletion src/core/settings/qgssettingsentry.h
Expand Up @@ -581,7 +581,7 @@ class CORE_EXPORT QgsSettingsEntryDouble : public QgsSettingsEntryBase
QgsSettings::Section section,
double defaultValue = 0.0,
const QString &description = QString(),
double minValue = std::numeric_limits<double>::min(),
double minValue = std::numeric_limits<double>::lowest(),
double maxValue = std::numeric_limits<double>::max(),
int displayDecimals = 1 );

Expand Down
57 changes: 57 additions & 0 deletions tests/src/core/testqgssettingsentry.cpp
Expand Up @@ -31,10 +31,67 @@ class TestQgsSettingsEntry : public QObject
Q_OBJECT

private slots:
void settingsKey();
void enumValue();
void flagValue();
};

void TestQgsSettingsEntry::settingsKey()
{
QgsSettings settings;

{
QString key( QStringLiteral( "/qgis/testing/settingsKey" ) );

// Be sure that settings does not exist already
settings.remove( key );

// Check that keys are handled same way for QgsSettings and QgsSettingsEntry
settings.setValue( key, 42 );

QgsSettingsEntryInteger settingsEntryInteger( key, QgsSettings::NoSection, 0 );
QCOMPARE( settingsEntryInteger.value(), 42 );
}

{
QString key( QStringLiteral( "qgis/testing/settingsKey" ) );

// Be sure that settings does not exist already
settings.remove( key );

// Check that keys are handled same way for QgsSettings and QgsSettingsEntry
settings.setValue( key, 43 );

QgsSettingsEntryInteger settingsEntryInteger( key, QgsSettings::NoSection, 0 );
QCOMPARE( settingsEntryInteger.value(), 43 );
}

{
QString key( QStringLiteral( "/qgis/testing/settingsKey" ) );

// Be sure that settings does not exist already
settings.remove( key, QgsSettings::Core );

// Check that keys are handled same way for QgsSettings and QgsSettingsEntry
settings.setValue( key, 44, QgsSettings::Core );

QgsSettingsEntryInteger settingsEntryInteger( key, QgsSettings::Core, 0 );
QCOMPARE( settingsEntryInteger.value(), 44 );
}

{
QString key( QStringLiteral( "qgis/testing/settingsKey" ) );

// Be sure that settings does not exist already
settings.remove( key, QgsSettings::Core );

// Check that keys are handled same way for QgsSettings and QgsSettingsEntry
settings.setValue( key, 45, QgsSettings::Core );

QgsSettingsEntryInteger settingsEntryInteger( key, QgsSettings::Core, 0 );
QCOMPARE( settingsEntryInteger.value(), 45 );
}
}

void TestQgsSettingsEntry::enumValue()
{
Expand Down
12 changes: 12 additions & 0 deletions tests/src/python/test_qgssettingsentry.py
Expand Up @@ -214,6 +214,12 @@ def test_settings_entry_integer(self):
self.assertEqual(QgsSettings().value(settingsKeyComplete, defaultValue, section=QgsSettings.Plugins), 43)
self.assertEqual(settingsEntryInteger.valueAsVariant(), 43)

# Set/Get negative value
settingsEntryInteger.setValue(-42)
# Verify setValue using QgsSettings
self.assertEqual(QgsSettings().value(settingsKeyComplete, defaultValue, section=QgsSettings.Plugins), -42)
self.assertEqual(settingsEntryInteger.valueAsVariant(), -42)

# Settings type
self.assertEqual(settingsEntryInteger.settingsType(), QgsSettingsEntryBase.Integer)

Expand All @@ -236,6 +242,12 @@ def test_settings_entry_double(self):
self.assertEqual(QgsSettings().value(settingsKeyComplete, defaultValue, section=QgsSettings.Plugins), 1.618)
self.assertEqual(settingsEntryDouble.valueAsVariant(), 1.618)

# Set/Get negative value
settingsEntryDouble.setValue(-273.15)
# Verify setValue using QgsSettings
self.assertEqual(QgsSettings().value(settingsKeyComplete, defaultValue, section=QgsSettings.Plugins), -273.15)
self.assertEqual(settingsEntryDouble.valueAsVariant(), -273.15)

# Settings type
self.assertEqual(settingsEntryDouble.settingsType(), QgsSettingsEntryBase.Double)

Expand Down

0 comments on commit be04888

Please sign in to comment.