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>
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
34BOOST_AUTO_TEST_SUITE( JobExportPcbVariants )
35
36
37BOOST_AUTO_TEST_CASE( Pcb3dVariantRoundTrip )
38{
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
54BOOST_AUTO_TEST_CASE( PcbPlotVariantRoundTrip )
55{
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
65 loaded.FromJson( j );
66
67 BOOST_CHECK( loaded.m_variant == wxS( "VarPlot" ) );
68}
69
70
71BOOST_AUTO_TEST_CASE( PcbOdbVariantRoundTrip )
72{
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
88BOOST_AUTO_TEST_CASE( PcbIpc2581VariantRoundTrip )
89{
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
99 loaded.FromJson( j );
100
101 BOOST_CHECK( loaded.m_variant == wxS( "VarIpc" ) );
102}
103
104
105BOOST_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
122BOOST_AUTO_TEST_CASE( SchNetlistVariantNamesRoundTrip )
123{
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
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
143BOOST_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
std::vector< wxString > m_variantNames
std::vector< wxString > m_variantNames
virtual void FromJson(const nlohmann::json &j)
Definition job.cpp:60
virtual void ToJson(nlohmann::json &j) const
Definition job.cpp:67
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE(Pcb3dVariantRoundTrip)
BOOST_CHECK_EQUAL(result, "25.4")