From 05f88af917c609a5c7f9ead5d06d0e6a707c234d Mon Sep 17 00:00:00 2001 From: Kamil Sopko Date: Sun, 24 Apr 2016 01:24:54 +0200 Subject: [PATCH 1/6] separate tcl tests into smaller chunks implement collection of tcl command tests --- tests/tclCommands/__init__.py | 17 ++++ .../tclCommands/test_TclCommandAddPolygon.py | 18 ++++ .../tclCommands/test_TclCommandAddPolyline.py | 18 ++++ tests/tclCommands/test_TclCommandImportSvg.py | 60 +++++++++++++ tests/tclCommands/test_TclCommandNew.py | 48 +++++++++++ .../tclCommands/test_TclCommandNewGeometry.py | 14 ++++ .../test_TclCommandPaintPolygon.py | 25 ++++++ tests/test_tcl_shell.py | 84 +++---------------- 8 files changed, 211 insertions(+), 73 deletions(-) create mode 100644 tests/tclCommands/__init__.py create mode 100644 tests/tclCommands/test_TclCommandAddPolygon.py create mode 100644 tests/tclCommands/test_TclCommandAddPolyline.py create mode 100644 tests/tclCommands/test_TclCommandImportSvg.py create mode 100644 tests/tclCommands/test_TclCommandNew.py create mode 100644 tests/tclCommands/test_TclCommandNewGeometry.py create mode 100644 tests/tclCommands/test_TclCommandPaintPolygon.py diff --git a/tests/tclCommands/__init__.py b/tests/tclCommands/__init__.py new file mode 100644 index 00000000..68424021 --- /dev/null +++ b/tests/tclCommands/__init__.py @@ -0,0 +1,17 @@ +import pkgutil +import sys + +# allowed command tests (please append them alphabetically ordered) +from test_TclCommandAddPolygon import * +from test_TclCommandAddPolyline import * +# from test_TclCommandCncjob import * +# from test_TclCommandDrillcncjob import * +# from test_TclCommandExportGcode import * +# from test_TclCommandExteriors import * +from test_TclCommandImportSvg import * +# from test_TclCommandInteriors import * +# from test_TclCommandIsolate import * +from test_TclCommandNew import * +from test_TclCommandNewGeometry import * +# from test_TclCommandOpenGerber import * +from test_TclCommandPaintPolygon import * diff --git a/tests/tclCommands/test_TclCommandAddPolygon.py b/tests/tclCommands/test_TclCommandAddPolygon.py new file mode 100644 index 00000000..e2099add --- /dev/null +++ b/tests/tclCommands/test_TclCommandAddPolygon.py @@ -0,0 +1,18 @@ +from FlatCAMObj import FlatCAMGeometry + + +def test_add_polygon(self): + """ + Test add polygon into geometry + :param self: + :return: + """ + + self.fc.exec_command_test('new_geometry "%s"' % self.geometry_name) + geometry_obj = self.fc.collection.get_by_name(self.geometry_name) + self.assertTrue(isinstance(geometry_obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (self.geometry_name, type(geometry_obj))) + + points = '0 0 20 0 10 10 0 10' + + self.fc.exec_command_test('add_polygon "%s" %s' % (self.geometry_name, points)) diff --git a/tests/tclCommands/test_TclCommandAddPolyline.py b/tests/tclCommands/test_TclCommandAddPolyline.py new file mode 100644 index 00000000..69c0577d --- /dev/null +++ b/tests/tclCommands/test_TclCommandAddPolyline.py @@ -0,0 +1,18 @@ +from FlatCAMObj import FlatCAMGeometry + + +def test_add_polyline(self): + """ + Test add polyline into geometry + :param self: + :return: + """ + + self.fc.exec_command_test('new_geometry "%s"' % self.geometry_name) + geometry_obj = self.fc.collection.get_by_name(self.geometry_name) + self.assertTrue(isinstance(geometry_obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (self.geometry_name, type(geometry_obj))) + + points = '0 0 20 0 10 10 0 10 33 33' + + self.fc.exec_command_test('add_polyline "%s" %s' % (self.geometry_name, points)) diff --git a/tests/tclCommands/test_TclCommandImportSvg.py b/tests/tclCommands/test_TclCommandImportSvg.py new file mode 100644 index 00000000..3db2590c --- /dev/null +++ b/tests/tclCommands/test_TclCommandImportSvg.py @@ -0,0 +1,60 @@ +from os import listdir + +from FlatCAMObj import FlatCAMGerber, FlatCAMGeometry + + +def test_import_svg(self): + """ + Test all SVG files inside svg directory. + Problematic SVG files shold be put there as test reference. + :param self: + :return: + """ + + file_list = listdir(self.svg_files) + + for svg_file in file_list: + + # import without outname + self.fc.exec_command_test('import_svg "%s/%s"' % (self.svg_files, svg_file)) + + obj = self.fc.collection.get_by_name(svg_file) + self.assertTrue(isinstance(obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (svg_file, type(obj))) + + # import with outname + outname = '%s-%s' % (self.geometry_name, svg_file) + self.fc.exec_command_test('import_svg "%s/%s" -outname "%s"' % (self.svg_files, svg_file, outname)) + + obj = self.fc.collection.get_by_name(outname) + self.assertTrue(isinstance(obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (outname, type(obj))) + + names = self.fc.collection.get_names() + self.assertEqual(len(names), len(file_list)*2, + "Expected %d objects, found %d" % (len(file_list)*2, len(file_list))) + + +def test_import_svg_as_geometry(self): + + self.fc.exec_command_test('import_svg "%s/%s" -type geometry -outname "%s"' + % (self.svg_files, self.svg_filename, self.geometry_name)) + + obj = self.fc.collection.get_by_name(self.geometry_name) + self.assertTrue(isinstance(obj, FlatCAMGeometry) and not isinstance(obj, FlatCAMGerber), + "Expected FlatCAMGeometry, instead, %s is %s" % (self.geometry_name, type(obj))) + + +def test_import_svg_as_gerber(self): + + self.fc.exec_command_test('import_svg "%s/%s" -type gerber -outname "%s"' + % (self.svg_files, self.svg_filename, self.gerber_name)) + + obj = self.fc.collection.get_by_name(self.gerber_name) + self.assertTrue(isinstance(obj, FlatCAMGerber), + "Expected FlatCAMGerber, instead, %s is %s" % (self.gerber_name, type(obj))) + + self.fc.exec_command_test('isolate "%s"' % self.gerber_name) + obj = self.fc.collection.get_by_name(self.gerber_name+'_iso') + self.assertTrue(isinstance(obj, FlatCAMGeometry), + "Expected FlatCAMGeometry, instead, %s is %s" % (self.gerber_name+'_iso', type(obj))) diff --git a/tests/tclCommands/test_TclCommandNew.py b/tests/tclCommands/test_TclCommandNew.py new file mode 100644 index 00000000..07eba0b7 --- /dev/null +++ b/tests/tclCommands/test_TclCommandNew.py @@ -0,0 +1,48 @@ +from FlatCAMObj import FlatCAMGeometry + + +def test_new(self): + """ + Test new project + :param self: + :return: + """ + + self.fc.exec_command_test('new_geometry "%s"' % self.geometry_name) + geometry_obj = self.fc.collection.get_by_name(self.geometry_name) + self.assertTrue(isinstance(geometry_obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (self.geometry_name, type(geometry_obj))) + + self.fc.exec_command_test('proc testproc {} { puts "testresult" }') + + result = self.fc.exec_command_test('testproc') + + self.assertEqual(result, "testresult",'testproc should return "testresult"') + + self.fc.exec_command_test('set_sys units MM') + self.fc.exec_command_test('new') + + # object should not exists anymore + geometry_obj = self.fc.collection.get_by_name(self.geometry_name) + self.assertIsNone(geometry_obj, "Expected object to be None, instead, %s is %s" + % (self.geometry_name, type(geometry_obj))) + + # TODO after new it should delete all procedures and variables, we need to make sure "testproc" does not exists + + # Test it again with same names + + self.fc.exec_command_test('set_sys units MM') + self.fc.exec_command_test('new') + + self.fc.exec_command_test('new_geometry "%s"' % self.geometry_name) + geometry_obj = self.fc.collection.get_by_name(self.geometry_name) + self.assertTrue(isinstance(geometry_obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (self.geometry_name, type(geometry_obj))) + + self.fc.exec_command_test('set_sys units MM') + self.fc.exec_command_test('new') + + # object should not exists anymore + geometry_obj = self.fc.collection.get_by_name(self.geometry_name) + self.assertIsNone(geometry_obj, "Expected object to be None, instead, %s is %s" + % (self.geometry_name, type(geometry_obj))) diff --git a/tests/tclCommands/test_TclCommandNewGeometry.py b/tests/tclCommands/test_TclCommandNewGeometry.py new file mode 100644 index 00000000..72e069c6 --- /dev/null +++ b/tests/tclCommands/test_TclCommandNewGeometry.py @@ -0,0 +1,14 @@ +from FlatCAMObj import FlatCAMGeometry + + +def test_new_geometry(self): + """ + Test create new geometry + :param self: + :return: + """ + + self.fc.exec_command_test('new_geometry "%s"' % self.geometry_name) + geometry_obj = self.fc.collection.get_by_name(self.geometry_name) + self.assertTrue(isinstance(geometry_obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (self.geometry_name, type(geometry_obj))) diff --git a/tests/tclCommands/test_TclCommandPaintPolygon.py b/tests/tclCommands/test_TclCommandPaintPolygon.py new file mode 100644 index 00000000..cc0c5616 --- /dev/null +++ b/tests/tclCommands/test_TclCommandPaintPolygon.py @@ -0,0 +1,25 @@ +from FlatCAMObj import FlatCAMGeometry + + +def test_paint_polygon(self): + """ + Test create paint polygon geometry + :param self: + :return: + """ + + self.fc.exec_command_test('new_geometry "%s"' % self.geometry_name) + geometry_obj = self.fc.collection.get_by_name(self.geometry_name) + self.assertTrue(isinstance(geometry_obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (self.geometry_name, type(geometry_obj))) + + points = '0 0 20 0 10 10 0 10' + + self.fc.exec_command_test('add_polygon "%s" %s' % (self.geometry_name, points)) + + # TODO rename to paint_polygon in future oop command implementation + self.fc.exec_command_test('paint_poly "%s" 5 5 2 0.5' % (self.geometry_name)) + geometry_obj = self.fc.collection.get_by_name(self.geometry_name+'_paint') + # TODO uncoment check after oop implementation, because of threading inside paint poly + #self.assertTrue(isinstance(geometry_obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + # % (self.geometry_name+'_paint', type(geometry_obj))) diff --git a/tests/test_tcl_shell.py b/tests/test_tcl_shell.py index cc415f7f..3838fff2 100644 --- a/tests/test_tcl_shell.py +++ b/tests/test_tcl_shell.py @@ -31,6 +31,10 @@ class TclShellTest(unittest.TestCase): cutout_diameter = 3 drill_diameter = 0.8 + # load test methods to split huge test file into smaller pieces + # reason for this is reuse one test window only, + from tests.tclCommands import * + @classmethod def setUpClass(self): @@ -41,6 +45,10 @@ class TclShellTest(unittest.TestCase): self.fc = App(user_defaults=False) self.fc.ui.shell_dock.show() + def setUp(self): + self.fc.exec_command_test('set_sys units MM') + self.fc.exec_command_test('new') + @classmethod def tearDownClass(self): self.fc.tcl=None @@ -65,14 +73,10 @@ class TclShellTest(unittest.TestCase): self.assertEquals(units, "MM") - def test_gerber_flow(self): + def aatest_gerber_flow(self): # open gerber files top, bottom and cutout - - self.fc.exec_command_test('set_sys units MM') - self.fc.exec_command_test('new') - self.fc.exec_command_test('open_gerber %s/%s -outname %s' % (self.gerber_files, self.copper_top_filename, self.gerber_top_name)) gerber_top_obj = self.fc.collection.get_by_name(self.gerber_top_name) self.assertTrue(isinstance(gerber_top_obj, FlatCAMGerber), @@ -159,10 +163,7 @@ class TclShellTest(unittest.TestCase): # TODO: tests for tcl - def test_open_gerber(self): - - self.fc.exec_command_test('set_sys units MM') - self.fc.exec_command_test('new') + def aatest_open_gerber(self): self.fc.exec_command_test('open_gerber %s/%s -outname %s' % (self.gerber_files, self.copper_top_filename, self.gerber_top_name)) gerber_top_obj = self.fc.collection.get_by_name(self.gerber_top_name) @@ -170,10 +171,8 @@ class TclShellTest(unittest.TestCase): "Expected FlatCAMGerber, instead, %s is %s" % (self.gerber_top_name, type(gerber_top_obj))) - def test_excellon_flow(self): + def aatest_excellon_flow(self): - self.fc.exec_command_test('set_sys units MM') - self.fc.exec_command_test('new') self.fc.exec_command_test('open_excellon %s/%s -outname %s' % (self.gerber_files, self.excellon_filename, self.excellon_name)) excellon_obj = self.fc.collection.get_by_name(self.excellon_name) self.assertTrue(isinstance(excellon_obj, FlatCAMExcellon), @@ -184,64 +183,3 @@ class TclShellTest(unittest.TestCase): self.fc.exec_command_test('mirror %s -box %s -axis X' % (self.excellon_name, self.gerber_cutout_name)) # TODO: tests for tcl - - def test_import_svg(self): - """ - Test all SVG files inside svg directory. - Problematic SVG files shold be put there as test reference. - :return: - """ - - self.fc.exec_command_test('set_sys units MM') - self.fc.exec_command_test('new') - - file_list = listdir(self.svg_files) - - for svg_file in file_list: - - # import without outname - self.fc.exec_command_test('import_svg "%s/%s"' % (self.svg_files, svg_file)) - - obj = self.fc.collection.get_by_name(svg_file) - self.assertTrue(isinstance(obj, FlatCAMGeometry), - "Expected FlatCAMGeometry, instead, %s is %s" % - (svg_file, type(obj))) - - # import with outname - outname='%s-%s' % (self.geometry_name, svg_file) - self.fc.exec_command_test('import_svg "%s/%s" -outname "%s"' % (self.svg_files, svg_file, outname)) - - obj = self.fc.collection.get_by_name(outname) - self.assertTrue(isinstance(obj, FlatCAMGeometry), - "Expected FlatCAMGeometry, instead, %s is %s" % - (outname, type(obj))) - - names = self.fc.collection.get_names() - self.assertEqual(len(names), len(file_list)*2, - "Expected %d objects, found %d" % (len(file_list)*2, len(file_list))) - - def test_import_svg_as_geometry(self): - self.fc.exec_command_test('set_sys units MM') - self.fc.exec_command_test('new') - self.fc.exec_command_test('import_svg "%s/%s" -type geometry -outname "%s"' % (self.svg_files, self.svg_filename, self.geometry_name)) - - obj = self.fc.collection.get_by_name(self.geometry_name) - self.assertTrue(isinstance(obj, FlatCAMGeometry) and not isinstance(obj, FlatCAMGerber), - "Expected FlatCAMGeometry, instead, %s is %s" % - (self.geometry_name, type(obj))) - - def test_import_svg_as_gerber(self): - self.fc.exec_command_test('set_sys units MM') - self.fc.exec_command_test('new') - self.fc.exec_command_test('import_svg "%s/%s" -type gerber -outname "%s"' % (self.svg_files, self.svg_filename, self.gerber_name)) - - obj = self.fc.collection.get_by_name(self.gerber_name) - self.assertTrue(isinstance(obj, FlatCAMGerber), - "Expected FlatCAMGerber, instead, %s is %s" % - (self.gerber_name, type(obj))) - - self.fc.exec_command_test('isolate "%s"' % self.gerber_name) - obj = self.fc.collection.get_by_name(self.gerber_name+'_iso') - self.assertTrue(isinstance(obj, FlatCAMGeometry), - "Expected FlatCAMGeometry, instead, %s is %s" % - (self.gerber_name+'_iso', type(obj))) From acb70c0cc3d59094beb05f5febb1def7c53b72c0 Mon Sep 17 00:00:00 2001 From: Kamil Sopko Date: Sun, 24 Apr 2016 21:24:56 +0200 Subject: [PATCH 2/6] implement test for test_TclCommandOpenGerber --- tests/tclCommands/__init__.py | 2 +- .../tclCommands/test_TclCommandOpenGerber.py | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/tclCommands/test_TclCommandOpenGerber.py diff --git a/tests/tclCommands/__init__.py b/tests/tclCommands/__init__.py index 68424021..0b91f03b 100644 --- a/tests/tclCommands/__init__.py +++ b/tests/tclCommands/__init__.py @@ -13,5 +13,5 @@ from test_TclCommandImportSvg import * # from test_TclCommandIsolate import * from test_TclCommandNew import * from test_TclCommandNewGeometry import * -# from test_TclCommandOpenGerber import * +from test_TclCommandOpenGerber import * from test_TclCommandPaintPolygon import * diff --git a/tests/tclCommands/test_TclCommandOpenGerber.py b/tests/tclCommands/test_TclCommandOpenGerber.py new file mode 100644 index 00000000..1510021d --- /dev/null +++ b/tests/tclCommands/test_TclCommandOpenGerber.py @@ -0,0 +1,25 @@ +from FlatCAMObj import FlatCAMGerber + + +def test_open_gerber(self): + """ + Test open gerber project + :param self: + :return: + """ + + self.fc.exec_command_test('open_gerber %s/%s -outname %s' + % (self.gerber_files, self.copper_top_filename, self.gerber_top_name)) + gerber_top_obj = self.fc.collection.get_by_name(self.gerber_top_name) + self.assertTrue(isinstance(gerber_top_obj, FlatCAMGerber), "Expected FlatCAMGerber, instead, %s is %s" + % (self.gerber_top_name, type(gerber_top_obj))) + + self.fc.exec_command_test('open_gerber %s/%s -outname %s' + % (self.gerber_files, self.copper_bottom_filename, self.gerber_bottom_name)) + gerber_bottom_obj = self.fc.collection.get_by_name(self.gerber_bottom_name) + self.assertTrue(isinstance(gerber_bottom_obj, FlatCAMGerber), "Expected FlatCAMGerber, instead, %s is %s" + % (self.gerber_bottom_name, type(gerber_bottom_obj))) + + #just read with original name + self.fc.exec_command_test('open_gerber %s/%s' + % (self.gerber_files, self.copper_top_filename)) From 23dc2059f06e1f8e3abc771f1aef7f762979fb45 Mon Sep 17 00:00:00 2001 From: sopak Date: Sun, 24 Apr 2016 22:05:07 +0200 Subject: [PATCH 3/6] implement test_TclCommandIsolate --- tests/tclCommands/__init__.py | 2 +- tests/tclCommands/test_TclCommandIsolate.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 tests/tclCommands/test_TclCommandIsolate.py diff --git a/tests/tclCommands/__init__.py b/tests/tclCommands/__init__.py index 0b91f03b..b60be8a5 100644 --- a/tests/tclCommands/__init__.py +++ b/tests/tclCommands/__init__.py @@ -10,7 +10,7 @@ from test_TclCommandAddPolyline import * # from test_TclCommandExteriors import * from test_TclCommandImportSvg import * # from test_TclCommandInteriors import * -# from test_TclCommandIsolate import * +from test_TclCommandIsolate import * from test_TclCommandNew import * from test_TclCommandNewGeometry import * from test_TclCommandOpenGerber import * diff --git a/tests/tclCommands/test_TclCommandIsolate.py b/tests/tclCommands/test_TclCommandIsolate.py new file mode 100644 index 00000000..3823d614 --- /dev/null +++ b/tests/tclCommands/test_TclCommandIsolate.py @@ -0,0 +1,18 @@ +from FlatCAMObj import FlatCAMGerber + + +def test_isolate(self): + """ + Test isolate gerber + :param self: + :return: + """ + + self.fc.exec_command_test('open_gerber %s/%s -outname %s' + % (self.gerber_files, self.copper_top_filename, self.gerber_top_name)) + gerber_top_obj = self.fc.collection.get_by_name(self.gerber_top_name) + self.assertTrue(isinstance(gerber_top_obj, FlatCAMGerber), "Expected FlatCAMGerber, instead, %s is %s" + % (self.gerber_top_name, type(gerber_top_obj))) + + # isolate traces + self.fc.exec_command_test('isolate %s -dia %f' % (self.gerber_top_name, self.engraver_diameter)) From 56ba233fd66c3b56112b6c7af4d7cb696cef0a02 Mon Sep 17 00:00:00 2001 From: sopak Date: Sun, 24 Apr 2016 22:44:28 +0200 Subject: [PATCH 4/6] implement test_TclCommandExteriors implement test_TclCommandInteriors --- tests/tclCommands/__init__.py | 4 ++-- tests/tclCommands/test_TclCommandExteriors.py | 24 +++++++++++++++++++ tests/tclCommands/test_TclCommandInteriors.py | 24 +++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 tests/tclCommands/test_TclCommandExteriors.py create mode 100644 tests/tclCommands/test_TclCommandInteriors.py diff --git a/tests/tclCommands/__init__.py b/tests/tclCommands/__init__.py index b60be8a5..0829032f 100644 --- a/tests/tclCommands/__init__.py +++ b/tests/tclCommands/__init__.py @@ -7,9 +7,9 @@ from test_TclCommandAddPolyline import * # from test_TclCommandCncjob import * # from test_TclCommandDrillcncjob import * # from test_TclCommandExportGcode import * -# from test_TclCommandExteriors import * +from test_TclCommandExteriors import * from test_TclCommandImportSvg import * -# from test_TclCommandInteriors import * +from test_TclCommandInteriors import * from test_TclCommandIsolate import * from test_TclCommandNew import * from test_TclCommandNewGeometry import * diff --git a/tests/tclCommands/test_TclCommandExteriors.py b/tests/tclCommands/test_TclCommandExteriors.py new file mode 100644 index 00000000..da47be9f --- /dev/null +++ b/tests/tclCommands/test_TclCommandExteriors.py @@ -0,0 +1,24 @@ +from FlatCAMObj import FlatCAMGerber, FlatCAMGeometry + + +def test_exteriors(self): + """ + Test exteriors + :param self: + :return: + """ + + self.fc.exec_command_test('open_gerber %s/%s -outname %s' + % (self.gerber_files, self.cutout_filename, self.gerber_cutout_name)) + gerber_cutout_obj = self.fc.collection.get_by_name(self.gerber_cutout_name) + self.assertTrue(isinstance(gerber_cutout_obj, FlatCAMGerber), "Expected FlatCAMGerber, instead, %s is %s" + % (self.gerber_cutout_name, type(gerber_cutout_obj))) + + # exteriors interiors and delete isolated traces + self.fc.exec_command_test('isolate %s -dia %f' % (self.gerber_cutout_name, self.engraver_diameter)) + self.fc.exec_command_test('exteriors %s -outname %s' + % (self.gerber_cutout_name + '_iso', self.gerber_cutout_name + '_iso_exterior')) + self.fc.exec_command_test('delete %s' % (self.gerber_cutout_name + '_iso')) + obj = self.fc.collection.get_by_name(self.gerber_cutout_name + '_iso_exterior') + self.assertTrue(isinstance(obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (self.gerber_cutout_name + '_iso_exterior', type(obj))) diff --git a/tests/tclCommands/test_TclCommandInteriors.py b/tests/tclCommands/test_TclCommandInteriors.py new file mode 100644 index 00000000..c58c380c --- /dev/null +++ b/tests/tclCommands/test_TclCommandInteriors.py @@ -0,0 +1,24 @@ +from FlatCAMObj import FlatCAMGerber, FlatCAMGeometry + + +def test_interiors(self): + """ + Test interiors + :param self: + :return: + """ + + self.fc.exec_command_test('open_gerber %s/%s -outname %s' + % (self.gerber_files, self.cutout_filename, self.gerber_cutout_name)) + gerber_cutout_obj = self.fc.collection.get_by_name(self.gerber_cutout_name) + self.assertTrue(isinstance(gerber_cutout_obj, FlatCAMGerber), "Expected FlatCAMGerber, instead, %s is %s" + % (self.gerber_cutout_name, type(gerber_cutout_obj))) + + # interiors and delete isolated traces + self.fc.exec_command_test('isolate %s -dia %f' % (self.gerber_cutout_name, self.engraver_diameter)) + self.fc.exec_command_test('interiors %s -outname %s' + % (self.gerber_cutout_name + '_iso', self.gerber_cutout_name + '_iso_interior')) + self.fc.exec_command_test('delete %s' % (self.gerber_cutout_name + '_iso')) + obj = self.fc.collection.get_by_name(self.gerber_cutout_name + '_iso_interior') + self.assertTrue(isinstance(obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (self.gerber_cutout_name + '_iso_interior', type(obj))) From 7d465f081414cded2c125adee1f2cee524bf6b3f Mon Sep 17 00:00:00 2001 From: sopak Date: Mon, 25 Apr 2016 00:36:58 +0200 Subject: [PATCH 5/6] implement tests for TCL commands --- tests/tclCommands/__init__.py | 7 ++-- tests/tclCommands/test_TclCommandCncjob.py | 17 ++++++++++ .../tclCommands/test_TclCommandDrillcncjob.py | 18 ++++++++++ .../tclCommands/test_TclCommandExportGcode.py | 33 +++++++++++++++++++ tests/tclCommands/test_TclCommandIsolate.py | 5 ++- .../test_TclCommandOpenExcellon.py | 15 +++++++++ .../tclCommands/test_TclCommandOpenGerber.py | 2 +- 7 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 tests/tclCommands/test_TclCommandCncjob.py create mode 100644 tests/tclCommands/test_TclCommandDrillcncjob.py create mode 100644 tests/tclCommands/test_TclCommandExportGcode.py create mode 100644 tests/tclCommands/test_TclCommandOpenExcellon.py diff --git a/tests/tclCommands/__init__.py b/tests/tclCommands/__init__.py index 0829032f..2d1ed5cd 100644 --- a/tests/tclCommands/__init__.py +++ b/tests/tclCommands/__init__.py @@ -4,14 +4,15 @@ import sys # allowed command tests (please append them alphabetically ordered) from test_TclCommandAddPolygon import * from test_TclCommandAddPolyline import * -# from test_TclCommandCncjob import * -# from test_TclCommandDrillcncjob import * -# from test_TclCommandExportGcode import * +from test_TclCommandCncjob import * +from test_TclCommandDrillcncjob import * +from test_TclCommandExportGcode import * from test_TclCommandExteriors import * from test_TclCommandImportSvg import * from test_TclCommandInteriors import * from test_TclCommandIsolate import * from test_TclCommandNew import * from test_TclCommandNewGeometry import * +from test_TclCommandOpenExcellon import * from test_TclCommandOpenGerber import * from test_TclCommandPaintPolygon import * diff --git a/tests/tclCommands/test_TclCommandCncjob.py b/tests/tclCommands/test_TclCommandCncjob.py new file mode 100644 index 00000000..cdd8e79f --- /dev/null +++ b/tests/tclCommands/test_TclCommandCncjob.py @@ -0,0 +1,17 @@ +from FlatCAMObj import FlatCAMGerber, FlatCAMGeometry, FlatCAMObj +from test_TclCommandIsolate import * + +def test_cncjob(self): + """ + Test cncjob + :param self: + :return: + """ + + # reuse isolate tests + test_isolate(self) + + self.fc.exec_command_test('cncjob %s_iso -tooldia 0.5 -z_cut 0.05 -z_move 3 -feedrate 300' % self.gerber_top_name) + cam_top_obj = self.fc.collection.get_by_name(self.gerber_top_name + '_iso_cnc') + self.assertTrue(isinstance(cam_top_obj, FlatCAMObj), "Expected FlatCAMObj, instead, %s is %s" + % (self.gerber_top_name + '_iso_cnc', type(cam_top_obj))) \ No newline at end of file diff --git a/tests/tclCommands/test_TclCommandDrillcncjob.py b/tests/tclCommands/test_TclCommandDrillcncjob.py new file mode 100644 index 00000000..78326d24 --- /dev/null +++ b/tests/tclCommands/test_TclCommandDrillcncjob.py @@ -0,0 +1,18 @@ +from FlatCAMObj import FlatCAMObj +from test_TclCommandOpenExcellon import * + + +def test_drillcncjob(self): + """ + Test cncjob + :param self: + :return: + """ + # reuse open excellontests + test_open_excellon(self) + + self.fc.exec_command_test('drillcncjob %s -tools all -drillz 0.5 -travelz 3 -feedrate 300' + % self.excellon_name) + cam_top_obj = self.fc.collection.get_by_name(self.excellon_name + '_cnc') + self.assertTrue(isinstance(cam_top_obj, FlatCAMObj), "Expected FlatCAMObj, instead, %s is %s" + % (self.excellon_name + '_cnc', type(cam_top_obj))) diff --git a/tests/tclCommands/test_TclCommandExportGcode.py b/tests/tclCommands/test_TclCommandExportGcode.py new file mode 100644 index 00000000..102e6e36 --- /dev/null +++ b/tests/tclCommands/test_TclCommandExportGcode.py @@ -0,0 +1,33 @@ +import os +import tempfile + +from test_TclCommandCncjob import * +from test_TclCommandDrillcncjob import * + + +def test_export_gcodecncjob(self): + """ + Test cncjob + :param self: + :return: + """ + + # reuse tests + test_cncjob(self) + test_drillcncjob(self) + + with tempfile.NamedTemporaryFile(prefix='unittest.', suffix="." + self.excellon_name + '.gcode', delete=True)\ + as tmp_file: + output_filename = tmp_file.name + self.fc.exec_command_test('write_gcode "%s" "%s"' % (self.excellon_name + '_cnc', output_filename)) + self.assertTrue(os.path.isfile(output_filename)) + os.remove(output_filename) + + with tempfile.NamedTemporaryFile(prefix='unittest.', suffix="." + self.gerber_top_name + '.gcode', delete=True)\ + as tmp_file: + output_filename = tmp_file.name + self.fc.exec_command_test('write_gcode "%s" "%s"' % (self.gerber_top_name + '_iso_cnc', output_filename)) + self.assertTrue(os.path.isfile(output_filename)) + os.remove(output_filename) + + # TODO check what is inside files , it should be same every time \ No newline at end of file diff --git a/tests/tclCommands/test_TclCommandIsolate.py b/tests/tclCommands/test_TclCommandIsolate.py index 3823d614..e61aa40b 100644 --- a/tests/tclCommands/test_TclCommandIsolate.py +++ b/tests/tclCommands/test_TclCommandIsolate.py @@ -1,4 +1,4 @@ -from FlatCAMObj import FlatCAMGerber +from FlatCAMObj import FlatCAMGerber, FlatCAMGeometry def test_isolate(self): @@ -16,3 +16,6 @@ def test_isolate(self): # isolate traces self.fc.exec_command_test('isolate %s -dia %f' % (self.gerber_top_name, self.engraver_diameter)) + geometry_top_obj = self.fc.collection.get_by_name(self.gerber_top_name+'_iso') + self.assertTrue(isinstance(geometry_top_obj, FlatCAMGeometry), "Expected FlatCAMGeometry, instead, %s is %s" + % (self.gerber_top_name+'_iso', type(geometry_top_obj))) \ No newline at end of file diff --git a/tests/tclCommands/test_TclCommandOpenExcellon.py b/tests/tclCommands/test_TclCommandOpenExcellon.py new file mode 100644 index 00000000..7570ea53 --- /dev/null +++ b/tests/tclCommands/test_TclCommandOpenExcellon.py @@ -0,0 +1,15 @@ +from FlatCAMObj import FlatCAMExcellon + + +def test_open_excellon(self): + """ + Test open excellon file + :param self: + :return: + """ + + self.fc.exec_command_test('open_excellon %s/%s -outname %s' + % (self.gerber_files, self.excellon_filename, self.excellon_name)) + excellon_obj = self.fc.collection.get_by_name(self.excellon_name) + self.assertTrue(isinstance(excellon_obj, FlatCAMExcellon), "Expected FlatCAMExcellon, instead, %s is %s" + % (self.excellon_name, type(excellon_obj))) diff --git a/tests/tclCommands/test_TclCommandOpenGerber.py b/tests/tclCommands/test_TclCommandOpenGerber.py index 1510021d..71d50b0d 100644 --- a/tests/tclCommands/test_TclCommandOpenGerber.py +++ b/tests/tclCommands/test_TclCommandOpenGerber.py @@ -3,7 +3,7 @@ from FlatCAMObj import FlatCAMGerber def test_open_gerber(self): """ - Test open gerber project + Test open gerber file :param self: :return: """ From f9260daa1770de08acf3430ef004c8645761a9dd Mon Sep 17 00:00:00 2001 From: sopak Date: Mon, 25 Apr 2016 00:40:14 +0200 Subject: [PATCH 6/6] remove forgotten aa debug prefix names --- tests/test_tcl_shell.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_tcl_shell.py b/tests/test_tcl_shell.py index 3838fff2..be1f81d0 100644 --- a/tests/test_tcl_shell.py +++ b/tests/test_tcl_shell.py @@ -73,7 +73,7 @@ class TclShellTest(unittest.TestCase): self.assertEquals(units, "MM") - def aatest_gerber_flow(self): + def test_gerber_flow(self): # open gerber files top, bottom and cutout @@ -163,7 +163,7 @@ class TclShellTest(unittest.TestCase): # TODO: tests for tcl - def aatest_open_gerber(self): + def test_open_gerber(self): self.fc.exec_command_test('open_gerber %s/%s -outname %s' % (self.gerber_files, self.copper_top_filename, self.gerber_top_name)) gerber_top_obj = self.fc.collection.get_by_name(self.gerber_top_name) @@ -171,7 +171,7 @@ class TclShellTest(unittest.TestCase): "Expected FlatCAMGerber, instead, %s is %s" % (self.gerber_top_name, type(gerber_top_obj))) - def aatest_excellon_flow(self): + def test_excellon_flow(self): self.fc.exec_command_test('open_excellon %s/%s -outname %s' % (self.gerber_files, self.excellon_filename, self.excellon_name)) excellon_obj = self.fc.collection.get_by_name(self.excellon_name)