add option type (new object will be gerber or geometry)

add tests for import_svg as gerber and geometry

fix  obj names in test_ import_svg
This commit is contained in:
Kamil Sopko
2016-04-12 21:35:04 +02:00
parent 5c80f2b6d3
commit cd57af18bc
2 changed files with 46 additions and 8 deletions

View File

@@ -17,6 +17,7 @@ class TclCommandImportSvg(TclCommand.TclCommandSignaled):
# dictionary of types from Tcl command, needs to be ordered , this is for options like -optionname value # dictionary of types from Tcl command, needs to be ordered , this is for options like -optionname value
option_types = collections.OrderedDict([ option_types = collections.OrderedDict([
('type', str),
('outname', str) ('outname', str)
]) ])
@@ -28,6 +29,7 @@ class TclCommandImportSvg(TclCommand.TclCommandSignaled):
'main': "Import an SVG file as a Geometry Object..", 'main': "Import an SVG file as a Geometry Object..",
'args': collections.OrderedDict([ 'args': collections.OrderedDict([
('filename', 'Path to file to open.'), ('filename', 'Path to file to open.'),
('type', 'Import as gerber or geometry(default).'),
('outname', 'Name of the resulting Geometry object.') ('outname', 'Name of the resulting Geometry object.')
]), ]),
'examples': [] 'examples': []
@@ -47,7 +49,7 @@ class TclCommandImportSvg(TclCommand.TclCommandSignaled):
def obj_init(geo_obj, app_obj): def obj_init(geo_obj, app_obj):
if not isinstance(geo_obj, Geometry): if not isinstance(geo_obj, Geometry):
self.raise_tcl_error('Expected Geometry, got %s %s.' % (outname, type(geo_obj))) self.raise_tcl_error('Expected Geometry or Gerber, got %s %s.' % (outname, type(geo_obj)))
geo_obj.import_svg(filename) geo_obj.import_svg(filename)
@@ -58,10 +60,18 @@ class TclCommandImportSvg(TclCommand.TclCommandSignaled):
else: else:
outname = filename.split('/')[-1].split('\\')[-1] outname = filename.split('/')[-1].split('\\')[-1]
if 'type' in args:
obj_type = args['type']
else:
obj_type = 'geometry'
if obj_type != "geometry" and obj_type != "gerber":
self.raise_tcl_error("Option type can gebe 'geopmetry' or 'gerber' only, got '%s'." % obj_type)
with self.app.proc_container.new("Import SVG"): with self.app.proc_container.new("Import SVG"):
# Object creation # Object creation
self.app.new_object("geometry", outname, obj_init) self.app.new_object(obj_type, outname, obj_init)
# Register recent file # Register recent file
self.app.file_opened.emit("svg", filename) self.app.file_opened.emit("svg", filename)

View File

@@ -15,11 +15,13 @@ import tempfile
class TclShellTest(unittest.TestCase): class TclShellTest(unittest.TestCase):
svg_files = 'tests/svg' svg_files = 'tests/svg'
svg_filename = 'Arduino Nano3_pcb.svg'
gerber_files = 'tests/gerber_files' gerber_files = 'tests/gerber_files'
copper_bottom_filename = 'detector_copper_bottom.gbr' copper_bottom_filename = 'detector_copper_bottom.gbr'
copper_top_filename = 'detector_copper_top.gbr' copper_top_filename = 'detector_copper_top.gbr'
cutout_filename = 'detector_contour.gbr' cutout_filename = 'detector_contour.gbr'
excellon_filename = 'detector_drill.txt' excellon_filename = 'detector_drill.txt'
gerber_name = "gerber"
geometry_name = "geometry" geometry_name = "geometry"
excellon_name = "excellon" excellon_name = "excellon"
gerber_top_name = "top" gerber_top_name = "top"
@@ -200,20 +202,46 @@ class TclShellTest(unittest.TestCase):
# import without outname # import without outname
self.fc.exec_command_test('import_svg "%s/%s"' % (self.svg_files, svg_file)) self.fc.exec_command_test('import_svg "%s/%s"' % (self.svg_files, svg_file))
excellon_obj = self.fc.collection.get_by_name(svg_file) obj = self.fc.collection.get_by_name(svg_file)
self.assertTrue(isinstance(excellon_obj, FlatCAMGeometry), self.assertTrue(isinstance(obj, FlatCAMGeometry),
"Expected FlatCAMGeometry, instead, %s is %s" % "Expected FlatCAMGeometry, instead, %s is %s" %
(self.excellon_name, type(excellon_obj))) (svg_file, type(obj)))
# import with outname # import with outname
outname='%s-%s' % (self.geometry_name, svg_file) 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)) self.fc.exec_command_test('import_svg "%s/%s" -outname "%s"' % (self.svg_files, svg_file, outname))
excellon_obj = self.fc.collection.get_by_name(outname) obj = self.fc.collection.get_by_name(outname)
self.assertTrue(isinstance(excellon_obj, FlatCAMGeometry), self.assertTrue(isinstance(obj, FlatCAMGeometry),
"Expected FlatCAMGeometry, instead, %s is %s" % "Expected FlatCAMGeometry, instead, %s is %s" %
(self.excellon_name, type(excellon_obj))) (outname, type(obj)))
names = self.fc.collection.get_names() names = self.fc.collection.get_names()
self.assertEqual(len(names), len(file_list)*2, self.assertEqual(len(names), len(file_list)*2,
"Expected %d objects, found %d" % (len(file_list)*2, len(file_list))) "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)))