Commit Graph

210 Commits

Author SHA1 Message Date
Jeff Young c5ed80af52 Harmonize rotate APIs. 2024-04-06 09:34:56 +01:00
Jon Evans 1dbe78c68b Add QA tests and expand serialization for API 2024-04-02 19:51:18 -04:00
Jon Evans 6bd02cae6d Refactor; add user control over API server 2024-04-02 19:51:18 -04:00
Jon Evans f613cd1cb4 ADDED: A new IPC API based on protobuf and nng
Details, documentation, and language bindings are works in
progress and will be evolving over the course of KiCad 9
development.
2024-04-02 19:34:36 -04:00
Seth Hillbrand 553e4a25bf Tidy up some remaining triangulation cases
Found and fixed a few corner cases where triangulation point removal
could reset expected points
2024-04-01 11:48:12 -07:00
Seth Hillbrand 06b199fd41 Do not use cache when we modify vertices
When we add vertices to the tesselation routines, we cannot reuse these
without the original vertex points.

It may be possible to copy and modify the vertices from the hint data so
that they are properly positioned but naive attempts (moving based on
first point) did not work, so for now, we disable the hint cache when
the vertex sizes do not match as this prevents OOB access

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17621
2024-03-31 15:00:46 -07:00
Roberto Fernandez Bautista 6078bc52eb PNS: Fix a few memory leaks 2024-03-31 18:21:02 +02:00
Seth Hillbrand c3f6a84d66 Update triangulation to handle poly-intersection
Polygon intersections happen against the original outline, not against
the currently remaining polygon.  This avoids pathalogical cases

Adds new simplification system to avoid duplicated points
Adds new edge-splitting algorithm to provide additional fall-back
Verifies that polygon cuts do not swap holes for outlines (negative
area)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17559
2024-03-28 10:16:24 -07:00
Marek Roszko ab759d21f2 Fix more build warnings 2024-03-23 08:53:11 -04:00
Seth Hillbrand 6b915049d1 Check singular arcs connection
Even if there are no other segments in the line chain, we still should
check for arc connections in cases of individual arcs on a line chain
2024-03-22 10:41:42 -07:00
Marek Roszko 83ef5fd7d6 Move PGM_BASE to kicommon 2024-03-20 23:29:42 -04:00
JamesJ 2311eed08a Add new ERC rule to check for global labels with only one entry in the schematic
By default this rule is set to ignore to provide continuity for those using
single global labels to name nets (e.g. in simulation)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/13212
2024-03-17 23:24:43 +00:00
Seth Hillbrand 3cc1617f5a Fix slow selection time when calculating clearance
The clearance between two zones could be rather slow.  This was in part
to trying to do triangle-triangle collisions between zones when we only
need outline collision and in part to the shape_line_chain collision
routine.  The shape_line_chain collisions don't need to recreate
segments on each iteration and should instead create them once and using
this to check all collisions

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17327
2024-03-11 16:32:24 -07:00
Roberto Fernandez Bautista 43e1b36d4d SHAPE_LINE_CHAIN: Fix indices rotation after clipper
Also fix IsArcStart and IsArcEnd functions to work with chains that only
have arcs.
2024-03-02 12:09:09 +00:00
Roberto Fernandez Bautista 5920ee4598 SHAPE_LINE_CHAIN: Add test case of seg+large angle arc 2024-03-02 12:09:09 +00:00
Alex Shvartzkop defcb49ac8 Support Altium Schematic ASCII import 2024-02-29 20:49:20 +00:00
Jeff Young 532645c9b0 Add tables to eeItem test. 2024-02-25 21:08:38 +00:00
Jeff Young 3b560cef50 Fix some test errors. 2024-02-25 13:43:45 +00:00
Jeff Young f77de66f4e Generalize ERCItem inspections.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10539
2024-02-24 20:05:51 +00:00
Jon Evans 835a82f0b9 Attempt to disable flaky tests for now
Issue8003 causes failures on some Ubuntu systems.
Disabling until we understand why.
2024-02-16 20:11:46 -05:00
Jon Evans e427099cff Disable flaky ngspice tests
These need to be re-done in a way that is more
tolerant of the inherent instability/noise in
the simulated circuits (or more ideally, changed
to test a particular thing that can be more
well-defined rather than just simulating a circuit
and seeing if the numbers come out a certain way)
2024-02-08 18:46:30 -05:00
Jeff Young 1e6986d2f5 Don't report starved thermals when connected only to isolated islands.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16866
2024-02-07 14:09:03 +00:00
Roberto Fernandez Bautista 7276486756 Finish fixing SHAPE_LINE_CHAIN::Slice 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 79aba50c23 Finish fixing SHAPE_LINE_CHAIN::NextShape and add tests 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista effed5dfdf Fix SHAPE_LINE_CHAIN::Remove and SHAPE_LINE_CHAIN::RemoveShape 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 673e23c2e6 Fix and simplify SHAPE_LINE_CHAIN::Append( SHAPE_ARC ) + QA tests 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 34942290a2 SHAPE_LINE_CHAIN: Fix SetClosed() logic
SetClosed should unwrap the chain when there are coincident points at the
start.
2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 7593863245 SHAPE_LINE_CHAIN: Fix and simplify ShapeCount()
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15754
2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista c72ba189cf Fix SHAPE_LINE_CHAIN::Slice following NextShape() changes 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista e9fbb36538 SHAPE_LINE_CHAIN: Fix and simplify NextShape() + remove PrevShape()
NextShape() function was too complex (trying to go back and forwards).
We only used PrevShape() in one place, so removed that usage.

