+ 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
|
fc_target_copy_resource(Spreadsheet
|
||||||
${CMAKE_SOURCE_DIR}/src/Mod/Spreadsheet
|
${CMAKE_SOURCE_DIR}/src/Mod/Spreadsheet
|
||||||
${CMAKE_BINARY_DIR}/Mod/Spreadsheet
|
${CMAKE_BINARY_DIR}/Mod/Spreadsheet
|
||||||
Init.py)
|
Init.py TestSpreadsheet.py)
|
||||||
|
|
||||||
SET_BIN_DIR(Spreadsheet Spreadsheet /Mod/Spreadsheet)
|
SET_BIN_DIR(Spreadsheet Spreadsheet /Mod/Spreadsheet)
|
||||||
SET_PYTHON_PREFIX_SUFFIX(Spreadsheet)
|
SET_PYTHON_PREFIX_SUFFIX(Spreadsheet)
|
||||||
|
|
|
@ -8,6 +8,7 @@ INSTALL(
|
||||||
FILES
|
FILES
|
||||||
Init.py
|
Init.py
|
||||||
InitGui.py
|
InitGui.py
|
||||||
|
TestSpreadsheet.py
|
||||||
DESTINATION
|
DESTINATION
|
||||||
Mod/Spreadsheet
|
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("TestSketcherApp"))
|
||||||
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestPartApp"))
|
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestPartApp"))
|
||||||
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestPartDesignApp"))
|
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestPartDesignApp"))
|
||||||
|
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestSpreadsheet"))
|
||||||
# gui tests of modules
|
# gui tests of modules
|
||||||
if (FreeCAD.GuiUp == 1):
|
if (FreeCAD.GuiUp == 1):
|
||||||
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestSketcherGui"))
|
suite.addTest(unittest.defaultTestLoader.loadTestsFromName("TestSketcherGui"))
|
||||||
|
|
|
@ -51,6 +51,7 @@ class TestCmd:
|
||||||
QtUnitGui.addTest("TestSketcherApp")
|
QtUnitGui.addTest("TestSketcherApp")
|
||||||
QtUnitGui.addTest("TestPartApp")
|
QtUnitGui.addTest("TestPartApp")
|
||||||
QtUnitGui.addTest("TestPartDesignApp")
|
QtUnitGui.addTest("TestPartDesignApp")
|
||||||
|
QtUnitGui.addTest("TestSpreadsheet")
|
||||||
QtUnitGui.addTest("Workbench")
|
QtUnitGui.addTest("Workbench")
|
||||||
QtUnitGui.addTest("Menu")
|
QtUnitGui.addTest("Menu")
|
||||||
QtUnitGui.addTest("Menu.MenuDeleteCases")
|
QtUnitGui.addTest("Menu.MenuDeleteCases")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user