From 4c7a09cc8e83f44ac99005fdc64d9038d12bba93 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 7 Oct 2015 14:31:35 -0400 Subject: [PATCH] add emitwithack tests --- SocketIO-MacTests/SocketBasicEmitTest.swift | 39 +++++++++++++++++++++ SocketIO-MacTests/SocketTestEngine.swift | 15 +++++--- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/SocketIO-MacTests/SocketBasicEmitTest.swift b/SocketIO-MacTests/SocketBasicEmitTest.swift index 739d1fa..a0827c5 100644 --- a/SocketIO-MacTests/SocketBasicEmitTest.swift +++ b/SocketIO-MacTests/SocketBasicEmitTest.swift @@ -94,4 +94,43 @@ class SocketBasicEmitTest: XCTestCase { socket.emitTest("test", ["data1": data, "data2": data2]) 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) + } } diff --git a/SocketIO-MacTests/SocketTestEngine.swift b/SocketIO-MacTests/SocketTestEngine.swift index 0a12b0b..af476fa 100644 --- a/SocketIO-MacTests/SocketTestEngine.swift +++ b/SocketIO-MacTests/SocketTestEngine.swift @@ -27,14 +27,15 @@ // Test engine used to test SocketIOClient import Foundation +import XCTest class SocketTestEngine: NSObject, SocketEngineSpec { private let expectedNumberOfBinary: Int private let expectedSendString: String private var expectedBinary: [NSData]? private var binary: [NSData]? - private var sendString: String! - private var numOfBinary: Int! + private var sendString = "" + private var numOfBinary = -1 private(set) var sid = "" private(set) var cookies: [NSHTTPCookie]? @@ -44,6 +45,7 @@ class SocketTestEngine: NSObject, SocketEngineSpec { private(set) var ws: WebSocket? weak var client: SocketEngineClient? + var expectation: XCTestExpectation? init(client: SocketIOClient, expectedSendString: String, expectedNumberOfBinary: Int, expectedBinary: [NSData]?) { self.client = client @@ -72,9 +74,14 @@ class SocketTestEngine: NSObject, SocketEngineSpec { } func socketDidCorrectlyCreatePacket() -> Bool { - return expectedNumberOfBinary == numOfBinary + if expectedNumberOfBinary == numOfBinary && sendString == expectedSendString - && expectedBinary ?? [] == binary ?? [] + && expectedBinary ?? [] == binary ?? [] { + expectation?.fulfill() + return true + } else { + return false + } } func write(msg: String, withType type: SocketEnginePacketType, withData data: [NSData]?) {}