20#include <boost/test/unit_test.hpp>
21#include <boost/bimap.hpp>
22#include <magic_enum.hpp>
28#include <api/board/board.pb.h>
29#include <api/common/types/enums.pb.h>
38#include <api/board/board_types.pb.h>
39#include <api/board/board_commands.pb.h>
40#include <api/board/board_jobs.pb.h>
41#include <api/schematic/schematic_jobs.pb.h>
76template<
typename KiCadEnum,
typename ProtoEnum>
79 boost::bimap<ProtoEnum, KiCadEnum> protoToKiCadSeen;
80 std::set<ProtoEnum> seenProtos;
82 for( ProtoEnum value : magic_enum::enum_values<ProtoEnum>() )
85 << magic_enum::enum_name( value ) )
87 std::string
name( magic_enum::enum_name( value ) );
88 auto splitPos =
name.find_first_of(
'_' );
91 BOOST_REQUIRE_MESSAGE( splitPos != std::string::npos,
92 "Proto enum name doesn't have a prefix" );
94 std::string suffix =
name.substr( splitPos );
97 if(
static_cast<int>( value ) == 0 )
99 BOOST_REQUIRE_MESSAGE( suffix.compare(
"_UNKNOWN" ) == 0,
100 "Proto enum with value 0 must be named <PREFIX>_UNKNOWN" );
110 protoToKiCadSeen.left.insert( { value,
result } );
114 for( KiCadEnum value : magic_enum::enum_values<KiCadEnum>() )
117 << magic_enum::enum_name( value ) )
121 if( aPartiallyMapped )
130 BOOST_REQUIRE_MESSAGE( !protoToKiCadSeen.right.count( value ),
131 "Proto enum is mapped to this KiCad enum, but not vice versa" );
146 seenProtos.insert(
result );
313 using ProtoType = kiapi::board::DrcErrorType;
393 using ProtoType = kiapi::board::CustomRuleConstraintType;
411 using ProtoType = kiapi::board::CustomRuleConstraintOption;
426 using ProtoType = kiapi::board::CustomRuleDisallowType;
478 using Mode = kiapi::board::jobs::BoardJobPaginationMode;
481 == Mode::BJPM_ALL_LAYERS_ONE_PAGE ) );
483 == Mode::BJPM_EACH_LAYER_OWN_FILE ) );
495 using Mode = kiapi::board::jobs::BoardJobPaginationMode;
498 == Mode::BJPM_ALL_LAYERS_ONE_PAGE ) );
500 == Mode::BJPM_EACH_LAYER_OWN_FILE ) );
522 using Mode = kiapi::board::jobs::BoardJobPaginationMode;
525 == Mode::BJPM_ALL_LAYERS_ONE_PAGE ) );
527 == Mode::BJPM_EACH_LAYER_OWN_FILE ) );
types::KiCadObjectType ToProtoEnum(KICAD_T aValue)
KICAD_T FromProtoEnum(types::KiCadObjectType aValue)
An exception class to represent a WX assertion.
@ DRCE_DISABLED_LAYER_ITEM
@ DRCE_DIFF_PAIR_GAP_OUT_OF_RANGE
@ DRCE_SILK_EDGE_CLEARANCE
@ DRCE_SILK_MASK_CLEARANCE
@ DRCE_MIRRORED_TEXT_ON_FRONT_LAYER
@ DRCE_LIB_FOOTPRINT_ISSUES
@ DRCE_OVERLAPPING_FOOTPRINTS
@ DRCE_TRACK_ON_POST_MACHINED_LAYER
@ DRCE_DRILL_OUT_OF_RANGE
@ DRCE_TRACK_SEGMENT_LENGTH
@ DRCE_SCHEMATIC_FIELDS_PARITY
@ DRCE_TRACK_NOT_CENTERED_ON_VIA
@ DRCE_MISSING_TUNING_PROFILE
@ DRCE_DRILLED_HOLES_TOO_CLOSE
@ DRCE_DIFF_PAIR_UNCOUPLED_LENGTH_TOO_LONG
@ DRCE_MICROVIA_DRILL_OUT_OF_RANGE
@ DRCE_MALFORMED_COURTYARD
@ DRCE_UNRESOLVED_VARIABLE
@ DRCE_FOOTPRINT_TYPE_MISMATCH
@ DRCE_NONMIRRORED_TEXT_ON_BACK_LAYER
@ DRCE_DUPLICATE_FOOTPRINT
@ DRCE_DRILLED_HOLES_COLOCATED
@ DRCE_LENGTH_OUT_OF_RANGE
@ DRCE_LIB_FOOTPRINT_MISMATCH
@ DRCE_PAD_TH_WITH_NO_HOLE
@ DRCE_VIA_COUNT_OUT_OF_RANGE
@ DRC_DISALLOW_BURIED_VIAS
@ DRC_DISALLOW_BLIND_VIAS
@ DRC_DISALLOW_THROUGH_VIAS
@ DRC_DISALLOW_FOOTPRINTS
@ DRC_DISALLOW_MICRO_VIAS
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
void testEnums(bool aPartiallyMapped=false)
Checks if a KiCad enum has been properly mapped to a Protobuf enum.
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
BOOST_TEST_CONTEXT("Test Clearance")
wxString result
Test unit parsing edge cases and error handling.
Class ZONE_SETTINGS used to handle zones parameters in dialogs.