refactored iOS testcases

Add test cases for complex data structure (JSON, multiple data emit)
without binary Buffer attached
This commit is contained in:
Lukas Schmidt 2015-08-02 17:29:16 +02:00
parent bf3e28df81
commit 1b08411ed4
7 changed files with 303 additions and 339 deletions

View File

@ -57,6 +57,7 @@
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 */; };
94CB8F0B1B6E48B90019ED53 /* SocketTestCases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */; }; 94CB8F0B1B6E48B90019ED53 /* SocketTestCases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */; };
94CB8F0D1B6E66E60019ED53 /* AbstractSocketTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94CB8F0C1B6E66E60019ED53 /* AbstractSocketTest.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@ -107,6 +108,7 @@
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>"; };
94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketTestCases.swift; sourceTree = "<group>"; }; 94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketTestCases.swift; sourceTree = "<group>"; };
94CB8F0C1B6E66E60019ED53 /* AbstractSocketTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AbstractSocketTest.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -192,6 +194,7 @@
94242BB71B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift */, 94242BB71B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift */,
941A4AB91B67A56C00C42318 /* TestKind.swift */, 941A4AB91B67A56C00C42318 /* TestKind.swift */,
94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */, 94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */,
94CB8F0C1B6E66E60019ED53 /* AbstractSocketTest.swift */,
572EF2291B51F16C00EEBB58 /* Supporting Files */, 572EF2291B51F16C00EEBB58 /* Supporting Files */,
); );
path = "SocketIO-iOSTests"; path = "SocketIO-iOSTests";
@ -460,6 +463,7 @@
945B65371B5FCEEA0081E995 /* SocketEngine.swift in Sources */, 945B65371B5FCEEA0081E995 /* SocketEngine.swift in Sources */,
945B65351B5FCEEA0081E995 /* SocketAckManager.swift in Sources */, 945B65351B5FCEEA0081E995 /* SocketAckManager.swift in Sources */,
941A4ABA1B67A56C00C42318 /* TestKind.swift in Sources */, 941A4ABA1B67A56C00C42318 /* TestKind.swift in Sources */,
94CB8F0D1B6E66E60019ED53 /* AbstractSocketTest.swift in Sources */,
945B65431B63D9DB0081E995 /* SocketEmitTest.swift in Sources */, 945B65431B63D9DB0081E995 /* SocketEmitTest.swift in Sources */,
945B65401B5FCEEA0081E995 /* SwiftRegex.swift in Sources */, 945B65401B5FCEEA0081E995 /* SwiftRegex.swift in Sources */,
945B653C1B5FCEEA0081E995 /* SocketLogger.swift in Sources */, 945B653C1B5FCEEA0081E995 /* SocketLogger.swift in Sources */,

View File

