KiCad PCB EDA Suite
Loading...
Searching...
No Matches
test_zone.cpp File Reference
#include <qa_utils/wx_utils/unit_test_utils.h>
#include <pcbnew_utils/board_test_utils.h>
#include <board.h>
#include <footprint.h>
#include <geometry/shape_utils.h>
#include <zone.h>
#include <zone_utils.h>

Go to the source code of this file.

Classes

struct  ZONE_TEST_FIXTURE
 

Functions

static std::unique_ptr< ZONECreateSquareZone (BOARD_ITEM_CONTAINER &aParent, BOX2I aBox, PCB_LAYER_ID aLayer)
 
static std::unique_ptr< ZONECreateSimilarZone (BOARD_ITEM_CONTAINER &aParent, const ZONE &aOther, PCB_LAYER_ID aLayer)
 Create a similar zone (same outline) on a different layer.
 
 BOOST_AUTO_TEST_CASE (SingleLayer)
 
 BOOST_AUTO_TEST_CASE (MultipleLayers)
 
 BOOST_AUTO_TEST_CASE (RescuedLayers)
 During zone loading, the layer is set to Rescue if the layer is not found.
 
 BOOST_AUTO_TEST_CASE (RuleAreaInnerLayersExpandMode)
 Verify that a rule area on all inner copper layers does not produce a spurious layer validation error when the footprint uses the default EXPAND_INNER_LAYERS stackup mode.
 
 BOOST_AUTO_TEST_CASE (EmptyZoneGetPosition)
 Verify that GetPosition() on a zone with no outline vertices does not throw or crash.
 
 BOOST_AUTO_TEST_CASE (ZoneMergeNull)
 
 BOOST_AUTO_TEST_CASE (ZoneMergeNonNullNoMerge)
 
 BOOST_AUTO_TEST_CASE (ZoneMergeNonNullMerge)
 
 BOOST_AUTO_TEST_CASE (ZoneMergeMergeSameGeomDifferentOrder)
 

Function Documentation

◆ BOOST_AUTO_TEST_CASE() [1/9]

BOOST_AUTO_TEST_CASE ( EmptyZoneGetPosition )

Verify that GetPosition() on a zone with no outline vertices does not throw or crash.

Empty zones can be created by importers.

Regression test for https://gitlab.com/kicad/code/kicad/-/issues/23125

Definition at line 164 of file test_zone.cpp.

References BOOST_TEST(), F_Cu, ZONE::GetNumCorners(), ZONE::GetPosition(), and ZONE::SetLayer().

◆ BOOST_AUTO_TEST_CASE() [2/9]

BOOST_AUTO_TEST_CASE ( MultipleLayers )

◆ BOOST_AUTO_TEST_CASE() [3/9]

BOOST_AUTO_TEST_CASE ( RescuedLayers )

During zone loading, the layer is set to Rescue if the layer is not found.

This is not a UI-visible layer, so make sure it can still be retreived.

https://gitlab.com/kicad/code/kicad/-/issues/18553

Definition at line 103 of file test_zone.cpp.

References BOOST_TEST(), ZONE::GetFirstLayer(), ZONE::GetLayer(), ZONE::IsOnCopperLayer(), Rescue, and ZONE::SetLayer().

◆ BOOST_AUTO_TEST_CASE() [4/9]

BOOST_AUTO_TEST_CASE ( RuleAreaInnerLayersExpandMode )

Verify that a rule area on all inner copper layers does not produce a spurious layer validation error when the footprint uses the default EXPAND_INNER_LAYERS stackup mode.

Regression test for https://gitlab.com/kicad/code/kicad/-/issues/23042

Definition at line 122 of file test_zone.cpp.

References FOOTPRINT::Add(), B_Cu, BOOST_TEST(), EXPAND_INNER_LAYERS, F_Cu, BOARD_ITEM::GetLayer(), LSET::InternalCuMask(), PCB_ZONE_T, RECURSE, FOOTPRINT::RunOnChildren(), BASE_SET::set(), ZONE::SetIsRuleArea(), ZONE::SetLayerSet(), FOOTPRINT::SetStackupMode(), EDA_ITEM::Type(), and LSET::UserDefinedLayersMask().

◆ BOOST_AUTO_TEST_CASE() [5/9]

BOOST_AUTO_TEST_CASE ( SingleLayer )

◆ BOOST_AUTO_TEST_CASE() [6/9]

BOOST_AUTO_TEST_CASE ( ZoneMergeMergeSameGeomDifferentOrder )

◆ BOOST_AUTO_TEST_CASE() [7/9]

BOOST_AUTO_TEST_CASE ( ZoneMergeNonNullMerge )

◆ BOOST_AUTO_TEST_CASE() [8/9]

BOOST_AUTO_TEST_CASE ( ZoneMergeNonNullNoMerge )

Definition at line 192 of file test_zone.cpp.

References B_Cu, BOOST_TEST(), CreateSquareZone(), F_Cu, and MergeZonesWithSameOutline().

◆ BOOST_AUTO_TEST_CASE() [9/9]

BOOST_AUTO_TEST_CASE ( ZoneMergeNull )

Definition at line 175 of file test_zone.cpp.

References BOOST_TEST(), F_Cu, and MergeZonesWithSameOutline().

◆ CreateSimilarZone()

static std::unique_ptr< ZONE > CreateSimilarZone ( BOARD_ITEM_CONTAINER & aParent,
const ZONE & aOther,
PCB_LAYER_ID aLayer )
static

Create a similar zone (same outline) on a different layer.

Definition at line 57 of file test_zone.cpp.

References ZONE::Outline().

Referenced by BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().

◆ CreateSquareZone()

static std::unique_ptr< ZONE > CreateSquareZone ( BOARD_ITEM_CONTAINER & aParent,
BOX2I aBox,
PCB_LAYER_ID aLayer )
static