MCPcopy Create free account
hub / github.com/IChooseYou/Reclass / testPointerSpans

Method testPointerSpans

tests/test_compose.cpp:1359–1415  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1357 }
1358
1359 void testPointerSpans() {
1360 // pointerKindSpanFor and pointerTargetSpanFor must find correct regions
1361 NodeTree tree;
1362 tree.baseAddress = 0;
1363
1364 Node root;
1365 root.kind = NodeKind::Struct;
1366 root.name = "Root";
1367 root.parentId = 0;
1368 int ri = tree.addNode(root);
1369 uint64_t rootId = tree.nodes[ri].id;
1370
1371 Node target;
1372 target.kind = NodeKind::Struct;
1373 target.name = "VTable";
1374 target.structTypeName = "VTable";
1375 target.parentId = 0;
1376 target.offset = 200;
1377 int ti = tree.addNode(target);
1378 uint64_t targetId = tree.nodes[ti].id;
1379
1380 Node ptr;
1381 ptr.kind = NodeKind::Pointer64;
1382 ptr.name = "vtbl";
1383 ptr.parentId = rootId;
1384 ptr.offset = 0;
1385 ptr.refId = targetId;
1386 ptr.collapsed = true;
1387 tree.addNode(ptr);
1388
1389 NullProvider prov;
1390 ComposeResult result = compose(tree, prov);
1391
1392 int ptrLine = -1;
1393 for (int i = 0; i < result.meta.size(); i++) {
1394 if (result.meta[i].nodeKind == NodeKind::Pointer64 &&
1395 result.meta[i].lineKind == LineKind::Field) {
1396 ptrLine = i;
1397 break;
1398 }
1399 }
1400 QVERIFY(ptrLine >= 0);
1401
1402 QStringList lines = result.text.split('\n');
1403 QString lineText = lines[ptrLine];
1404 const LineMeta& lm = result.meta[ptrLine];
1405
1406 // Kind span: no longer applicable in "Type*" format
1407 ColumnSpan kindSpan = pointerKindSpanFor(lm, lineText);
1408 QVERIFY2(!kindSpan.valid, "pointerKindSpanFor should return invalid in Type* format");
1409
1410 // Target span: covers "VTable" (before the '*')
1411 ColumnSpan targetSpan = pointerTargetSpanFor(lm, lineText);
1412 QVERIFY2(targetSpan.valid, "pointerTargetSpanFor must return valid span");
1413 QString targetText = lineText.mid(targetSpan.start, targetSpan.end - targetSpan.start).trimmed();
1414 QCOMPARE(targetText, QString("VTable"));
1415 }
1416

Callers

nothing calls this directly

Calls 5

composeFunction · 0.85
pointerKindSpanForFunction · 0.85
pointerTargetSpanForFunction · 0.85
addNodeMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected