From 4086ce7d75a30e011749e04efb065632d3e4b0c7 Mon Sep 17 00:00:00 2001 From: Lukas Schmidt Date: Sun, 2 Aug 2015 15:07:05 +0200 Subject: [PATCH] relocate test cases for better understanding --- .../project.pbxproj | 4 + Socket.IO-Test-Server/TestCases.js | 8 + .../SocketAcknowledgementTest.swift | 4 + SocketIO-iOSTests/SocketEmitTest.swift | 3 +- SocketIO-iOSTests/SocketTestCases.swift | 201 ++++++++++++++++++ 5 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 SocketIO-iOSTests/SocketTestCases.swift diff --git a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj index de8ab5f..05ec9e0 100644 --- a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj +++ b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj @@ -56,6 +56,7 @@ 945B65431B63D9DB0081E995 /* SocketEmitTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945B65421B63D9DB0081E995 /* SocketEmitTest.swift */; }; 94ADAC491B652D3300FD79AE /* SocketNamespaceEmitTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94ADAC481B652D3300FD79AE /* SocketNamespaceEmitTest.swift */; }; 94ADAC4B1B6632DD00FD79AE /* SocketAcknowledgementTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94ADAC4A1B6632DD00FD79AE /* SocketAcknowledgementTest.swift */; }; + 94CB8F0B1B6E48B90019ED53 /* SocketTestCases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -105,6 +106,7 @@ 945B65421B63D9DB0081E995 /* SocketEmitTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketEmitTest.swift; sourceTree = ""; }; 94ADAC481B652D3300FD79AE /* SocketNamespaceEmitTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketNamespaceEmitTest.swift; sourceTree = ""; }; 94ADAC4A1B6632DD00FD79AE /* SocketAcknowledgementTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketAcknowledgementTest.swift; sourceTree = ""; }; + 94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketTestCases.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -189,6 +191,7 @@ 94ADAC481B652D3300FD79AE /* SocketNamespaceEmitTest.swift */, 94242BB71B67B0E500AAAC9D /* SocketNamespaceAcknowledgementTest.swift */, 941A4AB91B67A56C00C42318 /* TestKind.swift */, + 94CB8F0A1B6E48B90019ED53 /* SocketTestCases.swift */, 572EF2291B51F16C00EEBB58 /* Supporting Files */, ); path = "SocketIO-iOSTests"; @@ -453,6 +456,7 @@ 945B653D1B5FCEEA0081E995 /* SocketPacket.swift in Sources */, 945B653A1B5FCEEA0081E995 /* SocketFixUTF8.swift in Sources */, 945B65391B5FCEEA0081E995 /* SocketEventHandler.swift in Sources */, + 94CB8F0B1B6E48B90019ED53 /* SocketTestCases.swift in Sources */, 945B65371B5FCEEA0081E995 /* SocketEngine.swift in Sources */, 945B65351B5FCEEA0081E995 /* SocketAckManager.swift in Sources */, 941A4ABA1B67A56C00C42318 /* TestKind.swift in Sources */, diff --git a/Socket.IO-Test-Server/TestCases.js b/Socket.IO-Test-Server/TestCases.js index f0fa660..c40ab2f 100644 --- a/Socket.IO-Test-Server/TestCases.js +++ b/Socket.IO-Test-Server/TestCases.js @@ -51,6 +51,14 @@ module.exports = { }, returnData: [1.2] }, + testJSONWithoutBuffer: { + assert: function(inputData) { + assert.equal(inputData.name, "test") + assert.equal(inputData.nestedTest.test, "test") + assert.equal(inputData.testArray.length, 1) + }, + returnData: [{testString: "test", testNumber: 15, nestedTest: {test: "test"}, testArray: [1, 1]}] + }, testJSON: { assert: function(inputData) { assert.equal(inputData.name, "test") diff --git a/SocketIO-iOSTests/SocketAcknowledgementTest.swift b/SocketIO-iOSTests/SocketAcknowledgementTest.swift index 733ef74..7c27622 100644 --- a/SocketIO-iOSTests/SocketAcknowledgementTest.swift +++ b/SocketIO-iOSTests/SocketAcknowledgementTest.swift @@ -63,6 +63,10 @@ class SocketAcknowledgementTest: SocketEmitTest { super.testJSONEmit() } + func testJSONWithoutBuffer() { + SocketTestCases.testJSONEmit(abstractSocketEmit, testKind: self.testKind) + } + override func testUnicodeEmit() { super.testUnicodeEmit() } diff --git a/SocketIO-iOSTests/SocketEmitTest.swift b/SocketIO-iOSTests/SocketEmitTest.swift index 48a43f7..cbdaeff 100644 --- a/SocketIO-iOSTests/SocketEmitTest.swift +++ b/SocketIO-iOSTests/SocketEmitTest.swift @@ -24,7 +24,8 @@ class SocketEmitTest: XCTestCase { "forcePolling": false, "forceWebsockets": false,// default false "path": "", - "extraHeaders": headers]) + "extraHeaders": headers] + ) openConnection() } diff --git a/SocketIO-iOSTests/SocketTestCases.swift b/SocketIO-iOSTests/SocketTestCases.swift new file mode 100644 index 0000000..53c4489 --- /dev/null +++ b/SocketIO-iOSTests/SocketTestCases.swift @@ -0,0 +1,201 @@ +// +// SocketTestCases.swift +// Socket.IO-Client-Swift +// +// Created by Lukas Schmidt on 02.08.15. +// +// + +import XCTest +import Foundation + +class SocketTestCases: NSObject { + typealias SocketSendFunction = (testName:String, emitData:AnyObject?, callback:NormalCallback)->() + + static func testBasic(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "basicTest" + func didGetResult(result:NSArray?, ack:AckEmitter?) { + + } + abstractSocketSend(testName: testName, emitData: nil, callback: didGetResult) + } + + static func testNull(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testNull" + func didGetResult(result:NSArray?, ack:AckEmitter?) { + if let _ = result?.firstObject as? NSNull { + + }else + { + XCTFail("Should have NSNull as result") + } + } + abstractSocketSend(testName: testName, emitData: NSNull(), callback: didGetResult) + } + + static func testBinary(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testBinary" + func didGetResult(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)! + abstractSocketSend(testName: testName, emitData: data, callback: didGetResult) + } + + static func testArray(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testArray" + func didGetResult(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") + } + } + abstractSocketSend(testName: testName, emitData: ["test1", "test2"], callback: didGetResult) + } + + static func testString(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testString" + func didGetResult(result:NSArray?, ack:AckEmitter?) { + if let string = result?.firstObject as? String { + XCTAssertEqual(string, "polo") + }else { + XCTFail("Should have String as result") + } + } + abstractSocketSend(testName: testName, emitData: "marco", callback: didGetResult) + } + + static func testBool(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testBool" + func didGetResult(result:NSArray?, ack:AckEmitter?) { + if let bool = result?.firstObject as? NSNumber { + XCTAssertTrue(bool.boolValue) + }else { + XCTFail("Should have Boolean as result") + } + } + abstractSocketSend(testName: testName, emitData: false, callback: didGetResult) + } + + static func testInteger(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testInteger" + func didGetResult(result:NSArray?, ack:AckEmitter?) { + if let integer = result?.firstObject as? Int { + XCTAssertEqual(integer, 20) + }else { + XCTFail("Should have Integer as result") + } + } + abstractSocketSend(testName: testName, emitData: 10, callback: didGetResult) + } + + static func testDouble(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testDouble" + func didGetResult(result:NSArray?, ack:AckEmitter?) { + if let double = result?.firstObject as? NSNumber { + XCTAssertEqual(double.floatValue, 1.2) + }else { + XCTFail("Should have Double as result") + } + } + abstractSocketSend(testName: testName, emitData: 1.1, callback: didGetResult) + } + + static func testJSON(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testJSON" + func didGetResult(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).count, 2) + XCTAssertEqual((json.valueForKey("testArray")! as! Array).last! as! Int, 1) + let string = NSString(data: (json.valueForKey("testArray")! as! Array).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] + + abstractSocketSend(testName: testName, emitData: json, callback: didGetResult) + } + + static func testJSONWithoutBuffer(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testJSONWithoutBuffer" + func didGetResult(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).count, 2) + XCTAssertEqual((json.valueForKey("testArray")! as! Array).first! as! Int, 1) + XCTAssertEqual((json.valueForKey("testArray")! as! Array).last! as! Int, 1) + + }else { + XCTFail("Should have NSDictionary as result") + } + } + let json = ["name": "test", "testArray": ["hallo"], "nestedTest": ["test": "test"], "number": 15] + + abstractSocketSend(testName: testName, emitData: json, callback: didGetResult) + } + + static func testUnicode(abstractSocketSend:SocketSendFunction, testKind:TestKind) { + let testName = "testUnicode" + func didGetResult(result:NSArray?, ack:AckEmitter?) { + if let unicode = result?.firstObject as? String { + XCTAssertEqual(unicode, "🚄") + }else { + XCTFail("Should have String as result") + } + } + abstractSocketSend(testName: testName, emitData: "🚀", callback: didGetResult) + } + + static func testMultipleItems(abstractSocketMultipleSend:(testName:String, emitData:Array, callback:NormalCallback)->(), testKind:TestKind) { + let testName = "testMultipleItems" + func didGetResult(result:NSArray?, ack:AckEmitter?) { + XCTAssertEqual(result!.count, 5) + if let array = result?.firstObject as? Array { + 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] + abstractSocketMultipleSend(testName: testName, emitData: emitArray, callback: didGetResult) + } +}