socket parser Test
This commit is contained in:
parent
e79199d2e6
commit
de0d0b8676
@ -58,6 +58,7 @@
|
|||||||
945B65401B5FCEEA0081E995 /* SwiftRegex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF871B51F254004FF46E /* SwiftRegex.swift */; };
|
945B65401B5FCEEA0081E995 /* SwiftRegex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF871B51F254004FF46E /* SwiftRegex.swift */; };
|
||||||
945B65411B5FCEEA0081E995 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF881B51F254004FF46E /* WebSocket.swift */; };
|
945B65411B5FCEEA0081E995 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF881B51F254004FF46E /* WebSocket.swift */; };
|
||||||
945B65431B63D9DB0081E995 /* SocketEmitTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945B65421B63D9DB0081E995 /* SocketEmitTest.swift */; };
|
945B65431B63D9DB0081E995 /* SocketEmitTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945B65421B63D9DB0081E995 /* SocketEmitTest.swift */; };
|
||||||
|
949FAE8D1B9B94E600073BE9 /* SocketParserTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 949FAE8C1B9B94E600073BE9 /* SocketParserTest.swift */; settings = {ASSET_TAGS = (); }; };
|
||||||
94A20D611B99E22F00BF9E44 /* SocketAckManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94A20D601B99E22F00BF9E44 /* SocketAckManagerTest.swift */; settings = {ASSET_TAGS = (); }; };
|
94A20D611B99E22F00BF9E44 /* SocketAckManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94A20D601B99E22F00BF9E44 /* SocketAckManagerTest.swift */; settings = {ASSET_TAGS = (); }; };
|
||||||
94ADAC491B652D3300FD79AE /* SocketNamespaceEmitTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94ADAC481B652D3300FD79AE /* SocketNamespaceEmitTest.swift */; };
|
94ADAC491B652D3300FD79AE /* SocketNamespaceEmitTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94ADAC481B652D3300FD79AE /* SocketNamespaceEmitTest.swift */; };
|
||||||
94ADAC4B1B6632DD00FD79AE /* SocketAcknowledgementTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94ADAC4A1B6632DD00FD79AE /* SocketAcknowledgementTest.swift */; };
|
94ADAC4B1B6632DD00FD79AE /* SocketAcknowledgementTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94ADAC4A1B6632DD00FD79AE /* SocketAcknowledgementTest.swift */; };
|
||||||
@ -111,6 +112,7 @@
|
|||||||
941A4AB91B67A56C00C42318 /* TestKind.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestKind.swift; sourceTree = "<group>"; };
|
941A4AB91B67A56C00C42318 /* TestKind.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestKind.swift; sourceTree = "<group>"; };
|
||||||
94242BB71B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketNamespaceAcknowledgementTest.swift; sourceTree = "<group>"; };
|
94242BB71B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketNamespaceAcknowledgementTest.swift; sourceTree = "<group>"; };
|
||||||
945B65421B63D9DB0081E995 /* SocketEmitTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketEmitTest.swift; sourceTree = "<group>"; };
|
945B65421B63D9DB0081E995 /* SocketEmitTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketEmitTest.swift; sourceTree = "<group>"; };
|
||||||
|
949FAE8C1B9B94E600073BE9 /* SocketParserTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketParserTest.swift; sourceTree = "<group>"; };
|
||||||
94A20D601B99E22F00BF9E44 /* SocketAckManagerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketAckManagerTest.swift; sourceTree = "<group>"; };
|
94A20D601B99E22F00BF9E44 /* SocketAckManagerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketAckManagerTest.swift; sourceTree = "<group>"; };
|
||||||
94ADAC481B652D3300FD79AE /* SocketNamespaceEmitTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketNamespaceEmitTest.swift; sourceTree = "<group>"; };
|
94ADAC481B652D3300FD79AE /* SocketNamespaceEmitTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketNamespaceEmitTest.swift; sourceTree = "<group>"; };
|
||||||
94ADAC4A1B6632DD00FD79AE /* SocketAcknowledgementTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketAcknowledgementTest.swift; sourceTree = "<group>"; };
|
94ADAC4A1B6632DD00FD79AE /* SocketAcknowledgementTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketAcknowledgementTest.swift; sourceTree = "<group>"; };
|
||||||
@ -202,8 +204,9 @@
|
|||||||
941A4AB91B67A56C00C42318 /* TestKind.swift */,
|
941A4AB91B67A56C00C42318 /* TestKind.swift */,
|
||||||
94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */,
|
94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */,
|
||||||
94CB8F0C1B6E66E60019ED53 /* AbstractSocketTest.swift */,
|
94CB8F0C1B6E66E60019ED53 /* AbstractSocketTest.swift */,
|
||||||
572EF2291B51F16C00EEBB58 /* Supporting Files */,
|
|
||||||
94A20D601B99E22F00BF9E44 /* SocketAckManagerTest.swift */,
|
94A20D601B99E22F00BF9E44 /* SocketAckManagerTest.swift */,
|
||||||
|
572EF2291B51F16C00EEBB58 /* Supporting Files */,
|
||||||
|
949FAE8C1B9B94E600073BE9 /* SocketParserTest.swift */,
|
||||||
);
|
);
|
||||||
path = "SocketIO-iOSTests";
|
path = "SocketIO-iOSTests";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -484,6 +487,7 @@
|
|||||||
945B653F1B5FCEEA0081E995 /* SocketTypes.swift in Sources */,
|
945B653F1B5FCEEA0081E995 /* SocketTypes.swift in Sources */,
|
||||||
74781D5B1B7E83930042CACA /* SocketIOClientStatus.swift in Sources */,
|
74781D5B1B7E83930042CACA /* SocketIOClientStatus.swift in Sources */,
|
||||||
945B653B1B5FCEEA0081E995 /* SocketIOClient.swift in Sources */,
|
945B653B1B5FCEEA0081E995 /* SocketIOClient.swift in Sources */,
|
||||||
|
949FAE8D1B9B94E600073BE9 /* SocketParserTest.swift in Sources */,
|
||||||
94ADAC491B652D3300FD79AE /* SocketNamespaceEmitTest.swift in Sources */,
|
94ADAC491B652D3300FD79AE /* SocketNamespaceEmitTest.swift in Sources */,
|
||||||
945B65411B5FCEEA0081E995 /* WebSocket.swift in Sources */,
|
945B65411B5FCEEA0081E995 /* WebSocket.swift in Sources */,
|
||||||
94242BB81B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift in Sources */,
|
94242BB81B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift in Sources */,
|
||||||
|
|||||||
81
SocketIO-iOSTests/SocketParserTest.swift
Normal file
81
SocketIO-iOSTests/SocketParserTest.swift
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
//
|
||||||
|
// SocketParserTest.swift
|
||||||
|
// Socket.IO-Client-Swift
|
||||||
|
//
|
||||||
|
// Created by Lukas Schmidt on 05.09.15.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
import XCTest
|
||||||
|
|
||||||
|
class SocketParserTest: XCTestCase {
|
||||||
|
|
||||||
|
//Format key: message; namespace-data-binary-id
|
||||||
|
static let packetTypes: Dictionary<String, (String, [AnyObject], [NSData], Int)> = [
|
||||||
|
"0": ("/", [], [], -1), "1": ("/", [], [], -1),
|
||||||
|
"2/swift,[\"testArrayEmitReturn\",[\"test3\",\"test4\"]]": ("/swift", ["testArrayEmitReturn", ["test3", "test4"]], [], -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),
|
||||||
|
"61-/swift,9[[1,2],{\"test\":\"bob\"},25,\"polo\",{\"_placeholder\":true,\"num\":0}]": ("/swift", [ [1, 2], ["test": "bob"], 25, "polo", "~~0"], [], 9),
|
||||||
|
"4/swift": ("/swift", [], [], -1),
|
||||||
|
"10": ("/swift", [], [], -1)]
|
||||||
|
|
||||||
|
func testDisconnect() {
|
||||||
|
let message = "1"
|
||||||
|
validateParseResult(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
func testConnect() {
|
||||||
|
let message = "0"
|
||||||
|
validateParseResult(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
func testNameSpaceArrayParse() {
|
||||||
|
let message = "2/swift,[\"testArrayEmitReturn\",[\"test3\",\"test4\"]]"
|
||||||
|
validateParseResult(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
func testNameSpaceArrayAckParse() {
|
||||||
|
let message = "3/swift,0[[\"test3\",\"test4\"]]"
|
||||||
|
validateParseResult(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
func testNameSpaceBinaryEventParse() {
|
||||||
|
let message = "51-/swift,[\"testMultipleItemsWithBufferEmitReturn\",[1,2],{\"test\":\"bob\"},25,\"polo\",{\"_placeholder\":true,\"num\":0}]"
|
||||||
|
validateParseResult(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
func testNameSpaceBinaryAckParse() {
|
||||||
|
let message = "61-/swift,9[[1,2],{\"test\":\"bob\"},25,\"polo\",{\"_placeholder\":true,\"num\":0}]"
|
||||||
|
validateParseResult(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
func testNamespaceErrorParse() {
|
||||||
|
let message = "4/swift"
|
||||||
|
validateParseResult(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
func testInvalidInput() {
|
||||||
|
let message = "10"
|
||||||
|
validateParseResult(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateParseResult(message:String) {
|
||||||
|
let validValues = SocketParserTest.packetTypes[message]!
|
||||||
|
let packet = SocketParser.parseString(message)
|
||||||
|
let type = message.substringWithRange(Range<String.Index>(start: message.startIndex, end: message.startIndex.advancedBy(1)))
|
||||||
|
if let packet = packet {
|
||||||
|
XCTAssertEqual(packet.type, SocketPacket.PacketType(str:type)!)
|
||||||
|
XCTAssertEqual(packet.nsp, validValues.0)
|
||||||
|
XCTAssertTrue((packet.data as NSArray).isEqualToArray(validValues.1))
|
||||||
|
XCTAssertTrue((packet.binary as NSArray).isEqualToArray(validValues.2))
|
||||||
|
XCTAssertEqual(packet.id, validValues.3)
|
||||||
|
}else {
|
||||||
|
XCTFail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// func testParsePerformance() {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
}
|
||||||
@ -62,15 +62,7 @@ struct SocketPacket {
|
|||||||
var binary: [NSData]
|
var binary: [NSData]
|
||||||
var data: [AnyObject]
|
var data: [AnyObject]
|
||||||
var description: String {
|
var description: String {
|
||||||
var better = "SocketPacket {type: ~~0; data: ~~1; " +
|
return "SocketPacket {type: \(String(type.rawValue)); data: \(String(data)); id: \(id); placeholders: \(placeholders);}"
|
||||||
"id: ~~2; placeholders: ~~3;}"
|
|
||||||
|
|
||||||
better = better["~~0"] ~= String(type.rawValue)
|
|
||||||
better = better["~~1"] ~= String(data)
|
|
||||||
better = better["~~2"] ~= String(id)
|
|
||||||
better = better["~~3"] ~= String(placeholders)
|
|
||||||
|
|
||||||
return better
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var event: String {
|
var event: String {
|
||||||
|
|||||||
@ -173,38 +173,33 @@ class SocketParser {
|
|||||||
|
|
||||||
// Parses messages recieved
|
// Parses messages recieved
|
||||||
static func parseSocketMessage(stringMessage: String, socket: SocketIOClient) {
|
static func parseSocketMessage(stringMessage: String, socket: SocketIOClient) {
|
||||||
if stringMessage == "" {
|
guard !stringMessage.isEmpty else { return }
|
||||||
return
|
print(stringMessage)
|
||||||
}
|
|
||||||
|
|
||||||
Logger.log("Parsing %@", client: socket, altType: "SocketParser", args: stringMessage)
|
Logger.log("Parsing %@", client: socket, altType: "SocketParser", args: stringMessage)
|
||||||
|
|
||||||
let p: SocketPacket
|
guard let pack = parseString(stringMessage) else {
|
||||||
|
|
||||||
if let pack = parseString(stringMessage) {
|
|
||||||
p = pack
|
|
||||||
} else {
|
|
||||||
socket.didError("Error parsing packet")
|
socket.didError("Error parsing packet")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.log("Decoded packet as: %@", client: socket, altType: "SocketParser", args: p.description)
|
Logger.log("Decoded packet as: %@", client: socket, altType: "SocketParser", args: pack.description)
|
||||||
|
|
||||||
switch p.type {
|
switch pack.type {
|
||||||
case SocketPacket.PacketType.Event:
|
case SocketPacket.PacketType.Event:
|
||||||
handleEvent(p, socket: socket)
|
handleEvent(pack, socket: socket)
|
||||||
case SocketPacket.PacketType.Ack:
|
case SocketPacket.PacketType.Ack:
|
||||||
handleAck(p, socket: socket)
|
handleAck(pack, socket: socket)
|
||||||
case SocketPacket.PacketType.BinaryEvent:
|
case SocketPacket.PacketType.BinaryEvent:
|
||||||
handleBinaryEvent(p, socket: socket)
|
handleBinaryEvent(pack, socket: socket)
|
||||||
case SocketPacket.PacketType.BinaryAck:
|
case SocketPacket.PacketType.BinaryAck:
|
||||||
handleBinaryAck(p, socket: socket)
|
handleBinaryAck(pack, socket: socket)
|
||||||
case SocketPacket.PacketType.Connect:
|
case SocketPacket.PacketType.Connect:
|
||||||
handleConnect(p, socket: socket)
|
handleConnect(pack, socket: socket)
|
||||||
case SocketPacket.PacketType.Disconnect:
|
case SocketPacket.PacketType.Disconnect:
|
||||||
socket.didDisconnect("Got Disconnect")
|
socket.didDisconnect("Got Disconnect")
|
||||||
case SocketPacket.PacketType.Error:
|
case SocketPacket.PacketType.Error:
|
||||||
socket.didError("Error: \(p.data)")
|
socket.didError("Error: \(pack.data)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user