Spreadsheet: Updated test cases.

This commit is contained in:
Eivind Kvedalen 2016-02-08 20:51:23 +01:00 committed by wmayer
parent b74b3f3358
commit 9606fb144a

View File

@ -1,4 +1,5 @@
# (c) 2016 Werner Mayer
# (c) 2016 Eivind Kvedalen
# LGPL
import os
@ -7,6 +8,7 @@ import unittest
import FreeCAD
import Part
import Sketcher
import tempfile
from FreeCAD import Base
v = Base.Vector
@ -19,6 +21,59 @@ v = Base.Vector
class SpreadsheetCases(unittest.TestCase):
def setUp(self):
self.doc = FreeCAD.newDocument()
self.TempPath = tempfile.gettempdir()
FreeCAD.Console.PrintLog( ' Using temp path: ' + self.TempPath + '\n')
def testRemoveRows(self):
""" Removing rows -- check renaming of internal cells """
sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
sheet.set('A3', '123')
sheet.set('A1', '=A3')
sheet.removeRows('2', 1)
self.assertEqual(sheet.getContents("A1"),"=A2")
def testInsertRows(self):
""" Inserting rows -- check renaming of internal cells """
sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
sheet.set('B1', '=B2')
sheet.set('B2', '124')
sheet.insertRows('2', 1)
self.assertEqual(sheet.getContents("B1"),"=B3")
def testRenameAlias(self):
""" Test renaming of alias1 to alias2 in a spreadsheet """
sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
sheet.set('B1', '124')
sheet.setAlias('B1', 'alias1')
sheet.set('B2', '=alias1')
self.doc.recompute()
self.assertEqual(sheet.get("alias1"), 124)
self.assertEqual(sheet.get("B1"), 124)
self.assertEqual(sheet.get("B2"), 124)
sheet.setAlias('B1', 'alias2')
self.doc.recompute()
self.assertEqual(sheet.get("alias2"), 124)
self.assertEqual(sheet.getContents("B2"),"=alias2")
def testRenameAlias2(self):
""" Test renaming of alias1 to alias2 in a spreadsheet, when referenced from another object """
sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
sheet.set('B1', '124')
sheet.setAlias('B1', 'alias1')
box = self.doc.addObject('Part::Box', 'Box')
box.setExpression('Length', 'Spreadsheet.alias1')
sheet.setAlias('B1', 'alias2')
self.assertEqual(box.ExpressionEngine[0][1], "Spreadsheet.alias2");
def testRenameAlias3(self):
""" Test renaming of document object referenced from another object """
sheet = self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
sheet.set('B1', '124')
sheet.setAlias('B1', 'alias1')
box = self.doc.addObject('Part::Box', 'Box')
box.setExpression('Length', 'Spreadsheet.alias1')
sheet.Label = "Params"
self.assertEqual(box.ExpressionEngine[0][1], "Params.alias1");
def testAlias(self):
""" Playing with aliases """
@ -101,6 +156,35 @@ class SpreadsheetCases(unittest.TestCase):
self.assertEqual(sketch.ExpressionEngine[0][1],'Calc.Length')
self.assertIn('Up-to-date',sketch.State)
def testCrossDocumentLinks(self):
""" Expressions accross files are not saved (bug #2442) """
# Create a box
box = self.doc.addObject('Part::Box', 'Box')
# Create a second document with a cylinder
doc2 = FreeCAD.newDocument()
cylinder = doc2.addObject('Part::Cylinder', 'Cylinder')
cylinder.setExpression('Radius', 'cube#Cube.Height')
# Save and close first document
self.doc.saveAs(self.TempPath + os.sep + 'cube.fcstd')
FreeCAD.closeDocument(self.doc.Name)
# Save and close second document
doc2.saveAs(self.TempPath + os.sep + 'cylinder.fcstd')
FreeCAD.closeDocument(doc2.Name)
# Open both documents again
self.doc = FreeCAD.openDocument(self.TempPath + os.sep + 'cube.fcstd')
doc2 = FreeCAD.openDocument(self.TempPath + os.sep + 'cylinder.fcstd')
# Check reference between them
self.assertEqual(doc2.getObject('Cylinder').ExpressionEngine[0][1], 'cube#Cube.Height')
# Close second document
FreeCAD.closeDocument(doc2.Name)
def tearDown(self):
#closing doc
FreeCAD.closeDocument(self.doc.Name)