20#include <boost/test/unit_test.hpp>
65 BOOST_REQUIRE_EQUAL( afterCut.m_Geometry.size(), 1 );
72 BOOST_REQUIRE_EQUAL( beforeCut.
m_Geometry.size(), 1 );
87 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 2 );
106 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 2 );
120 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 1 );
130 VECTOR2I secondCut =
makeArc( { 0, 0 }, { 100000, 0 }, 135.0 ).GetEnd();
138 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 2 );
140 BOOST_CHECK_LE(
result.m_Geometry[0].m_End.Distance( firstCut ), 2 );
141 BOOST_CHECK_LE(
result.m_Geometry[1].m_Start.Distance( secondCut ), 2 );
152 VECTOR2I radial =
cut - sourceGeometry.GetCenter();
153 VECTOR2I tangent( -radial.
y / 5, radial.
x / 5 );
159 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 1 );
162 BOOST_CHECK_NE(
result.m_Geometry[0].m_End, source.
GetEnd() );
164 BOOST_CHECK_CLOSE( retained.
GetRadius(), sourceGeometry.GetRadius(), 0.01 );
172 trackSource.
SetEnd( { 100, 0 } );
175 trackBoundary.SetStart( { 50, -10 } );
176 trackBoundary.SetEnd( { 50, 10 } );
189 source.
SetEnd( { 100, 0 } );
193 boundary.
SetEnd( { 70, 10 } );
213 BOOST_CHECK( !overlap );
218 BOOST_CHECK( !onCut );
232 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 1 );
233 BOOST_CHECK_LE(
result.m_Geometry[0].m_End.Distance(
VECTOR2I( 50000, 0 ) ), 2 );
246 BOOST_CHECK(
result.m_Geometry.empty() );
247 BOOST_REQUIRE_EQUAL(
result.m_Preview.size(), 1 );
262 BOOST_REQUIRE_EQUAL(
left.m_Geometry.size(), 1 );
269 BOOST_REQUIRE_EQUAL(
right.m_Geometry.size(), 1 );
285 BOOST_REQUIRE_EQUAL(
result.m_Preview.size(), 1 );
316 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 1 );
325 constexpr int reach = 1000000000;
332 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 1 );
333 BOOST_CHECK_SMALL(
result.m_Geometry[0].m_End.x, 2 );
357 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 1 );
366 circle.SetCenter( aCenter );
368 circle.SetLayer( aLayer );
378 rectangle.
SetEnd( aOpposite );
393 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 1 );
398 BOOST_CHECK_CLOSE( kept.
GetRadius(), 100000.0, 0.01 );
428 BOOST_REQUIRE_EQUAL(
result.m_Geometry.size(), 4 );
437 BOOST_REQUIRE_EQUAL(
result.m_Preview.size(), 1 );
478 BOOST_REQUIRE_EQUAL( byCircle.m_Geometry.size(), 1 );
479 BOOST_CHECK_LE( byCircle.m_Geometry[0].m_End.Distance(
VECTOR2I( 100000, 0 ) ), 2 );
486 BOOST_REQUIRE_EQUAL( byRectangle.m_Geometry.size(), 1 );
487 BOOST_CHECK_LE( byRectangle.m_Geometry[0].m_End.Distance(
VECTOR2I( 50000, 0 ) ), 2 );
void SetLocked(bool aLocked) override
Information pertinent to a Pcbnew printed circuit board.
const VECTOR2I & GetEnd() const
Return the ending point of the graphic.
const VECTOR2I & GetStart() const
Return the starting point of the graphic.
VECTOR2I GetArcMid() const
void SetEnd(const VECTOR2I &aEnd) override
void SetArcGeometry(const VECTOR2I &aStart, const VECTOR2I &aMid, const VECTOR2I &aEnd)
void SetLayer(PCB_LAYER_ID aLayer) override
Set the layer this item is on.
void SetStart(const VECTOR2I &aStart) override
void SetEnd(const VECTOR2I &aEnd)
void SetStart(const VECTOR2I &aStart)
const VECTOR2I & GetArcMid() const
const VECTOR2I & GetP1() const
const VECTOR2I & GetP0() const
double Distance(const VECTOR2< extended_type > &aVector) const
Compute the distance between two vectors.
@ RECTANGLE
Use RECTANGLE instead of RECT to avoid collision in a Windows header.
PCB_LAYER_ID
A quick note on layer IDs:
GRAPHIC_EDIT_RESULT Plan(const BOARD_ITEM &aSource, const VECTOR2I &aPointer, const std::vector< const BOARD_ITEM * > &aBoundaries)
Plan removal of the part of aSource under aPointer.
SHAPE_T m_Shape
A result need not be the same kind as the source.
std::vector< GRAPHIC_EDIT_GEOMETRY > m_Geometry
What the source becomes. Empty means the whole source goes.
GRAPHIC_EDIT_REFUSAL m_Refusal
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
static PCB_SHAPE makeLine(const VECTOR2I &aStart, const VECTOR2I &aEnd, PCB_LAYER_ID aLayer=Dwgs_User)
static PCB_SHAPE makeArc(const VECTOR2I &aCenter, const VECTOR2I &aStart, double aAngle, PCB_LAYER_ID aLayer=Dwgs_User)
static PCB_SHAPE makeCircle(const VECTOR2I &aCenter, int aRadius, PCB_LAYER_ID aLayer=Dwgs_User)
static PCB_SHAPE makeRectangle(const VECTOR2I &aCorner, const VECTOR2I &aOpposite, PCB_LAYER_ID aLayer=Dwgs_User)
static PCB_SHAPE makeLine(const VECTOR2I &aStart, const VECTOR2I &aEnd, PCB_LAYER_ID aLayer=Dwgs_User)
BOOST_AUTO_TEST_CASE(OneBoundaryRemovesThePointerSide)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
SHAPE_CIRCLE circle(c.m_circle_center, c.m_circle_radius)
wxString result
Test unit parsing edge cases and error handling.
BOOST_CHECK_EQUAL(result, "25.4")
VECTOR2< int32_t > VECTOR2I