You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Music/MusicTests/NDJSONTransportTests.swift

32 lines
1.1 KiB

import Testing
import Foundation
@testable import Music
struct NDJSONTransportTests {
// Verifies that feed() correctly splits newline-delimited input into individual lines.
@Test func splitsLinesCorrectly() {
var lines: [String] = []
let buffer = NDJSONLineBuffer { lines.append($0) }
buffer.feed(Data("{\"type\":\"pause\"}\n{\"type\":\"resume\"}\n".utf8))
#expect(lines == ["{\"type\":\"pause\"}", "{\"type\":\"resume\"}"])
}
// Verifies that a line split across two TCP reads is reassembled.
@Test func handlesPartialLines() {
var lines: [String] = []
let buffer = NDJSONLineBuffer { lines.append($0) }
buffer.feed(Data("{\"type\":\"pa".utf8))
#expect(lines.isEmpty)
buffer.feed(Data("use\"}\n".utf8))
#expect(lines == ["{\"type\":\"pause\"}"])
}
// Verifies empty lines are ignored.
@Test func ignoresEmptyLines() {
var lines: [String] = []
let buffer = NDJSONLineBuffer { lines.append($0) }
buffer.feed(Data("\n\n{\"type\":\"next\"}\n\n".utf8))
#expect(lines == ["{\"type\":\"next\"}"])
}
}