aboutsummaryrefslogtreecommitdiff
path: root/Tests/NorgUITests/OrdinalTests.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/NorgUITests/OrdinalTests.swift')
-rw-r--r--Tests/NorgUITests/OrdinalTests.swift38
1 files changed, 38 insertions, 0 deletions
diff --git a/Tests/NorgUITests/OrdinalTests.swift b/Tests/NorgUITests/OrdinalTests.swift
new file mode 100644
index 0000000..954477c
--- /dev/null
+++ b/Tests/NorgUITests/OrdinalTests.swift
@@ -0,0 +1,38 @@
+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])
+ }
+}