+ write unit tests for Spreadsheet and expression stuff

This commit is contained in:
wmayer 2016-01-26 15:07:29 +01:00
parent 28b92c478b
commit e0b12695b1
5 changed files with 110 additions and 1 deletions

View File

@ -61,7 +61,7 @@ target_link_libraries(Spreadsheet ${Spreadsheet_LIBS})
fc_target_copy_resource(Spreadsheet
${CMAKE_SOURCE_DIR}/src/Mod/Spreadsheet
${CMAKE_BINARY_DIR}/Mod/Spreadsheet
Init.py)
Init.py TestSpreadsheet.py)
SET_BIN_DIR(Spreadsheet Spreadsheet /Mod/Spreadsheet)
SET_PYTHON_PREFIX_SUFFIX(Spreadsheet)

View File

@ -8,6 +8,7 @@ INSTALL(
FILES
Init.py
InitGui.py
TestSpreadsheet.py
DESTINATION
Mod/Spreadsheet
)

View File

@ -0,0 +1,106 @@
# (c) Juergen Riegel (juergen.riegel@web.de) 2007 LGPL
import os
import sys
import unittest
import FreeCAD
import Part
import Sketcher
from FreeCAD import Base
v = Base.Vector
#----------------------------------------------------------------------------------
# define the functions to test the FreeCAD Spreadsheet module and expression engine
#----------------------------------------------------------------------------------
class SpreadsheetCases(unittest.TestCase):
def setUp(self):
# set up a planar face with 2 triangles
self.doc = FreeCAD.newDocument()
def testAlias(self):
""" Playing with aliases """
sheet = self.doc.addObject("Spreadsheet::Sheet","Calc")
sheet.setAlias("A1","Test")
self.assertEqual(sheet.getAlias("A1"),"Test")
sheet.set("A1","4711")
self.doc.recompute()
self.assertEqual(sheet.get("Test"),4711)
self.assertEqual(sheet.get("Test"),sheet.get("A1"))
def testAmbiguousAlias(self):
""" Try to set the same alias twice (bug #2402) """
sheet = self.doc.addObject("Spreadsheet::Sheet","Calc")
sheet.setAlias("A1","Test")
try:
sheet.setAlias("A2","Test")
self.fail("An ambiguous alias was set which shouldn't be allowed")
except:
self.assertEqual(sheet.getAlias("A2"),None)
def testClearAlias(self):
""" This was causing a crash """
sheet = self.doc.addObject("Spreadsheet::Sheet","Calc")
sheet.setAlias("A1","Test")
sheet.setAlias("A1","")
self.assertEqual(sheet.getAlias("A1"),None)
def testSetInvalidAlias(self):
""" Try to use a cell address as alias name """
sheet = self.doc.addObject("Spreadsheet::Sheet","Calc")
try:
sheet.setAlias("A1","B1")
except:
self.assertEqual(sheet.getAlias("A1"),None)
else:
self.fail("A cell address was used aa alias which shouldn't be allowed")
def testPlacementName(self):
""" Object name is equal to property name (bug #2389) """
if not FreeCAD.GuiUp:
return
import FreeCADGui
o = self.doc.addObject("Part::FeaturePython","Placement")
FreeCADGui.Selection.addSelection(o)
def testInvoluteGear(self):
""" Support of boolean or integer values """
try:
import InvoluteGearFeature
except ImportError:
return
InvoluteGearFeature.makeInvoluteGear('InvoluteGear')
self.doc.recompute()
sketch=self.doc.addObject('Sketcher::SketchObject','Sketch')
sketch.addGeometry(Part.Line(v(0,0,0),v(10,10,0)),False)
sketch.addConstraint(Sketcher.Constraint('Distance',0,65.285388))
sketch.setExpression('Constraints[0]', 'InvoluteGear.NumberOfTeeth')
self.doc.recompute()
self.assertEqual(sketch.State,'Up-to-date')
def testSketcher(self):
""" Mixup of Label and Name (bug #2407)"""
sketch=self.doc.addObject('Sketcher::SketchObject','Sketch')
sheet=self.doc.addObject('Spreadsheet::Sheet','Spreadsheet')
sheet.setAlias('A1', 'Length')
self.doc.recompute()
sheet.set('A1', '47,11')
self.doc.recompute()
index=sketch.addGeometry(Part.Line(v(0,0,0),v(10,10,0)),False)
sketch.addConstraint(Sketcher.Constraint('Distance',index,14.0))
self.doc.recompute()
sketch.setExpression('Constraints[0]', u'Spreadsheet.Length')
self.doc.recompute()
sheet.Label="Calc"
self.doc.recompute()
self.assertEqual(sketch.ExpressionEngine[0][1],'Calc.Length')
self.assertEqual(sketch.State,'Up-to-date')
def tearDown(self):
#closing doc
FreeCAD.closeDocument(self.doc.Name)

View File

@ -49,6 +49,7 @@ def All():
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestSketcherApp"))
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestPartApp"))
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestPartDesignApp"))
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestSpreadsheet"))
# gui tests of modules
if (FreeCAD.GuiUp == 1):
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestSketcherGui"))

View File

@ -51,6 +51,7 @@ class TestCmd:
QtUnitGui.addTest("TestSketcherApp")
QtUnitGui.addTest("TestPartApp")
QtUnitGui.addTest("TestPartDesignApp")
QtUnitGui.addTest("TestSpreadsheet")
QtUnitGui.addTest("Workbench")
QtUnitGui.addTest("Menu")
QtUnitGui.addTest("Menu.MenuDeleteCases")