]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/thrift/lib/swift/Tests/ThriftTests/TBinaryProtocolTests.swift
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / thrift / lib / swift / Tests / ThriftTests / TBinaryProtocolTests.swift
CommitLineData
f67539c2
TL
1//
2// TBinaryProtocolTests.swift
3// Thrift
4//
5// Created by Christopher Simpson on 8/18/16.
6//
7//
8
9import XCTest
10import Foundation
11@testable import Thrift
12
13
14/// Testing Binary protocol read/write against itself
15/// Uses separate read/write transport/protocols
16class TBinaryProtocolTests: XCTestCase {
17 var transport: TMemoryBufferTransport = TMemoryBufferTransport(flushHandler: {
18 $0.reset(readBuffer: $1)
19 })
20
21 var proto: TBinaryProtocol!
22
23 override func setUp() {
24 super.setUp()
25 proto = TBinaryProtocol(on: transport)
26 transport.reset()
27 }
28
29 override func tearDown() {
30 super.tearDown()
31 transport.reset()
32 }
33
34 func testInt8WriteRead() {
35 let writeVal: UInt8 = 250
36 try? proto.write(writeVal)
37 try? transport.flush()
38
39 let readVal: UInt8 = (try? proto.read()) ?? 0
40 XCTAssertEqual(writeVal, readVal, "Error with UInt8, wrote \(writeVal) but read \(readVal)")
41 }
42
43 func testInt16WriteRead() {
44
45 let writeVal: Int16 = 12312
46 try? proto.write(writeVal)
47 try? transport.flush()
48 let readVal: Int16 = (try? proto.read()) ?? 0
49 XCTAssertEqual(writeVal, readVal, "Error with Int16, wrote \(writeVal) but read \(readVal)")
50 }
51
52 func testInt32WriteRead() {
53 let writeVal: Int32 = 2029234
54 try? proto.write(writeVal)
55 try? transport.flush()
56
57 let readVal: Int32 = (try? proto.read()) ?? 0
58 XCTAssertEqual(writeVal, readVal, "Error with Int32, wrote \(writeVal) but read \(readVal)")
59 }
60
61 func testInt64WriteRead() {
62 let writeVal: Int64 = 234234981374134
63 try? proto.write(writeVal)
64 try? transport.flush()
65
66 let readVal: Int64 = (try? proto.read()) ?? 0
67 XCTAssertEqual(writeVal, readVal, "Error with Int64, wrote \(writeVal) but read \(readVal)")
68 }
69
70 func testDoubleWriteRead() {
71 let writeVal: Double = 3.1415926
72 try? proto.write(writeVal)
73 try? transport.flush()
74
75 let readVal: Double = (try? proto.read()) ?? 0.0
76 XCTAssertEqual(writeVal, readVal, "Error with Double, wrote \(writeVal) but read \(readVal)")
77 }
78
79 func testBoolWriteRead() {
80 let writeVal: Bool = true
81 try? proto.write(writeVal)
82 try? transport.flush()
83
84 let readVal: Bool = (try? proto.read()) ?? false
85 XCTAssertEqual(writeVal, readVal, "Error with Bool, wrote \(writeVal) but read \(readVal)")
86 }
87
88 func testStringWriteRead() {
89 let writeVal: String = "Hello World"
90 try? proto.write(writeVal)
91 try? transport.flush()
92
93 let readVal: String!
94 do {
95 readVal = try proto.read()
96 } catch let error {
97 XCTAssertFalse(true, "Error reading \(error)")
98 return
99 }
100
101 XCTAssertEqual(writeVal, readVal, "Error with String, wrote \(writeVal) but read \(readVal)")
102 }
103
104 func testDataWriteRead() {
105 let writeVal: Data = "Data World".data(using: .utf8)!
106 try? proto.write(writeVal)
107 try? transport.flush()
108
109 let readVal: Data = (try? proto.read()) ?? "Goodbye World".data(using: .utf8)!
110 XCTAssertEqual(writeVal, readVal, "Error with Data, wrote \(writeVal) but read \(readVal)")
111 }
112
113 func testStructWriteRead() {
114 let msg = "Test Protocol Error"
115 let writeVal = TApplicationError(error: .protocolError, message: msg)
116 do {
117 try writeVal.write(to: proto)
118 try? transport.flush()
119
120 } catch let error {
121 XCTAssertFalse(true, "Caught Error attempting to write \(error)")
122 }
123
124 do {
125 let readVal = try TApplicationError.read(from: proto)
126 XCTAssertEqual(readVal.error.thriftErrorCode, writeVal.error.thriftErrorCode, "Error case mismatch, expected \(readVal.error) got \(writeVal.error)")
127 XCTAssertEqual(readVal.message, writeVal.message, "Error message mismatch, expected \(readVal.message) got \(writeVal.message)")
128 } catch let error {
129 XCTAssertFalse(true, "Caught Error attempting to read \(error)")
130 }
131 }
132 func testUnsafeBitcastUpdate() {
133 let value: Double = 3.14159
134 let val: Int64 = 31415926
135 let uval: UInt64 = 31415926
136
137 let i64 = Int64(bitPattern: value.bitPattern)
138 let ubc = unsafeBitCast(value, to: Int64.self)
139
140 XCTAssertEqual(i64, ubc, "Bitcast Double-> i64 Values don't match")
141
142 let dbl = Double(bitPattern: UInt64(val))
143 let ubdb = unsafeBitCast(val, to: Double.self)
144
145 XCTAssertEqual(dbl, ubdb, "Bitcast i64 -> Double Values don't match")
146
147 let db2 = Double(bitPattern: uval)
148 let usbc2 = unsafeBitCast(uval, to: Double.self)
149
150 XCTAssertEqual(db2, usbc2, "Bitcast u64 -> Double Values don't match")
151
152
153 }
154
155 static var allTests : [(String, (TBinaryProtocolTests) -> () throws -> Void)] {
156 return [
157 ("testInt8WriteRead", testInt8WriteRead),
158 ("testInt16WriteRead", testInt16WriteRead),
159 ("testInt32WriteRead", testInt32WriteRead),
160 ("testInt64WriteRead", testInt64WriteRead),
161 ("testDoubleWriteRead", testDoubleWriteRead),
162 ("testBoolWriteRead", testBoolWriteRead),
163 ("testStringWriteRead", testStringWriteRead),
164 ("testDataWriteRead", testDataWriteRead),
165 ("testStructWriteRead", testStructWriteRead)
166 ]
167 }
168}