Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions Sources/OpenAPIRuntime/Interface/HTTPBody.swift
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ public final class HTTPBody: @unchecked Sendable {
public let iterationBehavior: IterationBehavior

/// Describes the total length of the body, if known.
public enum Length: Sendable {
public enum Length: Sendable, Equatable {

/// Total length not known yet.
case unknown
Expand Down Expand Up @@ -542,10 +542,7 @@ extension HTTPBody {
@inlinable public convenience init(
_ string: some StringProtocol & Sendable
) {
self.init(
ByteChunk(string),
length: .known(string.count)
)
self.init(ByteChunk(string))
}

/// Creates a new body with the provided async throwing stream of strings.
Expand Down
7 changes: 7 additions & 0 deletions Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,13 @@ final class Test_Body: Test_Runtime {
}
XCTAssertEqual(chunks, ["hel", "lo"].map { Array($0.utf8)[...] })
}

func testUTF8String() async throws {
XCTAssertTrue(HTTPBody("abc").length == .known(3))
XCTAssertTrue(HTTPBody("🤘").length == .known(4))
XCTAssertTrue(HTTPBody("\u{1f603}").length == .known(4))
XCTAssertTrue(HTTPBody("árvíztűrő tükörfúrógép").length == .known(31))
}

func testIterationBehavior_single() async throws {
let sequence = AsyncStream(
Expand Down