+ write unit tests for Spreadsheet and expression stuff
This commit is contained in:
parent
28b92c478b
commit
e0b12695b1
|
@ -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)
|
||||
|
|
|
@ -8,6 +8,7 @@ INSTALL(
|
|||
FILES
|
||||
Init.py
|
||||
InitGui.py
|
||||
TestSpreadsheet.py
|
||||
DESTINATION
|
||||
Mod/Spreadsheet
|
||||
)
|
||||
|
|
106
src/Mod/Spreadsheet/TestSpreadsheet.py
Normal file
106
src/Mod/Spreadsheet/TestSpreadsheet.py
Normal 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)
|
|
@ -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"))
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue
Block a user