diff --git a/src/Mod/PartDesign/CMakeLists.txt b/src/Mod/PartDesign/CMakeLists.txt index a4cfe14094..c48cc9679b 100644 --- a/src/Mod/PartDesign/CMakeLists.txt +++ b/src/Mod/PartDesign/CMakeLists.txt @@ -55,9 +55,14 @@ set(PartDesign_TestScripts PartDesignTests/TestThickness.py PartDesignTests/TestTopologicalNamingProblem.py PartDesignTests/TestInvoluteGear.py - PartDesignTests/TestHelix.py ) +if(BUILD_GUI) + list(APPEND PartDesign_TestScripts + PartDesignTests/TestMaterial.py + ) +endif(BUILD_GUI) + set(PartDesign_TestFixtures PartDesignTests/Fixtures/InvoluteGear_v0-20.FCStd PartDesignTests/Fixtures/InternalInvoluteGear_v0-20.FCStd diff --git a/src/Mod/PartDesign/Gui/ViewProviderPy.xml b/src/Mod/PartDesign/Gui/ViewProviderPy.xml index ff5b2104fd..0cdb9893ba 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPy.xml +++ b/src/Mod/PartDesign/Gui/ViewProviderPy.xml @@ -1,14 +1,14 @@ + FatherInclude="Mod/Part/Gui/ViewProviderPartExtPy.h" + FatherNamespace="PartGui"> This is the father of all PartDesign ViewProvider classes diff --git a/src/Mod/PartDesign/PartDesignTests/TestMaterial.py b/src/Mod/PartDesign/PartDesignTests/TestMaterial.py new file mode 100644 index 0000000000..78200d19a6 --- /dev/null +++ b/src/Mod/PartDesign/PartDesignTests/TestMaterial.py @@ -0,0 +1,96 @@ +#*************************************************************************** +#* Copyright (c) 2024 David Carter * +#* * +#* 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. * +#* * +#* This program 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 this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import unittest + +import FreeCAD + +class TestMaterial(unittest.TestCase): + def setUp(self): + self.Doc = FreeCAD.newDocument("PartDesignTestMaterial") + + def compareColors(self, c1, c2): + # Colors are in the form of tuples + self.assertEqual(len(c1), 4) + self.assertEqual(len(c2), 4) + self.assertAlmostEqual(c1[0], c2[0]) + self.assertAlmostEqual(c1[1], c2[1]) + self.assertAlmostEqual(c1[2], c2[2]) + self.assertAlmostEqual(c1[3], c2[3]) + + def testDiffuseColor(self): + print("PartDesignTestMaterial.testDiffuseColor()") + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.Box = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Body.addObject(self.Box) + self.Box.Length=10.00 + self.Box.Width=10.00 + self.Box.Height=10.00 + self.Doc.recompute() + + self.Body.ViewObject.DiffuseColor = [(1.,0.,0.,0.), + (.9,0.,0.,0.), + (.8,0.,0.,0.), + (.7,0.,0.,0.), + (.6,1.,0.,0.), + (.5,1.,0.,0.)] + self.Doc.recompute() + self.assertEqual(len(self.Body.ViewObject.DiffuseColor), 6) + colors = self.Body.ViewObject.DiffuseColor + self.compareColors(colors[0], (1.,0.,0.,0.)) + self.compareColors(colors[1], (.9,0.,0.,0.)) + self.compareColors(colors[2], (.8,0.,0.,0.)) + self.compareColors(colors[3], (.7,0.,0.,0.)) + self.compareColors(colors[4], (.6,1.,0.,0.)) + self.compareColors(colors[5], (.5,1.,0.,0.)) + + self.Body.ViewObject.DiffuseColor = [(1.,0.,0.,0.)] + self.Doc.recompute() + self.assertEqual(len(self.Body.ViewObject.DiffuseColor), 1) + colors = self.Body.ViewObject.DiffuseColor + self.compareColors(colors[0], (1.,0.,0.,0.)) + + self.Box.ViewObject.DiffuseColor = [(1.,0.,0.,0.), + (.9,0.,0.,0.), + (.8,0.,0.,0.), + (.7,0.,0.,0.), + (.6,1.,0.,0.), + (.5,1.,0.,0.)] + self.Doc.recompute() + self.assertEqual(len(self.Box.ViewObject.DiffuseColor), 6) + colors = self.Box.ViewObject.DiffuseColor + self.compareColors(colors[0], (1.,0.,0.,0.)) + self.compareColors(colors[1], (.9,0.,0.,0.)) + self.compareColors(colors[2], (.8,0.,0.,0.)) + self.compareColors(colors[3], (.7,0.,0.,0.)) + self.compareColors(colors[4], (.6,1.,0.,0.)) + self.compareColors(colors[5], (.5,1.,0.,0.)) + + self.Box.ViewObject.DiffuseColor = [(1.,0.,0.,0.)] + self.Doc.recompute() + self.assertEqual(len(self.Box.ViewObject.DiffuseColor), 1) + colors = self.Box.ViewObject.DiffuseColor + self.compareColors(colors[0], (1.,0.,0.,0.)) + + def tearDown(self): + #closing doc + FreeCAD.closeDocument("PartDesignTestMaterial") + # print ("omit closing document for debugging") diff --git a/src/Mod/PartDesign/TestPartDesignGui.py b/src/Mod/PartDesign/TestPartDesignGui.py index d6b6f458f7..1e92c08180 100644 --- a/src/Mod/PartDesign/TestPartDesignGui.py +++ b/src/Mod/PartDesign/TestPartDesignGui.py @@ -34,6 +34,8 @@ import tempfile from PySide import QtGui, QtCore from PySide.QtGui import QApplication +from PartDesignTests.TestMaterial import TestMaterial + #timer runs this class in order to access modal dialog class CallableCheckWorkflow: def __init__(self, test):