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

Method testPointerDerefNull

tests/test_compose.cpp:419–476  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

417 }
418
419 void testPointerDerefNull() {
420 NodeTree tree;
421 tree.baseAddress = 0;
422
423 Node main;
424 main.kind = NodeKind::Struct;
425 main.name = "Main";
426 main.parentId = 0;
427 main.offset = 0;
428 int mi = tree.addNode(main);
429 uint64_t mainId = tree.nodes[mi].id;
430
431 Node tmpl;
432 tmpl.kind = NodeKind::Struct;
433 tmpl.name = "Target";
434 tmpl.parentId = 0;
435 tmpl.offset = 200;
436 int ti = tree.addNode(tmpl);
437 uint64_t tmplId = tree.nodes[ti].id;
438
439 Node tf;
440 tf.kind = NodeKind::UInt32;
441 tf.name = "field";
442 tf.parentId = tmplId;
443 tf.offset = 0;
444 tree.addNode(tf);
445
446 Node ptr;
447 ptr.kind = NodeKind::Pointer64;
448 ptr.name = "ptr";
449 ptr.parentId = mainId;
450 ptr.offset = 0;
451 ptr.refId = tmplId;
452 tree.addNode(ptr);
453
454 // All zeros = null pointer
455 QByteArray data(256, '\0');
456 BufferProvider prov(data);
457
458 ComposeResult result = compose(tree, prov);
459
460 // CommandRow + ptr(merged fold header) + target field + ptr footer + Main footer = 5
461 // Target standalone: header + field + footer = 3
462 // Total = 8 (null ptr still shows template preview)
463 QCOMPARE(result.meta.size(), 8);
464
465 // Pointer as merged fold header (expanded — shows template at offset 0)
466 QCOMPARE(result.meta[1].lineKind, LineKind::Header);
467 QCOMPARE(result.meta[1].depth, 1);
468 QVERIFY(result.meta[1].foldHead);
469
470 // Target field shown as template preview
471 QCOMPARE(result.meta[2].lineKind, LineKind::Field);
472 QCOMPARE(result.meta[2].depth, 2);
473
474 // Pointer fold footer
475 QCOMPARE(result.meta[3].lineKind, LineKind::Footer);
476 }

Callers

nothing calls this directly

Calls 3

composeFunction · 0.85
addNodeMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected