Normalizing test case for RNetExtractor to reduce jitter

This commit is contained in:
Matthias Koefferlein 2025-05-18 09:27:10 +02:00
parent 1fb0f318dc
commit 4306b24b4a
1 changed files with 59 additions and 32 deletions

View File

@ -37,6 +37,33 @@ public:
using pex::RNetExtractor::create_via_ports;
};
static std::string network2s (const pex::RNetwork &network)
{
std::vector<std::string> 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"
);
}