From fe9e54d7d86f6e8f9d19e450b6307cd760980860 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 24 Jul 2023 11:47:40 +0200 Subject: [PATCH] Draft: add unit test for issue #9912 --- src/Mod/Draft/CMakeLists.txt | 1 + src/Mod/Draft/TestDraft.py | 2 + src/Mod/Draft/drafttests/test_array.py | 91 ++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 src/Mod/Draft/drafttests/test_array.py diff --git a/src/Mod/Draft/CMakeLists.txt b/src/Mod/Draft/CMakeLists.txt index a80f2c5a69..45a5d23e97 100644 --- a/src/Mod/Draft/CMakeLists.txt +++ b/src/Mod/Draft/CMakeLists.txt @@ -53,6 +53,7 @@ SET(Draft_tests drafttests/test_import_gui.py drafttests/test_import_tools.py drafttests/test_pivy.py + drafttests/test_array.py drafttests/test_creation.py drafttests/test_modification.py drafttests/test_svg.py diff --git a/src/Mod/Draft/TestDraft.py b/src/Mod/Draft/TestDraft.py index 6845cfb726..82bf1915de 100644 --- a/src/Mod/Draft/TestDraft.py +++ b/src/Mod/Draft/TestDraft.py @@ -110,6 +110,7 @@ from drafttests.test_dxf import DraftDXF as DraftTest06 from drafttests.test_dwg import DraftDWG as DraftTest07 # from drafttests.test_oca import DraftOCA as DraftTest08 # from drafttests.test_airfoildat import DraftAirfoilDAT as DraftTest09 +from drafttests.test_array import DraftArray as DraftTest10 # Use the modules so that code checkers don't complain (flake8) True if DraftTest01 else False @@ -121,3 +122,4 @@ True if DraftTest06 else False True if DraftTest07 else False # True if DraftTest08 else False # True if DraftTest09 else False +True if DraftTest10 else False diff --git a/src/Mod/Draft/drafttests/test_array.py b/src/Mod/Draft/drafttests/test_array.py new file mode 100644 index 0000000000..27b548842e --- /dev/null +++ b/src/Mod/Draft/drafttests/test_array.py @@ -0,0 +1,91 @@ +# *************************************************************************** +# * Copyright (c) 2023 Werner Mayer * +# * * +# * This file is part of FreeCAD. * +# * * +# * FreeCAD is free software: you can redistribute it and/or modify it * +# * under the terms of the GNU Lesser General Public License as * +# * published by the Free Software Foundation, either version 2.1 of the * +# * License, or (at your option) any later version. * +# * * +# * 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 * +# * Lesser General Public License for more details. * +# * * +# * You should have received a copy of the GNU Lesser General Public * +# * License along with FreeCAD. If not, see * +# * . * +# * * +# *************************************************************************** +"""Unit tests for the Draft Workbench, array tests.""" +## @package test_array +# \ingroup drafttests +# \brief Unit tests for the Draft Workbench, array tests. + +## \addtogroup drafttests +# @{ +import unittest +import math + +import FreeCAD as App +import Draft + +from FreeCAD import Vector +from draftutils.messages import _msg + + +class DraftArray(unittest.TestCase): + """Test Draft array functions.""" + + def setUp(self): + """Set up a new document to hold the tests. + + This is executed before every test, so we create a document + to hold the objects. + """ + doc_name = self.__class__.__name__ + if App.ActiveDocument: + if App.ActiveDocument.Name != doc_name: + App.newDocument(doc_name) + else: + App.newDocument(doc_name) + App.setActiveDocument(doc_name) + self.doc = App.ActiveDocument + _msg(" Temporary document '{}'".format(self.doc.Name)) + + def test_link_array(self): + """Create a link array.""" + box = self.doc.addObject("Part::Box","Box") + box.Label = "Box" + self.doc.recompute() + + array = Draft.make_ortho_array(box, v_x=App.Vector(100.0, 0.0, 0.0), + v_y=App.Vector(0.0, 100.0, 0.0), + v_z=App.Vector(0.0, 0.0, 100.0), + n_x=12, n_y=1, n_z=1, use_link=True) + + Draft.autogroup(array) + array.ExpandArray = True + array.Fuse = False + self.doc.recompute(None,True,True) + + array.NumberX = 6 + self.doc.recompute(None,True,True) + self.assertEqual(array.Count, array.NumberX) + + array.NumberX = 24 + self.doc.recompute(None,True,True) + self.assertEqual(array.Count, array.NumberX) + + self.doc.recompute(None,True,True) + self.assertEqual(array.Count, array.NumberX) + + def tearDown(self): + """Finish the test. + + This is executed after each test, so we close the document. + """ + App.closeDocument(self.doc.Name) + +## @}