From 4ad5025c77a02c8935ee8035678f91d37f6db836 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 20 Jul 2016 11:07:37 -0400 Subject: [PATCH] update tests, add test for base64 --- SocketIO-MacTests/SocketAckManagerTest.swift | 4 +- SocketIO-MacTests/SocketBasicPacketTest.swift | 4 +- SocketIO-MacTests/SocketEngineTest.swift | 43 +++++++++++++------ SocketIO-MacTests/SocketParserTest.swift | 2 +- SocketIO-MacTests/SocketSideEffectTest.swift | 40 ++++++++--------- Source/WebSocket/WebSocket.swift | 2 +- 6 files changed, 57 insertions(+), 38 deletions(-) diff --git a/SocketIO-MacTests/SocketAckManagerTest.swift b/SocketIO-MacTests/SocketAckManagerTest.swift index fab681a..a90db13 100644 --- a/SocketIO-MacTests/SocketAckManagerTest.swift +++ b/SocketIO-MacTests/SocketAckManagerTest.swift @@ -13,14 +13,14 @@ class SocketAckManagerTest: XCTestCase { var ackManager = SocketAckManager() func testAddAcks() { - let callbackExpection = self.expectation(withDescription: "callbackExpection") + let callbackExpection = self.expectation(description: "callbackExpection") let itemsArray = ["Hi", "ho"] func callback(_ items: [AnyObject]) { callbackExpection.fulfill() } ackManager.addAck(1, callback: callback) ackManager.executeAck(1, with: itemsArray, onQueue: DispatchQueue.main) - waitForExpectations(withTimeout: 3.0, handler: nil) + waitForExpectations(timeout: 3.0, handler: nil) } } diff --git a/SocketIO-MacTests/SocketBasicPacketTest.swift b/SocketIO-MacTests/SocketBasicPacketTest.swift index 78a04eb..7526fe7 100644 --- a/SocketIO-MacTests/SocketBasicPacketTest.swift +++ b/SocketIO-MacTests/SocketBasicPacketTest.swift @@ -154,8 +154,8 @@ class SocketBasicPacketTest: XCTestCase { if case let .right(packet) = socket.parseString(engineString) { var packet = packet XCTAssertEqual(packet.event, "test") - packet.addData(data) - packet.addData(data2) + _ = packet.addData(data) + _ = packet.addData(data2) XCTAssertEqual(packet.args[0] as? String, "~~0") } else { XCTFail() diff --git a/SocketIO-MacTests/SocketEngineTest.swift b/SocketIO-MacTests/SocketEngineTest.swift index 005623c..4c54833 100644 --- a/SocketIO-MacTests/SocketEngineTest.swift +++ b/SocketIO-MacTests/SocketEngineTest.swift @@ -22,17 +22,17 @@ class SocketEngineTest: XCTestCase { } func testBasicPollingMessage() { - let expect = expectation(withDescription: "Basic polling test") + let expect = expectation(description: "Basic polling test") client.on("blankTest") {data, ack in expect.fulfill() } engine.parsePollingMessage("15:42[\"blankTest\"]") - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testTwoPacketsInOnePollTest() { - let finalExpectation = expectation(withDescription: "Final packet in poll test") + let finalExpectation = expectation(description: "Final packet in poll test") var gotBlank = false client.on("blankTest") {data, ack in @@ -40,7 +40,7 @@ class SocketEngineTest: XCTestCase { } client.on("stringTest") {data, ack in - if let str = data[0] as? String where gotBlank { + if let str = data[0] as? String, gotBlank { if str == "hello" { finalExpectation.fulfill() } @@ -48,35 +48,35 @@ class SocketEngineTest: XCTestCase { } engine.parsePollingMessage("15:42[\"blankTest\"]24:42[\"stringTest\",\"hello\"]") - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testEngineDoesErrorOnUnknownTransport() { - let finalExpectation = expectation(withDescription: "Unknown Transport") + let finalExpectation = expectation(description: "Unknown Transport") client.on("error") {data, ack in - if let error = data[0] as? String where error == "Unknown transport" { + if let error = data[0] as? String, error == "Unknown transport" { finalExpectation.fulfill() } } engine.parseEngineMessage("{\"code\": 0, \"message\": \"Unknown transport\"}", fromPolling: false) - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testEngineDoesErrorOnUnknownMessage() { - let finalExpectation = expectation(withDescription: "Engine Errors") + let finalExpectation = expectation(description: "Engine Errors") client.on("error") {data, ack in finalExpectation.fulfill() } engine.parseEngineMessage("afafafda", fromPolling: false) - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testEngineDecodesUTF8Properly() { - let expect = expectation(withDescription: "Engine Decodes utf8") + let expect = expectation(description: "Engine Decodes utf8") client.on("stringTest") {data, ack in XCTAssertEqual(data[0] as? String, "lïne one\nlīne \rtwo", "Failed string test") @@ -84,7 +84,7 @@ class SocketEngineTest: XCTestCase { } engine.parsePollingMessage("41:42[\"stringTest\",\"lïne one\\nlÄ«ne \\rtwo\"]") - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testEncodeURLProperly() { @@ -102,4 +102,23 @@ class SocketEngineTest: XCTestCase { XCTAssertEqual(engine.urlPolling.query, "transport=polling&b64=1&forbidden=%21%2A%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23%5B%5D%22%20%7B%7D") XCTAssertEqual(engine.urlWebSocket.query, "transport=websocket&forbidden=%21%2A%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23%5B%5D%22%20%7B%7D") } + + func testBase64Data() { + let expect = expectation(description: "Engine Decodes base64 data") + let b64String = "b4aGVsbG8NCg==" + let packetString = "451-[\"test\",{\"test\":{\"_placeholder\":true,\"num\":0}}]" + + client.on("test") {data, ack in + if let data = data[0] as? Data, let string = String(data: data, encoding: .utf8) { + XCTAssertEqual(string, "hello") + } + + expect.fulfill() + } + + engine.parseEngineMessage(packetString, fromPolling: false) + engine.parseEngineMessage(b64String, fromPolling: false) + + waitForExpectations(timeout: 3, handler: nil) + } } diff --git a/SocketIO-MacTests/SocketParserTest.swift b/SocketIO-MacTests/SocketParserTest.swift index 62e1d1f..cb1e8d0 100644 --- a/SocketIO-MacTests/SocketParserTest.swift +++ b/SocketIO-MacTests/SocketParserTest.swift @@ -136,7 +136,7 @@ class SocketParserTest: XCTestCase { let keys = Array(SocketParserTest.packetTypes.keys) measure { for item in keys.enumerated() { - self.testSocket.parseString(item.element) + _ = self.testSocket.parseString(item.element) } } } diff --git a/SocketIO-MacTests/SocketSideEffectTest.swift b/SocketIO-MacTests/SocketSideEffectTest.swift index 7f4bba6..8b5f611 100644 --- a/SocketIO-MacTests/SocketSideEffectTest.swift +++ b/SocketIO-MacTests/SocketSideEffectTest.swift @@ -37,18 +37,18 @@ class SocketSideEffectTest: XCTestCase { } func testHandleAck() { - let expect = expectation(withDescription: "handled ack") + let expect = expectation(description: "handled ack") socket.emitWithAck("test")(timeoutAfter: 0) {data in XCTAssertEqual(data[0] as? String, "hello world") expect.fulfill() } socket.parseSocketMessage("30[\"hello world\"]") - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testHandleAck2() { - let expect = expectation(withDescription: "handled ack2") + let expect = expectation(description: "handled ack2") socket.emitWithAck("test")(timeoutAfter: 0) {data in XCTAssertTrue(data.count == 2, "Wrong number of ack items") expect.fulfill() @@ -56,33 +56,33 @@ class SocketSideEffectTest: XCTestCase { socket.parseSocketMessage("61-0[{\"_placeholder\":true,\"num\":0},{\"test\":true}]") socket.parseBinaryData(Data()) - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testHandleEvent() { - let expect = expectation(withDescription: "handled event") + let expect = expectation(description: "handled event") socket.on("test") {data, ack in XCTAssertEqual(data[0] as? String, "hello world") expect.fulfill() } socket.parseSocketMessage("2[\"test\",\"hello world\"]") - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testHandleStringEventWithQuotes() { - let expect = expectation(withDescription: "handled event") + let expect = expectation(description: "handled event") socket.on("test") {data, ack in XCTAssertEqual(data[0] as? String, "\"hello world\"") expect.fulfill() } socket.parseSocketMessage("2[\"test\",\"\\\"hello world\\\"\"]") - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testHandleOnceEvent() { - let expect = expectation(withDescription: "handled event") + let expect = expectation(description: "handled event") socket.once("test") {data, ack in XCTAssertEqual(data[0] as? String, "hello world") XCTAssertEqual(self.socket.testHandlers.count, 0) @@ -90,7 +90,7 @@ class SocketSideEffectTest: XCTestCase { } socket.parseSocketMessage("2[\"test\",\"hello world\"]") - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testOffWithEvent() { @@ -112,21 +112,21 @@ class SocketSideEffectTest: XCTestCase { } func testHandlesErrorPacket() { - let expect = expectation(withDescription: "Handled error") + let expect = expectation(description: "Handled error") socket.on("error") {data, ack in - if let error = data[0] as? String where error == "test error" { + if let error = data[0] as? String, error == "test error" { expect.fulfill() } } socket.parseSocketMessage("4\"test error\"") - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testHandleBinaryEvent() { - let expect = expectation(withDescription: "handled binary event") + let expect = expectation(description: "handled binary event") socket.on("test") {data, ack in - if let dict = data[0] as? NSDictionary, data = dict["test"] as? NSData { + if let dict = data[0] as? NSDictionary, let data = dict["test"] as? NSData { XCTAssertEqual(data, self.data) expect.fulfill() } @@ -134,7 +134,7 @@ class SocketSideEffectTest: XCTestCase { socket.parseSocketMessage("51-[\"test\",{\"test\":{\"_placeholder\":true,\"num\":0}}]") socket.parseBinaryData(data) - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testSocketDataToAnyObject() { @@ -144,10 +144,10 @@ class SocketSideEffectTest: XCTestCase { } func testHandleMultipleBinaryEvent() { - let expect = expectation(withDescription: "handled multiple binary event") + let expect = expectation(description: "handled multiple binary event") socket.on("test") {data, ack in - if let dict = data[0] as? NSDictionary, data = dict["test"] as? NSData, - data2 = dict["test2"] as? NSData { + if let dict = data[0] as? NSDictionary, let data = dict["test"] as? NSData, + let data2 = dict["test2"] as? NSData { XCTAssertEqual(data, self.data) XCTAssertEqual(data2, self.data2) expect.fulfill() @@ -157,7 +157,7 @@ class SocketSideEffectTest: XCTestCase { socket.parseSocketMessage("52-[\"test\",{\"test\":{\"_placeholder\":true,\"num\":0},\"test2\":{\"_placeholder\":true,\"num\":1}}]") socket.parseBinaryData(data) socket.parseBinaryData(data2) - waitForExpectations(withTimeout: 3, handler: nil) + waitForExpectations(timeout: 3, handler: nil) } func testSocketManager() { diff --git a/Source/WebSocket/WebSocket.swift b/Source/WebSocket/WebSocket.swift index 2c45b73..73fc664 100644 --- a/Source/WebSocket/WebSocket.swift +++ b/Source/WebSocket/WebSocket.swift @@ -810,7 +810,7 @@ public class WebSocket : NSObject, StreamDelegate { } if total >= offset { if let queue = self?.queue, let callback = writeCompletion { - queue.asynchronously() { + queue.async { callback() } }