diff --git a/SocketIO-MacTests/SocketBasicEmitTest.swift b/SocketIO-MacTests/SocketBasicEmitTest.swift index 657cada..739d1fa 100644 --- a/SocketIO-MacTests/SocketBasicEmitTest.swift +++ b/SocketIO-MacTests/SocketBasicEmitTest.swift @@ -23,16 +23,75 @@ class SocketBasicEmitTest: XCTestCase { } func testEmpyEmit() { - let engine = SocketTestEngine(client: socket, expectedSendString: "2[\"test\"]", expectedNumberOfBinary: 0) + let engine = SocketTestEngine(client: socket, + expectedSendString: "2[\"test\"]", + expectedNumberOfBinary: 0, + expectedBinary: nil) socket.setTestEngine(engine) socket.emitTest("test") XCTAssert(engine.socketDidCorrectlyCreatePacket()) } + func testNullEmit() { + let engine = SocketTestEngine(client: socket, + expectedSendString: "2[\"test\",null]", + expectedNumberOfBinary: 0, + expectedBinary: nil) + socket.setTestEngine(engine) + socket.emitTest("test", NSNull()) + XCTAssert(engine.socketDidCorrectlyCreatePacket()) + } + func testStringEmit() { - let engine = SocketTestEngine(client: socket, expectedSendString: "2[\"test\",\"foo bar\"]", expectedNumberOfBinary: 0) + let engine = SocketTestEngine(client: socket, + expectedSendString: "2[\"test\",\"foo bar\"]", + expectedNumberOfBinary: 0, + expectedBinary: nil) socket.setTestEngine(engine) socket.emitTest("test", "foo bar") XCTAssert(engine.socketDidCorrectlyCreatePacket()) } + + func testJSONEmit() { + let engine = SocketTestEngine(client: socket, + expectedSendString: "2[\"test\",{\"test\":\"hello\",\"hello\":1,\"foobar\":true,\"null\":null}]", + expectedNumberOfBinary: 0, + expectedBinary: nil) + socket.setTestEngine(engine) + socket.emitTest("test", ["foobar": true, "hello": 1, "test": "hello", "null": NSNull()]) + XCTAssert(engine.socketDidCorrectlyCreatePacket()) + } + + func testArrayEmit() { + let engine = SocketTestEngine(client: socket, + expectedSendString: "2[\"test\",[\"hello\",1,{\"test\":\"test\"}]]", + expectedNumberOfBinary: 0, + expectedBinary: nil) + socket.setTestEngine(engine) + socket.emitTest("test", ["hello", 1, ["test": "test"]]) + XCTAssert(engine.socketDidCorrectlyCreatePacket()) + } + + func testBinaryEmit() { + let data = "test".dataUsingEncoding(NSUTF8StringEncoding)! + let engine = SocketTestEngine(client: socket, + expectedSendString: "51-[\"test\",{\"num\":0,\"_placeholder\":true}]", + expectedNumberOfBinary: 1, + expectedBinary: [data]) + socket.setTestEngine(engine) + socket.emitTest("test", data) + XCTAssert(engine.socketDidCorrectlyCreatePacket()) + } + + func testMultipleBinaryEmit() { + let data = "test".dataUsingEncoding(NSUTF8StringEncoding)! + let data2 = "test2".dataUsingEncoding(NSUTF8StringEncoding)! + let engine = SocketTestEngine(client: socket, + expectedSendString: "52-[\"test\",{\"data2\":{\"num\":0,\"_placeholder\":true},\"data1\":{\"num\":1,\"_placeholder\":true}}]", + expectedNumberOfBinary: 2, + expectedBinary: [data2, data]) + socket.setTestEngine(engine) + socket.emitTest("test", ["data1": data, "data2": data2]) + XCTAssert(engine.socketDidCorrectlyCreatePacket()) + } } diff --git a/SocketIO-MacTests/SocketTestEngine.swift b/SocketIO-MacTests/SocketTestEngine.swift index b899a68..0a12b0b 100644 --- a/SocketIO-MacTests/SocketTestEngine.swift +++ b/SocketIO-MacTests/SocketTestEngine.swift @@ -31,6 +31,8 @@ import Foundation 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! @@ -43,10 +45,11 @@ class SocketTestEngine: NSObject, SocketEngineSpec { weak var client: SocketEngineClient? - init(client: SocketIOClient, expectedSendString: String, expectedNumberOfBinary: Int) { + init(client: SocketIOClient, expectedSendString: String, expectedNumberOfBinary: Int, expectedBinary: [NSData]?) { self.client = client self.expectedSendString = expectedSendString self.expectedNumberOfBinary = expectedNumberOfBinary + self.expectedBinary = expectedBinary } required init(client: SocketEngineClient, sessionDelegate: NSURLSessionDelegate?) { @@ -65,10 +68,13 @@ class SocketTestEngine: NSObject, SocketEngineSpec { func send(msg: String, withData datas: [NSData]?) { sendString = msg numOfBinary = datas?.count ?? 0 + binary = datas } func socketDidCorrectlyCreatePacket() -> Bool { - return expectedNumberOfBinary == numOfBinary && sendString == expectedSendString + return expectedNumberOfBinary == numOfBinary + && sendString == expectedSendString + && expectedBinary ?? [] == binary ?? [] } func write(msg: String, withType type: SocketEnginePacketType, withData data: [NSData]?) {}