diff --git a/GenericSocketParser.swift b/GenericSocketParser.swift index 4ab7d9c..a963988 100644 --- a/GenericSocketParser.swift +++ b/GenericSocketParser.swift @@ -45,4 +45,8 @@ struct GenericParser { return subString.substringToIndex(foundRange.location) } + + mutating func readUntilEnd() ->String { + return read(messageCharacters.count - currentIndex)! + } } \ No newline at end of file diff --git a/SocketIO-iOSTests/AbstractSocketTest.swift b/SocketIO-iOSTests/AbstractSocketTest.swift index 1fd61c2..fb3c5f4 100644 --- a/SocketIO-iOSTests/AbstractSocketTest.swift +++ b/SocketIO-iOSTests/AbstractSocketTest.swift @@ -9,7 +9,7 @@ import XCTest class AbstractSocketTest: XCTestCase { - static let testLocal = false + static let testLocal = true static let serverURL = AbstractSocketTest.testLocal ? "localhost:6979" : "milkbartube.com:6979" static let TEST_TIMEOUT = 8.0 static var socket:SocketIOClient! diff --git a/SocketIO-iOSTests/SocketAcknowledgementTest.swift b/SocketIO-iOSTests/SocketAcknowledgementTest.swift index 0f1f425..4a8c7ad 100644 --- a/SocketIO-iOSTests/SocketAcknowledgementTest.swift +++ b/SocketIO-iOSTests/SocketAcknowledgementTest.swift @@ -21,11 +21,12 @@ class SocketAcknowledgementTest: AbstractSocketTest { "forcePolling": false, "forceWebsockets": false,// default false "path": ""]) + openConnection() }else { AbstractSocketTest.socket.leaveNamespace() } - openConnection() + } func testConnectionStatus() { diff --git a/SocketIO-iOSTests/SocketEmitTest.swift b/SocketIO-iOSTests/SocketEmitTest.swift index 5e58491..baffb95 100644 --- a/SocketIO-iOSTests/SocketEmitTest.swift +++ b/SocketIO-iOSTests/SocketEmitTest.swift @@ -22,11 +22,12 @@ class SocketEmitTest: AbstractSocketTest { "forceWebsockets": false,// default false "path": ""] ) + openConnection() }else { AbstractSocketTest.socket.leaveNamespace() } - openConnection() + } override func tearDown() { diff --git a/SocketIO-iOSTests/SocketNamespaceAcknowledgementTest.swift b/SocketIO-iOSTests/SocketNamespaceAcknowledgementTest.swift index a0604f3..ce7e272 100644 --- a/SocketIO-iOSTests/SocketNamespaceAcknowledgementTest.swift +++ b/SocketIO-iOSTests/SocketNamespaceAcknowledgementTest.swift @@ -22,11 +22,12 @@ class SocketNamespaceAcknowledgementTest: AbstractSocketTest { "forceWebsockets": false,// default false "path": "", "nsp": "/swift"]) + openConnection() }else { AbstractSocketTest.socket.joinNamespace("/swift") } - openConnection() + } func testConnectionStatus() { diff --git a/SocketIO-iOSTests/SocketNamespaceEmitTest.swift b/SocketIO-iOSTests/SocketNamespaceEmitTest.swift index e02ede3..9573a64 100644 --- a/SocketIO-iOSTests/SocketNamespaceEmitTest.swift +++ b/SocketIO-iOSTests/SocketNamespaceEmitTest.swift @@ -22,13 +22,12 @@ class SocketNamespaceEmitTest: AbstractSocketTest { "forceWebsockets": false,// default false "path": "", "nsp": "/swift"]) + openConnection() }else { AbstractSocketTest.socket.joinNamespace("/swift") } - - openConnection() } - + func testConnectionStatus() { super.checkConnectionStatus() } diff --git a/SocketIO-iOSTests/SocketParserTest.swift b/SocketIO-iOSTests/SocketParserTest.swift index 83ffc05..0e4e3ac 100644 --- a/SocketIO-iOSTests/SocketParserTest.swift +++ b/SocketIO-iOSTests/SocketParserTest.swift @@ -17,7 +17,9 @@ class SocketParserTest: XCTestCase { "51-/swift,[\"testMultipleItemsWithBufferEmitReturn\",[1,2],{\"test\":\"bob\"},25,\"polo\",{\"_placeholder\":true,\"num\":0}]": ("/swift", ["testMultipleItemsWithBufferEmitReturn", [1, 2], ["test": "bob"], 25, "polo", "~~0"], [], -1), "3/swift,0[[\"test3\",\"test4\"]]": ("/swift", [["test3", "test4"]], [], 0), "61-/swift,19[[1,2],{\"test\":\"bob\"},25,\"polo\",{\"_placeholder\":true,\"num\":0}]": ("/swift", [ [1, 2], ["test": "bob"], 25, "polo", "~~0"], [], 19), - "4/swift,": ("/swift", [], [], -1)] + "4/swift,": ("/swift", [], [], -1), + "0/swift": ("/swift", [], [], -1), + "1/swift": ("/swift", [], [], -1)] func testDisconnect() { let message = "1" @@ -29,6 +31,16 @@ class SocketParserTest: XCTestCase { validateParseResult(message) } + func testDisconnectNameSpace() { + let message = "1/swift" + validateParseResult(message) + } + + func testConnecttNameSpace() { + let message = "0/swift" + validateParseResult(message) + } + func testNameSpaceArrayParse() { let message = "2/swift,[\"testArrayEmitReturn\",[\"test3\",\"test4\"]]" validateParseResult(message) diff --git a/SocketIOClientSwift/SocketParser.swift b/SocketIOClientSwift/SocketParser.swift index 05c0658..72ea70a 100644 --- a/SocketIOClientSwift/SocketParser.swift +++ b/SocketIOClientSwift/SocketParser.swift @@ -98,7 +98,7 @@ class SocketParser { } } if parser.currentCharacter == "/" { - nsp = parser.readUntilStringOccurence(",") + nsp = parser.readUntilStringOccurence(",") ?? parser.readUntilEnd() parser.currentIndex++ } @@ -178,7 +178,7 @@ class SocketParser { } static func parseBinaryData(data: NSData, socket: SocketIOClient) { - if socket.waitingData.count == 0 { + guard !socket.waitingData.isEmpty else { Logger.error("Got data when not remaking packet", type: "SocketParser") return }