From 4306b24b4a6bca7a9f41978269db3a801c3d7098 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 18 May 2025 09:27:10 +0200 Subject: [PATCH] Normalizing test case for RNetExtractor to reduce jitter --- src/pex/unit_tests/pexRNetExtractorTests.cc | 91 +++++++++++++-------- 1 file changed, 59 insertions(+), 32 deletions(-) diff --git a/src/pex/unit_tests/pexRNetExtractorTests.cc b/src/pex/unit_tests/pexRNetExtractorTests.cc index 9b4d0bd49..2b6f9f083 100644 --- a/src/pex/unit_tests/pexRNetExtractorTests.cc +++ b/src/pex/unit_tests/pexRNetExtractorTests.cc @@ -37,6 +37,33 @@ public: using pex::RNetExtractor::create_via_ports; }; +static std::string network2s (const pex::RNetwork &network) +{ + std::vector r; + + for (auto e = network.begin_elements (); e != network.end_elements (); ++e) { + + const pex::RElement &element = *e; + + std::string na = (element.a ()->type != pex::RNode::Internal ? element.a ()->to_string () : "") + + element.a ()->location.to_string (); + std::string nb = (element.b ()->type != pex::RNode::Internal ? element.b ()->to_string () : "") + + element.b ()->location.to_string (); + + if (nb < na) { + std::swap (na, nb); + } + + std::string s = "R " + na + " " + nb + " " + tl::to_string (element.resistance ()); + r.push_back (s); + + } + + std::sort (r.begin (), r.end ()); + + return tl::join (r, "\n"); +} + TEST(netex_viagen1) { db::Layout ly; @@ -78,11 +105,11 @@ TEST(netex_viagen1) EXPECT_EQ (via_ports [l2].size (), size_t (0)); EXPECT_EQ (via_ports [l3].size (), size_t (4)); - EXPECT_EQ (network.to_string (true), - "R $0.1(1.7,0.1;1.9,0.3) $1.2(1.7,0.1;1.9,0.3) 50\n" - "R $2.1(0.4,0.5;0.6,0.7) $3.2(0.4,0.5;0.6,0.7) 50\n" - "R $4.1(0.8,0.5;1,0.7) $5.2(0.8,0.5;1,0.7) 50\n" - "R $6.1(2.9,0.5;3.1,0.7) $7.2(2.9,0.5;3.1,0.7) 50" + EXPECT_EQ (network2s (network), + "R (0.4,0.5;0.6,0.7) (0.4,0.5;0.6,0.7) 50\n" + "R (0.8,0.5;1,0.7) (0.8,0.5;1,0.7) 50\n" + "R (1.7,0.1;1.9,0.3) (1.7,0.1;1.9,0.3) 50\n" + "R (2.9,0.5;3.1,0.7) (2.9,0.5;3.1,0.7) 50" ); } @@ -128,13 +155,13 @@ TEST(netex_viagen2) EXPECT_EQ (via_ports [l2].size (), size_t (0)); EXPECT_EQ (via_ports [l3].size (), size_t (6)); - EXPECT_EQ (network.to_string (true), - "R $0.1(4.6,2.8;4.8,3) $1.2(4.6,2.8;4.8,3) 50\n" - "R $2.1(2.5,3.7;2.7,3.9) $3.2(2.5,3.7;2.7,3.9) 50\n" - "R $4.1(3,3.7;3.2,3.9) $5.2(3,3.7;3.2,3.9) 50\n" - "R $6.1(2.2,1.2;3.4,3.4) $7.2(2.2,1.2;3.4,3.4) 2.77778\n" - "R $8.1(0.4,0.4;2.2,4.2) $9.2(0.4,0.4;2.2,4.2) 1\n" - "R $10.1(0.6,4.9;1.2,5.1) $11.2(0.6,4.9;1.2,5.1) 25" + EXPECT_EQ (network2s (network), + "R (0.4,0.4;2.2,4.2) (0.4,0.4;2.2,4.2) 1\n" + "R (0.6,4.9;1.2,5.1) (0.6,4.9;1.2,5.1) 25\n" + "R (2.2,1.2;3.4,3.4) (2.2,1.2;3.4,3.4) 2.77777777778\n" + "R (2.5,3.7;2.7,3.9) (2.5,3.7;2.7,3.9) 50\n" + "R (3,3.7;3.2,3.9) (3,3.7;3.2,3.9) 50\n" + "R (4.6,2.8;4.8,3) (4.6,2.8;4.8,3) 50" ); } @@ -220,32 +247,32 @@ TEST(netex_2layer) rex.extract (tech, geo, vertex_ports, polygon_ports, network); - EXPECT_EQ (network.to_string (true), - "R $0.1(0.3,-5.7;0.5,-5.5) $1.2(0.3,-5.7;0.5,-5.5) 50\n" - "R $2.1(9.3,-5.9;9.9,-5.3) $3.2(9.3,-5.9;9.9,-5.3) 12.5\n" - "R $4.1(9.3,0.1;9.9,0.3) $5.2(9.3,0.1;9.9,0.3) 25\n" - "R $6.1(0.1,0.1;0.7,0.7) $7.2(0.1,0.1;0.7,0.7) 12.5\n" - "R $0.1(0.3,-5.7;0.5,-5.5) $2.1(9.3,-5.9;9.9,-5.3) 5.75\n" - "R $2.1(9.3,-5.9;9.9,-5.3) P0.1(12.9,-5.9;13.5,-5.3) 2.25\n" - "R $6.1(0.1,0.1;0.7,0.7) V0.1(5.2,0.4;5.2,0.4) 3\n" - "R $4.1(9.3,0.1;9.9,0.3) V0.1(5.2,0.4;5.2,0.4) 2.75\n" - "R $5.2(9.3,0.1;9.9,0.3) $8.2(10,-3.5;10,-2.7) 1.03125\n" - "R $3.2(9.3,-5.9;9.9,-5.3) $8.2(10,-3.5;10,-2.7) 0.78125\n" - "R $8.2(10,-3.5;10,-2.7) P0.2(12.9,-3.4;13.5,-2.8) 1\n" - "R $7.2(0.1,0.1;0.7,0.7) V0.2(0.4,-5.6;0.4,-5.6) 1.875\n" - "R $1.2(0.3,-5.7;0.5,-5.5) V0.2(0.4,-5.6;0.4,-5.6) 0" + EXPECT_EQ (network2s (network), + "R (0.1,0.1;0.7,0.7) (0.1,0.1;0.7,0.7) 12.5\n" + "R (0.1,0.1;0.7,0.7) V0.1(5.2,0.4;5.2,0.4) 3\n" + "R (0.1,0.1;0.7,0.7) V0.2(0.4,-5.6;0.4,-5.6) 1.875\n" + "R (0.3,-5.7;0.5,-5.5) (0.3,-5.7;0.5,-5.5) 50\n" + "R (0.3,-5.7;0.5,-5.5) (9.3,-5.9;9.9,-5.3) 5.75\n" + "R (0.3,-5.7;0.5,-5.5) V0.2(0.4,-5.6;0.4,-5.6) 0\n" + "R (10,-3.5;10,-2.7) (9.3,-5.9;9.9,-5.3) 0.78125\n" + "R (10,-3.5;10,-2.7) (9.3,0.1;9.9,0.3) 1.03125\n" + "R (10,-3.5;10,-2.7) P0.2(12.9,-3.4;13.5,-2.8) 1\n" + "R (9.3,-5.9;9.9,-5.3) (9.3,-5.9;9.9,-5.3) 12.5\n" + "R (9.3,-5.9;9.9,-5.3) P0.1(12.9,-5.9;13.5,-5.3) 2.25\n" + "R (9.3,0.1;9.9,0.3) (9.3,0.1;9.9,0.3) 25\n" + "R (9.3,0.1;9.9,0.3) V0.1(5.2,0.4;5.2,0.4) 2.75" ); tech.skip_simplify = false; rex.extract (tech, geo, vertex_ports, polygon_ports, network); - EXPECT_EQ (network.to_string (true), - "R $2.1(9.3,-5.9;9.9,-5.3) P0.1(12.9,-5.9;13.5,-5.3) 2.25\n" - "R $8.2(10,-3.5;10,-2.7) P0.2(12.9,-3.4;13.5,-2.8) 1\n" - "R $2.1(9.3,-5.9;9.9,-5.3) V0.2(0.3,-5.7;0.5,-5.5) 55.75\n" - "R $2.1(9.3,-5.9;9.9,-5.3) $8.2(10,-3.5;10,-2.7) 13.2813\n" - "R $8.2(10,-3.5;10,-2.7) V0.1(5.2,0.4;5.2,0.4) 28.7812\n" + EXPECT_EQ (network2s (network), + "R (10,-3.5;10,-2.7) (9.3,-5.9;9.9,-5.3) 13.28125\n" + "R (10,-3.5;10,-2.7) P0.2(12.9,-3.4;13.5,-2.8) 1\n" + "R (10,-3.5;10,-2.7) V0.1(5.2,0.4;5.2,0.4) 28.78125\n" + "R (9.3,-5.9;9.9,-5.3) P0.1(12.9,-5.9;13.5,-5.3) 2.25\n" + "R (9.3,-5.9;9.9,-5.3) V0.2(0.3,-5.7;0.5,-5.5) 55.75\n" "R V0.1(5.2,0.4;5.2,0.4) V0.2(0.3,-5.7;0.5,-5.5) 17.375" ); }