Expressions: Fixed issue #2879.
This commit is contained in:
parent
715fa81fe2
commit
0d6f777099
|
@ -455,17 +455,6 @@ std::string OperatorExpression::toString() const
|
|||
bool needsParens;
|
||||
Operator leftOperator(NONE), rightOperator(NONE);
|
||||
|
||||
switch (op) {
|
||||
case NEG:
|
||||
s << "-" << left->toString();
|
||||
return s.str();
|
||||
case POS:
|
||||
s << "+" << left->toString();
|
||||
return s.str();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
needsParens = false;
|
||||
if (freecad_dynamic_cast<OperatorExpression>(left))
|
||||
leftOperator = static_cast<OperatorExpression*>(left)->op;
|
||||
|
@ -478,6 +467,17 @@ std::string OperatorExpression::toString() const
|
|||
// needsParens = true;
|
||||
}
|
||||
|
||||
switch (op) {
|
||||
case NEG:
|
||||
s << "-" << (needsParens ? "(" : "") << left->toString() << (needsParens ? ")" : "");
|
||||
return s.str();
|
||||
case POS:
|
||||
s << "+" << (needsParens ? "(" : "") << left->toString() << (needsParens ? ")" : "");
|
||||
return s.str();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (needsParens)
|
||||
s << "(" << left->toString() << ")";
|
||||
else
|
||||
|
|
|
@ -29,6 +29,7 @@ class SpreadsheetCases(unittest.TestCase):
|
|||
def testAggregates(self):
|
||||
""" Test all aggregate functions """
|
||||
sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
|
||||
sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
|
||||
sheet.set('B13', '4')
|
||||
sheet.set('B14', '5')
|
||||
sheet.set('B15', '6')
|
||||
|
@ -436,6 +437,25 @@ class SpreadsheetCases(unittest.TestCase):
|
|||
sheet.set('A38', '=(2^2*2)/8')
|
||||
sheet.set('A39', '=2^(2*2)/8')
|
||||
sheet.set('A40', '=8/2^(2*2)')
|
||||
sheet.set('A41', '=-1')
|
||||
sheet.set('A42', '=-(1)')
|
||||
sheet.set('A43', '=-(1 + 1)')
|
||||
sheet.set('A44', '=-(1 - 1)')
|
||||
sheet.set('A45', '=-(-1 + 1)')
|
||||
sheet.set('A46', '=-(-1 + -1)')
|
||||
sheet.set('A47', '=+1')
|
||||
sheet.set('A48', '=+(1)')
|
||||
sheet.set('A49', '=+(1 + 1)')
|
||||
sheet.set('A50', '=+(1 - 1)')
|
||||
sheet.set('A51', '=+(-1 + 1)')
|
||||
sheet.set('A52', '=+(-1 + -1)')
|
||||
|
||||
self.doc.addObject("Part::Cylinder", "Cylinder")
|
||||
self.doc.addObject("Part::Thickness", "Pipe")
|
||||
sheet.set('B1', '101')
|
||||
sheet.set('A53', '=-(-(B1-1)/2)')
|
||||
sheet.set('A54', '=-(Cylinder.Radius + Pipe.Value*1mm - 1"/2)')
|
||||
|
||||
self.doc.recompute()
|
||||
self.assertEqual(sheet.getContents("A1"), "=1 < 2 ? 3 : 4")
|
||||
self.assertEqual(sheet.getContents("A2"), "=1 + 2 < 3 + 4 ? 5 + 6 : 7 + 8")
|
||||
|
@ -475,6 +495,20 @@ class SpreadsheetCases(unittest.TestCase):
|
|||
self.assertEqual(sheet.A38, 1)
|
||||
self.assertEqual(sheet.A39, 2)
|
||||
self.assertEqual(sheet.A40, 0.5)
|
||||
self.assertEqual(sheet.A41, -1)
|
||||
self.assertEqual(sheet.A42, -1)
|
||||
self.assertEqual(sheet.A43, -2)
|
||||
self.assertEqual(sheet.A44, 0)
|
||||
self.assertEqual(sheet.A45, 0)
|
||||
self.assertEqual(sheet.A46, 2)
|
||||
self.assertEqual(sheet.A47, 1)
|
||||
self.assertEqual(sheet.A48, 1)
|
||||
self.assertEqual(sheet.A49, 2)
|
||||
self.assertEqual(sheet.A50, 0)
|
||||
self.assertEqual(sheet.A51, 0)
|
||||
self.assertEqual(sheet.A52, -2)
|
||||
self.assertEqual(sheet.A53, 50)
|
||||
self.assertEqual(sheet.A54, Quantity('9.7mm'))
|
||||
self.assertEqual(sheet.getContents('A1'), '=1 < 2 ? 3 : 4')
|
||||
self.assertEqual(sheet.getContents('A2'), '=1 + 2 < 3 + 4 ? 5 + 6 : 7 + 8')
|
||||
self.assertEqual(sheet.getContents('A3'), '=1 + 2 * 1 < 3 + 4 ? 5 * 2 + 6 * 3 + 2 ^ 4 : 7 * 2 + 8 * 3 + 2 ^ 3')
|
||||
|
@ -515,6 +549,18 @@ class SpreadsheetCases(unittest.TestCase):
|
|||
self.assertEqual(sheet.getContents('A38'), '=2 ^ 2 * 2 / 8')
|
||||
self.assertEqual(sheet.getContents('A39'), '=2 ^ (2 * 2) / 8')
|
||||
self.assertEqual(sheet.getContents('A40'), '=8 / 2 ^ (2 * 2)')
|
||||
self.assertEqual(sheet.getContents('A41'), '=-1')
|
||||
self.assertEqual(sheet.getContents('A42'), '=-1')
|
||||
self.assertEqual(sheet.getContents('A43'), '=-(1 + 1)')
|
||||
self.assertEqual(sheet.getContents('A44'), '=-(1 - 1)')
|
||||
self.assertEqual(sheet.getContents('A45'), '=-(-1 + 1)')
|
||||
self.assertEqual(sheet.getContents('A46'), '=-(-1 + -1)')
|
||||
self.assertEqual(sheet.getContents('A47'), '=+1')
|
||||
self.assertEqual(sheet.getContents('A48'), '=+1')
|
||||
self.assertEqual(sheet.getContents('A49'), '=+(1 + 1)')
|
||||
self.assertEqual(sheet.getContents('A50'), '=+(1 - 1)')
|
||||
self.assertEqual(sheet.getContents('A51'), '=+(-1 + 1)')
|
||||
self.assertEqual(sheet.getContents('A52'), '=+(-1 + -1)')
|
||||
|
||||
def testNumbers(self):
|
||||
""" Test different numbers """
|
||||
|
|
Loading…
Reference in New Issue
Block a user