@ -0,0 +1,104 @@
//
// AbstractSocketTest.swift
// Socket.IO-Client-Swift
//
// Created by Lukas Schmidt on 02.08.15.
//
//
import XCTest
class AbstractSocketTest: XCTestCase {
static let TEST_TIMEOUT = 4.0
var socket:SocketIOClient!
var testKind:TestKind?
override func tearDown() {
super.tearDown()
socket.close(fast: false)
}
func openConnection() {
let expection = self.expectationWithDescription("connect")
socket.on("connect") {data, ack in
expection.fulfill()
}
socket.connect()
XCTAssertTrue(socket.connecting)
waitForExpectationsWithTimeout(5, handler: nil)
}
func generateTestName(rawTestName:String) ->String {
return rawTestName + testKind!.rawValue
}
func checkConnectionStatus() {
XCTAssertTrue(socket.connected)
XCTAssertFalse(socket.connecting)
XCTAssertFalse(socket.reconnecting)
XCTAssertFalse(socket.closed)
XCTAssertFalse(socket.secure)
}
func socketMultipleEmit(testName:String, emitData:Array<AnyObject>, callback:NormalCallback){
let finalTestname = generateTestName(testName)
let expection = self.expectationWithDescription(finalTestname)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
callback(result, ack)
expection.fulfill()
}
socket.emit(finalTestname, withItems: emitData)
socket.on(finalTestname + "Return", callback: didGetEmit)
waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil)
}
func socketEmit(testName:String, emitData:AnyObject?, callback:NormalCallback){
let finalTestname = generateTestName(testName)
let expection = self.expectationWithDescription(finalTestname)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
callback(result, ack)
expection.fulfill()
}
socket.on(finalTestname + "Return", callback: didGetEmit)
if let emitData = emitData {
socket.emit(finalTestname, emitData)
} else {
socket.emit(finalTestname)
}
waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil)
}
func socketAcknwoledgeMultiple(testName:String, Data:Array<AnyObject>, callback:NormalCallback){
let finalTestname = generateTestName(testName)
let expection = self.expectationWithDescription(finalTestname)
func didGetResult(result:NSArray?) {
callback(result, nil)
expection.fulfill()
}
socket.emitWithAck(finalTestname, withItems: Data)(timeoutAfter: 5, callback: didGetResult)
waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil)
}
func socketAcknwoledge(testName:String, Data:AnyObject?, callback:NormalCallback){
let finalTestname = generateTestName(testName)
let expection = self.expectationWithDescription(finalTestname)
func didGet(result:NSArray?) {
callback(result, nil)
expection.fulfill()
}
var ack:OnAckCallback!
if let Data = Data {
ack = socket.emitWithAck(finalTestname, Data)
} else {
ack = socket.emitWithAck(finalTestname)
}
ack(timeoutAfter: 20, callback: didGet)
waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil)
}
}

View File

@ -8,7 +8,8 @@
import XCTest import XCTest
class SocketAcknowledgementTest: SocketEmitTest { class SocketAcknowledgementTest: AbstractSocketTest {
override func setUp() { override func setUp() {
super.setUp() super.setUp()
testKind = TestKind.Acknowledgement testKind = TestKind.Acknowledgement
@ -18,92 +19,64 @@ class SocketAcknowledgementTest: SocketEmitTest {
"reconnectWait": 5, // default 10 "reconnectWait": 5, // default 10
"forcePolling": false, "forcePolling": false,
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": "", "path": ""])
"extraHeaders": headers])
openConnection() openConnection()
} }
override func testConnectionStatus() { func testConnectionStatus() {
super.testConnectionStatus() super.checkConnectionStatus()
} }
override func testEmit() { func testBasic() {
super.testEmit() SocketTestCases.testBasic(socketAcknwoledge)
} }
override func testEmitNull() { func testNull() {
super.testEmitNull() SocketTestCases.testNull(socketAcknwoledge)
} }
override func testEmitBinary() { func testBinary() {
super.testEmitBinary() SocketTestCases.testBinary(socketAcknwoledge)
} }
override func testArrayEmit() { func testArray() {
super.testArrayEmit() SocketTestCases.testArray(socketAcknwoledge)
} }
override func testStringEmit() { func testString() {
super.testStringEmit() SocketTestCases.testString(socketAcknwoledge)
} }
override func testBoolEmit() { func testBool() {
super.testBoolEmit() SocketTestCases.testBool(socketAcknwoledge)
} }
override func testIntegerEmit() { func testInteger() {
super.testIntegerEmit() SocketTestCases.testInteger(socketAcknwoledge)
} }
override func testDoubleEmit() { func testDouble() {
super.testDoubleEmit() SocketTestCases.testDouble(socketAcknwoledge)
} }
override func testJSONEmit() { func testJSON() {
super.testJSONEmit() SocketTestCases.testJSON(socketAcknwoledge)
} }
func testJSONWithoutBuffer() { func testJSONWithBuffer() {
SocketTestCases.testJSONEmit(abstractSocketEmit, testKind: self.testKind) SocketTestCases.testJSONWithBuffer(socketAcknwoledge)
} }
override func testUnicodeEmit() { func testUnicode() {
super.testUnicodeEmit() SocketTestCases.testUnicode(socketAcknwoledge)
} }
override func testMultipleItemsEmit() { func testMultipleItems() {
super.testMultipleItemsEmit() SocketTestCases.testMultipleItems(socketAcknwoledgeMultiple)
} }
override func abstractSocketMultipleEmit(testName:String, emitData:Array<AnyObject>, callback:NormalCallback){ func testMultipleWithBuffer() {
let finalTestname = generateTestName(testName) SocketTestCases.testMultipleItemsWithBuffer(socketAcknwoledgeMultiple)
let expection = self.expectationWithDescription(finalTestname)
func didGetEmit(result:NSArray?) {
callback(result, nil)
expection.fulfill()
}
socket.emitWithAck(finalTestname, withItems: emitData)(timeoutAfter: 5, callback: didGetEmit)
waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil)
}
override func abstractSocketEmit(testName:String, emitData:AnyObject?, callback:NormalCallback){
let finalTestname = testName + testKind.rawValue
let expection = self.expectationWithDescription(finalTestname)
func didGetEmit(result:NSArray?) {
callback(result, nil)
expection.fulfill()
}
var ack:OnAckCallback!
if let emitData = emitData {
ack = socket.emitWithAck(finalTestname, emitData)
} else {
ack = socket.emitWithAck(finalTestname)
}
ack(timeoutAfter: 20, callback: didGetEmit)
waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil)
} }
} }

