pcb has two testing frameworks:

- Unit Tests
  The first uses the glib testing framework to execute function and object low-level tests of the code directly. These tests are generally contained by the files defining the code to be tested.
- Application tests
  The second uses the meager scriptability of pcb to test functions at a higher level. These tests are contained in the tests/ directory of the source tree, and are run using the run_tests.sh script.

### To Do List

#### Geometry Tests

All of the geometry functions need tests. I've been trying to compile a list of functions that need tests. Many of these are indirectly tested through the DRC tests, but that isn't really as thorough as it ought to be.

- search.c
  - IsPointOnLine
  - IsPointOnPin
  - IsPointOnArc
  - IsPointOnLineEnd
  - IsLineInRectangle
  - IsLineInQuadrangle
  - IsArcInRectangle
  - IsPointInPad
  - IsPointInBox
- find.c
  - LineLineIntersect
  - LineArcIntersect
  - PinLineIntersect
  - LinePadIntersect
  - ArcPadIntersect
  - ArcArcIntersect
  - IsRatPointOnLineEnd
  - IsArcInPolygon
  - IsLineInPolygon
  - IsPadInPolygon
  - IsPolygonInPolygon
  - IS_PV_ON_RAT
  - IS_PV_ON_ARC
  - IS_PV_ON_PAD
- polygon.c
  - IsPointInPolygon
  - IsPointInPolygonIgnoreHoles
  - IsRectangleInPolygon