diff --git a/tests/src/python/test_qgsexpression.py b/tests/src/python/test_qgsexpression.py index ae90952e667..7bead3ad232 100644 --- a/tests/src/python/test_qgsexpression.py +++ b/tests/src/python/test_qgsexpression.py @@ -67,6 +67,11 @@ class TestQgsExpressionCustomFunctions(unittest.TestCase): def referenced_columns_set(values, feature, parent): return 2 + @qgsfunction(args=-1, group='testing', register=False, handlesnull=True) + def null_mean(values, feature, parent): + vals = [val for val in values if val != NULL] + return sum(vals) / len(vals) + def tearDown(self): QgsExpression.unregisterFunction('testfun') @@ -161,6 +166,11 @@ class TestQgsExpressionCustomFunctions(unittest.TestCase): exp = QgsExpression('referenced_columns_set()') self.assertEqual(set(exp.referencedColumns()), set(['a', 'b'])) + def testHandlesNull(self): + QgsExpression.registerFunction(self.handles_null) + exp = QgsExpression('null_mean(1, 2, NULL, 3)') + self.assertEqual(set(exp.evaluate()), 2) + def testCantOverrideBuiltinsWithUnregister(self): success = QgsExpression.unregisterFunction("sqrt") self.assertFalse(success)