Download src/Mod/Test/Workbench.py from AbdulElahGwaith/FreeCAD: direct link, hf CLI and curl.
- Browser
- Download file 5.89 kB
-
https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/Test/Workbench.py
- Command line
-
hf download hf://AbdulElahGwaith/FreeCAD/src/Mod/Test/Workbench.py
-
curl -L -o Workbench.py https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/Test/Workbench.py
5.89 kB
| # *************************************************************************** | |
| # * Copyright (c) 2006 Werner Mayer <werner.wm.mayer@gmx.de> * | |
| # * * | |
| # * This file is part of the FreeCAD CAx development system. * | |
| # * * | |
| # * This program is free software; you can redistribute it and/or modify * | |
| # * it under the terms of the GNU Lesser General Public License (LGPL) * | |
| # * as published by the Free Software Foundation; either version 2 of * | |
| # * the License, or (at your option) any later version. * | |
| # * for detail see the LICENCE text file. * | |
| # * * | |
| # * FreeCAD is distributed in the hope that it will be useful, * | |
| # * but WITHOUT ANY WARRANTY; without even the implied warranty of * | |
| # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |
| # * GNU Library General Public License for more details. * | |
| # * * | |
| # * You should have received a copy of the GNU Library General Public * | |
| # * License along with FreeCAD; if not, write to the Free Software * | |
| # * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * | |
| # * USA * | |
| # * * | |
| # ***************************************************************************/ | |
| # Workbench test module | |
| import FreeCAD, FreeCADGui, os, unittest | |
| import tempfile | |
| from PySide import QtWidgets, QtCore | |
| from PySide.QtWidgets import QApplication | |
| class CallableCheckWarning: | |
| def __call__(self): | |
| diag = QApplication.activeModalWidget() | |
| if diag: | |
| QtCore.QTimer.singleShot(0, diag, QtCore.SLOT("accept()")) | |
| class WorkbenchTestCase(unittest.TestCase): | |
| def setUp(self): | |
| self.Active = FreeCADGui.activeWorkbench() | |
| FreeCAD.Console.PrintLog(FreeCADGui.activeWorkbench().name()) | |
| def testActivate(self): | |
| wbs = FreeCADGui.listWorkbenches() | |
| # this gives workbenches a possibility to detect that we're under test environment | |
| FreeCAD.TestEnvironment = True | |
| for i in wbs: | |
| try: | |
| print("Activate workbench '{}'".format(i)) | |
| cobj = CallableCheckWarning() | |
| QtCore.QTimer.singleShot(500, cobj) | |
| if FreeCADGui.activeWorkbench().name() != i: | |
| success = FreeCADGui.activateWorkbench(i) | |
| else: | |
| # Cannot test activation of an already-active workbench | |
| success = True | |
| FreeCAD.Console.PrintLog( | |
| "Active: " + FreeCADGui.activeWorkbench().name() + " Expected: " + i + "\n" | |
| ) | |
| self.assertTrue(success, "Test on activating workbench {0} failed".format(i)) | |
| except Exception as e: | |
| self.fail("Loading of workbench '{0}' failed: {1}".format(i, e)) | |
| del FreeCAD.TestEnvironment | |
| def testHandler(self): | |
| import __main__ | |
| class UnitWorkbench(__main__.Workbench): | |
| MenuText = "Unittest" | |
| ToolTip = "Unittest" | |
| def Initialize(self): | |
| cmds = ["Test_Test"] | |
| self.appendToolbar("My Unittest", cmds) | |
| def GetClassName(self): | |
| return "Gui::PythonWorkbench" | |
| FreeCADGui.addWorkbench(UnitWorkbench()) | |
| wbs = FreeCADGui.listWorkbenches() | |
| self.assertTrue("UnitWorkbench" in wbs, "Test on adding workbench handler failed") | |
| FreeCADGui.activateWorkbench("UnitWorkbench") | |
| FreeCADGui.updateGui() | |
| self.assertTrue( | |
| FreeCADGui.activeWorkbench().name() == "UnitWorkbench", | |
| "Test on loading workbench 'Unittest' failed", | |
| ) | |
| FreeCADGui.removeWorkbench("UnitWorkbench") | |
| wbs = FreeCADGui.listWorkbenches() | |
| self.assertTrue(not "UnitWorkbench" in wbs, "Test on removing workbench handler failed") | |
| def testInvalidType(self): | |
| class MyExtWorkbench(FreeCADGui.Workbench): | |
| def Initialize(self): | |
| pass | |
| def GetClassName(self): | |
| return "App::Extension" | |
| FreeCADGui.addWorkbench(MyExtWorkbench()) | |
| with self.assertRaises(TypeError): | |
| FreeCADGui.activateWorkbench("MyExtWorkbench") | |
| FreeCADGui.removeWorkbench("MyExtWorkbench") | |
| def tearDown(self): | |
| FreeCADGui.activateWorkbench(self.Active.name()) | |
| FreeCAD.Console.PrintLog(self.Active.name()) | |
| class CommandTestCase(unittest.TestCase): | |
| def testPR6889(self): | |
| # Fixes a crash | |
| TempPath = tempfile.gettempdir() | |
| macroName = TempPath + os.sep + "testmacro.py" | |
| macroFile = open(macroName, "w") | |
| macroFile.write("print ('Hello, World!')") | |
| macroFile.close() | |
| name = FreeCADGui.Command.createCustomCommand(macroName) | |
| cmd = FreeCADGui.Command.get(name) | |
| cmd.run() | |
| class TestNavigationStyle(unittest.TestCase): | |
| def setUp(self): | |
| self.Doc = FreeCAD.newDocument("CreateTest") | |
| def testInvalidStyle(self): | |
| FreeCADGui.getDocument(self.Doc).ActiveView.setNavigationType("App::Extension") | |
| self.assertNotEqual( | |
| FreeCADGui.getDocument(self.Doc).ActiveView.getNavigationType(), "App::Extension" | |
| ) | |
| def tearDown(self): | |
| FreeCAD.closeDocument("CreateTest") | |