── Test: Padding line rejects value editing ──
| 753 | |
| 754 | // ── Test: Padding line rejects value editing ── |
| 755 | void testPaddingLineRejectsValueEdit() { |
| 756 | m_editor->applyDocument(m_result); |
| 757 | |
| 758 | // Find a Padding line in the composed output |
| 759 | int paddingLine = -1; |
| 760 | for (int i = 0; i < m_result.meta.size(); i++) { |
| 761 | if (m_result.meta[i].nodeKind == NodeKind::Padding && |
| 762 | m_result.meta[i].lineKind == LineKind::Field) { |
| 763 | paddingLine = i; |
| 764 | break; |
| 765 | } |
| 766 | } |
| 767 | QVERIFY2(paddingLine >= 0, "Should have at least one Padding line in test tree"); |
| 768 | |
| 769 | const LineMeta* lm = m_editor->metaForLine(paddingLine); |
| 770 | QVERIFY(lm); |
| 771 | QCOMPARE(lm->nodeKind, NodeKind::Padding); |
| 772 | |
| 773 | // Value edit on Padding MUST be rejected (the bug fix) |
| 774 | QVERIFY2(!m_editor->beginInlineEdit(EditTarget::Value, paddingLine), |
| 775 | "Value edit should be rejected on Padding lines"); |
| 776 | QVERIFY(!m_editor->isEditing()); |
| 777 | |
| 778 | // Name edit on Padding SHOULD succeed (ASCII preview column is editable) |
| 779 | bool ok = m_editor->beginInlineEdit(EditTarget::Name, paddingLine); |
| 780 | QVERIFY2(ok, "Name edit should be allowed on Padding lines (ASCII preview)"); |
| 781 | QVERIFY(m_editor->isEditing()); |
| 782 | m_editor->cancelInlineEdit(); |
| 783 | |
| 784 | // Type edit on Padding SHOULD succeed (emits popup signal) |
| 785 | QSignalSpy typeSpy(m_editor, &RcxEditor::typePickerRequested); |
| 786 | ok = m_editor->beginInlineEdit(EditTarget::Type, paddingLine); |
| 787 | QVERIFY2(ok, "Type edit should be allowed on Padding lines"); |
| 788 | QCOMPARE(typeSpy.count(), 1); |
| 789 | } |
| 790 | |
| 791 | // ── Test: resolvedSpanFor rejects Value on Padding (defense-in-depth) ── |
| 792 | void testPaddingLineRejectsValueSpan() { |
nothing calls this directly
no test coverage detected