|
14 | 14 |
|
15 | 15 | import qgis # NOQA
|
16 | 16 |
|
| 17 | +from qgis.PyQt.QtCore import QVariant |
17 | 18 | from qgis.testing import unittest
|
18 | 19 | from qgis.utils import qgsfunction
|
19 | 20 | from qgis.core import QgsExpression, QgsFeatureRequest
|
@@ -196,6 +197,39 @@ def testValid(self):
|
196 | 197 | e.setExpression('1')
|
197 | 198 | self.assertTrue(e.isValid())
|
198 | 199 |
|
| 200 | + def testCreateFieldEqualityExpression(self): |
| 201 | + e = QgsExpression() |
| 202 | + |
| 203 | + # test when value is null |
| 204 | + field = "myfield" |
| 205 | + value = QVariant() |
| 206 | + res = '"myfield" IS NULL' |
| 207 | + self.assertEqual(e.createFieldEqualityExpression(field, value), res) |
| 208 | + |
| 209 | + # test when value is null and field name has a quote |
| 210 | + field = "my'field" |
| 211 | + value = QVariant() |
| 212 | + res = '"my\'field" IS NULL' |
| 213 | + self.assertEqual(e.createFieldEqualityExpression(field, value), res) |
| 214 | + |
| 215 | + # test when field name has a quote and value is an int |
| 216 | + field = "my'field" |
| 217 | + value = 5 |
| 218 | + res = '"my\'field" = 5' |
| 219 | + self.assertEqual(e.createFieldEqualityExpression(field, value), res) |
| 220 | + |
| 221 | + # test when field name has a quote and value is a string |
| 222 | + field = "my'field" |
| 223 | + value = '5' |
| 224 | + res = '"my\'field" = \'5\'' |
| 225 | + self.assertEqual(e.createFieldEqualityExpression(field, value), res) |
| 226 | + |
| 227 | + # test when field name has a quote and value is a boolean |
| 228 | + field = "my'field" |
| 229 | + value = True |
| 230 | + res = '"my\'field" = TRUE' |
| 231 | + self.assertEqual(e.createFieldEqualityExpression(field, value), res) |
| 232 | + |
199 | 233 |
|
200 | 234 | if __name__ == "__main__":
|
201 | 235 | unittest.main()
|
0 commit comments