View File

@ -9,22 +9,17 @@
import XCTest import XCTest
import Foundation import Foundation
class SocketEmitTest: XCTestCase { class SocketEmitTest: AbstractSocketTest {
static let TEST_TIMEOUT = 15.0
var socket:SocketIOClient!
let headers = ["testing": "blah", "testing2": "b/:lah"]
var testKind = TestKind.Emit
override func setUp() { override func setUp() {
super.setUp() super.setUp()
testKind = TestKind.Emit
socket = SocketIOClient(socketURL: "127.0.0.1:8080", opts: [ socket = SocketIOClient(socketURL: "127.0.0.1:8080", opts: [
"reconnects": true, // default true "reconnects": true, // default true
"reconnectAttempts": -1, // default -1 "reconnectAttempts": -1, // default -1
"reconnectWait": 5, // default 10 "reconnectWait": 5, // default 10
"forcePolling": false, "forcePolling": false,
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": "", "path": ""]
"extraHeaders": headers]
) )
openConnection() openConnection()
} }
@ -34,227 +29,60 @@ class SocketEmitTest: XCTestCase {
super.tearDown() super.tearDown()
} }
func openConnection() {
let expection = self.expectationWithDescription("connect")
socket.on("connect") {data, ack in
expection.fulfill()
}
socket.connect()
XCTAssertTrue(socket.connecting)
waitForExpectationsWithTimeout(5, handler: nil)
}
func testConnectionStatus() { func testConnectionStatus() {
XCTAssertTrue(socket.connected) super.checkConnectionStatus()
XCTAssertFalse(socket.connecting)
XCTAssertFalse(socket.reconnecting)
XCTAssertFalse(socket.closed)
XCTAssertFalse(socket.secure)
} }
func testEmit() { func testBasic() {
let testName = "basicTest" SocketTestCases.testBasic(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
}
abstractSocketEmit(testName, emitData: nil, callback: didGetEmit)
} }
func testEmitNull() { func testNull() {
let testName = "testNull" SocketTestCases.testNull(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
if let _ = result?.firstObject as? NSNull {
}else
{
XCTFail("Should have NSNull as result")
}
}
abstractSocketEmit(testName, emitData: NSNull(), callback: didGetEmit)
} }
func testEmitBinary() { func testBinary() {
let testName = "testBinary" SocketTestCases.testBinary(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
if let data = result?.firstObject as? NSData {
let string = NSString(data: data, encoding: NSUTF8StringEncoding)!
XCTAssertEqual(string, "gakgakgak2")
}else {
XCTFail("Should have NSData as result")
}
}
let data = NSString(string: "gakgakgak2").dataUsingEncoding(NSUTF8StringEncoding)!
abstractSocketEmit(testName, emitData: data, callback: didGetEmit)
} }
func testArrayEmit() { func testArray() {
let testName = "testArray" SocketTestCases.testArray(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
if let array = result?.firstObject as? NSArray {
XCTAssertEqual(array.count, 2)
XCTAssertEqual(array.firstObject! as! String, "test3")
XCTAssertEqual(array.lastObject! as! String, "test4")
}else {
XCTFail("Should have NSArray as result")
}
}
abstractSocketEmit(testName, emitData: ["test1", "test2"], callback: didGetEmit)
} }
func testStringEmit() { func testString() {
let testName = "testString" SocketTestCases.testString(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
if let string = result?.firstObject as? String {
XCTAssertEqual(string, "polo")
}else {
XCTFail("Should have String as result")
}
}
abstractSocketEmit(testName, emitData: "marco", callback: didGetEmit)
} }
func testBoolEmit() { func testBool() {
let testName = "testBool" SocketTestCases.testBool(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
if let bool = result?.firstObject as? NSNumber {
XCTAssertTrue(bool.boolValue)
}else {
XCTFail("Should have Boolean as result")
}
}
abstractSocketEmit(testName, emitData: false, callback: didGetEmit)
} }
func testIntegerEmit() { func testInteger() {
let testName = "testInteger" SocketTestCases.testInteger(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
if let integer = result?.firstObject as? Int {
XCTAssertEqual(integer, 20)
}else {
XCTFail("Should have Integer as result")
}
}
abstractSocketEmit(testName, emitData: 10, callback: didGetEmit)
} }
func testDoubleEmit() { func testDouble() {
let testName = "testDouble" SocketTestCases.testDouble(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
if let double = result?.firstObject as? NSNumber {
XCTAssertEqual(double.floatValue, 1.2)
}else {
XCTFail("Should have Double as result")
}
}
abstractSocketEmit(testName, emitData: 1.1, callback: didGetEmit)
} }
func testJSONEmit() { func testJSON() {
let testName = "testJSON" SocketTestCases.testJSON(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
if let json = result?.firstObject as? NSDictionary {
XCTAssertEqual(json.valueForKey("testString")! as! String, "test")
XCTAssertEqual(json.valueForKey("testNumber")! as! Int, 15)
XCTAssertEqual((json.valueForKey("testArray")! as! Array<AnyObject>).count, 2)
XCTAssertEqual((json.valueForKey("testArray")! as! Array<AnyObject>).last! as! Int, 1)
let string = NSString(data: (json.valueForKey("testArray")! as! Array<AnyObject>).first! as! NSData, encoding: NSUTF8StringEncoding)!
XCTAssertEqual(string, "gakgakgak2")
}else {
XCTFail("Should have NSDictionary as result")
}
}
let json = ["name": "test", "testArray": ["hallo"], "nestedTest": ["test": "test"], "number": 15]
abstractSocketEmit(testName, emitData: json, callback: didGetEmit)
} }
func testUnicodeEmit() { func testJSONWithBuffer() {
let testName = "testUnicode" SocketTestCases.testJSONWithBuffer(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
if let unicode = result?.firstObject as? String {
XCTAssertEqual(unicode, "🚄")
}else {
XCTFail("Should have String as result")
}
}
abstractSocketEmit(testName, emitData: "🚀", callback: didGetEmit)
} }
func testMultipleItemsEmit() { func testUnicode() {
let testName = "testMultipleItems" SocketTestCases.testUnicode(socketEmit)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
XCTAssertEqual(result!.count, 5)
if let array = result?.firstObject as? Array<AnyObject> {
XCTAssertEqual(array.last! as! Int, 2)
XCTAssertEqual(array.first! as! Int, 1)
}else {
XCTFail("Should have Array as result")
}
if let dict = result?[1] as? NSDictionary {
XCTAssertEqual(dict.valueForKey("test") as! String, "bob")
}else {
XCTFail("Should have NSDictionary as result")
}
if let number = result?[2] as? Int {
XCTAssertEqual(number, 25)
}else {
XCTFail("Should have Integer as result")
}
if let string = result?[3] as? String {
XCTAssertEqual(string, "polo")
}else {
XCTFail("Should have Integer as result")
}
if let data = result?[4] as? NSData {
let string = NSString(data: data, encoding: NSUTF8StringEncoding)!
XCTAssertEqual(string, "gakgakgak2")
}else {
XCTFail("Should have NSData as result")
}
}
let data = NSString(string: "gakgakgak2").dataUsingEncoding(NSUTF8StringEncoding)!
let emitArray = [["test1", "test2"], ["test": "test"], 15, "marco", data]
abstractSocketMultipleEmit(testName, emitData: emitArray, callback: didGetEmit)
} }
func generateTestName(rawTestName:String) ->String { func testMultipleItems() {
return rawTestName + testKind.rawValue SocketTestCases.testMultipleItems(socketMultipleEmit)
} }
func abstractSocketMultipleEmit(testName:String, emitData:Array<AnyObject>, callback:NormalCallback){ func testMultipleWithBuffer() {
let finalTestname = generateTestName(testName) SocketTestCases.testMultipleItemsWithBuffer(socketMultipleEmit)
let expection = self.expectationWithDescription(finalTestname)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
callback(result, ack)
expection.fulfill()
}
socket.emit(finalTestname, withItems: emitData)
socket.on(finalTestname + "Return", callback: didGetEmit)
waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil)
}
func abstractSocketEmit(testName:String, emitData:AnyObject?, callback:NormalCallback){
let finalTestname = generateTestName(testName)
let expection = self.expectationWithDescription(finalTestname)
func didGetEmit(result:NSArray?, ack:AckEmitter?) {
callback(result, ack)
expection.fulfill()
}
socket.on(finalTestname + "Return", callback: didGetEmit)
if let emitData = emitData {
socket.emit(finalTestname, emitData)
} else {
socket.emit(finalTestname)
}
waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil)
} }
} }

