def _test(layer, is_gpkg=False): # Skip fid and precision tests offset = 1 if is_gpkg else 0 fieldFormatter = QgsFallbackFieldFormatter() QLocale.setDefault(QLocale('en')) # Precision is ignored for integers and longlongs self.assertEqual( fieldFormatter.representValue(layer, 0 + offset, {}, None, '123'), '123') self.assertEqual( fieldFormatter.representValue(layer, 0 + offset, {}, None, '123000'), '123,000') self.assertEqual( fieldFormatter.representValue(layer, 0 + offset, {}, None, '9999999'), '9,999,999') self.assertEqual( fieldFormatter.representValue(layer, 0 + offset, {}, None, None), 'NULL') self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, '123'), '123') self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, '123000'), '123,000') self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, '9999999'), '9,999,999') self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, None), 'NULL') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, None), 'NULL') if not is_gpkg: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123'), '123.00000') else: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123'), '123') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, None), 'NULL') if not is_gpkg: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123000'), '123,000.00000') else: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123000'), '123,000') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '0'), '0') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '0.127'), '0.127') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '1.27e-1'), '0.127') if not is_gpkg: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '-123'), '-123.00000') else: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '-123'), '-123') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '-0.127'), '-0.127') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '-1.27e-1'), '-0.127') # Check with Italian locale QLocale.setDefault(QLocale('it')) self.assertEqual( fieldFormatter.representValue(layer, 0 + offset, {}, None, '9999999'), '9.999.999') # scientific notation for integers! self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, '123'), '123') self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, '123000'), '123.000') self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, '9999999'), '9.999.999') self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, None), 'NULL') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, None), 'NULL') if not is_gpkg: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123000'), '123.000,00000') else: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123000'), '123.000') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '0'), '0') if not is_gpkg: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123'), '123,00000') else: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123'), '123') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '0.127'), '0,127') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '1.27e-1'), '0,127') if not is_gpkg: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '-123'), '-123,00000') else: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '-123'), '-123') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '-0.127'), '-0,127') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '-1.27e-1'), '-0,127') # Check with custom locale without thousand separator custom = QLocale('en') custom.setNumberOptions(QLocale.OmitGroupSeparator) QLocale.setDefault(custom) self.assertEqual( fieldFormatter.representValue(layer, 0 + offset, {}, None, '9999999'), '9999999') # scientific notation for integers! self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, '123'), '123') self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, '9999999'), '9999999') if not is_gpkg: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123000'), '123000.00000') else: self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, '123000'), '123000') # Check string self.assertEqual( fieldFormatter.representValue(layer, 3 + offset, {}, None, '123'), '123') self.assertEqual( fieldFormatter.representValue(layer, 3 + offset, {}, None, 'a string'), 'a string') self.assertEqual( fieldFormatter.representValue(layer, 3 + offset, {}, None, ''), '') self.assertEqual( fieldFormatter.representValue(layer, 3 + offset, {}, None, None), 'NULL') # Check NULLs (this is what happens in real life inside QGIS) self.assertEqual( fieldFormatter.representValue(layer, 0 + offset, {}, None, QVariant(QVariant.String)), 'NULL') self.assertEqual( fieldFormatter.representValue(layer, 1 + offset, {}, None, QVariant(QVariant.String)), 'NULL') self.assertEqual( fieldFormatter.representValue(layer, 2 + offset, {}, None, QVariant(QVariant.String)), 'NULL') self.assertEqual( fieldFormatter.representValue(layer, 3 + offset, {}, None, QVariant(QVariant.String)), 'NULL')