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