blob: 7ef14793f8e0d6e7f453dfa5b092e1d5af0da5c3 (
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
import Testing
@testable import NorgKit
struct DetachedModifierTests {
private let markers = ASCIIByteSet("*-~>$^:")
@Test func parsesMarkerLevelAndContent() {
let m = DetachedModifier.parse("** heading"[...], accepting: markers)
#expect(m?.marker == "*")
#expect(m?.level == 2)
#expect(m?.content == "heading")
#expect(m?.status == nil)
}
@Test func skipsLeadingWhitespace() {
let m = DetachedModifier.parse(" - item"[...], accepting: markers)
#expect(m?.marker == "-")
#expect(m?.level == 1)
#expect(m?.content == "item")
}
@Test func parsesStatusAndStatusIndex() {
let line = "- (x) done"
let m = DetachedModifier.parse(line[...], accepting: markers)
#expect(m?.status == .done)
#expect(m?.content == "done")
if let index = m?.statusIndex {
#expect(line[index] == "x")
} else {
Issue.record("Expected a status index")
}
}
@Test func returnsNilForUnacceptedMarker() {
#expect(DetachedModifier.parse("+ item"[...], accepting: markers) == nil)
}
@Test func returnsNilWithoutWhitespaceAfterMarker() {
#expect(DetachedModifier.parse("*bold*"[...], accepting: markers) == nil)
}
@Test func returnsNilForEmptyAndBlankLines() {
#expect(DetachedModifier.parse(""[...], accepting: markers) == nil)
#expect(DetachedModifier.parse(" "[...], accepting: markers) == nil)
}
@Test func unterminatedStatusParenIsTreatedAsContent() {
let m = DetachedModifier.parse("- (x oops"[...], accepting: markers)
#expect(m?.status == nil)
#expect(m?.content == "(x oops")
}
@Test func unknownStatusCharInParensIsContent() {
let m = DetachedModifier.parse("- (z) text"[...], accepting: markers)
#expect(m?.status == nil)
#expect(m?.content == "(z) text")
}
}
|