Toponaming/Part: Fix elementMatch to use full clause and be deterministic

This commit is contained in:
bgbsww
2024-03-24 09:59:37 -04:00
committed by Chris Hennes
parent dc3e0c3dcf
commit 9ddc4f1372
3 changed files with 101 additions and 78 deletions

View File

@@ -81,47 +81,67 @@ TEST_F(FeatureMirroringTest, testYMirrorWithExistingElementMap)
EXPECT_TRUE(boxesMatch(bb, Base::BoundBox3d(0, 0, -3, 1, 3, 0)));
// Assert correct element Map
#ifdef FC_USE_TNP_FIX
EXPECT_TRUE(elementsMatch(
_mirror->Shape.getShape(),
{
"Edge10;:M;FUS;:H30a:7,E;:M;MIR;:H310:7,E",
"Edge11;:M;FUS;:H309:7,E;:M;MIR;:H310:7,E",
"Edge12;:M;FUS;:H309:7,E;:M;MIR;:H310:7,E",
"Edge1;:M;FUS;:H30a:7,E;:M;MIR;:H310:7,E",
"Edge1;:M;FUS;:H30a:7,E;:U2;FUS;:H30a:8,V;:M;MIR;:H310:7,V",
"Edge1;:M;FUS;:H30a:7,E;:U;FUS;:H30a:7,V;:M;MIR;:H310:7,V",
"Edge2;:M2(Edge2;:H30a,E);FUS;:H309:17,E;:M;MIR;:H310:7,E",
"Edge2;:M2(Edge2;:H30a,E);FUS;:H309:17,E;:U2;FUS;:H309:8,V;:M;MIR;:H310:7,V",
"Edge2;:M2;FUS;:H30a:8,E;:M;MIR;:H310:7,E",
"Edge2;:M2;FUS;:H30a:8,E;:U2;FUS;:H30a:8,V;:M;MIR;:H310:7,V",
"Edge2;:M;FUS;:H309:7,E;:M;MIR;:H310:7,E",
"Edge2;:M;FUS;:H309:7,E;:U;FUS;:H309:7,V;:M;MIR;:H310:7,V",
"Edge3;:M;FUS;:H309:7,E;:M;MIR;:H310:7,E",
"Edge3;:M;FUS;:H309:7,E;:U2;FUS;:H309:8,V;:M;MIR;:H310:7,V",
"Edge4;:M2(Edge4;:H30a,E);FUS;:H309:17,E;:M;MIR;:H310:7,E",
"Edge4;:M2;FUS;:H30a:8,E;:M;MIR;:H310:7,E",
"Edge4;:M2;FUS;:H30a:8,E;:U2;FUS;:H30a:8,V;:M;MIR;:H310:7,V",
"Edge4;:M;FUS;:H309:7,E;:M;MIR;:H310:7,E",
"Edge4;:M;FUS;:H309:7,E;:U;FUS;:H309:7,V;:M;MIR;:H310:7,V",
"Edge5;:M;FUS;:H30a:7,E;:M;MIR;:H310:7,E",
"Edge5;:M;FUS;:H30a:7,E;:U2;FUS;:H30a:8,V;:M;MIR;:H310:7,V",
"Edge5;:M;FUS;:H30a:7,E;:U;FUS;:H30a:7,V;:M;MIR;:H310:7,V",
"Edge6;:M2(Edge6;:H30a,E);FUS;:H309:17,E;:M;MIR;:H310:7,E",
"Edge6;:M2(Edge6;:H30a,E);FUS;:H309:17,E;:U2;FUS;:H309:8,V;:M;MIR;:H310:7,V",
"Edge6;:M2;FUS;:H30a:8,E;:M;MIR;:H310:7,E",
"Edge6;:M2;FUS;:H30a:8,E;:U2;FUS;:H30a:8,V;:M;MIR;:H310:7,V",
"Edge6;:M;FUS;:H309:7,E;:M;MIR;:H310:7,E",
"Edge6;:M;FUS;:H309:7,E;:U;FUS;:H309:7,V;:M;MIR;:H310:7,V",
"Edge7;:M;FUS;:H309:7,E;:M;MIR;:H310:7,E",
"Edge7;:M;FUS;:H309:7,E;:U2;FUS;:H309:8,V;:M;MIR;:H310:7,V",
"Edge8;:M2(Edge8;:H30a,E);FUS;:H309:17,E;:M;MIR;:H310:7,E",
"Edge8;:M2;FUS;:H30a:8,E;:M;MIR;:H310:7,E",
"Edge8;:M2;FUS;:H30a:8,E;:U2;FUS;:H30a:8,V;:M;MIR;:H310:7,V",
"Edge8;:M;FUS;:H309:7,E;:M;MIR;:H310:7,E",
"Edge8;:M;FUS;:H309:7,E;:U;FUS;:H309:7,V;:M;MIR;:H310:7,V",
"Edge9;:M;FUS;:H30a:7,E;:M;MIR;:H310:7,E",
// TODO: Testing the Faces here was non-deterministic from run to run. Is that okay?
}));
EXPECT_TRUE(elementsMatch(_mirror->Shape.getShape(),
{
"Edge10;FUS;:Hfd6:4,E;:M;MIR;:Hfdd:7,E",
"Edge10;FUS;:Hfd7:4,E;:M;MIR;:Hfdd:7,E",
"Edge11;FUS;:Hfd6:4,E;:M;MIR;:Hfdd:7,E",
"Edge11;FUS;:Hfd7:4,E;:M;MIR;:Hfdd:7,E",
"Edge12;FUS;:Hfd6:4,E;:M;MIR;:Hfdd:7,E",
"Edge12;FUS;:Hfd7:4,E;:M;MIR;:Hfdd:7,E",
"Edge1;FUS;:Hfd6:4,E;:M;MIR;:Hfdd:7,E",
"Edge1;FUS;:Hfd7:4,E;:M;MIR;:Hfdd:7,E",
"Edge2;:M2(Edge2;:Hfd7,E);FUS;:Hfd6:17,E;:M;MIR;:Hfdd:7,E",
"Edge2;:M2;FUS;:Hfd7:8,E;:M;MIR;:Hfdd:7,E",
"Edge2;:M;FUS;:Hfd6:7,E;:M;MIR;:Hfdd:7,E",
"Edge3;FUS;:Hfd6:4,E;:M;MIR;:Hfdd:7,E",
"Edge3;FUS;:Hfd7:4,E;:M;MIR;:Hfdd:7,E",
"Edge4;:M2(Edge4;:Hfd7,E);FUS;:Hfd6:17,E;:M;MIR;:Hfdd:7,E",
"Edge4;:M2;FUS;:Hfd7:8,E;:M;MIR;:Hfdd:7,E",
"Edge4;:M;FUS;:Hfd6:7,E;:M;MIR;:Hfdd:7,E",
"Edge5;FUS;:Hfd6:4,E;:M;MIR;:Hfdd:7,E",
"Edge5;FUS;:Hfd7:4,E;:M;MIR;:Hfdd:7,E",
"Edge6;:M2(Edge6;:Hfd7,E);FUS;:Hfd6:17,E;:M;MIR;:Hfdd:7,E",
"Edge6;:M2;FUS;:Hfd7:8,E;:M;MIR;:Hfdd:7,E",
"Edge6;:M;FUS;:Hfd6:7,E;:M;MIR;:Hfdd:7,E",
"Edge7;FUS;:Hfd6:4,E;:M;MIR;:Hfdd:7,E",
"Edge7;FUS;:Hfd7:4,E;:M;MIR;:Hfdd:7,E",
"Edge8;:M2(Edge8;:Hfd7,E);FUS;:Hfd6:17,E;:M;MIR;:Hfdd:7,E",
"Edge8;:M2;FUS;:Hfd7:8,E;:M;MIR;:Hfdd:7,E",
"Edge8;:M;FUS;:Hfd6:7,E;:M;MIR;:Hfdd:7,E",
"Edge9;FUS;:Hfd6:4,E;:M;MIR;:Hfdd:7,E",
"Edge9;FUS;:Hfd7:4,E;:M;MIR;:Hfdd:7,E",
"Face1;:M2(Face1;:Hfd7,F);FUS;:Hfd6:17,F;:M;MIR;:Hfdd:7,F",
"Face1;:M2;FUS;:Hfd7:8,F;:M;MIR;:Hfdd:7,F",
"Face1;:M;FUS;:Hfd6:7,F;:M;MIR;:Hfdd:7,F",
"Face2;:M2(Face2;:Hfd7,F);FUS;:Hfd6:17,F;:M;MIR;:Hfdd:7,F",
"Face2;:M2;FUS;:Hfd7:8,F;:M;MIR;:Hfdd:7,F",
"Face2;:M;FUS;:Hfd6:7,F;:M;MIR;:Hfdd:7,F",
"Face3;FUS;:Hfd6:4,F;:M;MIR;:Hfdd:7,F",
"Face4;FUS;:Hfd7:4,F;:M;MIR;:Hfdd:7,F",
"Face5;:M2(Face5;:Hfd7,F);FUS;:Hfd6:17,F;:M;MIR;:Hfdd:7,F",
"Face5;:M2;FUS;:Hfd7:8,F;:M;MIR;:Hfdd:7,F",
"Face5;:M;FUS;:Hfd6:7,F;:M;MIR;:Hfdd:7,F",
"Face6;:M2(Face6;:Hfd7,F);FUS;:Hfd6:17,F;:M;MIR;:Hfdd:7,F",
"Face6;:M2;FUS;:Hfd7:8,F;:M;MIR;:Hfdd:7,F",
"Face6;:M;FUS;:Hfd6:7,F;:M;MIR;:Hfdd:7,F",
"Vertex1;FUS;:Hfd6:4,V;:M;MIR;:Hfdd:7,V",
"Vertex1;FUS;:Hfd7:4,V;:M;MIR;:Hfdd:7,V",
"Vertex2;FUS;:Hfd6:4,V;:M;MIR;:Hfdd:7,V",
"Vertex2;FUS;:Hfd7:4,V;:M;MIR;:Hfdd:7,V",
"Vertex3;FUS;:Hfd6:4,V;:M;MIR;:Hfdd:7,V",
"Vertex3;FUS;:Hfd7:4,V;:M;MIR;:Hfdd:7,V",
"Vertex4;FUS;:Hfd6:4,V;:M;MIR;:Hfdd:7,V",
"Vertex4;FUS;:Hfd7:4,V;:M;MIR;:Hfdd:7,V",
"Vertex5;FUS;:Hfd6:4,V;:M;MIR;:Hfdd:7,V",
"Vertex5;FUS;:Hfd7:4,V;:M;MIR;:Hfdd:7,V",
"Vertex6;FUS;:Hfd6:4,V;:M;MIR;:Hfdd:7,V",
"Vertex6;FUS;:Hfd7:4,V;:M;MIR;:Hfdd:7,V",
"Vertex7;FUS;:Hfd6:4,V;:M;MIR;:Hfdd:7,V",
"Vertex7;FUS;:Hfd7:4,V;:M;MIR;:Hfdd:7,V",
"Vertex8;FUS;:Hfd6:4,V;:M;MIR;:Hfdd:7,V",
"Vertex8;FUS;:Hfd7:4,V;:M;MIR;:Hfdd:7,V",
}));
#else
EXPECT_EQ(_mirror->Shape.getShape().getElementMapSize(), 0);
#endif

