diff options
author | Cristián Maureira-Fredes <cristian.maureira-fredes@qt.io> | 2019-10-28 12:24:48 +0100 |
---|---|---|
committer | Cristian Maureira-Fredes <Cristian.Maureira-Fredes@qt.io> | 2020-06-12 16:41:08 +0200 |
commit | 0395817102e9b8601c93e60349360fcdd8a3c66d (patch) | |
tree | c400630b43b464ca85310f692813966088dcb5e0 /sources/pyside2/tests/QtCore | |
parent | bdb3a0de4934fe05fee8539b29cfb07a5693471e (diff) |
Fix booleans and empty list cases in QSettings5.12
After the fix for PYSIDE-1010 there were two things
that were not properly understood:
1. A special case for booleans was required,
2. When a list was detected, the split was wrongly creating
a list with a '0' instead of an empty one.
Additonally, due to the wrong treatment we couldn't
notice if the value 0 was None, the number zero, or even
false, so this patch amends the previous implementation
to properly treat these cases.
New test cases were added.
Change-Id: I41d5387bb835cfa96f94e5577e993a4b87b303f0
Fixes: PYSIDE-1130
Fixes: PYSIDE-820
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
(cherry picked from commit ba04613a65be7b50bbcc9dae8c18d195243513c3)
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside2/tests/QtCore')
-rw-r--r-- | sources/pyside2/tests/QtCore/qsettings_test.py | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/sources/pyside2/tests/QtCore/qsettings_test.py b/sources/pyside2/tests/QtCore/qsettings_test.py index 6d64b0db3..36a4c3c62 100644 --- a/sources/pyside2/tests/QtCore/qsettings_test.py +++ b/sources/pyside2/tests/QtCore/qsettings_test.py @@ -55,15 +55,55 @@ class TestQSettings(unittest.TestCase): def testDefaultValueConversion(self): settings = QSettings('foo.ini', QSettings.IniFormat) - r = settings.value('lala', 22) + settings.setValue('zero_value', 0) + settings.setValue('empty_list', []) + settings.setValue('bool1', False) + settings.setValue('bool2', True) + del settings + + # Loading values already set + settings = QSettings('foo.ini', QSettings.IniFormat) + + # Getting value that doesn't exist + r = settings.value("variable") + self.assertEqual(type(r), type(None)) + + # Handling zero value + r = settings.value('zero_value') if py3k.IS_PY3K: self.assertEqual(type(r), int) else: self.assertEqual(type(r), long) - r = settings.value('lala', 22, type=str) - self.assertEqual(type(r), str) + r = settings.value('zero_value', type=int) + self.assertEqual(type(r), int) + + # Empty list + r = settings.value('empty_list') + self.assertTrue(len(r) == 0) + self.assertEqual(type(r), list) + + r = settings.value('empty_list', type=list) + self.assertTrue(len(r) == 0) + self.assertEqual(type(r), list) + + # Booleans + r = settings.value('bool1') + self.assertEqual(type(r), bool) + + r = settings.value('bool2') + self.assertEqual(type(r), bool) + + r = settings.value('bool1', type=bool) + self.assertEqual(type(r), bool) + + r = settings.value('bool2', type=int) + self.assertEqual(type(r), int) + + r = settings.value('bool2', type=bool) + self.assertEqual(type(r), bool) + # Not set variable, but with default value r = settings.value('lala', 22, type=bytes) self.assertEqual(type(r), bytes) |