import NorgKit import Testing @testable import NorgUI @Suite struct OrdinalTests { private func ordered(_ level: Int) -> NorgBlock { .orderedListItem(level: level, status: nil, content: [], line: 0) } private func unordered(_ level: Int) -> NorgBlock { .unorderedListItem(level: level, status: nil, content: [], line: 0) } private var paragraph: NorgBlock { .paragraph(content: [], line: 0) } @Test func numbersConsecutiveItems() { #expect(orderedOrdinals([ordered(1), ordered(1), ordered(1)]) == [1, 2, 3]) } @Test func countsEachLevelIndependently() { let blocks = [ordered(1), ordered(2), ordered(2), ordered(1)] #expect(orderedOrdinals(blocks) == [1, 1, 2, 2]) } @Test func paragraphResetsNumbering() { let blocks = [ordered(1), paragraph, ordered(1)] #expect(orderedOrdinals(blocks) == [1, nil, 1]) } @Test func unorderedItemInterruptsNumbering() { let blocks = [ordered(1), unordered(1), ordered(1)] #expect(orderedOrdinals(blocks) == [1, nil, 1]) } @Test func siblingOrdinalsNumberOrderedNodesOnly() { let nodes = [ordered(1), unordered(1), ordered(1), paragraph].map { NorgNode(block: $0) } #expect(ordinals(forSiblings: nodes) == [1, nil, 2, nil]) } }