KiCad PCB EDA Suite
Loading...
Searching...
No Matches
test_pads_attribute_mapper.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
28
29
#include <
qa_utils/wx_utils/unit_test_utils.h
>
30
31
#include <
io/pads/pads_attribute_mapper.h
>
32
33
34
struct
PADS_ATTRIBUTE_MAPPER_FIXTURE
35
{
36
PADS_ATTRIBUTE_MAPPER_FIXTURE
() {}
37
};
38
39
40
BOOST_FIXTURE_TEST_SUITE( PadsAttributeMapper,
PADS_ATTRIBUTE_MAPPER_FIXTURE
)
41
42
43
BOOST_AUTO_TEST_CASE
( ReferenceFieldMapping )
44
{
45
PADS_ATTRIBUTE_MAPPER
mapper;
46
47
// Various PADS reference designator formats
48
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Ref.Des."
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
49
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"REF.DES."
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
50
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Ref Des"
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
51
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"REFDES"
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
52
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Reference"
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
53
54
// Verify IsReferenceField
55
BOOST_CHECK( mapper.
IsReferenceField
(
"Ref.Des."
) );
56
BOOST_CHECK( mapper.
IsReferenceField
(
"refdes"
) );
57
BOOST_CHECK( !mapper.
IsReferenceField
(
"Part Type"
) );
58
}
59
60
61
BOOST_AUTO_TEST_CASE
( ValueFieldMapping )
62
{
63
PADS_ATTRIBUTE_MAPPER
mapper;
64
65
// Various PADS value/part type formats
66
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Part Type"
),
PADS_ATTRIBUTE_MAPPER::FIELD_VALUE
);
67
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"PART TYPE"
),
PADS_ATTRIBUTE_MAPPER::FIELD_VALUE
);
68
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"PartType"
),
PADS_ATTRIBUTE_MAPPER::FIELD_VALUE
);
69
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"VALUE"
),
PADS_ATTRIBUTE_MAPPER::FIELD_VALUE
);
70
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Part_Type"
),
PADS_ATTRIBUTE_MAPPER::FIELD_VALUE
);
71
72
// Verify IsValueField
73
BOOST_CHECK( mapper.
IsValueField
(
"Part Type"
) );
74
BOOST_CHECK( mapper.
IsValueField
(
"value"
) );
75
BOOST_CHECK( !mapper.
IsValueField
(
"Ref.Des."
) );
76
}
77
78
79
BOOST_AUTO_TEST_CASE
( FootprintFieldMapping )
80
{
81
PADS_ATTRIBUTE_MAPPER
mapper;
82
83
// Various PADS footprint/decal formats
84
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"PCB Decal"
),
PADS_ATTRIBUTE_MAPPER::FIELD_FOOTPRINT
);
85
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"PCB_DECAL"
),
PADS_ATTRIBUTE_MAPPER::FIELD_FOOTPRINT
);
86
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"DECAL"
),
PADS_ATTRIBUTE_MAPPER::FIELD_FOOTPRINT
);
87
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Footprint"
),
PADS_ATTRIBUTE_MAPPER::FIELD_FOOTPRINT
);
88
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Pattern"
),
PADS_ATTRIBUTE_MAPPER::FIELD_FOOTPRINT
);
89
90
// Verify IsFootprintField
91
BOOST_CHECK( mapper.
IsFootprintField
(
"PCB Decal"
) );
92
BOOST_CHECK( mapper.
IsFootprintField
(
"decal"
) );
93
BOOST_CHECK( !mapper.
IsFootprintField
(
"Value"
) );
94
}
95
96
97
BOOST_AUTO_TEST_CASE
( DatasheetFieldMapping )
98
{
99
PADS_ATTRIBUTE_MAPPER
mapper;
100
101
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Datasheet"
),
PADS_ATTRIBUTE_MAPPER::FIELD_DATASHEET
);
102
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Data Sheet"
),
PADS_ATTRIBUTE_MAPPER::FIELD_DATASHEET
);
103
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"SPEC"
),
PADS_ATTRIBUTE_MAPPER::FIELD_DATASHEET
);
104
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Specification"
),
PADS_ATTRIBUTE_MAPPER::FIELD_DATASHEET
);
105
}
106
107
108
BOOST_AUTO_TEST_CASE
( MPNFieldMapping )
109
{
110
PADS_ATTRIBUTE_MAPPER
mapper;
111
112
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Part Number"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MPN
);
113
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"PART_NUMBER"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MPN
);
114
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"PartNumber"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MPN
);
115
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"PN"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MPN
);
116
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"MPN"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MPN
);
117
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Mfr Part Number"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MPN
);
118
}
119
120
121
BOOST_AUTO_TEST_CASE
( ManufacturerFieldMapping )
122
{
123
PADS_ATTRIBUTE_MAPPER
mapper;
124
125
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Manufacturer"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MANUFACTURER
);
126
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"MFR"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MANUFACTURER
);
127
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"MFG"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MANUFACTURER
);
128
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Vendor"
),
PADS_ATTRIBUTE_MAPPER::FIELD_MANUFACTURER
);
129
}
130
131
132
BOOST_AUTO_TEST_CASE
( UnknownAttributePassthrough )
133
{
134
PADS_ATTRIBUTE_MAPPER
mapper;
135
136
// Unknown attributes should pass through unchanged
137
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"CustomField"
),
"CustomField"
);
138
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"My Custom Attr"
),
"My Custom Attr"
);
139
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"XYZ_123"
),
"XYZ_123"
);
140
141
// Unknown attributes are not standard fields
142
BOOST_CHECK( !mapper.
IsStandardField
(
"CustomField"
) );
143
BOOST_CHECK( !mapper.
IsReferenceField
(
"CustomField"
) );
144
BOOST_CHECK( !mapper.
IsValueField
(
"CustomField"
) );
145
BOOST_CHECK( !mapper.
IsFootprintField
(
"CustomField"
) );
146
}
147
148
149
BOOST_AUTO_TEST_CASE
( CaseInsensitivity )
150
{
151
PADS_ATTRIBUTE_MAPPER
mapper;
152
153
// All lookups should be case-insensitive
154
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"ref.des."
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
155
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"REF.DES."
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
156
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Ref.Des."
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
157
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"rEf.dEs."
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
158
159
// Case insensitivity for standard field checks
160
BOOST_CHECK( mapper.
IsStandardField
(
"REF.DES."
) );
161
BOOST_CHECK( mapper.
IsStandardField
(
"ref.des."
) );
162
BOOST_CHECK( mapper.
IsStandardField
(
"PART TYPE"
) );
163
BOOST_CHECK( mapper.
IsStandardField
(
"pcb decal"
) );
164
}
165
166
167
BOOST_AUTO_TEST_CASE
( IsStandardFieldMethod )
168
{
169
PADS_ATTRIBUTE_MAPPER
mapper;
170
171
// Standard fields (Reference, Value, Footprint)
172
BOOST_CHECK( mapper.
IsStandardField
(
"Ref.Des."
) );
173
BOOST_CHECK( mapper.
IsStandardField
(
"Part Type"
) );
174
BOOST_CHECK( mapper.
IsStandardField
(
"PCB Decal"
) );
175
176
// Non-standard fields (MPN, Manufacturer, Datasheet)
177
BOOST_CHECK( !mapper.
IsStandardField
(
"Part Number"
) );
178
BOOST_CHECK( !mapper.
IsStandardField
(
"Manufacturer"
) );
179
BOOST_CHECK( !mapper.
IsStandardField
(
"Datasheet"
) );
180
}
181
182
183
BOOST_AUTO_TEST_CASE
( CustomMappingOverride )
184
{
185
PADS_ATTRIBUTE_MAPPER
mapper;
186
187
// Add a custom mapping that overrides a standard one
188
mapper.
AddMapping
(
"Part Type"
,
"CustomValue"
);
189
190
// Custom mapping should take precedence
191
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Part Type"
),
"CustomValue"
);
192
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"PART TYPE"
),
"CustomValue"
);
193
194
// Other standard mappings should still work
195
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Ref.Des."
),
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
);
196
}
197
198
199
BOOST_AUTO_TEST_CASE
( CustomMappingNew )
200
{
201
PADS_ATTRIBUTE_MAPPER
mapper;
202
203
// Add a completely new custom mapping
204
mapper.
AddMapping
(
"My PADS Attr"
,
"MyKiCadField"
);
205
206
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"My PADS Attr"
),
"MyKiCadField"
);
207
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"MY PADS ATTR"
),
"MyKiCadField"
);
208
209
// Verify it appears in GetMappings
210
const
auto
& mappings = mapper.
GetMappings
();
211
BOOST_CHECK_EQUAL
( mappings.size(), 1 );
212
BOOST_CHECK_EQUAL
( mappings.at(
"my pads attr"
),
"MyKiCadField"
);
213
}
214
215
216
BOOST_AUTO_TEST_CASE
( MultipleCustomMappings )
217
{
218
PADS_ATTRIBUTE_MAPPER
mapper;
219
220
mapper.
AddMapping
(
"Attr1"
,
"Field1"
);
221
mapper.
AddMapping
(
"Attr2"
,
"Field2"
);
222
mapper.
AddMapping
(
"Attr3"
,
"Field3"
);
223
224
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Attr1"
),
"Field1"
);
225
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Attr2"
),
"Field2"
);
226
BOOST_CHECK_EQUAL
( mapper.
GetKiCadFieldName
(
"Attr3"
),
"Field3"
);
227
228
const
auto
& mappings = mapper.
GetMappings
();
229
BOOST_CHECK_EQUAL
( mappings.size(), 3 );
230
}
231
232
233
BOOST_AUTO_TEST_CASE
( FieldConstants )
234
{
235
// Verify the field constants have expected values
236
BOOST_CHECK_EQUAL
( std::string(
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
),
"Reference"
);
237
BOOST_CHECK_EQUAL
( std::string(
PADS_ATTRIBUTE_MAPPER::FIELD_VALUE
),
"Value"
);
238
BOOST_CHECK_EQUAL
( std::string(
PADS_ATTRIBUTE_MAPPER::FIELD_FOOTPRINT
),
"Footprint"
);
239
BOOST_CHECK_EQUAL
( std::string(
PADS_ATTRIBUTE_MAPPER::FIELD_DATASHEET
),
"Datasheet"
);
240
BOOST_CHECK_EQUAL
( std::string(
PADS_ATTRIBUTE_MAPPER::FIELD_MPN
),
"MPN"
);
241
BOOST_CHECK_EQUAL
( std::string(
PADS_ATTRIBUTE_MAPPER::FIELD_MANUFACTURER
),
"Manufacturer"
);
242
}
243
244
245
BOOST_AUTO_TEST_SUITE_END
()
PADS_ATTRIBUTE_MAPPER
Maps PADS attribute names to KiCad field names.
Definition
pads_attribute_mapper.h:35
PADS_ATTRIBUTE_MAPPER::FIELD_MANUFACTURER
static constexpr const char * FIELD_MANUFACTURER
Definition
pads_attribute_mapper.h:107
PADS_ATTRIBUTE_MAPPER::FIELD_DATASHEET
static constexpr const char * FIELD_DATASHEET
Definition
pads_attribute_mapper.h:105
PADS_ATTRIBUTE_MAPPER::GetMappings
const std::map< std::string, std::string > & GetMappings() const
Get all custom mappings.
Definition
pads_attribute_mapper.h:99
PADS_ATTRIBUTE_MAPPER::IsReferenceField
bool IsReferenceField(const std::string &aPadsAttr) const
Check if a PADS attribute maps to the Reference field.
Definition
pads_attribute_mapper.cpp:114
PADS_ATTRIBUTE_MAPPER::GetKiCadFieldName
std::string GetKiCadFieldName(const std::string &aPadsAttr) const
Get the KiCad field name for a PADS attribute.
Definition
pads_attribute_mapper.cpp:87
PADS_ATTRIBUTE_MAPPER::IsFootprintField
bool IsFootprintField(const std::string &aPadsAttr) const
Check if a PADS attribute maps to the Footprint field.
Definition
pads_attribute_mapper.cpp:128
PADS_ATTRIBUTE_MAPPER::FIELD_REFERENCE
static constexpr const char * FIELD_REFERENCE
Definition
pads_attribute_mapper.h:102
PADS_ATTRIBUTE_MAPPER::FIELD_MPN
static constexpr const char * FIELD_MPN
Definition
pads_attribute_mapper.h:106
PADS_ATTRIBUTE_MAPPER::IsStandardField
bool IsStandardField(const std::string &aPadsAttr) const
Check if a PADS attribute maps to a standard KiCad field.
Definition
pads_attribute_mapper.cpp:108
PADS_ATTRIBUTE_MAPPER::AddMapping
void AddMapping(const std::string &aPadsAttr, const std::string &aKiCadField)
Add or override a custom attribute mapping.
Definition
pads_attribute_mapper.cpp:135
PADS_ATTRIBUTE_MAPPER::FIELD_VALUE
static constexpr const char * FIELD_VALUE
Definition
pads_attribute_mapper.h:103
PADS_ATTRIBUTE_MAPPER::IsValueField
bool IsValueField(const std::string &aPadsAttr) const
Check if a PADS attribute maps to the Value field.
Definition
pads_attribute_mapper.cpp:121
PADS_ATTRIBUTE_MAPPER::FIELD_FOOTPRINT
static constexpr const char * FIELD_FOOTPRINT
Definition
pads_attribute_mapper.h:104
pads_attribute_mapper.h
PADS_ATTRIBUTE_MAPPER_FIXTURE
Definition
test_pads_attribute_mapper.cpp:35
PADS_ATTRIBUTE_MAPPER_FIXTURE::PADS_ATTRIBUTE_MAPPER_FIXTURE
PADS_ATTRIBUTE_MAPPER_FIXTURE()
Definition
test_pads_attribute_mapper.cpp:36
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
Definition
test_api_enums.cpp:136
BOOST_AUTO_TEST_SUITE_END
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(ReferenceFieldMapping)
Definition
test_pads_attribute_mapper.cpp:43
BOOST_CHECK_EQUAL
BOOST_CHECK_EQUAL(result, "25.4")
unit_test_utils.h
src
qa
tests
common
io
pads
test_pads_attribute_mapper.cpp
Generated on Sat Feb 21 2026 00:08:11 for KiCad PCB EDA Suite by
1.13.2