KiCad PCB EDA Suite
Loading...
Searching...
No Matches
test_job_export_pcb_variants.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, you may find one here:
18
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19
* or you may search the http://www.gnu.org website for the version 2 license,
20
* or you may write to the Free Software Foundation, Inc.,
21
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22
*/
23
24
#include <boost/test/unit_test.hpp>
25
#include <
jobs/job_export_pcb_3d.h
>
26
#include <
jobs/job_export_pcb_ipc2581.h
>
27
#include <
jobs/job_export_pcb_odb.h
>
28
#include <
jobs/job_export_pcb_plot.h
>
29
#include <
jobs/job_export_sch_netlist.h
>
30
#include <
jobs/job_export_sch_plot.h
>
31
#include <
jobs/job_pcb_render.h
>
32
#include <nlohmann/json.hpp>
33
34
35
// Regression coverage for issue #24092: variant fields on JOBSET-resident jobs
36
// must round-trip through ToJson/FromJson.
37
38
BOOST_AUTO_TEST_SUITE
( JobExportPcbVariants )
39
40
41
BOOST_AUTO_TEST_CASE
( Pcb3dVariantRoundTrip )
42
{
43
JOB_EXPORT_PCB_3D
job;
44
job.
m_variant
= wxS(
"var-A"
);
45
46
nlohmann::json j;
47
job.
ToJson
( j );
48
49
BOOST_CHECK_EQUAL
( j.value(
"variant"
,
""
),
"var-A"
);
50
51
JOB_EXPORT_PCB_3D
loaded;
52
loaded.
FromJson
( j );
53
54
BOOST_CHECK( loaded.
m_variant
== wxS(
"var-A"
) );
55
}
56
57
58
BOOST_AUTO_TEST_CASE
( PcbPlotVariantRoundTrip )
59
{
60
JOB_EXPORT_PCB_PLOT
job(
JOB_EXPORT_PCB_PLOT::PLOT_FORMAT::PDF
,
"plot"
,
false
);
61
job.
m_variant
= wxS(
"VarPlot"
);
62
63
nlohmann::json j;
64
job.
ToJson
( j );
65
66
BOOST_CHECK_EQUAL
( j.value(
"variant"
,
""
),
"VarPlot"
);
67
68
JOB_EXPORT_PCB_PLOT
loaded(
JOB_EXPORT_PCB_PLOT::PLOT_FORMAT::PDF
,
"plot"
,
false
);
69
loaded.
FromJson
( j );
70
71
BOOST_CHECK( loaded.
m_variant
== wxS(
"VarPlot"
) );
72
}
73
74
75
BOOST_AUTO_TEST_CASE
( PcbOdbVariantRoundTrip )
76
{
77
JOB_EXPORT_PCB_ODB
job;
78
job.
m_variant
= wxS(
"VarOdb"
);
79
80
nlohmann::json j;
81
job.
ToJson
( j );
82
83
BOOST_CHECK_EQUAL
( j.value(
"variant"
,
""
),
"VarOdb"
);
84
85
JOB_EXPORT_PCB_ODB
loaded;
86
loaded.
FromJson
( j );
87
88
BOOST_CHECK( loaded.
m_variant
== wxS(
"VarOdb"
) );
89
}
90
91
92
BOOST_AUTO_TEST_CASE
( PcbIpc2581VariantRoundTrip )
93
{
94
JOB_EXPORT_PCB_IPC2581
job;
95
job.
m_variant
= wxS(
"VarIpc"
);
96
97
nlohmann::json j;
98
job.
ToJson
( j );
99
100
BOOST_CHECK_EQUAL
( j.value(
"variant"
,
""
),
"VarIpc"
);
101
102
JOB_EXPORT_PCB_IPC2581
loaded;
103
loaded.
FromJson
( j );
104
105
BOOST_CHECK( loaded.
m_variant
== wxS(
"VarIpc"
) );
106
}
107
108
109
BOOST_AUTO_TEST_CASE
( PcbRenderVariantRoundTrip )
110
{
111
JOB_PCB_RENDER
job;
112
job.
m_variant
= wxS(
"VarRender"
);
113
114
nlohmann::json j;
115
job.
ToJson
( j );
116
117
BOOST_CHECK_EQUAL
( j.value(
"variant"
,
""
),
"VarRender"
);
118
119
JOB_PCB_RENDER
loaded;
120
loaded.
FromJson
( j );
121
122
BOOST_CHECK( loaded.
m_variant
== wxS(
"VarRender"
) );
123
}
124
125
126
BOOST_AUTO_TEST_CASE
( SchNetlistVariantNamesRoundTrip )
127
{
128
JOB_EXPORT_SCH_NETLIST
job;
129
job.
m_variantNames
= { wxS(
"var1"
), wxS(
"var2"
) };
130
131
nlohmann::json j;
132
job.
ToJson
( j );
133
134
BOOST_REQUIRE
( j.contains(
"variant_names"
) );
135
BOOST_REQUIRE
( j.at(
"variant_names"
).is_array() );
136
BOOST_CHECK_EQUAL
( j.at(
"variant_names"
).size(), 2u );
137
138
JOB_EXPORT_SCH_NETLIST
loaded;
139
loaded.
FromJson
( j );
140
141
BOOST_REQUIRE_EQUAL( loaded.
m_variantNames
.size(), 2u );
142
BOOST_CHECK( loaded.
m_variantNames
[0] == wxS(
"var1"
) );
143
BOOST_CHECK( loaded.
m_variantNames
[1] == wxS(
"var2"
) );
144
}
145
146
147
BOOST_AUTO_TEST_CASE
( SchPlotVariantNamesRoundTrip )
148
{
149
JOB_EXPORT_SCH_PLOT
job(
false
);
150
job.
m_variantNames
= { wxS(
"var1"
), wxS(
"var2"
) };
151
152
nlohmann::json j;
153
job.
ToJson
( j );
154
155
BOOST_REQUIRE
( j.contains(
"variant_names"
) );
156
BOOST_REQUIRE
( j.at(
"variant_names"
).is_array() );
157
BOOST_CHECK_EQUAL
( j.at(
"variant_names"
).size(), 2u );
158
159
JOB_EXPORT_SCH_PLOT
loaded(
false
);
160
loaded.
FromJson
( j );
161
162
BOOST_REQUIRE_EQUAL( loaded.
m_variantNames
.size(), 2u );
163
BOOST_CHECK( loaded.
m_variantNames
[0] == wxS(
"var1"
) );
164
BOOST_CHECK( loaded.
m_variantNames
[1] == wxS(
"var2"
) );
165
}
166
167
168
BOOST_AUTO_TEST_SUITE_END
()
JOB_EXPORT_PCB_3D
Definition
job_export_pcb_3d.h:114
JOB_EXPORT_PCB_3D::m_variant
wxString m_variant
Definition
job_export_pcb_3d.h:148
JOB_EXPORT_PCB_IPC2581
Definition
job_export_pcb_ipc2581.h:28
JOB_EXPORT_PCB_IPC2581::m_variant
wxString m_variant
Definition
job_export_pcb_ipc2581.h:51
JOB_EXPORT_PCB_ODB
Definition
job_export_pcb_odb.h:27
JOB_EXPORT_PCB_ODB::m_variant
wxString m_variant
Definition
job_export_pcb_odb.h:51
JOB_EXPORT_PCB_PLOT
Definition
job_export_pcb_plot.h:30
JOB_EXPORT_PCB_PLOT::PLOT_FORMAT::PDF
@ PDF
Definition
job_export_pcb_plot.h:38
JOB_EXPORT_PCB_PLOT::m_variant
wxString m_variant
Definition
job_export_pcb_plot.h:54
JOB_EXPORT_SCH_NETLIST
Definition
job_export_sch_netlist.h:29
JOB_EXPORT_SCH_NETLIST::m_variantNames
std::vector< wxString > m_variantNames
Definition
job_export_sch_netlist.h:60
JOB_EXPORT_SCH_PLOT
Definition
job_export_sch_plot.h:49
JOB_EXPORT_SCH_PLOT::m_variantNames
std::vector< wxString > m_variantNames
Definition
job_export_sch_plot.h:74
JOB_PCB_RENDER
Definition
job_pcb_render.h:40
JOB_PCB_RENDER::m_variant
wxString m_variant
Definition
job_pcb_render.h:56
JOB::FromJson
virtual void FromJson(const nlohmann::json &j)
Definition
job.cpp:60
JOB::ToJson
virtual void ToJson(nlohmann::json &j) const
Definition
job.cpp:67
job_export_pcb_3d.h
job_export_pcb_ipc2581.h
job_export_pcb_odb.h
job_export_pcb_plot.h
job_export_sch_netlist.h
job_export_sch_plot.h
job_pcb_render.h
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
Definition
test_api_enums.cpp:71
BOOST_AUTO_TEST_SUITE
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
BOOST_REQUIRE
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(Pcb3dVariantRoundTrip)
Definition
test_job_export_pcb_variants.cpp:41
BOOST_CHECK_EQUAL
BOOST_CHECK_EQUAL(result, "25.4")
src
qa
tests
common
test_job_export_pcb_variants.cpp
Generated on Wed May 6 2026 00:07:10 for KiCad PCB EDA Suite by
1.13.2