From cca66b9ec4e494c1d919bff0f71a820d8afab1fa Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:24:48 +0200 Subject: Adding upstream version 1.2.2. Signed-off-by: Daniel Baumann --- .../libavoid/tests/hyperedgeRerouting01.cpp | 150 +++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 src/3rdparty/adaptagrams/libavoid/tests/hyperedgeRerouting01.cpp (limited to 'src/3rdparty/adaptagrams/libavoid/tests/hyperedgeRerouting01.cpp') diff --git a/src/3rdparty/adaptagrams/libavoid/tests/hyperedgeRerouting01.cpp b/src/3rdparty/adaptagrams/libavoid/tests/hyperedgeRerouting01.cpp new file mode 100644 index 0000000..2aa81f2 --- /dev/null +++ b/src/3rdparty/adaptagrams/libavoid/tests/hyperedgeRerouting01.cpp @@ -0,0 +1,150 @@ +// Based on 33004heap_corruption.cpp +// +#include "libavoid/libavoid.h" +#include + +void outputDiagram(Avoid::Router * router) +{ + static int counter = 0; + std::ostringstream os; + os << (++counter); + //router->outputDiagram(os.str()); +} + +int test() +{ + // The contents of this function can be replaced by the automatically generated test code from the debug svg file + Avoid::ConnEnd end1_0; + Avoid::ConnEnd end2_0; + Avoid::Polygon poly0; + Avoid::Router * router0 = new Avoid::Router(Avoid::OrthogonalRouting); + Avoid::HyperedgeNewAndDeletedObjectLists newanddeletedobjects_0; + Avoid::ConnRefList::const_iterator connit_0; + Avoid::JunctionRefList::const_iterator junctionit_0; + router0->setTransactionUse(true); + router0->setRoutingPenalty(Avoid::segmentPenalty); + router0->setRoutingPenalty(Avoid::crossingPenalty); + router0->setRoutingPenalty(Avoid::fixedSharedPathPenalty, 9000); + router0->setRoutingOption(Avoid::penaliseOrthogonalSharedPathsAtConnEnds, true); + router0->setRoutingParameter(Avoid::idealNudgingDistance, 25); + router0->setRoutingOption(Avoid::improveHyperedgeRoutesMovingAddingAndDeletingJunctions, true); + + poly0 = Avoid::Polygon(4); + poly0.setPoint(0, Avoid::Point(27350, 26040)); + poly0.setPoint(1, Avoid::Point(27350, 26450)); + poly0.setPoint(2, Avoid::Point(26925, 26450)); + poly0.setPoint(3, Avoid::Point(26925, 26040)); + Avoid::ShapeRef * shape0_478041183 = new Avoid::ShapeRef(router0, poly0, 478041183); + Avoid::ShapeConnectionPin * pin0_478041183_0 = new Avoid::ShapeConnectionPin(shape0_478041183, 1, 0, 85, false, 10, 4); + pin0_478041183_0->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_478041183_1 = new Avoid::ShapeConnectionPin(shape0_478041183, 2, 100, -1, false, 10, 2); + pin0_478041183_1->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_478041183_2 = new Avoid::ShapeConnectionPin(shape0_478041183, 3, -1, 85, false, 10, 8); + pin0_478041183_2->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_478041183_3 = new Avoid::ShapeConnectionPin(shape0_478041183, 4, 250, -1, false, 10, 2); + pin0_478041183_3->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_478041183_4 = new Avoid::ShapeConnectionPin(shape0_478041183, 5, 0, 235, false, 10, 4); + pin0_478041183_4->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_478041183_5 = new Avoid::ShapeConnectionPin(shape0_478041183, 6, 0, 160, false, 10, 4); + pin0_478041183_5->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_478041183_6 = new Avoid::ShapeConnectionPin(shape0_478041183, 7, 175, -1, false, 10, 2); + pin0_478041183_6->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_478041183_7 = new Avoid::ShapeConnectionPin(shape0_478041183, 8, -1, 160, false, 10, 8); + pin0_478041183_7->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_478041183_8 = new Avoid::ShapeConnectionPin(shape0_478041183, 9, 325, -1, false, 10, 2); + pin0_478041183_8->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_478041183_9 = new Avoid::ShapeConnectionPin(shape0_478041183, 10, 0, 310, false, 10, 4); + pin0_478041183_9->setExclusive(true); + poly0 = Avoid::Polygon(4); + poly0.setPoint(0, Avoid::Point(27030, 26900)); + poly0.setPoint(1, Avoid::Point(27030, 27050)); + poly0.setPoint(2, Avoid::Point(26970, 27050)); + poly0.setPoint(3, Avoid::Point(26970, 26900)); + Avoid::ShapeRef * shape0_646972128 = new Avoid::ShapeRef(router0, poly0, 646972128); + Avoid::ShapeConnectionPin * pin0_646972128_0 = new Avoid::ShapeConnectionPin(shape0_646972128, 1, 25, -1, false, 10, 2); + pin0_646972128_0->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_646972128_1 = new Avoid::ShapeConnectionPin(shape0_646972128, 2, 25, 0, false, 10, 1); + pin0_646972128_1->setExclusive(true); + poly0 = Avoid::Polygon(4); + poly0.setPoint(0, Avoid::Point(26480, 26350)); + poly0.setPoint(1, Avoid::Point(26480, 26500)); + poly0.setPoint(2, Avoid::Point(26420, 26500)); + poly0.setPoint(3, Avoid::Point(26420, 26350)); + Avoid::ShapeRef * shape0_53041512 = new Avoid::ShapeRef(router0, poly0, 53041512); + Avoid::ShapeConnectionPin * pin0_53041512_0 = new Avoid::ShapeConnectionPin(shape0_53041512, 1, 30, 0, false, 10, 1); + pin0_53041512_0->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_53041512_1 = new Avoid::ShapeConnectionPin(shape0_53041512, 2, 30, -1, false, 10, 2); + pin0_53041512_1->setExclusive(true); + poly0 = Avoid::Polygon(4); + poly0.setPoint(0, Avoid::Point(26860, 26900)); + poly0.setPoint(1, Avoid::Point(26860, 27050)); + poly0.setPoint(2, Avoid::Point(26790, 27050)); + poly0.setPoint(3, Avoid::Point(26790, 26900)); + Avoid::ShapeRef * shape0_241539284 = new Avoid::ShapeRef(router0, poly0, 241539284); + Avoid::ShapeConnectionPin * pin0_241539284_0 = new Avoid::ShapeConnectionPin(shape0_241539284, 1, 35, -1, false, 10, 2); + pin0_241539284_0->setExclusive(true); + Avoid::ShapeConnectionPin * pin0_241539284_1 = new Avoid::ShapeConnectionPin(shape0_241539284, 2, 35, 0, false, 10, 1); + pin0_241539284_1->setExclusive(true); + Avoid::JunctionRef * junction0_16268769 = new Avoid::JunctionRef(router0, Avoid::Point(27000, 27075), 16268769); + junction0_16268769->setPositionFixed(true); + Avoid::JunctionRef * junction0_142222080 = new Avoid::JunctionRef(router0, Avoid::Point(27200, 26450), 142222080); + junction0_142222080->setPositionFixed(true); + Avoid::JunctionRef * junction0_471289251 = new Avoid::JunctionRef(router0, Avoid::Point(26350, 26325), 471289251); + junction0_471289251->setPositionFixed(true); + + + end1_0 = Avoid::ConnEnd(shape0_646972128, 1); + end2_0 = Avoid::ConnEnd(junction0_16268769); + Avoid::ConnRef * conn0_64950216 = new Avoid::ConnRef(router0, end1_0, end2_0, 64950216); + end1_0 = Avoid::ConnEnd(junction0_16268769); + end2_0 = Avoid::ConnEnd(shape0_478041183, 7); + Avoid::ConnRef * conn0_278089510 = new Avoid::ConnRef(router0, end1_0, end2_0, 278089510); + end1_0 = Avoid::ConnEnd(shape0_241539284, 1); + end2_0 = Avoid::ConnEnd(junction0_16268769); + Avoid::ConnRef * conn0_41268690 = new Avoid::ConnRef(router0, end1_0, end2_0, 41268690); + + end1_0 = Avoid::ConnEnd(shape0_478041183, 9); + end2_0 = Avoid::ConnEnd(junction0_142222080); + Avoid::ConnRef * conn0_60256130 = new Avoid::ConnRef(router0, end1_0, end2_0, 60256130); + end1_0 = Avoid::ConnEnd(shape0_478041183, 3); + end2_0 = Avoid::ConnEnd(junction0_142222080); + Avoid::ConnRef * conn0_73835204 = new Avoid::ConnRef(router0, end1_0, end2_0, 73835204); + end1_0 = Avoid::ConnEnd(shape0_478041183, 4); + end2_0 = Avoid::ConnEnd(junction0_142222080); + Avoid::ConnRef * conn0_93872527 = new Avoid::ConnRef(router0, end1_0, end2_0, 93872527); + + end1_0 = Avoid::ConnEnd(shape0_53041512, 1); + end2_0 = Avoid::ConnEnd(junction0_471289251); + Avoid::ConnRef * conn0_448284384 = new Avoid::ConnRef(router0, end1_0, end2_0, 448284384); + end1_0 = Avoid::ConnEnd(shape0_478041183, 1); + end2_0 = Avoid::ConnEnd(junction0_471289251); + Avoid::ConnRef * conn0_392836745 = new Avoid::ConnRef(router0, end1_0, end2_0, 392836745); + end1_0 = Avoid::ConnEnd(shape0_241539284, 2); + end2_0 = Avoid::ConnEnd(junction0_471289251); + Avoid::ConnRef * conn0_836242673 = new Avoid::ConnRef(router0, end1_0, end2_0, 836242673); + + router0->processTransaction(); + + newanddeletedobjects_0 = router0->newAndDeletedObjectListsFromHyperedgeImprovement(); + outputDiagram(router0); + + junction0_16268769->setPositionFixed(false); + junction0_142222080->setPositionFixed(false); + junction0_471289251->setPositionFixed(false); + + router0->hyperedgeRerouter()->registerHyperedgeForRerouting(junction0_16268769); + router0->hyperedgeRerouter()->registerHyperedgeForRerouting(junction0_142222080); + router0->hyperedgeRerouter()->registerHyperedgeForRerouting(junction0_471289251); + + router0->processTransaction(); + outputDiagram(router0); + + int result = router0->existsInvalidOrthogonalPaths(); + delete router0; + return result; +} + +extern "C" int main(int argc, char* argv[]) +{ + return test(); +} -- cgit v1.2.3