aboutsummaryrefslogtreecommitdiff
path: root/Tests/NorgKitTests/Models/TaskStatusTests.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <jj@r.bdr.sh>2026-06-16 12:08:21 +0200
committerRuben Beltran del Rio <jj@r.bdr.sh>2026-06-16 12:22:47 +0200
commit501fdce29e4d2c46c4708ad7f44056878e0db3fa (patch)
treedb923b77037db9f5b37600a6e34c3bb2e8a971be /Tests/NorgKitTests/Models/TaskStatusTests.swift
Initial extraction from Norganize1.0.0
Diffstat (limited to 'Tests/NorgKitTests/Models/TaskStatusTests.swift')
-rw-r--r--Tests/NorgKitTests/Models/TaskStatusTests.swift54
1 files changed, 54 insertions, 0 deletions
diff --git a/Tests/NorgKitTests/Models/TaskStatusTests.swift b/Tests/NorgKitTests/Models/TaskStatusTests.swift
new file mode 100644
index 0000000..a00e50c
--- /dev/null
+++ b/Tests/NorgKitTests/Models/TaskStatusTests.swift
@@ -0,0 +1,54 @@
+import Foundation
+import Testing
+
+@testable import NorgKit
+
+struct TaskStatusTests {
+
+ @Test func parsesEveryMarker() {
+ #expect(TaskStatus(marker: " ") == .undone)
+ #expect(TaskStatus(marker: "x") == .done)
+ #expect(TaskStatus(marker: "?") == .needsInput)
+ #expect(TaskStatus(marker: "!") == .urgent)
+ #expect(TaskStatus(marker: "+") == .recurring)
+ #expect(TaskStatus(marker: "-") == .pending)
+ #expect(TaskStatus(marker: "=") == .onHold)
+ #expect(TaskStatus(marker: "_") == .cancelled)
+ }
+
+ @Test func rejectsUnknownMarker() {
+ #expect(TaskStatus(marker: "z") == nil)
+ }
+
+ @Test func parsesEveryMarkerByte() {
+ #expect(TaskStatus(markerByte: UInt8(ascii: " ")) == .undone)
+ #expect(TaskStatus(markerByte: UInt8(ascii: "x")) == .done)
+ #expect(TaskStatus(markerByte: UInt8(ascii: "?")) == .needsInput)
+ #expect(TaskStatus(markerByte: UInt8(ascii: "!")) == .urgent)
+ #expect(TaskStatus(markerByte: UInt8(ascii: "+")) == .recurring)
+ #expect(TaskStatus(markerByte: UInt8(ascii: "-")) == .pending)
+ #expect(TaskStatus(markerByte: UInt8(ascii: "=")) == .onHold)
+ #expect(TaskStatus(markerByte: UInt8(ascii: "_")) == .cancelled)
+ }
+
+ @Test func rejectsUnknownMarkerByte() {
+ #expect(TaskStatus(markerByte: UInt8(ascii: "z")) == nil)
+ }
+
+ @Test func idEqualsRawValue() {
+ for status in TaskStatus.allCases {
+ #expect(status.id == status.rawValue)
+ }
+ }
+
+ @Test func rawValuesMatchMarkers() {
+ #expect(TaskStatus.undone.rawValue == " ")
+ #expect(TaskStatus.done.rawValue == "x")
+ #expect(TaskStatus.allCases.count == 8)
+ }
+
+ @Test func roundTripsThroughJSON() throws {
+ let data = try JSONEncoder().encode(TaskStatus.urgent)
+ #expect(try JSONDecoder().decode(TaskStatus.self, from: data) == .urgent)
+ }
+}