fix join namespace parse

This commit is contained in:
Lukas Schmidt 2015-09-07 19:19:22 +02:00
parent 2bd612e47a
commit 70cacb025f
8 changed files with 28 additions and 10 deletions

View File

@ -45,4 +45,8 @@ struct GenericParser {
return subString.substringToIndex(foundRange.location) return subString.substringToIndex(foundRange.location)
} }
mutating func readUntilEnd() ->String {
return read(messageCharacters.count - currentIndex)!
}
} }

View File

@ -9,7 +9,7 @@
import XCTest import XCTest
class AbstractSocketTest: XCTestCase { class AbstractSocketTest: XCTestCase {
static let testLocal = false static let testLocal = true
static let serverURL = AbstractSocketTest.testLocal ? "localhost:6979" : "milkbartube.com:6979" static let serverURL = AbstractSocketTest.testLocal ? "localhost:6979" : "milkbartube.com:6979"
static let TEST_TIMEOUT = 8.0 static let TEST_TIMEOUT = 8.0
static var socket:SocketIOClient! static var socket:SocketIOClient!

View File

@ -21,11 +21,12 @@ class SocketAcknowledgementTest: AbstractSocketTest {
"forcePolling": false, "forcePolling": false,
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": ""]) "path": ""])
openConnection()
}else { }else {
AbstractSocketTest.socket.leaveNamespace() AbstractSocketTest.socket.leaveNamespace()
} }
openConnection()
} }
func testConnectionStatus() { func testConnectionStatus() {

View File

@ -22,11 +22,12 @@ class SocketEmitTest: AbstractSocketTest {
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": ""] "path": ""]
) )
openConnection()
}else { }else {
AbstractSocketTest.socket.leaveNamespace() AbstractSocketTest.socket.leaveNamespace()
} }
openConnection()
} }
override func tearDown() { override func tearDown() {

View File

@ -22,11 +22,12 @@ class SocketNamespaceAcknowledgementTest: AbstractSocketTest {
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": "", "path": "",
"nsp": "/swift"]) "nsp": "/swift"])
openConnection()
}else { }else {
AbstractSocketTest.socket.joinNamespace("/swift") AbstractSocketTest.socket.joinNamespace("/swift")
} }
openConnection()
} }
func testConnectionStatus() { func testConnectionStatus() {

View File

@ -22,11 +22,10 @@ class SocketNamespaceEmitTest: AbstractSocketTest {
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": "", "path": "",
"nsp": "/swift"]) "nsp": "/swift"])
openConnection()
}else { }else {
AbstractSocketTest.socket.joinNamespace("/swift") AbstractSocketTest.socket.joinNamespace("/swift")
} }
openConnection()
} }
func testConnectionStatus() { func testConnectionStatus() {

View File

@ -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), "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), "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), "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() { func testDisconnect() {
let message = "1" let message = "1"
@ -29,6 +31,16 @@ class SocketParserTest: XCTestCase {
validateParseResult(message) validateParseResult(message)
} }
func testDisconnectNameSpace() {
let message = "1/swift"
validateParseResult(message)
}
func testConnecttNameSpace() {
let message = "0/swift"
validateParseResult(message)
}
func testNameSpaceArrayParse() { func testNameSpaceArrayParse() {
let message = "2/swift,[\"testArrayEmitReturn\",[\"test3\",\"test4\"]]" let message = "2/swift,[\"testArrayEmitReturn\",[\"test3\",\"test4\"]]"
validateParseResult(message) validateParseResult(message)

View File

@ -98,7 +98,7 @@ class SocketParser {
} }
} }
if parser.currentCharacter == "/" { if parser.currentCharacter == "/" {
nsp = parser.readUntilStringOccurence(",") nsp = parser.readUntilStringOccurence(",") ?? parser.readUntilEnd()
parser.currentIndex++ parser.currentIndex++
} }
@ -178,7 +178,7 @@ class SocketParser {
} }
static func parseBinaryData(data: NSData, socket: SocketIOClient) { 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") Logger.error("Got data when not remaking packet", type: "SocketParser")
return return
} }