add emitwithack tests

This commit is contained in:
Erik 2015-10-07 14:31:35 -04:00
parent 90c7c9aadc
commit 4c7a09cc8e
2 changed files with 50 additions and 4 deletions

View File

@ -94,4 +94,43 @@ class SocketBasicEmitTest: XCTestCase {
socket.emitTest("test", ["data1": data, "data2": data2]) socket.emitTest("test", ["data1": data, "data2": data2])
XCTAssert(engine.socketDidCorrectlyCreatePacket()) XCTAssert(engine.socketDidCorrectlyCreatePacket())
} }
func testEmitWithAck() {
let engine = SocketTestEngine(client: socket,
expectedSendString: "20[\"test\"]",
expectedNumberOfBinary: 0,
expectedBinary: nil)
engine.expectation = expectationWithDescription("emitWithAck")
socket.setTestEngine(engine)
socket.emitWithAck("test")(timeoutAfter: 0) {data in
engine.socketDidCorrectlyCreatePacket()
}
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 10000), dispatch_get_main_queue()) {
self.socket.parseSocketMessage("30[]")
}
waitForExpectationsWithTimeout(2, handler: nil)
}
func testEmitDataWithAck() {
let data = "test".dataUsingEncoding(NSUTF8StringEncoding)!
let engine = SocketTestEngine(client: socket,
expectedSendString: "51-0[\"test\",{\"num\":0,\"_placeholder\":true}]",
expectedNumberOfBinary: 1,
expectedBinary: [data])
engine.expectation = expectationWithDescription("emitWithAck")
socket.setTestEngine(engine)
socket.emitWithAck("test", data)(timeoutAfter: 0) {data in
engine.socketDidCorrectlyCreatePacket()
}
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 10000), dispatch_get_main_queue()) {
self.socket.parseSocketMessage("30[]")
}
waitForExpectationsWithTimeout(3, handler: nil)
}
} }

View File

@ -27,14 +27,15 @@
// Test engine used to test SocketIOClient // Test engine used to test SocketIOClient
import Foundation import Foundation
import XCTest
class SocketTestEngine: NSObject, SocketEngineSpec { class SocketTestEngine: NSObject, SocketEngineSpec {
private let expectedNumberOfBinary: Int private let expectedNumberOfBinary: Int
private let expectedSendString: String private let expectedSendString: String
private var expectedBinary: [NSData]? private var expectedBinary: [NSData]?
private var binary: [NSData]? private var binary: [NSData]?
private var sendString: String! private var sendString = ""
private var numOfBinary: Int! private var numOfBinary = -1
private(set) var sid = "" private(set) var sid = ""
private(set) var cookies: [NSHTTPCookie]? private(set) var cookies: [NSHTTPCookie]?
@ -44,6 +45,7 @@ class SocketTestEngine: NSObject, SocketEngineSpec {
private(set) var ws: WebSocket? private(set) var ws: WebSocket?
weak var client: SocketEngineClient? weak var client: SocketEngineClient?
var expectation: XCTestExpectation?
init(client: SocketIOClient, expectedSendString: String, expectedNumberOfBinary: Int, expectedBinary: [NSData]?) { init(client: SocketIOClient, expectedSendString: String, expectedNumberOfBinary: Int, expectedBinary: [NSData]?) {
self.client = client self.client = client
@ -72,9 +74,14 @@ class SocketTestEngine: NSObject, SocketEngineSpec {
} }
func socketDidCorrectlyCreatePacket() -> Bool { func socketDidCorrectlyCreatePacket() -> Bool {
return expectedNumberOfBinary == numOfBinary if expectedNumberOfBinary == numOfBinary
&& sendString == expectedSendString && sendString == expectedSendString
&& expectedBinary ?? [] == binary ?? [] && expectedBinary ?? [] == binary ?? [] {
expectation?.fulfill()
return true
} else {
return false
}
} }
func write(msg: String, withType type: SocketEnginePacketType, withData data: [NSData]?) {} func write(msg: String, withType type: SocketEnginePacketType, withData data: [NSData]?) {}