aboutsummaryrefslogtreecommitdiff
path: root/Tests/NorgUITests/OrdinalTests.swift
blob: 954477c2695dc901c58434352f747bdd9870942b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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])
  }
}