KiCad PCB EDA Suite
Loading...
Searching...
No Matches
test_fab_stackup.cpp
Go to the documentation of this file.
1
/*
2
* This program source code file is part of KiCad, a free EDA CAD application.
3
*
4
* Copyright The KiCad Developers, see AUTHORS.txt for contributors.
5
*
6
* This program is free software: you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <https://www.gnu.org/licenses/>.
18
*/
19
20
#include <
pcbnew_utils/board_file_utils.h
>
21
#include <
qa_utils/wx_utils/unit_test_utils.h
>
22
#include <boost/test/unit_test.hpp>
23
24
#include <
board.h
>
25
#include <
board_design_settings.h
>
26
#include <
pcbnew/exporters/fab_model/fab_stackup.h
>
27
28
#include <algorithm>
29
30
31
BOOST_AUTO_TEST_CASE
( FabStackupSnapshotsRealBoard )
32
{
33
std::unique_ptr<BOARD> board =
KI_TEST::RequireBoardFromPcbnewQAData
(
"ipc2581/dielectric-sublayer.kicad_pcb"
);
34
35
BOARD_DESIGN_SETTINGS
& settings = board->GetDesignSettings();
36
BOARD_STACKUP
before = settings.
GetStackupDescriptor
();
37
std::vector<BOARD_STACKUP_ITEM*> beforeItems = settings.
GetStackupDescriptor
().
GetList
();
38
BOARD_STACKUP
expected
= before;
39
expected
.SynchronizeWithBoard( &settings );
40
41
FAB_STACKUP
snapshot( *board );
42
BOOST_CHECK( snapshot.
Stackup
() ==
expected
);
43
44
for
(
const
BOARD_STACKUP_ITEM
* item : snapshot.
Stackup
().
GetList
() )
45
{
46
BOOST_CHECK( std::ranges::none_of( beforeItems,
47
[&](
const
BOARD_STACKUP_ITEM
* aSource )
48
{
49
return
aSource == item;
50
} ) );
51
}
52
53
BOOST_CHECK_EQUAL
( snapshot.
Thickness
(),
expected
.BuildBoardThicknessFromStackup() );
54
BOOST_CHECK( settings.
GetStackupDescriptor
() == before );
55
BOOST_CHECK( settings.
GetStackupDescriptor
().
GetList
() == beforeItems );
56
57
for
(
const
BOARD_STACKUP_ITEM
* item : snapshot.
Stackup
().
GetList
() )
58
{
59
if
( item->GetBrdLayerId() !=
UNDEFINED_LAYER
)
60
BOOST_CHECK( snapshot.
ItemForLayer
( item->GetBrdLayerId() ) !=
nullptr
);
61
}
62
63
BOOST_CHECK( snapshot.
ItemForLayer
(
UNDEFINED_LAYER
) ==
nullptr
);
64
}
board.h
board_design_settings.h
board_file_utils.h
General utilities for PCB file IO for QA programs.
BOARD_DESIGN_SETTINGS
Container for design settings for a BOARD object.
Definition
board_design_settings.h:201
BOARD_DESIGN_SETTINGS::GetStackupDescriptor
BOARD_STACKUP & GetStackupDescriptor()
Definition
board_design_settings.h:225
BOARD_STACKUP_ITEM
Manage one layer needed to make a physical board.
Definition
board_stackup.h:108
BOARD_STACKUP
Manage layers needed to make a physical board.
Definition
board_stackup.h:240
BOARD_STACKUP::GetList
const std::vector< BOARD_STACKUP_ITEM * > & GetList() const
Definition
board_stackup.h:258
FAB_STACKUP
Board stackup snapshot synchronized without changing the source board.
Definition
fab_stackup.h:29
FAB_STACKUP::Stackup
const BOARD_STACKUP & Stackup() const
Definition
fab_stackup.h:38
FAB_STACKUP::Thickness
int Thickness() const
Definition
fab_stackup.h:42
FAB_STACKUP::ItemForLayer
const BOARD_STACKUP_ITEM * ItemForLayer(PCB_LAYER_ID aLayer) const
Definition
fab_stackup.cpp:34
fab_stackup.h
UNDEFINED_LAYER
@ UNDEFINED_LAYER
Definition
layer_ids.h:57
KI_TEST::RequireBoardFromPcbnewQAData
std::unique_ptr< BOARD > RequireBoardFromPcbnewQAData(const std::filesystem::path &aFilename)
Require a board from the path relative to the pcbnew QA data directory.
Definition
board_file_utils.cpp:128
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(FabStackupSnapshotsRealBoard)
Definition
test_fab_stackup.cpp:31
expected
VECTOR3I expected(15, 30, 45)
BOOST_CHECK_EQUAL
BOOST_CHECK_EQUAL(result, "25.4")
unit_test_utils.h
src
qa
tests
pcbnew
test_fab_stackup.cpp
Generated on Tue Oct 27 2026 00:06:46 for KiCad PCB EDA Suite by
1.13.2