Ejemplo n.º 1
0
class VisPyPlotCase(unittest.TestCase):
    """
    This is a top-level test covering the Gerber-to-GCode
    generation workflow.

    THIS IS A REQUIRED TEST FOR ANY UPDATES.

    """

    filenames = ['test', 'test1', 'test2', 'test3', 'test4']

    def setUp(self):
        self.app = QtGui.QApplication(sys.argv)
        apply_patches()
        # Create App, keep app defaults (do not load
        # user-defined defaults).
        self.fc = App()
        self.fc.log.setLevel(logging.ERROR)

    def tearDown(self):
        del self.fc
        del self.app

    def test_flow(self):
        for i in range(100):
            print "Test #", i + 1

            # Open test project
            self.fc.open_project(
                'tests/project_files/' +
                self.filenames[random.randint(0,
                                              len(self.filenames) - 1)])

            print "Project", self.fc.project_filename

            # Wait for project loaded and plotted
            while True:
                self.sleep(500)
                if self.fc.proc_container.view.text.text(
                ) == 'Idle.' or self.fc.ui.isHidden():
                    break

            # Interrupt on window close
            if self.fc.ui.isHidden():
                break

            # Create new project and wait for a random time
            self.fc.on_file_new()
            self.sleep(random.randint(100, 1000))

    def sleep(self, time):
        timer = QtCore.QTimer()
        el = QtCore.QEventLoop()

        timer.singleShot(time, el, QtCore.SLOT("quit()"))
        el.exec_()
Ejemplo n.º 2
0
class VisPyPlotCase(unittest.TestCase):
    """
    This is a top-level test covering the Gerber-to-GCode
    generation workflow.

    THIS IS A REQUIRED TEST FOR ANY UPDATES.

    """

    filenames = ['test', 'test1', 'test2', 'test3', 'test4']

    def setUp(self):
        self.app = QtGui.QApplication(sys.argv)
        apply_patches()
        # Create App, keep app defaults (do not load
        # user-defined defaults).
        self.fc = App()
        self.fc.log.setLevel(logging.ERROR)

    def tearDown(self):
        del self.fc
        del self.app

    def test_flow(self):
        for i in range(100):
            print "Test #", i + 1

            # Open test project
            self.fc.open_project('tests/project_files/' + self.filenames[random.randint(0, len(self.filenames) - 1)])

            print "Project", self.fc.project_filename

            # Wait for project loaded and plotted
            while True:
                self.sleep(500)
                if self.fc.proc_container.view.text.text() == 'Idle.' or self.fc.ui.isHidden():
                    break

            # Interrupt on window close
            if self.fc.ui.isHidden():
                break

            # Create new project and wait for a random time
            self.fc.on_file_new()
            self.sleep(random.randint(100, 1000))

    def sleep(self, time):
        timer = QtCore.QTimer()
        el = QtCore.QEventLoop()

        timer.singleShot(time, el, QtCore.SLOT("quit()"))
        el.exec_()
