From 10ca067d95a2bf6473737179d6f552e356d48abf Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 24 Jan 2022 14:20:26 +0100 Subject: [PATCH] Spreadsheet: unit test for expressions using an input spreadsheet A bug was reported here: https://forum.freecadweb.org/viewtopic.php?p=564502#p564502 --- src/Mod/Spreadsheet/TestSpreadsheet.py | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/Mod/Spreadsheet/TestSpreadsheet.py b/src/Mod/Spreadsheet/TestSpreadsheet.py index b2eb7f7e2a..4b717b210d 100644 --- a/src/Mod/Spreadsheet/TestSpreadsheet.py +++ b/src/Mod/Spreadsheet/TestSpreadsheet.py @@ -1184,6 +1184,50 @@ class SpreadsheetCases(unittest.TestCase): FreeCAD.closeDocument(square.Name) FreeCAD.closeDocument(base.Name) + def testExpressionWithAlias(self): + # https://forum.freecadweb.org/viewtopic.php?p=564502#p564502 + ss1 = self.doc.addObject("Spreadsheet::Sheet", "Input") + ss1.setAlias('A1', 'one') + ss1.setAlias('A2', 'two') + ss1.set("A1","1") + ss1.set("A2","2") + self.doc.recompute() + + ss2 = self.doc.addObject("Spreadsheet::Sheet", "Output") + ss2.set("A1","=Input.A1 + Input.A2") + ss2.set("A2","=Input.one + Input.two") + ss2.set("A3","=<>.A1 + <>.A2") + ss2.set("A4","=<>.one + <>.two") + self.doc.recompute() + + self.assertEqual(ss2.get("A1"), 3) + self.assertEqual(ss2.get("A2"), 3) + self.assertEqual(ss2.get("A3"), 3) + self.assertEqual(ss2.get("A4"), 3) + + project_path = self.TempPath + os.sep + 'alias.FCStd' + self.doc.saveAs(project_path) + FreeCAD.closeDocument(self.doc.Name) + self.doc = FreeCAD.openDocument(project_path) + ss1 = self.doc.Input + ss2 = self.doc.Output + + self.assertEqual(ss2.get("A1"), 3) + self.assertEqual(ss2.get("A2"), 3) + self.assertEqual(ss2.get("A3"), 3) + self.assertEqual(ss2.get("A4"), 3) + + ss1.set("A1","2") + self.doc.recompute() + + self.assertEqual(ss1.get("A1"), 2) + self.assertEqual(ss1.get("one"), 2) + + self.assertEqual(ss2.get("A1"), 4) + self.assertEqual(ss2.get("A2"), 4) + self.assertEqual(ss2.get("A3"), 4) + self.assertEqual(ss2.get("A4"), 4) + def tearDown(self): #closing doc FreeCAD.closeDocument(self.doc.Name)