View File

@ -8,7 +8,7 @@
import XCTest import XCTest
class SocketNamespaceAcknowledgementTest: SocketAcknowledgementTest { class SocketNamespaceAcknowledgementTest: AbstractSocketTest {
override func setUp() { override func setUp() {
super.setUp() super.setUp()
@ -20,56 +20,63 @@ class SocketNamespaceAcknowledgementTest: SocketAcknowledgementTest {
"forcePolling": false, "forcePolling": false,
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": "", "path": "",
"nsp": "/swift", "nsp": "/swift"])
"extraHeaders": headers])
openConnection() openConnection()
} }
override func testConnectionStatus() { func testConnectionStatus() {
super.testConnectionStatus() super.checkConnectionStatus()
} }
override func testEmit() { func testBasic() {
super.testEmit() SocketTestCases.testBasic(socketAcknwoledge)
} }
override func testEmitNull() { func testNull() {
super.testEmitNull() SocketTestCases.testNull(socketAcknwoledge)
} }
override func testEmitBinary() { func testBinary() {
super.testEmitBinary() SocketTestCases.testBinary(socketAcknwoledge)
} }
override func testArrayEmit() { func testArray() {
super.testArrayEmit() SocketTestCases.testArray(socketAcknwoledge)
} }
override func testStringEmit() { func testString() {
super.testStringEmit() SocketTestCases.testString(socketAcknwoledge)
} }
override func testBoolEmit() { func testBool() {
super.testBoolEmit() SocketTestCases.testBool(socketAcknwoledge)
} }
override func testIntegerEmit() { func testInteger() {
super.testIntegerEmit() SocketTestCases.testInteger(socketAcknwoledge)
} }
override func testDoubleEmit() { func testDouble() {
super.testDoubleEmit() SocketTestCases.testDouble(socketAcknwoledge)
} }
override func testJSONEmit() { func testJSON() {
super.testJSONEmit() SocketTestCases.testJSON(socketAcknwoledge)
} }
override func testUnicodeEmit() { func testJSONWithBuffer() {
super.testUnicodeEmit() SocketTestCases.testJSONWithBuffer(socketAcknwoledge)
} }
override func testMultipleItemsEmit() { func testUnicode() {
super.testMultipleItemsEmit() SocketTestCases.testUnicode(socketAcknwoledge)
}
func testMultipleItems() {
SocketTestCases.testMultipleItems(socketAcknwoledgeMultiple)
}
func testMultipleWithBuffer() {
SocketTestCases.testMultipleItemsWithBuffer(socketAcknwoledgeMultiple)
} }
} }