Added QA tests
2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 079478f989 EDA_ANGLE: use constexpr for constant angles
Remove all statics in the class and instead use constexpr to
ensure correct ordering
2024-01-31 19:17:46 +03:00
Jeff Young ae735d3eb4 Renaming: replace convert with body-style.
No functional changes.
2024-01-26 16:21:03 +00:00
Marek Roszko 1981997ee2 Dump the ERC report as part of the erc failure 2024-01-21 16:10:43 -05:00
Jeff Young e04cd8743c Separate out Pad_Shape so auto-complete can work.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16566
2024-01-10 19:56:46 +00:00
Jeff Young 27c253780d Separate out Pad_Shape so auto-complete can work. 2024-01-10 19:22:05 +00:00
Jon Evans 104aa1abe4 Change prettifier QA to not depend on file format changes
Instead of writing out and reading back in using the plugin,
just test the formatter itself.

Also add support for testing full boards.
2024-01-01 13:38:16 -05:00
jean-pierre charras 58b7eda47a QA test( test_prettifier) update golden files and fix a warning message. 2024-01-01 10:57:32 +01:00
John Beard 751c88ef20 Use 'uuid' (not 'id') in the s-expr PCB groups/generator format
Add some regression tests to check loading of groups and generators
from various versions of the s-expr PCB format.
2023-12-31 23:09:26 +00:00
Jon Evans ea0673e7a0 Do not merge buses of distinct types
Previously, this code would merge a vector bus
with a group bus containing the vector as a member.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16439
2023-12-30 10:54:24 -05:00
Jon Evans 2ecf1ac23f Change regression test for #13162 to be less complex
We are really only testing that `Rload1` works,
and the original testcase is unstable on some platforms.
2023-12-29 13:18:46 -05:00
Ian McInerney f2702b223c Introduce base IO_MGR class and unify RELEASER objects
The IO_RELEASER is a thin-wrapper around a std::unique_ptr, but done
this way to allow easier addition of a custom deleter in the future if
something needs to call back into the IO_MGR.
2023-12-29 00:37:38 +00:00
Marek Roszko 9a890cdba9 Kick the wildcards and file exts into a static class, export it from kicommon 2023-12-27 21:10:01 -05:00
Ian McInerney e6632bb983 Rename PCB IO classes/files 2023-12-24 01:22:21 +00:00
Ian McInerney d8b47d18d3 Initial rename of file plugin infrastructure components to IO 2023-12-24 01:22:21 +00:00
Ian McInerney 5c334c147b Make some types auto-reference to prevent copies 2023-12-19 14:23:36 +00:00
Wayne Stambaugh a4b38fbb80 Coverity warning fixes. 2023-12-18 16:09:13 -05:00
Wayne Stambaugh eb3fd10af8 Fix obscured object selection issue in board and footprint editors.
This selection improvement feature is hidden behind the advanced
configuration key "PcbSelectionVisibilityRatio".  It is turned off (1.0)
by default.  Value values are from 0.0 to less that 1.0.  From testing,
using a value between 0.1 and 0.3 produces the best results.

This fix uses normal alpha blending described in the link below.  The
current design only uses the alpha of the object's color.  It could be
improved by doing a full color alpha blending but using the color alpha
alone seems to result in satisfactory results.