Ejemplo n.º 3
0
class PolyPaintTestCase(unittest.TestCase):
    def setUp(self):
        self.app = QtGui.QApplication(sys.argv)

        # Create App, keep app defaults (do not load
        # user-defined defaults).
        self.fc = App(user_defaults=False)

    def tearDown(self):

        for _ in range(2):
            self.app.processEvents()

        # NOTE: These are creating problems...
        # del self.fc
        # del self.app

    def test_poly_paint_svg_all(self):

        print("*********************************")
        print("*         svg_all               *")
        print("*********************************")

        # Clear workspace
        self.fc.on_file_new()
        for _ in range(2):
            self.app.processEvents()

        # Open SVG with polygons
        self.fc.import_svg('tests/svg/drawing.svg')

        name = self.fc.collection.get_names()[0]

        self.fc.collection.set_active(name)

        geo_obj = self.fc.collection.get_by_name(name)

        # Paint all polygons
        geo_obj.paint_poly_all(5, 0.2, 1)
        sleep(5)  # Todo: Do not base it on fixed time.
        for _ in range(2):
            self.app.processEvents()

        # New object should be available
        names = self.fc.collection.get_names()

        self.assertEqual(len(names), 2)

        # Verify new geometry makes sense
        painted = self.fc.collection.get_by_name(names[-1])
        for geo in painted.solid_geometry:
            # Correct Type
            self.assertTrue(isinstance(geo, LineString))
            # Lots of points (Should be 1000s)
            self.assertGreater(len(geo.coords), 2)

    def test_poly_paint_svg_click(self):

        print("*********************************")
        print("*         svg_click             *")
        print("*********************************")

        # Clear workspace
        self.fc.on_file_new()
        for _ in range(2):
            self.app.processEvents()

        # Open SVG with polygons
        self.fc.import_svg('tests/svg/drawing.svg')

        name = self.fc.collection.get_names()[0]

        self.fc.collection.set_active(name)

        geo_obj = self.fc.collection.get_by_name(name)

        # Paint all polygons
        geo_obj.paint_poly_single_click([300, 700], 5, 0.2, 1)
        sleep(5)
        for _ in range(2):
            self.app.processEvents()

        # New object should be available
        names = self.fc.collection.get_names()

        sleep(1)
        self.assertEqual(len(names), 2)

        # Verify new geometry makes sense
        painted = self.fc.collection.get_by_name(names[-1])
        for geo in painted.solid_geometry:
            # Correct Type
            self.assertTrue(isinstance(geo, LineString))
            # Lots of points (Should be 1000s)
            self.assertGreater(len(geo.coords), 2)

    def test_poly_paint_noncopper_all(self):

        print("*********************************")
        print("*         noncopper_all         *")
        print("*********************************")

        # Clear workspace
        self.fc.on_file_new()
        for _ in range(2):
            self.app.processEvents()

        self.fc.open_gerber('tests/gerber_files/simple1.gbr')
        sleep(1)
        for _ in range(2):
            self.app.processEvents()

        name = self.fc.collection.get_names()[0]

        gerber_obj = self.fc.collection.get_by_name(name)

        self.fc.collection.set_active(name)

        gerber_obj.on_generatenoncopper_button_click()
        sleep(1)
        for _ in range(2):
            self.app.processEvents()

        # New object should be available
        names = self.fc.collection.get_names()

        sleep(1)
        self.assertEqual(len(names), 2)

        geoname = "simple1.gbr_noncopper"
        geo_obj = self.fc.collection.get_by_name(geoname)
        self.fc.collection.set_active(geoname)

        geo_obj.paint_poly_all(0.02, 0.2, 0)
        sleep(5)
        for _ in range(2):
            self.app.processEvents()

        # New object should be available
        names = self.fc.collection.get_names()

        sleep(1)
        self.assertEqual(len(names), 3)

        # Verify new geometry makes sense
        painted = self.fc.collection.get_by_name(names[-1])
        for geo in painted.solid_geometry:
            # Correct Type
            self.assertTrue(isinstance(geo, LineString))
            # Lots of points (Should be 1000s)
            self.assertGreater(len(geo.coords), 2)

    def test_poly_paint_noncopper_click(self):

        print("*********************************")
        print("*         noncopper_click       *")
        print("*********************************")

        # Clear workspace
        self.fc.on_file_new()
        for _ in range(2):
            self.app.processEvents()

        self.fc.open_gerber('tests/gerber_files/simple1.gbr')
        sleep(1)
        for _ in range(2):
            self.app.processEvents()

        name = self.fc.collection.get_names()[0]

        gerber_obj = self.fc.collection.get_by_name(name)

        self.fc.collection.set_active(name)

        gerber_obj.on_generatenoncopper_button_click()
        sleep(1)
        for _ in range(2):
            self.app.processEvents()

        # New object should be available
        names = self.fc.collection.get_names()

        sleep(1)
        self.assertEqual(len(names), 2)

        geoname = "simple1.gbr_noncopper"
        geo_obj = self.fc.collection.get_by_name(geoname)
        self.fc.collection.set_active(geoname)

        geo_obj.paint_poly_single_click([2.7, 1.0], 0.02, 0.2, 0)
        sleep(5)
        for _ in range(2):
            self.app.processEvents()

        # New object should be available
        names = self.fc.collection.get_names()

        sleep(1)
        self.assertEqual(len(names), 3)

        # Verify new geometry makes sense
        painted = self.fc.collection.get_by_name(names[-1])
        for geo in painted.solid_geometry:
            # Correct Type
            self.assertTrue(isinstance(geo, LineString))
            # Lots of points (Should be 1000s)
            self.assertGreater(len(geo.coords), 2)