View File

@@ -86,39 +86,40 @@ TEST_F(FeatureOffsetTest, testOffset3DWithExistingElementMap)
EXPECT_TRUE(elementsMatch(
_offset->Shape.getShape(),
{
"Edge2;:M2(Edge2;:H366,E);FUS;:H365:17,E;:G(Edge2;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge2;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:G;OFS;:H36c:7,E;SLD;:H36c:4,E",
"Edge2;:M2(Edge2;:H366,E);FUS;:H365:17,E;:G(Edge2;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge2;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:U2;RFI;:H365:8,V;:G;OFS;:H36c:7,"
"V;SLD;:H36c:4,V",
"Edge2;:M2(Edge2;:H366,E);FUS;:H365:17,E;:G(Edge2;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge2;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:U;RFI;:H365:7,V;:G;OFS;:H36c:7,"
"V;SLD;:H36c:4,V",
"Edge4;:M2(Edge4;:H366,E);FUS;:H365:17,E;:G(Edge4;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge4;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:G;OFS;:H36c:7,E;SLD;:H36c:4,E",
"Edge4;:M2(Edge4;:H366,E);FUS;:H365:17,E;:G(Edge4;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge4;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:U2;RFI;:H365:8,V;:G;OFS;:H36c:7,"
"V;SLD;:H36c:4,V",
"Edge4;:M2(Edge4;:H366,E);FUS;:H365:17,E;:G(Edge4;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge4;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:U;RFI;:H365:7,V;:G;OFS;:H36c:7,"
"V;SLD;:H36c:4,V",
"Edge6;:M2(Edge6;:H366,E);FUS;:H365:17,E;:G(Edge6;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge6;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:G;OFS;:H36c:7,E;SLD;:H36c:4,E",
"Edge6;:M2(Edge6;:H366,E);FUS;:H365:17,E;:G(Edge6;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge6;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:U2;RFI;:H365:8,V;:G;OFS;:H36c:7,"
"V;SLD;:H36c:4,V",
"Edge6;:M2(Edge6;:H366,E);FUS;:H365:17,E;:G(Edge6;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge6;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:U;RFI;:H365:7,V;:G;OFS;:H36c:7,"
"V;SLD;:H36c:4,V",
"Edge8;:M2(Edge8;:H366,E);FUS;:H365:17,E;:G(Edge8;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge8;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:G;OFS;:H36c:7,E;SLD;:H36c:4,E",
"Edge8;:M2(Edge8;:H366,E);FUS;:H365:17,E;:G(Edge8;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge8;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:U2;RFI;:H365:8,V;:G;OFS;:H36c:7,"
"V;SLD;:H36c:4,V",
"Edge8;:M2(Edge8;:H366,E);FUS;:H365:17,E;:G(Edge8;:M2;FUS;:H366:8,E;K-1;:H366:4,E|"
"Edge8;:M;FUS;:H365:7,E;K-1;:H365:4,E);RFI;:H365:53,E;:U;RFI;:H365:7,V;:G;OFS;:H36c:7,"
"V;SLD;:H36c:4,V",
// TODO: Testing the Faces here was non-deterministic from run to run. Is that okay?
"Edge10;FUS;:He59:4,E;RFI;:He59:4,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge11;FUS;:He5a:4,E;RFI;:He5a:4,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge12;FUS;:He5a:4,E;RFI;:He5a:4,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge1;FUS;:He59:4,E;RFI;:He59:4,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge2;:M2(Edge2;:He5a,E);FUS;:He59:17,E;:G(Edge2;:M2;FUS;:He5a:8,E;K-1;:He5a:4,E|"
"Edge2;:M;FUS;:He59:7,E;K-1;:He59:4,E);RFI;:He59:53,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge3;FUS;:He5a:4,E;RFI;:He5a:4,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge4;:M2(Edge4;:He5a,E);FUS;:He59:17,E;:G(Edge4;:M2;FUS;:He5a:8,E;K-1;:He5a:4,E|"
"Edge4;:M;FUS;:He59:7,E;K-1;:He59:4,E);RFI;:He59:53,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge5;FUS;:He59:4,E;RFI;:He59:4,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge6;:M2(Edge6;:He5a,E);FUS;:He59:17,E;:G(Edge6;:M2;FUS;:He5a:8,E;K-1;:He5a:4,E|"
"Edge6;:M;FUS;:He59:7,E;K-1;:He59:4,E);RFI;:He59:53,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge7;FUS;:He5a:4,E;RFI;:He5a:4,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge8;:M2(Edge8;:He5a,E);FUS;:He59:17,E;:G(Edge8;:M2;FUS;:He5a:8,E;K-1;:He5a:4,E|"
"Edge8;:M;FUS;:He59:7,E;K-1;:He59:4,E);RFI;:He59:53,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Edge9;FUS;:He59:4,E;RFI;:He59:4,E;:G;OFS;:He60:7,E;SLD;:He60:4,E",
"Face1;:M2(Face1;:He5a,F);FUS;:He59:17,F;:G(Face1;:M2;FUS;:He5a:8,F;K-1;:He5a:4,F|"
"Face1;:M;FUS;:He59:7,F;K-1;:He59:4,F);RFI;:He59:53,F;:G;OFS;:He60:7,F;SLD;:He60:4,F",
"Face2;:M2(Face2;:He5a,F);FUS;:He59:17,F;:G(Face2;:M2;FUS;:He5a:8,F;K-1;:He5a:4,F|"
"Face2;:M;FUS;:He59:7,F;K-1;:He59:4,F);RFI;:He59:53,F;:G;OFS;:He60:7,F;SLD;:He60:4,F",
"Face3;FUS;:He59:4,F;RFI;:He59:4,F;:G;OFS;:He60:7,F;SLD;:He60:4,F",
"Face4;FUS;:He5a:4,F;RFI;:He5a:4,F;:G;OFS;:He60:7,F;SLD;:He60:4,F",
"Face5;:M2(Face5;:He5a,F);FUS;:He59:17,F;:G(Face5;:M2;FUS;:He5a:8,F;K-1;:He5a:4,F|"
"Face5;:M;FUS;:He59:7,F;K-1;:He59:4,F);RFI;:He59:53,F;:G;OFS;:He60:7,F;SLD;:He60:4,F",
"Face6;:M2(Face6;:He5a,F);FUS;:He59:17,F;:G(Face6;:M2;FUS;:He5a:8,F;K-1;:He5a:4,F|"
"Face6;:M;FUS;:He59:7,F;K-1;:He59:4,F);RFI;:He59:53,F;:G;OFS;:He60:7,F;SLD;:He60:4,F",
"Vertex1;FUS;:He59:4,V;RFI;:He59:4,V;:G;OFS;:He60:7,V;SLD;:He60:4,V",
"Vertex2;FUS;:He59:4,V;RFI;:He59:4,V;:G;OFS;:He60:7,V;SLD;:He60:4,V",
"Vertex3;FUS;:He5a:4,V;RFI;:He5a:4,V;:G;OFS;:He60:7,V;SLD;:He60:4,V",
"Vertex4;FUS;:He5a:4,V;RFI;:He5a:4,V;:G;OFS;:He60:7,V;SLD;:He60:4,V",
"Vertex5;FUS;:He59:4,V;RFI;:He59:4,V;:G;OFS;:He60:7,V;SLD;:He60:4,V",
"Vertex6;FUS;:He59:4,V;RFI;:He59:4,V;:G;OFS;:He60:7,V;SLD;:He60:4,V",
"Vertex7;FUS;:He5a:4,V;RFI;:He5a:4,V;:G;OFS;:He60:7,V;SLD;:He60:4,V",
"Vertex8;FUS;:He5a:4,V;RFI;:He5a:4,V;:G;OFS;:He60:7,V;SLD;:He60:4,V",
}));
#else
EXPECT_EQ(_offset->Shape.getShape().getElementMapSize(), 0);

View File

@@ -175,15 +175,17 @@ testing::AssertionResult elementsMatch(const TopoShape& shape,
if (std::find_if(elements.begin(),
elements.end(),
[&, name](const Data::MappedElement& element) {
return matchStringsWithoutClause(element.name.toString(),
name,
"(;D|;:H|;K)-?[a-fA-F0-9]+");
return matchStringsWithoutClause(
element.name.toString(),
name,
"(;D|;:H|;K)-?[a-fA-F0-9]+(:[0-9]+)?");
// ;D ;:H and ;K are the sections of an encoded name for
// Duplicate, Tag and a Face name in slices. All three of these
// can vary from run to run or platform to platform, as they are
// based on either explicit random numbers or memory addresses.
// Thus we remove the value from comparisons and just check that
// they exist.
// they exist. The full form could be something like ;:He59:53
// which is what we match and remove.
})
== elements.end()) {
return testing::AssertionFailure() << mappedElementVectorToString(elements);