Skip to content

Commit 02a75f8

Browse files
committed
another test
1 parent d75faf7 commit 02a75f8

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

Tests/PostgresNIOTests/New/PostgresRowTests.swift

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,46 @@ final class PostgresRowTests: XCTestCase {
156156
XCTAssertEqual(result?.0, .some(.none))
157157
XCTAssertEqual(result?.1, "Hello world!")
158158
}
159+
160+
func testDecodingTypeMismatch() {
161+
let rowDescription = [
162+
RowDescription.Column(
163+
name: "id",
164+
tableOID: 1,
165+
columnAttributeNumber: 1,
166+
dataType: .uuid,
167+
dataTypeSize: 0,
168+
dataTypeModifier: 0,
169+
format: .binary
170+
),
171+
RowDescription.Column(
172+
name: "name",
173+
tableOID: 1,
174+
columnAttributeNumber: 1,
175+
dataType: .int8,
176+
dataTypeSize: 0,
177+
dataTypeModifier: 0,
178+
format: .binary
179+
)
180+
]
181+
182+
let row = PostgresRow(
183+
data: .makeTestDataRow(nil, ByteBuffer(integer: 123)),
184+
lookupTable: ["id": 0, "name": 1],
185+
columns: rowDescription
186+
)
187+
188+
XCTAssertThrowsError(try row.decode((UUID?, String).self)) { error in
189+
guard let psqlError = error as? PostgresDecodingError else { return XCTFail("Unexpected error type") }
190+
191+
XCTAssertEqual(psqlError.columnName, "name")
192+
XCTAssertEqual(psqlError.columnIndex, 1)
193+
XCTAssertEqual(psqlError.line, #line - 5)
194+
XCTAssertEqual(psqlError.file, #file)
195+
XCTAssertEqual(psqlError.postgresData, ByteBuffer(integer: 123))
196+
XCTAssertEqual(psqlError.postgresFormat, .binary)
197+
XCTAssertEqual(psqlError.postgresType, .int8)
198+
XCTAssert(psqlError.targetType == String.self)
199+
}
200+
}
159201
}

0 commit comments

Comments
 (0)