forked from vapor/postgres-nio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathParseTests.swift
40 lines (34 loc) · 2.06 KB
/
ParseTests.swift
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
import XCTest
import NIOCore
@testable import PostgresNIO
class ParseTests: XCTestCase {
func testEncode() {
let encoder = PSQLFrontendMessageEncoder()
var byteBuffer = ByteBuffer()
let parse = PostgresFrontendMessage.Parse(
preparedStatementName: "test",
query: "SELECT version()",
parameters: [.bool, .int8, .bytea, .varchar, .text, .uuid, .json, .jsonbArray])
let message = PostgresFrontendMessage.parse(parse)
encoder.encode(data: message, out: &byteBuffer)
let length: Int = 1 + 4 + (parse.preparedStatementName.count + 1) + (parse.query.count + 1) + 2 + parse.parameters.count * 4
// 1 id
// + 4 length
// + 4 preparedStatement (3 + 1 null terminator)
// + 1 query ()
XCTAssertEqual(byteBuffer.readableBytes, length)
XCTAssertEqual(byteBuffer.readInteger(as: UInt8.self), PostgresFrontendMessage.ID.parse.rawValue)
XCTAssertEqual(byteBuffer.readInteger(as: Int32.self), Int32(length - 1))
XCTAssertEqual(byteBuffer.readNullTerminatedString(), parse.preparedStatementName)
XCTAssertEqual(byteBuffer.readNullTerminatedString(), parse.query)
XCTAssertEqual(byteBuffer.readInteger(as: UInt16.self), UInt16(parse.parameters.count))
XCTAssertEqual(byteBuffer.readInteger(as: UInt32.self), PostgresDataType.bool.rawValue)
XCTAssertEqual(byteBuffer.readInteger(as: UInt32.self), PostgresDataType.int8.rawValue)
XCTAssertEqual(byteBuffer.readInteger(as: UInt32.self), PostgresDataType.bytea.rawValue)
XCTAssertEqual(byteBuffer.readInteger(as: UInt32.self), PostgresDataType.varchar.rawValue)
XCTAssertEqual(byteBuffer.readInteger(as: UInt32.self), PostgresDataType.text.rawValue)
XCTAssertEqual(byteBuffer.readInteger(as: UInt32.self), PostgresDataType.uuid.rawValue)
XCTAssertEqual(byteBuffer.readInteger(as: UInt32.self), PostgresDataType.json.rawValue)
XCTAssertEqual(byteBuffer.readInteger(as: UInt32.self), PostgresDataType.jsonbArray.rawValue)
}
}