| 4 | using namespace rcx; |
| 5 | |
| 6 | class TestCompose : public QObject { |
| 7 | Q_OBJECT |
| 8 | private slots: |
| 9 | void testBasicStruct() { |
| 10 | NodeTree tree; |
| 11 | tree.baseAddress = 0; |
| 12 | |
| 13 | Node root; |
| 14 | root.kind = NodeKind::Struct; |
| 15 | root.name = "Root"; |
| 16 | root.parentId = 0; |
| 17 | root.offset = 0; |
| 18 | int ri = tree.addNode(root); |
| 19 | uint64_t rootId = tree.nodes[ri].id; |
| 20 | |
| 21 | Node f1; |
| 22 | f1.kind = NodeKind::Hex32; |
| 23 | f1.name = "field_0"; |
| 24 | f1.parentId = rootId; |
| 25 | f1.offset = 0; |
| 26 | tree.addNode(f1); |
| 27 | |
| 28 | Node f2; |
| 29 | f2.kind = NodeKind::Float; |
| 30 | f2.name = "value"; |
| 31 | f2.parentId = rootId; |
| 32 | f2.offset = 4; |
| 33 | tree.addNode(f2); |
| 34 | |
| 35 | NullProvider prov; |
| 36 | ComposeResult result = compose(tree, prov); |
| 37 | |
| 38 | // CommandRow + 2 fields + root footer = 4 |
| 39 | QCOMPARE(result.meta.size(), 4); |
| 40 | |
| 41 | // Line 0 is CommandRow |
| 42 | QCOMPARE(result.meta[0].lineKind, LineKind::CommandRow); |
| 43 | |
| 44 | // Fields at depth 1 |
| 45 | QVERIFY(!result.meta[1].foldHead); |
| 46 | QCOMPARE(result.meta[1].depth, 1); |
| 47 | QVERIFY(!result.meta[2].foldHead); |
| 48 | QCOMPARE(result.meta[2].depth, 1); |
| 49 | |
| 50 | // Offset text |
| 51 | QCOMPARE(result.meta[1].offsetText, QString("0000 ")); |
| 52 | QCOMPARE(result.meta[2].offsetText, QString("0004 ")); |
| 53 | |
| 54 | // Line 3 is root footer |
| 55 | QCOMPARE(result.meta[3].lineKind, LineKind::Footer); |
| 56 | } |
| 57 | |
| 58 | void testVec3SingleLine() { |
| 59 | NodeTree tree; |
| 60 | tree.baseAddress = 0; |
| 61 | |
| 62 | Node root; |
| 63 | root.kind = NodeKind::Struct; |