This commit is contained in:
Erik 2015-12-23 14:00:06 -05:00
parent 8cf3aebf9f
commit 298817ce5c
3 changed files with 19 additions and 14 deletions

View File

@ -12,7 +12,7 @@ class SocketSideEffectTest: XCTestCase {
let data = "test".dataUsingEncoding(NSUTF8StringEncoding)! let data = "test".dataUsingEncoding(NSUTF8StringEncoding)!
let data2 = "test2".dataUsingEncoding(NSUTF8StringEncoding)! let data2 = "test2".dataUsingEncoding(NSUTF8StringEncoding)!
private var socket: SocketIOClient! private var socket: SocketIOClient!
override func setUp() { override func setUp() {
super.setUp() super.setUp()
socket = SocketIOClient(socketURL: "") socket = SocketIOClient(socketURL: "")
@ -31,7 +31,7 @@ class SocketSideEffectTest: XCTestCase {
func testSecondAck() { func testSecondAck() {
socket.emitWithAck("test")(timeoutAfter: 0) {data in} socket.emitWithAck("test")(timeoutAfter: 0) {data in}
socket.emitWithAck("test")(timeoutAfter: 0) {data in} socket.emitWithAck("test")(timeoutAfter: 0) {data in}
XCTAssertEqual(socket.currentAck, 1) XCTAssertEqual(socket.currentAck, 1)
} }
@ -46,6 +46,18 @@ class SocketSideEffectTest: XCTestCase {
waitForExpectationsWithTimeout(3, handler: nil) waitForExpectationsWithTimeout(3, handler: nil)
} }
func testHandleAck2() {
let expectation = expectationWithDescription("handled ack2")
socket.emitWithAck("test")(timeoutAfter: 0) {data in
XCTAssertTrue(data.count == 2, "Wrong number of ack items")
expectation.fulfill()
}
socket.parseSocketMessage("61-0[{\"_placeholder\":true,\"num\":0},{\"test\":true}]")
socket.parseBinaryData(NSData())
waitForExpectationsWithTimeout(3, handler: nil)
}
func testHandleEvent() { func testHandleEvent() {
let expectation = expectationWithDescription("handled event") let expectation = expectationWithDescription("handled event")
socket.on("test") {data, ack in socket.on("test") {data, ack in

View File

@ -39,18 +39,11 @@ struct SocketPacket {
case Connect, Disconnect, Event, Ack, Error, BinaryEvent, BinaryAck case Connect, Disconnect, Event, Ack, Error, BinaryEvent, BinaryAck
} }
var args: [AnyObject]? { var args: [AnyObject] {
var arr = data if type == .Event || type == .BinaryEvent && data.count != 0 {
return Array(data.dropFirst())
if data.count == 0 {
return nil
} else { } else {
if type == .Event || type == .BinaryEvent { return data
arr.removeAtIndex(0)
return arr
} else {
return arr
}
} }
} }

View File

@ -41,7 +41,7 @@ class SocketParser {
private static func handlePacket(pack: SocketPacket, withSocket socket: SocketIOClient) { private static func handlePacket(pack: SocketPacket, withSocket socket: SocketIOClient) {
switch pack.type { switch pack.type {
case .Event where isCorrectNamespace(pack.nsp, socket): case .Event where isCorrectNamespace(pack.nsp, socket):
socket.handleEvent(pack.event, data: pack.args ?? [], socket.handleEvent(pack.event, data: pack.args,
isInternalMessage: false, withAck: pack.id) isInternalMessage: false, withAck: pack.id)
case .Ack where isCorrectNamespace(pack.nsp, socket): case .Ack where isCorrectNamespace(pack.nsp, socket):
socket.handleAck(pack.id, data: pack.data) socket.handleAck(pack.id, data: pack.data)