View File

@ -8,73 +8,76 @@
import XCTest import XCTest
class SocketNamespaceEmitTest: SocketEmitTest { class SocketNamespaceEmitTest: AbstractSocketTest {
override func setUp() { override func setUp() {
super.setUp() super.setUp()
socket = SocketIOClient(socketURL: "127.0.0.1:8080", opts: [ testKind = TestKind.Emit
"reconnects": true, // default true socket = SocketIOClient(socketURL: "127.0.0.1:8080", opts: [
"reconnectAttempts": -1, // default -1 "reconnects": true, // default true
"reconnectWait": 5, // default 10 "reconnectAttempts": -1, // default -1
"forcePolling": false, "reconnectWait": 5, // default 10
"forceWebsockets": false,// default false "forcePolling": false,
"path": "", "forceWebsockets": false,// default false
"nsp": "/swift", "path": "",
"extraHeaders": headers]) "nsp": "/swift"])
openConnection() openConnection()
} }
override func tearDown() { func testConnectionStatus() {
socket.close(fast: false) super.checkConnectionStatus()
super.tearDown()
} }
override func testConnectionStatus() { func testBasic() {
super.testConnectionStatus() SocketTestCases.testBasic(socketEmit)
} }
override func testEmit() { func testNull() {
super.testEmit() SocketTestCases.testNull(socketEmit)
} }
override func testEmitNull() { func testBinary() {
super.testEmitNull() SocketTestCases.testBinary(socketEmit)
} }
override func testEmitBinary() { func testArray() {
super.testEmitBinary() SocketTestCases.testArray(socketEmit)
} }
override func testArrayEmit() { func testString() {
super.testArrayEmit() SocketTestCases.testString(socketEmit)
} }
override func testStringEmit() { func testBool() {
super.testStringEmit() SocketTestCases.testBool(socketEmit)
} }
override func testBoolEmit() { func testInteger() {
super.testBoolEmit() SocketTestCases.testInteger(socketEmit)
} }
override func testIntegerEmit() { func testDouble() {
super.testIntegerEmit() SocketTestCases.testDouble(socketEmit)
} }
override func testDoubleEmit() { func testJSON() {
super.testDoubleEmit() SocketTestCases.testJSON(socketEmit)
} }
override func testJSONEmit() { func testJSONWithBuffer() {
super.testJSONEmit() SocketTestCases.testJSONWithBuffer(socketEmit)
} }
override func testUnicodeEmit() { func testUnicode() {
super.testUnicodeEmit() SocketTestCases.testUnicode(socketEmit)
} }
override func testMultipleItemsEmit() { func testMultipleItems() {
super.testMultipleItemsEmit() SocketTestCases.testMultipleItems(socketMultipleEmit)
}
func testMultipleWithBuffer() {
SocketTestCases.testMultipleItemsWithBuffer(socketMultipleEmit)
} }
} }

