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