https://en.wikipedia.org/wiki/Alpha_compositing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16126
2023-12-17 16:43:56 -05:00
jean-pierre charras d8b1e3fcb3 test_prettifier: Better warning message for commit 8e647c24 2023-12-16 13:30:06 +01:00
jean-pierre charras 8e647c24b4 QA test, prettifier: Update golden files to the latest version.
Add also a warning when a golden file is too old and creates comparison error.
2023-12-16 10:49:23 +01:00
John Beard e41f5efb03 Use modern bool style for footprint locking (locked yes)
Add some simple tests for specific footprint load/save checks
(including round-trip stability)
2023-12-14 21:22:59 +00:00
John Beard 481fa1f959 Allow PCB reference image locking and UUID to be saved
Add some unit tests for reference image saving/loading.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16334
2023-12-14 21:22:59 +00:00
jean-pierre charras b9a5e04ad0 Workaround to fix a QA not working test on platforms is Python older than 3.9
A Pcbnew Python test in QA cli (to test SVG outputs) fails in old Python
because it uses a function only existing in Python 3.9 and newer.
So skip this test for older Python version
2023-12-14 11:57:10 +01:00
Wayne Stambaugh 078ba510b4 Remove empty QA layer test file stub from build list. 2023-12-11 16:42:38 -05:00
Wayne Stambaugh 5fa274ead0 Add board layer view stack up sequence from front layer to back layer.
The old bottom to top layer stack up sequence from back to front layer was
only used for plotting so it was renamed appropriately.  This will be used
for future board object select disambiguation improvements.
2023-12-11 15:07:58 -05:00
Jeff Young 1adf96d879 Update gold failure count. 2023-12-11 16:45:13 +00:00
Jeff Young 931cec862e Non-plated slots are effectively edges.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16267
2023-12-09 21:06:40 +00:00
Jeff Young e0a34efcb7 Use a more self-documenting API for router preview item flags.
Also fixes a bug where rule areas were drawn with solid fills.
2023-12-08 16:02:15 +00:00
jean-pierre charras 096bcff160 Try to fix a QA not working test on W10/msys2.
Probably due to a not closed file when trying to delete it.
2023-12-07 20:01:22 +01:00
Seth Hillbrand 343828c552 Fix invalid string compare in IBIS parser
strcmp returns 0 if strings are the same but compareIbisWord returns
True (1).

Adds an IBIS simulation QA test case to catch this in the future

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16223

(cherry picked from commit ef8b6bf9e1)
2023-11-30 09:16:38 -08:00
Marek Roszko 56b7f91361 Format the std::filesystem path directly 2023-11-29 14:27:08 -05:00
Jon Evans cb12464865 Potentially fix MSVC build 2023-11-29 13:10:56 -05:00
Jon Evans f1f8981395 Automatic whitespace and indentation prettification for sexpr formats 2023-11-29 16:17:41 +00:00
Seth Hillbrand 9e48b388fe Add additional QA sliver check 2023-11-28 16:02:39 -08:00
Ian McInerney b64631d7bc Add um support to the unit binder 2023-11-26 00:03:09 +00:00
Alex Shvartzkop 7e68da7f7f QA: show more info in TestCalcArcCenter3Pts. 2023-11-25 20:09:51 +03:00
Alex Shvartzkop b7824adfb1 QA: add a test for CalcArcCenter( aStart, aMid, aEnd ) 2023-11-25 18:37:53 +03:00
Jon Evans a2379f4111 Altium QA: Fix issue with newer wx
Now uses std::from_chars and + prefix must be stripped
2023-11-24 16:00:42 -05:00
Jeff Young f25a06b2a5 More globals eradication.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16031
2023-11-12 23:43:30 +00:00
Jeff Young 2e311f59a8 Regression test for variable resolution in complex hierarchies. 2023-11-12 14:30:47 +00:00
Seth Hillbrand fe46fafa98 Add regression test for previous hier label issue 2023-11-09 06:20:52 -08:00
Roberto Fernandez Bautista 09f1df6c94 CADSTAR Parts: Add QA test for +N0 root with no parts 2023-11-08 22:53:14 +01:00
Jeff Young abda3c0d33 Handle various keepout flags independently.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16037
2023-11-07 11:57:23 +00:00
Alex Shvartzkop a39f0c2c2f QA: update track cleaner expected value. 2023-11-06 17:43:52 +03:00
Jon Evans 1a7cc88b97 Add (failing) QA test for #16003
Also remove old test_netlists.cpp that should have been removed long ago
2023-10-31 12:57:14 -04:00
Jeff Young 19ca7cedaa Better test reporting.
(This make it clear in the failure message which is the expected
value and which is the actual value.)
2023-10-31 12:10:21 +00:00
Jon Evans 1b9062bd9f QA: show violation info before failing DRC regressions 2023-10-30 00:16:58 -04:00
Wayne Stambaugh 30ba1b8007 Coverity warning fix.
This fixes all of the warnings cause by using std::weak_ptr objects when
recursing the symbol inheritance tree to retrieve the root symbol.  The
issue is that the weak pointers are not guaranteed to be valid for each
recursion because the lock will go out of scope.  Using a std::shared_ptr
object will ensure the lock is valid until it goes out of scope.
2023-10-28 13:25:30 -04:00
Jeff Young 791aa64950 Functionally it's a "reference image".
The implementation happens to be a "bitmap".

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15932
2023-10-24 15:44:21 +01:00
jean-pierre charras 76e1babb88 qa test, test_lib_part.cpp: add missing initialization of parent field member 2023-10-21 10:39:11 +02:00
Jeff Young 2450250ae7 Use "tuning pattern" in the GUI. 2023-10-15 17:59:11 +01:00
Seth Hillbrand dc47d251f5 Fix richio vprint
stdlib checks do not allow dereferencing the first element of a vector
when there are no elements in the vector (regardless of whether we have
allocated memory for them).  This whole function is rather
over-engineered, setting up multiple allocations and branches depending
of the string size.  This commit reduces the function to the actions
needed (get the string size, print it into the output)
2023-10-10 10:58:37 -07:00
Wayne Stambaugh 9ff8d02e60 Symbol library manager object changes.
* Fix issue handling symbols with multiple inheritance.
* Remove unused code from the symbol library manager object.
* Splits out the library buffer and symbol buffer object so the can be unit
  tested without having to mock the symbol library manager object.
