Browse Source
Add zone filler tests.
Add zone filler tests.
One test has pads of a bunch of different shapes and provokes some errors to make sure they're caught. The others are all past issues with the zone filler to make sure we don't suffer any regressions. (They should all just pass with no DRC errors.)6.0.7
18 changed files with 189226 additions and 21 deletions
-
45pcbnew/board_commit.cpp
-
1pcbnew/drc/drc_engine.cpp
-
3986qa/data/issue2568.kicad_pcb
-
92615qa/data/issue3812.kicad_pcb
-
453qa/data/issue3812.kicad_pro
-
5982qa/data/issue5320.kicad_pcb
-
391qa/data/issue5320.kicad_pro
-
8151qa/data/issue5830.kicad_pcb
-
422qa/data/issue5830.kicad_pro
-
72671qa/data/issue6284.kicad_pcb
-
2060qa/data/issue7086.kicad_pcb
-
2169qa/data/zone_filler.kicad_pcb
-
18qa/pcbnew/CMakeLists.txt
-
233qa/pcbnew/test_zone_filler.cpp
-
6qa/pcbnew_utils/CMakeLists.txt
-
34qa/pcbnew_utils/board_file_utils.cpp
-
9qa/pcbnew_utils/include/pcbnew_utils/board_file_utils.h
-
1qa/qa_utils/CMakeLists.txt
3986
qa/data/issue2568.kicad_pcb
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
92615
qa/data/issue3812.kicad_pcb
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,453 @@ |
|||
{ |
|||
"board": { |
|||
"design_settings": { |
|||
"defaults": { |
|||
"board_outline_line_width": 0.049999999999999996, |
|||
"copper_line_width": 0.19999999999999998, |
|||
"copper_text_italic": false, |
|||
"copper_text_size_h": 1.5, |
|||
"copper_text_size_v": 1.5, |
|||
"copper_text_thickness": 0.3, |
|||
"copper_text_upright": false, |
|||
"courtyard_line_width": 0.049999999999999996, |
|||
"dimension_precision": 1, |
|||
"dimension_units": 0, |
|||
"dimensions": { |
|||
"arrow_length": 1270000, |
|||
"extension_offset": 500000, |
|||
"keep_text_aligned": true, |
|||
"suppress_zeroes": false, |
|||
"text_position": 0, |
|||
"units_format": 1 |
|||
}, |
|||
"fab_line_width": 0.09999999999999999, |
|||
"fab_text_italic": false, |
|||
"fab_text_size_h": 1.0, |
|||
"fab_text_size_v": 1.0, |
|||
"fab_text_thickness": 0.15, |
|||
"fab_text_upright": false, |
|||
"other_line_width": 0.09999999999999999, |
|||
"other_text_italic": false, |
|||
"other_text_size_h": 1.0, |
|||
"other_text_size_v": 1.0, |
|||
"other_text_thickness": 0.15, |
|||
"other_text_upright": false, |
|||
"pads": { |
|||
"drill": 0.8128, |
|||
"height": 1.397, |
|||
"width": 1.397 |
|||
}, |
|||
"silk_line_width": 0.12, |
|||
"silk_text_italic": false, |
|||
"silk_text_size_h": 1.0, |
|||
"silk_text_size_v": 1.0, |
|||
"silk_text_thickness": 0.15, |
|||
"silk_text_upright": false, |
|||
"zones": { |
|||
"45_degree_only": false, |
|||
"min_clearance": 0.508 |
|||
} |
|||
}, |
|||
"diff_pair_dimensions": [ |
|||
{ |
|||
"gap": 0.0, |
|||
"via_gap": 0.0, |
|||
"width": 0.0 |
|||
} |
|||
], |
|||
"drc_exclusions": [], |
|||
"meta": { |
|||
"version": 2 |
|||
}, |
|||
"rule_severities": { |
|||
"annular_width": "error", |
|||
"clearance": "error", |
|||
"copper_edge_clearance": "error", |
|||
"courtyards_overlap": "error", |
|||
"diff_pair_gap_out_of_range": "error", |
|||
"diff_pair_uncoupled_length_too_long": "error", |
|||
"drill_out_of_range": "error", |
|||
"duplicate_footprints": "warning", |
|||
"extra_footprint": "warning", |
|||
"hole_clearance": "error", |
|||
"hole_near_hole": "error", |
|||
"invalid_outline": "error", |
|||
"item_on_disabled_layer": "error", |
|||
"items_not_allowed": "error", |
|||
"length_out_of_range": "error", |
|||
"malformed_courtyard": "error", |
|||
"microvia_drill_out_of_range": "error", |
|||
"missing_courtyard": "ignore", |
|||
"missing_footprint": "warning", |
|||
"net_conflict": "warning", |
|||
"npth_inside_courtyard": "ignore", |
|||
"padstack": "error", |
|||
"pth_inside_courtyard": "ignore", |
|||
"shorting_items": "error", |
|||
"silk_over_copper": "error", |
|||
"silk_overlap": "error", |
|||
"skew_out_of_range": "error", |
|||
"too_many_vias": "error", |
|||
"track_dangling": "warning", |
|||
"track_width": "error", |
|||
"tracks_crossing": "error", |
|||
"unconnected_items": "error", |
|||
"unresolved_variable": "error", |
|||
"via_dangling": "warning", |
|||
"zone_has_empty_net": "error", |
|||
"zones_intersect": "error" |
|||
}, |
|||
"rule_severitieslegacy_courtyards_overlap": true, |
|||
"rule_severitieslegacy_no_courtyard_defined": true, |
|||
"rules": { |
|||
"allow_blind_buried_vias": false, |
|||
"allow_microvias": false, |
|||
"max_error": 0.005, |
|||
"min_clearance": 0.0, |
|||
"min_copper_edge_clearance": 0.01, |
|||
"min_hole_clearance": 0.0, |
|||
"min_hole_to_hole": 0.25, |
|||
"min_microvia_diameter": 0.19999999999999998, |
|||
"min_microvia_drill": 0.09999999999999999, |
|||
"min_silk_clearance": 0.0, |
|||
"min_through_hole_diameter": 0.39999999999999997, |
|||
"min_track_width": 0.19812, |
|||
"min_via_annular_width": 0.049999999999999996, |
|||
"min_via_diameter": 0.5 |
|||
}, |
|||
"track_widths": [ |
|||
0.0, |
|||
0.3, |
|||
0.4 |
|||
], |
|||
"via_dimensions": [ |
|||
{ |
|||
"diameter": 0.0, |
|||
"drill": 0.0 |
|||
} |
|||
], |
|||
"zones_allow_external_fillets": false, |
|||
"zones_use_no_outline": true |
|||
}, |
|||
"layer_presets": [] |
|||
}, |
|||
"boards": [], |
|||
"cvpcb": { |
|||
"equivalence_files": [] |
|||
}, |
|||
"erc": { |
|||
"erc_exclusions": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"pin_map": [ |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
1, |
|||
2, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
0, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
2, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
] |
|||
], |
|||
"rule_severities": { |
|||
"bus_definition_conflict": "error", |
|||
"bus_label_syntax": "error", |
|||
"bus_to_bus_conflict": "error", |
|||
"bus_to_net_conflict": "error", |
|||
"different_unit_footprint": "error", |
|||
"different_unit_net": "error", |
|||
"duplicate_reference": "error", |
|||
"duplicate_sheet_names": "error", |
|||
"extra_units": "error", |
|||
"global_label_dangling": "warning", |
|||
"hier_label_mismatch": "error", |
|||
"label_dangling": "error", |
|||
"lib_symbol_issues": "warning", |
|||
"multiple_net_names": "warning", |
|||
"net_not_bus_member": "warning", |
|||
"no_connect_connected": "warning", |
|||
"no_connect_dangling": "warning", |
|||
"pin_not_connected": "error", |
|||
"pin_not_driven": "error", |
|||
"pin_to_pin": "warning", |
|||
"power_pin_not_driven": "error", |
|||
"similar_labels": "warning", |
|||
"unannotated": "error", |
|||
"unit_value_mismatch": "error", |
|||
"unresolved_variable": "error", |
|||
"wire_dangling": "error" |
|||
} |
|||
}, |
|||
"libraries": { |
|||
"pinned_footprint_libs": [], |
|||
"pinned_symbol_libs": [] |
|||
}, |
|||
"meta": { |
|||
"filename": "kit-dev-coldfire-xilinx_5213.kicad_pro", |
|||
"version": 1 |
|||
}, |
|||
"net_settings": { |
|||
"classes": [ |
|||
{ |
|||
"bus_width": 12.0, |
|||
"clearance": 0.15, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.3, |
|||
"microvia_drill": 0.1, |
|||
"name": "Default", |
|||
"pcb_color": "rgba(0, 0, 0, 0.000)", |
|||
"schematic_color": "rgba(0, 0, 0, 0.000)", |
|||
"track_width": 0.2, |
|||
"via_diameter": 0.6, |
|||
"via_drill": 0.4, |
|||
"wire_width": 6.0 |
|||
}, |
|||
{ |
|||
"bus_width": 12.0, |
|||
"clearance": 0.15, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.3, |
|||
"microvia_drill": 0.1, |
|||
"name": "POWER", |
|||
"nets": [ |
|||
"+3.3V", |
|||
"GND", |
|||
"GNDA" |
|||
], |
|||
"pcb_color": "rgba(0, 0, 0, 0.000)", |
|||
"schematic_color": "rgba(0, 0, 0, 0.000)", |
|||
"track_width": 0.4, |
|||
"via_diameter": 0.8, |
|||
"via_drill": 0.4, |
|||
"wire_width": 6.0 |
|||
} |
|||
], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"net_colors": null |
|||
}, |
|||
"pcbnew": { |
|||
"last_paths": { |
|||
"gencad": "", |
|||
"idf": "", |
|||
"netlist": "", |
|||
"specctra_dsn": "", |
|||
"step": "", |
|||
"vmrl": "", |
|||
"vrml": "" |
|||
}, |
|||
"page_layout_descr_file": "" |
|||
}, |
|||
"schematic": { |
|||
"drawing": { |
|||
"default_bus_thickness": 12.0, |
|||
"default_junction_size": 40.0, |
|||
"default_line_thickness": 6.0, |
|||
"default_text_size": 50.0, |
|||
"default_wire_thickness": 6.0, |
|||
"field_names": [], |
|||
"intersheets_ref_prefix": "", |
|||
"intersheets_ref_short": false, |
|||
"intersheets_ref_show": false, |
|||
"intersheets_ref_suffix": "", |
|||
"junction_size_choice": 3, |
|||
"pin_symbol_size": 25.0, |
|||
"text_offset_ratio": 0.3 |
|||
}, |
|||
"legacy_lib_dir": "", |
|||
"legacy_lib_list": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"net_format_name": "Pcbnew", |
|||
"page_layout_descr_file": "", |
|||
"plot_directory": "", |
|||
"spice_adjust_passive_values": false, |
|||
"spice_external_command": "spice \"%I\"", |
|||
"subpart_first_id": 65, |
|||
"subpart_id_separator": 0 |
|||
}, |
|||
"sheets": [ |
|||
[ |
|||
"00000000-0000-0000-0000-000047d80204", |
|||
"" |
|||
], |
|||
[ |
|||
"00000000-0000-0000-0000-000047d80204", |
|||
"xilinx" |
|||
], |
|||
[ |
|||
"00000000-0000-0000-0000-000047d80202", |
|||
"inout_user" |
|||
] |
|||
], |
|||
"text_variables": {} |
|||
} |
5982
qa/data/issue5320.kicad_pcb
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,391 @@ |
|||
{ |
|||
"board": { |
|||
"design_settings": { |
|||
"defaults": { |
|||
"board_outline_line_width": 0.09999999999999999, |
|||
"copper_line_width": 0.19999999999999998, |
|||
"copper_text_italic": false, |
|||
"copper_text_size_h": 1.5, |
|||
"copper_text_size_v": 1.5, |
|||
"copper_text_thickness": 0.3, |
|||
"copper_text_upright": true, |
|||
"courtyard_line_width": 0.049999999999999996, |
|||
"dimension_precision": 1, |
|||
"dimension_units": 0, |
|||
"fab_line_width": 0.09999999999999999, |
|||
"fab_text_italic": false, |
|||
"fab_text_size_h": 1.0, |
|||
"fab_text_size_v": 1.0, |
|||
"fab_text_thickness": 0.15, |
|||
"fab_text_upright": true, |
|||
"other_line_width": 0.09999999999999999, |
|||
"other_text_italic": false, |
|||
"other_text_size_h": 1.0, |
|||
"other_text_size_v": 1.0, |
|||
"other_text_thickness": 0.15, |
|||
"other_text_upright": true, |
|||
"pads": { |
|||
"drill": 0.0, |
|||
"height": 4.191, |
|||
"width": 2.667 |
|||
}, |
|||
"silk_line_width": 0.15, |
|||
"silk_text_italic": false, |
|||
"silk_text_size_h": 1.0, |
|||
"silk_text_size_v": 1.0, |
|||
"silk_text_thickness": 0.15, |
|||
"silk_text_upright": true, |
|||
"zones": { |
|||
"45_degree_only": false, |
|||
"min_clearance": 0.2794 |
|||
} |
|||
}, |
|||
"diff_pair_dimensions": [ |
|||
{ |
|||
"gap": 0.25, |
|||
"via_gap": 0.25, |
|||
"width": 0.2 |
|||
} |
|||
], |
|||
"drc_exclusions": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"rule_severities": { |
|||
"clearance": "error", |
|||
"copper_edge_clearance": "error", |
|||
"courtyards_overlap": "error", |
|||
"drill_too_small": "error", |
|||
"duplicate_footprints": "warning", |
|||
"extra_footprint": "warning", |
|||
"hole_near_hole": "error", |
|||
"invalid_outline": "error", |
|||
"item_on_disabled_layer": "error", |
|||
"items_not_allowed": "error", |
|||
"keepout": "error", |
|||
"malformed_courtyard": "error", |
|||
"microvia_drill_too_small": "error", |
|||
"microvia_too_small": "error", |
|||
"missing_courtyard": "ignore", |
|||
"missing_footprint": "warning", |
|||
"npth_inside_courtyard": "ignore", |
|||
"padstack": "error", |
|||
"pth_inside_courtyard": "ignore", |
|||
"shorting_items": "error", |
|||
"track_dangling": "warning", |
|||
"track_width": "error", |
|||
"tracks_crossing": "error", |
|||
"unconnected_items": "error", |
|||
"unresolved_variable": "error", |
|||
"via_annulus": "error", |
|||
"via_dangling": "warning", |
|||
"via_hole_larger_than_pad": "error", |
|||
"via_too_small": "error", |
|||
"zone_has_empty_net": "error", |
|||
"zones_intersect": "error" |
|||
}, |
|||
"rules": { |
|||
"allow_blind_buried_vias": false, |
|||
"allow_microvias": false, |
|||
"max_error": 0.005, |
|||
"min_clearance": 0.127, |
|||
"min_copper_edge_clearance": 0.254, |
|||
"min_hole_to_hole": 0.254, |
|||
"min_microvia_diameter": 0.127, |
|||
"min_microvia_drill": 0.07619999999999999, |
|||
"min_through_hole_diameter": 0.254, |
|||
"min_track_width": 0.127, |
|||
"min_via_annulus": 0.127, |
|||
"min_via_diameter": 0.254, |
|||
"solder_mask_clearance": 0.0508, |
|||
"solder_mask_min_width": 0.1016, |
|||
"solder_paste_clearance": 0.0, |
|||
"solder_paste_margin_ratio": -0.0 |
|||
}, |
|||
"track_widths": [ |
|||
0.127, |
|||
0.127, |
|||
0.1524, |
|||
0.254, |
|||
0.4318, |
|||
0.508, |
|||
0.762, |
|||
1.016, |
|||
1.27 |
|||
], |
|||
"via_dimensions": [ |
|||
{ |
|||
"diameter": 0.508, |
|||
"drill": 0.254 |
|||
}, |
|||
{ |
|||
"diameter": 0.508, |
|||
"drill": 0.254 |
|||
}, |
|||
{ |
|||
"diameter": 0.762, |
|||
"drill": 0.381 |
|||
}, |
|||
{ |
|||
"diameter": 1.016, |
|||
"drill": 0.508 |
|||
}, |
|||
{ |
|||
"diameter": 1.27, |
|||
"drill": 0.635 |
|||
} |
|||
], |
|||
"zones_use_no_outline": true |
|||
}, |
|||
"layer_presets": [] |
|||
}, |
|||
"boards": [], |
|||
"cvpcb": { |
|||
"equivalence_files": [] |
|||
}, |
|||
"erc": { |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"pin_map": [ |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
1, |
|||
2, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
] |
|||
], |
|||
"rule_severities": { |
|||
"bus_definition_conflict": "error", |
|||
"bus_label_syntax": "error", |
|||
"bus_to_bus_conflict": "error", |
|||
"bus_to_net_conflict": "error", |
|||
"different_unit_footprint": "error", |
|||
"different_unit_net": "error", |
|||
"duplicate_sheet_names": "error", |
|||
"global_label_dangling": "error", |
|||
"hier_label_mismatch": "error", |
|||
"label_dangling": "error", |
|||
"multiple_net_names": "error", |
|||
"net_not_bus_member": "error", |
|||
"no_connect_connected": "error", |
|||
"no_connect_dangling": "error", |
|||
"pin_not_connected": "error", |
|||
"pin_not_driven": "error", |
|||
"pin_to_pin": "warning", |
|||
"similar_labels": "error", |
|||
"unresolved_variable": "error" |
|||
} |
|||
}, |
|||
"libraries": { |
|||
"pinned_footprint_libs": [], |
|||
"pinned_symbol_libs": [] |
|||
}, |
|||
"meta": { |
|||
"filename": "VHF_Module.kicad_pro", |
|||
"version": 1 |
|||
}, |
|||
"net_settings": { |
|||
"classes": [ |
|||
{ |
|||
"bus_width": 6.0, |
|||
"clearance": 0.127, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.127, |
|||
"microvia_drill": 0.762, |
|||
"name": "Default", |
|||
"track_width": 0.127, |
|||
"via_diameter": 0.508, |
|||
"via_drill": 0.254, |
|||
"wire_width": 6.0 |
|||
} |
|||
], |
|||
"hidden_nets": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"net_colors": null |
|||
}, |
|||
"pcbnew": { |
|||
"last_paths": { |
|||
"gencad": "", |
|||
"idf": "", |
|||
"netlist": "DC_DC_UAV_Converter.net", |
|||
"specctra_dsn": "", |
|||
"step": "../../../../Mechanical Design/JVAB/VHF Module/Rev 1.0A/VHF_Module_PCB.step", |
|||
"vmrl": "" |
|||
}, |
|||
"page_layout_descr_file": "" |
|||
}, |
|||
"schematic": { |
|||
"drawing": { |
|||
"default_bus_thickness": 12.0, |
|||
"default_junction_size": 40.0, |
|||
"default_line_thickness": 6.0, |
|||
"default_text_size": 50.0, |
|||
"default_wire_thickness": 6.0, |
|||
"field_names": [], |
|||
"pin_symbol_size": 25.0, |
|||
"text_offset_ratio": 0.3 |
|||
}, |
|||
"legacy_lib_dir": "", |
|||
"legacy_lib_list": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"net_format_name": "", |
|||
"page_layout_descr_file": "", |
|||
"plot_directory": "C:/Temp/", |
|||
"spice_adjust_passive_values": false, |
|||
"spice_external_command": "spice \"%I\"", |
|||
"subpart_first_id": 65, |
|||
"subpart_id_separator": 0 |
|||
}, |
|||
"sheets": [ |
|||
[ |
|||
"4b2c37f4-6e30-41af-bed4-d50bb6c159d5", |
|||
"" |
|||
] |
|||
], |
|||
"text_variables": {} |
|||
} |
8151
qa/data/issue5830.kicad_pcb
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,422 @@ |
|||
{ |
|||
"board": { |
|||
"design_settings": { |
|||
"defaults": { |
|||
"board_outline_line_width": 0.09999999999999999, |
|||
"copper_line_width": 0.19999999999999998, |
|||
"copper_text_italic": false, |
|||
"copper_text_size_h": 1.5, |
|||
"copper_text_size_v": 1.5, |
|||
"copper_text_thickness": 0.3, |
|||
"copper_text_upright": false, |
|||
"courtyard_line_width": 0.049999999999999996, |
|||
"dimension_precision": 1, |
|||
"dimension_units": 0, |
|||
"dimensions": { |
|||
"arrow_length": 1270000, |
|||
"extension_offset": 500000, |
|||
"keep_text_aligned": true, |
|||
"suppress_zeroes": false, |
|||
"text_position": 0, |
|||
"units_format": 1 |
|||
}, |
|||
"fab_line_width": 0.09999999999999999, |
|||
"fab_text_italic": false, |
|||
"fab_text_size_h": 1.0, |
|||
"fab_text_size_v": 1.0, |
|||
"fab_text_thickness": 0.15, |
|||
"fab_text_upright": false, |
|||
"other_line_width": 0.15, |
|||
"other_text_italic": false, |
|||
"other_text_size_h": 1.0, |
|||
"other_text_size_v": 1.0, |
|||
"other_text_thickness": 0.15, |
|||
"other_text_upright": false, |
|||
"pads": { |
|||
"drill": 0.762, |
|||
"height": 1.524, |
|||
"width": 1.524 |
|||
}, |
|||
"silk_line_width": 0.15, |
|||
"silk_text_italic": false, |
|||
"silk_text_size_h": 1.0, |
|||
"silk_text_size_v": 1.0, |
|||
"silk_text_thickness": 0.15, |
|||
"silk_text_upright": false, |
|||
"zones": { |
|||
"45_degree_only": false, |
|||
"min_clearance": 0.19999999999999998 |
|||
} |
|||
}, |
|||
"diff_pair_dimensions": [ |
|||
{ |
|||
"gap": 0.25, |
|||
"via_gap": 0.25, |
|||
"width": 0.2 |
|||
} |
|||
], |
|||
"drc_exclusions": [], |
|||
"meta": { |
|||
"version": 2 |
|||
}, |
|||
"rule_severities": { |
|||
"annular_width": "error", |
|||
"clearance": "error", |
|||
"copper_edge_clearance": "error", |
|||
"courtyards_overlap": "error", |
|||
"diff_pair_gap_out_of_range": "error", |
|||
"diff_pair_uncoupled_length_too_long": "error", |
|||
"drill_out_of_range": "error", |
|||
"duplicate_footprints": "warning", |
|||
"extra_footprint": "warning", |
|||
"hole_clearance": "error", |
|||
"hole_near_hole": "error", |
|||
"invalid_outline": "error", |
|||
"item_on_disabled_layer": "error", |
|||
"items_not_allowed": "error", |
|||
"length_out_of_range": "error", |
|||
"malformed_courtyard": "error", |
|||
"microvia_drill_out_of_range": "error", |
|||
"missing_courtyard": "ignore", |
|||
"missing_footprint": "warning", |
|||
"net_conflict": "warning", |
|||
"npth_inside_courtyard": "ignore", |
|||
"padstack": "error", |
|||
"pth_inside_courtyard": "ignore", |
|||
"shorting_items": "error", |
|||
"silk_over_copper": "warning", |
|||
"silk_overlap": "warning", |
|||
"skew_out_of_range": "error", |
|||
"too_many_vias": "error", |
|||
"track_dangling": "ignore", |
|||
"track_width": "error", |
|||
"tracks_crossing": "error", |
|||
"unconnected_items": "error", |
|||
"unresolved_variable": "error", |
|||
"via_dangling": "warning", |
|||
"zone_has_empty_net": "error", |
|||
"zones_intersect": "error" |
|||
}, |
|||
"rules": { |
|||
"allow_blind_buried_vias": false, |
|||
"allow_microvias": false, |
|||
"max_error": 0.005, |
|||
"min_clearance": 0.0, |
|||
"min_copper_edge_clearance": 0.01, |
|||
"min_hole_clearance": 0.0, |
|||
"min_hole_to_hole": 0.25, |
|||
"min_microvia_diameter": 0.19999999999999998, |
|||
"min_microvia_drill": 0.09999999999999999, |
|||
"min_silk_clearance": 0.0, |
|||
"min_through_hole_diameter": 0.3, |
|||
"min_track_width": 0.19999999999999998, |
|||
"min_via_annular_width": 0.049999999999999996, |
|||
"min_via_annulus": 0.049999999999999996, |
|||
"min_via_diameter": 0.39999999999999997, |
|||
"use_height_for_length_calcs": true |
|||
}, |
|||
"track_widths": [ |
|||
0.254 |
|||
], |
|||
"via_dimensions": [ |
|||
{ |
|||
"diameter": 0.7, |
|||
"drill": 0.4 |
|||
} |
|||
], |
|||
"zones_allow_external_fillets": false, |
|||
"zones_use_no_outline": false |
|||
}, |
|||
"layer_presets": [] |
|||
}, |
|||
"boards": [], |
|||
"cvpcb": { |
|||
"equivalence_files": [] |
|||
}, |
|||
"erc": { |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"pin_map": [ |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
1, |
|||
2, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
] |
|||
], |
|||
"rule_severities": { |
|||
"bus_definition_conflict": "error", |
|||
"bus_label_syntax": "error", |
|||
"bus_to_bus_conflict": "error", |
|||
"bus_to_net_conflict": "error", |
|||
"different_unit_footprint": "error", |
|||
"different_unit_net": "error", |
|||
"duplicate_sheet_names": "error", |
|||
"global_label_dangling": "error", |
|||
"hier_label_mismatch": "error", |
|||
"label_dangling": "error", |
|||
"multiple_net_names": "error", |
|||
"net_not_bus_member": "error", |
|||
"no_connect_connected": "error", |
|||
"no_connect_dangling": "error", |
|||
"pin_not_connected": "error", |
|||
"pin_not_driven": "error", |
|||
"pin_to_pin": "warning", |
|||
"similar_labels": "error", |
|||
"unresolved_variable": "error", |
|||
"wire_dangling": "error" |
|||
} |
|||
}, |
|||
"libraries": { |
|||
"pinned_footprint_libs": [], |
|||
"pinned_symbol_libs": [] |
|||
}, |
|||
"meta": { |
|||
"filename": "i2c-moist-sensor.kicad_pro", |
|||
"version": 1 |
|||
}, |
|||
"net_settings": { |
|||
"classes": [ |
|||
{ |
|||
"bus_width": 12.0, |
|||
"clearance": 0.1778, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.508, |
|||
"microvia_drill": 0.127, |
|||
"name": "Default", |
|||
"pcb_color": "rgba(0, 0, 0, 0.000)", |
|||
"schematic_color": "rgba(0, 0, 0, 0.000)", |
|||
"track_width": 0.254, |
|||
"via_diameter": 0.7, |
|||
"via_drill": 0.4, |
|||
"wire_width": 6.0 |
|||
}, |
|||
{ |
|||
"bus_width": 12.0, |
|||
"clearance": 0.6, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.508, |
|||
"microvia_drill": 0.127, |
|||
"name": "excitation", |
|||
"nets": [ |
|||
"/SENSOR_TRACK" |
|||
], |
|||
"pcb_color": "rgba(0, 0, 0, 0.000)", |
|||
"schematic_color": "rgba(0, 0, 0, 0.000)", |
|||
"track_width": 0.254, |
|||
"via_diameter": 0.7, |
|||
"via_drill": 0.4, |
|||
"wire_width": 6.0 |
|||
}, |
|||
{ |
|||
"bus_width": 12.0, |
|||
"clearance": 0.2032, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.508, |
|||
"microvia_drill": 0.127, |
|||
"name": "sensor", |
|||
"nets": [], |
|||
"pcb_color": "rgba(0, 0, 0, 0.000)", |
|||
"schematic_color": "rgba(0, 0, 0, 0.000)", |
|||
"track_width": 5.0, |
|||
"via_diameter": 0.7, |
|||
"via_drill": 0.4, |
|||
"wire_width": 6.0 |
|||
} |
|||
], |
|||
"meta": { |
|||
"version": 1 |
|||
}, |
|||
"net_colors": null |
|||
}, |
|||
"pcbnew": { |
|||
"last_paths": { |
|||
"gencad": "", |
|||
"idf": "", |
|||
"netlist": "", |
|||
"specctra_dsn": "", |
|||
"step": "", |
|||
"vmrl": "", |
|||
"vrml": "" |
|||
}, |
|||
"page_layout_descr_file": "" |
|||
}, |
|||
"schematic": { |
|||
"drawing": { |
|||
"default_bus_thickness": 12.0, |
|||
"default_junction_size": 40.0, |
|||
"default_line_thickness": 6.0, |
|||
"default_text_size": 60.0, |
|||
"default_wire_thickness": 6.0, |
|||
"field_names": [], |
|||
"pin_symbol_size": 25.0, |
|||
"text_offset_ratio": 0.3 |
|||
}, |
|||
"legacy_lib_dir": "", |
|||
"legacy_lib_list": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"net_format_name": "", |
|||
"page_layout_descr_file": "", |
|||
"plot_directory": "", |
|||
"spice_adjust_passive_values": false, |
|||
"spice_external_command": "spice \"%I\"", |
|||
"subpart_first_id": 65, |
|||
"subpart_id_separator": 0 |
|||
}, |
|||
"sheets": [ |
|||
[ |
|||
"461f436e-5fb7-473e-8e98-c8cc0b26cceb", |
|||
"" |
|||
] |
|||
], |
|||
"text_variables": {} |
|||
} |
72671
qa/data/issue6284.kicad_pcb
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2060
qa/data/issue7086.kicad_pcb
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2169
qa/data/zone_filler.kicad_pcb
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,233 @@ |
|||
/*
|
|||
* This program source code file is part of KiCad, a free EDA CAD application. |
|||
* |
|||
* Copyright (C) 201 KiCad Developers, see AUTHORS.txt for contributors. |
|||
* |
|||
* This program is free software; you can redistribute it and/or |
|||
* modify it under the terms of the GNU General Public License |
|||
* as published by the Free Software Foundation; either version 2 |
|||
* of the License, or (at your option) any later version. |
|||
* |
|||
* 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 General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program; if not, you may find one here: |
|||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|||
* or you may search the http://www.gnu.org website for the version 2 license,
|
|||
* or you may write to the Free Software Foundation, Inc., |
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA |
|||
*/ |
|||
|
|||
#include <string>
|
|||
|
|||
#include <wx/toplevel.h>
|
|||
|
|||
#include <qa_utils/wx_utils/unit_test_utils.h>
|
|||
#include <pcbnew_utils/board_file_utils.h>
|
|||
#include <board.h>
|
|||
#include <board_design_settings.h>
|
|||
#include <pad.h>
|
|||
#include <pcb_track.h>
|
|||
#include <footprint.h>
|
|||
#include <drc/drc_item.h>
|
|||
#include <drc/drc_engine.h>
|
|||
#include <zone_filler.h>
|
|||
#include <board_commit.h>
|
|||
#include <tool/tool_manager.h>
|
|||
#include <zone_filler_tool.h>
|
|||
#include <settings/settings_manager.h>
|
|||
|
|||
struct ZONE_FILL_TEST_FIXTURE |
|||
{ |
|||
ZONE_FILL_TEST_FIXTURE() : |
|||
m_settingsManager( true /* headless */ ) |
|||
{ |
|||
} |
|||
|
|||
void loadBoard( const wxString& relPath ) |
|||
{ |
|||
wxString boardPath = KI_TEST::GetPcbnewTestDataDir() + relPath + ".kicad_pcb"; |
|||
wxString projectPath = KI_TEST::GetPcbnewTestDataDir() + relPath + ".kicad_pro"; |
|||
|
|||
wxFileName pro( projectPath ); |
|||
|
|||
if( pro.Exists() ) |
|||
m_settingsManager.LoadProject( pro.GetFullPath() ); |
|||
|
|||
m_board = KI_TEST::ReadBoardFromFileOrStream( boardPath ); |
|||
|
|||
if( pro.Exists() ) |
|||
m_board->SetProject( &m_settingsManager.Prj() ); |
|||
|
|||
m_DRCEngine = std::make_shared<DRC_ENGINE>( m_board.get(), &m_board->GetDesignSettings() ); |
|||
m_DRCEngine->InitEngine( wxFileName() ); |
|||
m_board->GetDesignSettings().m_DRCEngine = m_DRCEngine; |
|||
|
|||
m_toolMgr = std::make_unique<TOOL_MANAGER>(); |
|||
m_toolMgr->SetEnvironment( m_board.get(), nullptr, nullptr, nullptr, nullptr ); |
|||
m_toolMgr->RegisterTool( new ZONE_FILLER_TOOL ); |
|||
} |
|||
|
|||
void fillZones( int aFillVersion ) |
|||
{ |
|||
ZONE_FILLER_TOOL* fillerTool = m_toolMgr->GetTool<ZONE_FILLER_TOOL>(); |
|||
BOARD_COMMIT commit( fillerTool ); |
|||
ZONE_FILLER filler( m_board.get(), &commit ); |
|||
std::vector<ZONE*> toFill; |
|||
|
|||
m_board->GetDesignSettings().m_ZoneFillVersion = aFillVersion; |
|||
|
|||
for( ZONE* zone : m_board->Zones() ) |
|||
toFill.push_back( zone ); |
|||
|
|||
if( filler.Fill( toFill, false, nullptr ) ) |
|||
commit.Push( _( "Fill Zone(s)" ), false, false ); |
|||
} |
|||
|
|||
SETTINGS_MANAGER m_settingsManager; |
|||
|
|||
std::unique_ptr<BOARD> m_board; |
|||
std::unique_ptr<TOOL_MANAGER> m_toolMgr; |
|||
std::shared_ptr<DRC_ENGINE> m_DRCEngine; |
|||
}; |
|||
|
|||
|
|||
BOOST_FIXTURE_TEST_SUITE( TestZoneFiller, ZONE_FILL_TEST_FIXTURE ) |
|||
|
|||
constexpr int delta = KiROUND( 0.006 * IU_PER_MM ); |
|||
|
|||
|
|||
BOOST_AUTO_TEST_CASE( RegressionZoneFillTests ) |
|||
{ |
|||
for( const wxString& relPath : { "issue2568", "issue3812", "issue5320", "issue5830", |
|||
"issue6284", "issue7086" } ) |
|||
{ |
|||
loadBoard( relPath ); |
|||
|
|||
for( int fillVersion : { 5, 6 } ) |
|||
{ |
|||
fillZones( fillVersion ); |
|||
|
|||
std::vector<DRC_ITEM> violations; |
|||
|
|||
m_DRCEngine->SetViolationHandler( |
|||
[&]( const std::shared_ptr<DRC_ITEM>& aItem, wxPoint aPos ) |
|||
{ |
|||
if( aItem->GetErrorCode() == DRCE_CLEARANCE ) |
|||
violations.push_back( *aItem ); |
|||
} ); |
|||
|
|||
m_DRCEngine->RunTests( EDA_UNITS::MILLIMETRES, true, false ); |
|||
|
|||
if( violations.empty() ) |
|||
{ |
|||
BOOST_TEST_MESSAGE( wxString::Format( "Passed: %s (V%d fill algo)", |
|||
relPath, |
|||
fillVersion ) ); |
|||
} |
|||
else |
|||
{ |
|||
std::map<KIID, EDA_ITEM*> itemMap; |
|||
m_board->FillItemMap( itemMap ); |
|||
|
|||
for( const DRC_ITEM& item : violations ) |
|||
{ |
|||
BOOST_ERROR( item.ShowReport( EDA_UNITS::MILLIMETRES, RPT_SEVERITY_ERROR, |
|||
itemMap ) ); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
BOOST_AUTO_TEST_CASE( BasicZoneFills ) |
|||
{ |
|||
loadBoard( "zone_filler" ); |
|||
|
|||
fillZones( 6 ); |
|||
|
|||
// Now that the zones are filled we're going to increase the size of -some- pads and
|
|||
// tracks so that they generate DRC errors. The test then makes sure that those errors
|
|||
// are generated, and that the other pads and tracks do -not- generate errors.
|
|||
|
|||
for( PAD* pad : m_board->Footprints()[0]->Pads() ) |
|||
{ |
|||
if( pad->GetName() == "2" || pad->GetName() == "4" || pad->GetName() == "6" ) |
|||
pad->SetSize( pad->GetSize() + wxSize( delta, delta ) ); |
|||
} |
|||
|
|||
int ii = 0; |
|||
KIID arc8; |
|||
KIID arc12; |
|||
|
|||
for( PCB_TRACK* track : m_board->Tracks() ) |
|||
{ |
|||
if( track->Type() == PCB_ARC_T ) |
|||
{ |
|||
ii++; |
|||
|
|||
if( ii == 8 ) |
|||
{ |
|||
arc8 = track->m_Uuid; |
|||
track->SetWidth( track->GetWidth() + delta + delta ); |
|||
} |
|||
else if( ii == 12 ) |
|||
{ |
|||
arc12 = track->m_Uuid; |
|||
track->Move( wxPoint( -delta, -delta ) ); |
|||
} |
|||
} |
|||
} |
|||
|
|||
bool foundPad2Error = false; |
|||
bool foundPad4Error = false; |
|||
bool foundPad6Error = false; |
|||
bool foundArc8Error = false; |
|||
bool foundArc12Error = false; |
|||
bool foundOtherError = false; |
|||
|
|||
m_DRCEngine->InitEngine( wxFileName() ); // Just to be sure to be sure
|
|||
|
|||
m_DRCEngine->SetViolationHandler( |
|||
[&]( const std::shared_ptr<DRC_ITEM>& aItem, wxPoint aPos ) |
|||
{ |
|||
if( aItem->GetErrorCode() == DRCE_CLEARANCE ) |
|||
{ |
|||
BOARD_ITEM* item_a = m_board->GetItem( aItem->GetMainItemID() ); |
|||
PAD* pad_a = dynamic_cast<PAD*>( item_a ); |
|||
PCB_TRACK* trk_a = dynamic_cast<PCB_TRACK*>( item_a ); |
|||
|
|||
BOARD_ITEM* item_b = m_board->GetItem( aItem->GetAuxItemID() ); |
|||
PAD* pad_b = dynamic_cast<PAD*>( item_b ); |
|||
PCB_TRACK* trk_b = dynamic_cast<PCB_TRACK*>( item_b ); |
|||
|
|||
if( pad_a && pad_a->GetName() == "2" ) foundPad2Error = true; |
|||
else if( pad_a && pad_a->GetName() == "4" ) foundPad4Error = true; |
|||
else if( pad_a && pad_a->GetName() == "6" ) foundPad6Error = true; |
|||
else if( pad_b && pad_b->GetName() == "2" ) foundPad2Error = true; |
|||
else if( pad_b && pad_b->GetName() == "4" ) foundPad4Error = true; |
|||
else if( pad_b && pad_b->GetName() == "6" ) foundPad6Error = true; |
|||
else if( trk_a && trk_a->m_Uuid == arc8 ) foundArc8Error = true; |
|||
else if( trk_a && trk_a->m_Uuid == arc12 ) foundArc12Error = true; |
|||
else if( trk_b && trk_b->m_Uuid == arc8 ) foundArc8Error = true; |
|||
else if( trk_b && trk_b->m_Uuid == arc12 ) foundArc12Error = true; |
|||
else foundOtherError = true; |
|||
} |
|||
} ); |
|||
|
|||
m_DRCEngine->RunTests( EDA_UNITS::MILLIMETRES, true, false ); |
|||
|
|||
BOOST_CHECK_EQUAL( foundPad2Error, true ); |
|||
BOOST_CHECK_EQUAL( foundPad4Error, true ); |
|||
BOOST_CHECK_EQUAL( foundPad6Error, true ); |
|||
BOOST_CHECK_EQUAL( foundArc8Error, true ); |
|||
BOOST_CHECK_EQUAL( foundArc12Error, true ); |
|||
BOOST_CHECK_EQUAL( foundOtherError, false ); |
|||
} |
|||
|
|||
|
|||
BOOST_AUTO_TEST_SUITE_END() |
Write
Preview
Loading…
Cancel
Save
Reference in new issue