From c8a0172df89524fd26ebf0c4b7340baecbb7e649 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Sun, 20 Nov 2022 17:00:08 -0500 Subject: [PATCH] [TD]Add tests for geometry creation - check that edge geometry count is correct - handle delay waiting for threads to complete - add test for DrawViewDetail --- src/Mod/TechDraw/CMakeLists.txt | 1 + src/Mod/TechDraw/TDTest/DrawViewDetailTest.py | 77 +++++++++++++++++++ src/Mod/TechDraw/TDTest/DrawViewPartTest.py | 21 ++++- .../TechDraw/TDTest/DrawViewSectionTest.py | 36 +++++++-- src/Mod/TechDraw/TestTechDrawApp.py | 1 + 5 files changed, 127 insertions(+), 9 deletions(-) create mode 100644 src/Mod/TechDraw/TDTest/DrawViewDetailTest.py diff --git a/src/Mod/TechDraw/CMakeLists.txt b/src/Mod/TechDraw/CMakeLists.txt index 47238635fb..5aee9760e5 100644 --- a/src/Mod/TechDraw/CMakeLists.txt +++ b/src/Mod/TechDraw/CMakeLists.txt @@ -150,6 +150,7 @@ SET(TDTest_SRCS TDTest/DrawViewPartTest.py TDTest/DrawViewSectionTest.py TDTest/DrawViewBalloonTest.py + TDTest/DrawViewDetailTest.py TDTest/TechDrawTestUtilities.py ) diff --git a/src/Mod/TechDraw/TDTest/DrawViewDetailTest.py b/src/Mod/TechDraw/TDTest/DrawViewDetailTest.py new file mode 100644 index 0000000000..635577f17d --- /dev/null +++ b/src/Mod/TechDraw/TDTest/DrawViewDetailTest.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# test script for DrawViewDetail +# creates a page, a view and a detail view +from __future__ import print_function + +import FreeCAD +import unittest +from .TechDrawTestUtilities import createPageWithSVGTemplate +from PySide import QtCore + +class DrawViewDetailTest(unittest.TestCase): + def setUp(self): + """Creates a page""" + FreeCAD.newDocument("TDPart") + FreeCAD.setActiveDocument("TDPart") + FreeCAD.ActiveDocument = FreeCAD.getDocument("TDPart") + + FreeCAD.ActiveDocument.addObject("Part::Box", "Box") + + self.page = createPageWithSVGTemplate() + self.page.Scale = 5.0 + # page.ViewObject.show() # unit tests run in console mode + print("DrawViewDetail test: page created") + + self.view = FreeCAD.ActiveDocument.addObject("TechDraw::DrawViewPart", "View") + self.page.addView(self.view) + FreeCAD.ActiveDocument.View.Source = [FreeCAD.ActiveDocument.Box] + FreeCAD.ActiveDocument.recompute() + + #wait for threads to complete before checking result + loop = QtCore.QEventLoop() + + timer = QtCore.QTimer() + timer.setSingleShot(True) + timer.timeout.connect(loop.quit) + + timer.start(2000) #2 second delay + loop.exec_() + print("DrawViewDetail test: view created") + + def tearDown(self): + print("DrawViewDetail test finished") + FreeCAD.closeDocument("TDPart") + + def testMakeDrawViewPart(self): + """Tests if a view can be added to page""" + print("testing DrawViewDetail") + + detail = FreeCAD.ActiveDocument.addObject( + "TechDraw::DrawViewDetail", "Detail" + ) + detail.BaseView = self.view + detail.Direction = self.view.Direction + detail.XDirection = self.view.XDirection + self.page.addView(detail) + FreeCAD.ActiveDocument.recompute() + print("DrawViewDetail test: Detail created") + + #wait for threads to complete before checking result + loop = QtCore.QEventLoop() + + timer = QtCore.QTimer() + timer.setSingleShot(True) + timer.timeout.connect(loop.quit) + + timer.start(2000) #2 second delay + loop.exec_() + + edges = detail.getVisibleEdges() + + self.assertEqual(len(edges), 4, "DrawViewDetail has wrong number of edges") + self.assertTrue("Up-to-date" in detail.State, "DrawViewDetail is not Up-to-date") + +if __name__ == "__main__": + unittest.main() diff --git a/src/Mod/TechDraw/TDTest/DrawViewPartTest.py b/src/Mod/TechDraw/TDTest/DrawViewPartTest.py index d605c4a51f..07bc482750 100644 --- a/src/Mod/TechDraw/TDTest/DrawViewPartTest.py +++ b/src/Mod/TechDraw/TDTest/DrawViewPartTest.py @@ -3,11 +3,12 @@ # basic test script for TechDraw module # creates a page and 1 view +from __future__ import print_function import FreeCAD import unittest from .TechDrawTestUtilities import createPageWithSVGTemplate - +from PySide import QtCore class DrawViewPartTest(unittest.TestCase): def setUp(self): @@ -21,19 +22,33 @@ class DrawViewPartTest(unittest.TestCase): self.page = createPageWithSVGTemplate() self.page.Scale = 5.0 # page.ViewObject.show() # unit tests run in console mode - print("page created") + print("DrawViewPart test: page created") def tearDown(self): + print("DrawViewPart test finished") FreeCAD.closeDocument("TDPart") def testMakeDrawViewPart(self): """Tests if a view can be added to page""" + print("testing DrawViewPart") view = FreeCAD.ActiveDocument.addObject("TechDraw::DrawViewPart", "View") self.page.addView(view) FreeCAD.ActiveDocument.View.Source = [FreeCAD.ActiveDocument.Box] FreeCAD.ActiveDocument.recompute() - self.assertTrue("Up-to-date" in view.State) + #wait for threads to complete before checking result + loop = QtCore.QEventLoop() + + timer = QtCore.QTimer() + timer.setSingleShot(True) + timer.timeout.connect(loop.quit) + + timer.start(2000) #2 second delay + loop.exec_() + + edges = view.getVisibleEdges() + self.assertEqual(len(edges), 4, "DrawViewPart has wrong number of edges") + self.assertTrue("Up-to-date" in view.State, "DrawViewPart is not Up-to-date") if __name__ == "__main__": unittest.main() diff --git a/src/Mod/TechDraw/TDTest/DrawViewSectionTest.py b/src/Mod/TechDraw/TDTest/DrawViewSectionTest.py index 43a5158fe8..3bc9dc22ac 100644 --- a/src/Mod/TechDraw/TDTest/DrawViewSectionTest.py +++ b/src/Mod/TechDraw/TDTest/DrawViewSectionTest.py @@ -1,7 +1,7 @@ import FreeCAD import unittest from .TechDrawTestUtilities import createPageWithSVGTemplate - +from PySide import QtCore class DrawViewSectionTest(unittest.TestCase): def setUp(self): @@ -15,7 +15,7 @@ class DrawViewSectionTest(unittest.TestCase): self.page = createPageWithSVGTemplate() self.page.Scale = 5.0 # page.ViewObject.show() # unit tests run in console mode - print("page created") + print("DrawViewSection test: page created") self.view = FreeCAD.ActiveDocument.addObject("TechDraw::DrawViewPart", "View") self.page.addView(self.view) @@ -24,9 +24,22 @@ class DrawViewSectionTest(unittest.TestCase): self.view.Rotation = 0.0 self.view.X = 30.0 self.view.Y = 150.0 - print("view created") + FreeCAD.ActiveDocument.recompute() + + #wait for threads to complete before checking result + loop = QtCore.QEventLoop() + + timer = QtCore.QTimer() + timer.setSingleShot(True) + timer.timeout.connect(loop.quit) + + timer.start(2000) #2 second delay + loop.exec_() + + print("DrawViewSection test: view created") def tearDown(self): + print("DrawViewSection test: finished") FreeCAD.closeDocument("TDSection") def testMakeDrawViewSection(self): @@ -40,10 +53,21 @@ class DrawViewSectionTest(unittest.TestCase): section.Direction = (0.0, 1.0, 0.0) section.SectionNormal = (0.0, 1.0, 0.0) section.SectionOrigin = (5.0, 5.0, 5.0) - self.view.touch() - print("section created") - + print("DrawViewSection test: section created") FreeCAD.ActiveDocument.recompute() + + #wait for threads to complete before checking result + loop = QtCore.QEventLoop() + + timer = QtCore.QTimer() + timer.setSingleShot(True) + timer.timeout.connect(loop.quit) + + timer.start(2000) #2 second delay + loop.exec_() + + edges = section.getVisibleEdges() + self.assertEqual(len(edges), 4, "DrawViewSection has wrong number of edges") self.assertTrue("Up-to-date" in section.State) diff --git a/src/Mod/TechDraw/TestTechDrawApp.py b/src/Mod/TechDraw/TestTechDrawApp.py index b4b277655c..6cd69db1c6 100644 --- a/src/Mod/TechDraw/TestTechDrawApp.py +++ b/src/Mod/TechDraw/TestTechDrawApp.py @@ -29,3 +29,4 @@ from TDTest.DrawViewSectionTest import DrawViewSectionTest # noqa: F401 from TDTest.DrawViewSymbolTest import DrawViewSymbolTest # noqa: F401 from TDTest.DrawViewPartTest import DrawViewPartTest # noqa: F401 from TDTest.DrawProjectionGroupTest import DrawProjectionGroupTest # noqa: F401 +from TDTest.DrawViewDetailTest import DrawViewDetailTest # noqa: F401