* Add unit tests for library buffer and symbol buffer objects.
2023-10-09 14:58:49 -04:00
Alex Shvartzkop f47cc39208 Add generators to test_board_item.cpp 2023-10-08 02:41:17 +00:00
Marek Roszko b5ab807568 Add common to qa test path 2023-10-07 21:28:28 -04:00
Jeff Young 31c488bc23 NETINFO_ITEMs are owned by BOARD.
Lifecylce management must go through BOARD_COMMIT (or at least
the frame's undo/redo lists).
2023-10-04 21:01:33 +01:00
Thomas Pointhuber 7005dd7c48 altium: make special string parsing on pcb a bit more generic
Only special strings starting with a dot are supported. Parsing of concatenated special strings using quotes needs to be implemented, but at least a few test-cases are already there now.
2023-10-01 15:10:50 +02:00
John Beard fb12db5f2c Add regression test for arc winding
While the bug has been fixes, the winding handling in the
SetArcGeometry() function isn't tested. This adds a regression
test on EDA_SHAPE, which is where the logic now lives.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/15694
2023-09-20 02:27:46 +01:00
Jon Evans 6f9af10912 DbLib: support columns with numeric data
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15662
2023-09-16 22:37:12 -04:00
Wayne Stambaugh 5e86ba1abe Fix several library symbol multiple inheritance issues. 2023-09-15 07:24:10 -04:00
Seth Hillbrand cb1231382f Fix connectivity regression
We have a break somewhere in the connectivity that doesn't fully process
connections but the current code seems to catch these by forcing a
top-down & bottom-up calculation

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14818
2023-09-14 14:39:51 -07:00
Roberto Fernandez Bautista f48c125c3c CLI QA: Create a diff image highlighting areas of difference in red 2023-09-13 17:37:26 +00:00
Roberto Fernandez Bautista ea648d67e6 QA: Close images after comparing 2023-09-13 17:37:26 +00:00
Roberto Fernandez Bautista ca8790fd8d CLI Gerber QA test: Generate png tiles instead of full (save memory) 2023-09-13 17:37:26 +00:00
Roberto Fernandez Bautista f49125da31 QA: Add kicad-cli pcb export gerber tests 2023-09-13 17:37:26 +00:00
Marek Roszko 1a6d459fb1 Fix wrong path slash 2023-09-07 22:09:26 -04:00
Marek Roszko 5da88d1d0e Move UTF8 to core 2023-09-07 20:55:16 -04:00
Alex Shvartzkop 83afdd297e Use UTF-8 encoding in test_io_mgr.cpp. 2023-09-07 12:56:53 +03:00
Alex Shvartzkop 79c86445d2 QA: add plugin type tests for EasyEDA. 2023-09-07 11:02:40 +03:00
John Beard 78c8de9b08 Fix oval pad snapping
Previously the snap points computed for oval pads didn't get all the
points correct. This breaks out the "find snap points for ovals"
into a function, reworks the logic, adds some tests.

Also adds "extremum points" when the oval isn't exactly H/V.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/15594
2023-09-06 21:33:45 +01:00
Jeff Young 7a2a2e2df0 Remove error-prone SetReporter() API. 2023-09-06 11:37:50 +01:00