View File

@ -12,7 +12,7 @@ import Foundation
class SocketTestCases: NSObject { class SocketTestCases: NSObject {
typealias SocketSendFunction = (testName:String, emitData:AnyObject?, callback:NormalCallback)->() typealias SocketSendFunction = (testName:String, emitData:AnyObject?, callback:NormalCallback)->()
static func testBasic(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testBasic(abstractSocketSend:SocketSendFunction) {
let testName = "basicTest" let testName = "basicTest"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
@ -20,7 +20,7 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: nil, callback: didGetResult) abstractSocketSend(testName: testName, emitData: nil, callback: didGetResult)
} }
static func testNull(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testNull(abstractSocketSend:SocketSendFunction) {
let testName = "testNull" let testName = "testNull"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let _ = result?.firstObject as? NSNull { if let _ = result?.firstObject as? NSNull {
@ -33,7 +33,7 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: NSNull(), callback: didGetResult) abstractSocketSend(testName: testName, emitData: NSNull(), callback: didGetResult)
} }
static func testBinary(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testBinary(abstractSocketSend:SocketSendFunction) {
let testName = "testBinary" let testName = "testBinary"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let data = result?.firstObject as? NSData { if let data = result?.firstObject as? NSData {
@ -47,7 +47,7 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: data, callback: didGetResult) abstractSocketSend(testName: testName, emitData: data, callback: didGetResult)
} }
static func testArray(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testArray(abstractSocketSend:SocketSendFunction) {
let testName = "testArray" let testName = "testArray"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let array = result?.firstObject as? NSArray { if let array = result?.firstObject as? NSArray {
@ -61,7 +61,7 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: ["test1", "test2"], callback: didGetResult) abstractSocketSend(testName: testName, emitData: ["test1", "test2"], callback: didGetResult)
} }
static func testString(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testString(abstractSocketSend:SocketSendFunction) {
let testName = "testString" let testName = "testString"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let string = result?.firstObject as? String { if let string = result?.firstObject as? String {
@ -73,7 +73,7 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: "marco", callback: didGetResult) abstractSocketSend(testName: testName, emitData: "marco", callback: didGetResult)
} }
static func testBool(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testBool(abstractSocketSend:SocketSendFunction) {
let testName = "testBool" let testName = "testBool"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let bool = result?.firstObject as? NSNumber { if let bool = result?.firstObject as? NSNumber {
@ -85,7 +85,7 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: false, callback: didGetResult) abstractSocketSend(testName: testName, emitData: false, callback: didGetResult)
} }
static func testInteger(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testInteger(abstractSocketSend:SocketSendFunction) {
let testName = "testInteger" let testName = "testInteger"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let integer = result?.firstObject as? Int { if let integer = result?.firstObject as? Int {
@ -97,7 +97,7 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: 10, callback: didGetResult) abstractSocketSend(testName: testName, emitData: 10, callback: didGetResult)
} }
static func testDouble(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testDouble(abstractSocketSend:SocketSendFunction) {
let testName = "testDouble" let testName = "testDouble"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let double = result?.firstObject as? NSNumber { if let double = result?.firstObject as? NSNumber {
@ -109,8 +109,8 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: 1.1, callback: didGetResult) abstractSocketSend(testName: testName, emitData: 1.1, callback: didGetResult)
} }
static func testJSON(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testJSONWithBuffer(abstractSocketSend:SocketSendFunction) {
let testName = "testJSON" let testName = "testJSONWithBuffer"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let json = result?.firstObject as? NSDictionary { if let json = result?.firstObject as? NSDictionary {
XCTAssertEqual(json.valueForKey("testString")! as! String, "test") XCTAssertEqual(json.valueForKey("testString")! as! String, "test")
@ -128,8 +128,8 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: json, callback: didGetResult) abstractSocketSend(testName: testName, emitData: json, callback: didGetResult)
} }
static func testJSONWithoutBuffer(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testJSON(abstractSocketSend:SocketSendFunction) {
let testName = "testJSONWithoutBuffer" let testName = "testJSON"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let json = result?.firstObject as? NSDictionary { if let json = result?.firstObject as? NSDictionary {
XCTAssertEqual(json.valueForKey("testString")! as! String, "test") XCTAssertEqual(json.valueForKey("testString")! as! String, "test")
@ -147,7 +147,7 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: json, callback: didGetResult) abstractSocketSend(testName: testName, emitData: json, callback: didGetResult)
} }
static func testUnicode(abstractSocketSend:SocketSendFunction, testKind:TestKind) { static func testUnicode(abstractSocketSend:SocketSendFunction) {
let testName = "testUnicode" let testName = "testUnicode"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
if let unicode = result?.firstObject as? String { if let unicode = result?.firstObject as? String {
@ -159,10 +159,14 @@ class SocketTestCases: NSObject {
abstractSocketSend(testName: testName, emitData: "🚀", callback: didGetResult) abstractSocketSend(testName: testName, emitData: "🚀", callback: didGetResult)
} }
static func testMultipleItems(abstractSocketMultipleSend:(testName:String, emitData:Array<AnyObject>, callback:NormalCallback)->(), testKind:TestKind) { static func testMultipleItemsWithBuffer(abstractSocketMultipleSend:(testName:String, emitData:Array<AnyObject>, callback:NormalCallback)->()) {
let testName = "testMultipleItems" let testName = "testMultipleItemsWithBuffer"
func didGetResult(result:NSArray?, ack:AckEmitter?) { func didGetResult(result:NSArray?, ack:AckEmitter?) {
XCTAssertEqual(result!.count, 5) XCTAssertEqual(result!.count, 5)
if result!.count != 5 {
XCTFail("Fatal Fail. Lost some Data")
return
}
if let array = result?.firstObject as? Array<AnyObject> { if let array = result?.firstObject as? Array<AnyObject> {
XCTAssertEqual(array.last! as! Int, 2) XCTAssertEqual(array.last! as! Int, 2)
XCTAssertEqual(array.first! as! Int, 1) XCTAssertEqual(array.first! as! Int, 1)
@ -198,4 +202,45 @@ class SocketTestCases: NSObject {
let emitArray = [["test1", "test2"], ["test": "test"], 15, "marco", data] let emitArray = [["test1", "test2"], ["test": "test"], 15, "marco", data]
abstractSocketMultipleSend(testName: testName, emitData: emitArray, callback: didGetResult) abstractSocketMultipleSend(testName: testName, emitData: emitArray, callback: didGetResult)
} }
static func testMultipleItems(abstractSocketMultipleSend:(testName:String, emitData:Array<AnyObject>, callback:NormalCallback)->()) {
let testName = "testMultipleItems"
func didGetResult(result:NSArray?, ack:AckEmitter?) {
XCTAssertEqual(result!.count, 5)
if result!.count != 5 {
XCTFail("Fatal Fail. Lost some Data")
return
}
if let array = result?.firstObject as? Array<AnyObject> {
XCTAssertEqual(array.last! as! Int, 2)
XCTAssertEqual(array.first! as! Int, 1)
}else {
XCTFail("Should have Array as result")
}
if let dict = result?[1] as? NSDictionary {
XCTAssertEqual(dict.valueForKey("test") as! String, "bob")
}else {
XCTFail("Should have NSDictionary as result")
}
if let number = result?[2] as? Int {
XCTAssertEqual(number, 25)
}else {
XCTFail("Should have Integer as result")
}
if let string = result?[3] as? String {
XCTAssertEqual(string, "polo")
}else {
XCTFail("Should have Integer as result")
}
if let bool = result?[4] as? NSNumber {
XCTAssertFalse(bool.boolValue)
}else {
XCTFail("Should have NSNumber as result")
}
}
let emitArray = [["test1", "test2"], ["test": "test"], 15, "marco", false]
abstractSocketMultipleSend(testName: testName, emitData: emitArray, callback: didGetResult)
}
} }