diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp index 6d0e0d809..0d249e56e 100644 --- a/src/App/Expression.cpp +++ b/src/App/Expression.cpp @@ -681,9 +681,6 @@ FunctionExpression::FunctionExpression(const DocumentObject *_owner, Function _f throw ExpressionError("Invalid number of arguments: eaxctly two required."); break; case STDDEV: - if (args.size() < 2) - throw ExpressionError("Invalid number of arguments: at least two required."); - break; case SUM: case AVERAGE: case COUNT: @@ -796,7 +793,7 @@ public: virtual Quantity getQuantity() const { if (n < 2) - return Quantity(); + throw ExpressionError("Invalid number of entries: at least two required."); else return (M2 / (n - 1.0)).pow(Quantity(0.5)); } diff --git a/src/Mod/Spreadsheet/TestSpreadsheet.py b/src/Mod/Spreadsheet/TestSpreadsheet.py index 324953251..05aaea3d1 100644 --- a/src/Mod/Spreadsheet/TestSpreadsheet.py +++ b/src/Mod/Spreadsheet/TestSpreadsheet.py @@ -42,6 +42,8 @@ class SpreadsheetCases(unittest.TestCase): sheet.set('A8', '=count(1;2;3)') sheet.set('A9', '=min(1;2;3)') sheet.set('A10', '=max(1;2;3)') + sheet.set('A11', '=stddev(B3)') + sheet.set('A12', '=stddev(B3:B5)') self.doc.recompute() self.assertEqual(sheet.A1, 1) self.assertEqual(sheet.A2, 3) @@ -53,6 +55,8 @@ class SpreadsheetCases(unittest.TestCase): self.assertEqual(sheet.A8, 3) self.assertEqual(sheet.A9, 1) self.assertEqual(sheet.A10, 3) + self.assertEqual(sheet.A11, u'ERR: Invalid number of entries: at least two required.') + self.assertEqual(sheet.A12, 1) def assertMostlyEqual(self, a, b): if type(a) is Quantity: