diff --git a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj index 053773a..75f5ac1 100644 --- a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj +++ b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj @@ -51,7 +51,7 @@ 945B653F1B5FCEEA0081E995 /* SocketTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF861B51F254004FF46E /* SocketTypes.swift */; }; 945B65401B5FCEEA0081E995 /* SwiftRegex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF871B51F254004FF46E /* SwiftRegex.swift */; }; 945B65411B5FCEEA0081E995 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5764DF881B51F254004FF46E /* WebSocket.swift */; }; - 945B65431B63D9DB0081E995 /* ConvertedSocketTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945B65421B63D9DB0081E995 /* ConvertedSocketTest.swift */; }; + 945B65431B63D9DB0081E995 /* SocketEmitTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945B65421B63D9DB0081E995 /* SocketEmitTest.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -96,7 +96,7 @@ 5764DF861B51F254004FF46E /* SocketTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SocketTypes.swift; path = SocketIOClientSwift/SocketTypes.swift; sourceTree = ""; }; 5764DF871B51F254004FF46E /* SwiftRegex.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SwiftRegex.swift; path = SocketIOClientSwift/SwiftRegex.swift; sourceTree = ""; }; 5764DF881B51F254004FF46E /* WebSocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = SocketIOClientSwift/WebSocket.swift; sourceTree = ""; }; - 945B65421B63D9DB0081E995 /* ConvertedSocketTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConvertedSocketTest.swift; sourceTree = ""; }; + 945B65421B63D9DB0081E995 /* SocketEmitTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketEmitTest.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -176,7 +176,7 @@ 572EF2281B51F16C00EEBB58 /* SocketIO-iOSTests */ = { isa = PBXGroup; children = ( - 945B65421B63D9DB0081E995 /* ConvertedSocketTest.swift */, + 945B65421B63D9DB0081E995 /* SocketEmitTest.swift */, 572EF2291B51F16C00EEBB58 /* Supporting Files */, ); path = "SocketIO-iOSTests"; @@ -443,7 +443,7 @@ 945B65391B5FCEEA0081E995 /* SocketEventHandler.swift in Sources */, 945B65371B5FCEEA0081E995 /* SocketEngine.swift in Sources */, 945B65351B5FCEEA0081E995 /* SocketAckManager.swift in Sources */, - 945B65431B63D9DB0081E995 /* ConvertedSocketTest.swift in Sources */, + 945B65431B63D9DB0081E995 /* SocketEmitTest.swift in Sources */, 945B65401B5FCEEA0081E995 /* SwiftRegex.swift in Sources */, 945B653C1B5FCEEA0081E995 /* SocketLogger.swift in Sources */, 945B65381B5FCEEA0081E995 /* SocketEngineClient.swift in Sources */, diff --git a/SocketIO-iOSTests/ConvertedSocketTest.swift b/SocketIO-iOSTests/SocketEmitTest.swift similarity index 60% rename from SocketIO-iOSTests/ConvertedSocketTest.swift rename to SocketIO-iOSTests/SocketEmitTest.swift index fed9352..d2866d6 100644 --- a/SocketIO-iOSTests/ConvertedSocketTest.swift +++ b/SocketIO-iOSTests/SocketEmitTest.swift @@ -9,8 +9,8 @@ import XCTest import Foundation -class ConvertedSocketTest: XCTestCase { - +class SocketEmitTest: XCTestCase { + private static let TEST_TIMEOUT = 20.0 var socket:SocketIOClient! @@ -32,15 +32,8 @@ class ConvertedSocketTest: XCTestCase { "reconnectWait": 5, // default 10 "forcePolling": false, "forceWebsockets": false,// default false - "nsp": "/swift", "path": "", - "extraHeaders": headers, - // "connectParams": [ - // "test": 2.1, - // "d": "{}" - // ], - //"cookies": cookieArray - ]) + "extraHeaders": headers]) } openConnection() } @@ -158,11 +151,86 @@ class ConvertedSocketTest: XCTestCase { if let double = result?.firstObject as? NSNumber { XCTAssertEqual(double.floatValue, 1.2) }else { - XCTFail("Should have String as result") + XCTFail("Should have Double as result") } } abstractSocketEmitTest(testName, emitData: 1.1, callback: didGetEmit) } + + func testJSONEmit() { + let testName = "testJSONEmit" + 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).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] + + abstractSocketEmitTest(testName, emitData: json, callback: didGetEmit) + } + + func testUnicodeEmit() { + let testName = "testUnicodeEmit" + func didGetEmit(result:NSArray?, ack:AckEmitter?) { + if let unicode = result?.firstObject as? String { + XCTAssertEqual(unicode, "🚄") + }else { + XCTFail("Should have String as result") + } + } + abstractSocketEmitTest(testName, emitData: "🚀", callback: didGetEmit) + } + + func testMultipleItemsEmit() { + let testName = "testMultipleItemsEmit" + let expection = self.expectationWithDescription(testName) + func didGetEmit(result:NSArray?, ack:AckEmitter?) { + XCTAssertEqual(result!.count, 5) + if let array = result?.firstObject as? Array { + XCTAssertEqual(array.last! as! Int, 2) + let string = NSString(data: array.first! as! NSData, encoding: NSUTF8StringEncoding)! + XCTAssertEqual(string, "gakgakgak2") + }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") + } + expection.fulfill() + } + let data = NSString(string: "gakgakgak2").dataUsingEncoding(NSUTF8StringEncoding)! + socket.emit(testName, withItems: [["test1", "test2"], ["test": "test"], 15, "marco", data]) + socket.on(testName + "Return", callback: didGetEmit) + waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil) + } func abstractSocketEmitTest(testName:String, emitData:AnyObject?, callback:NormalCallback){ @@ -179,12 +247,7 @@ class ConvertedSocketTest: XCTestCase { socket.emit(testName) } - waitForExpectationsWithTimeout(5, handler: nil) - } - - func testCloseConnection() { -// socket.close(fast: false) -// XCTAssertTrue(socket.closed) + waitForExpectationsWithTimeout(SocketEmitTest.TEST_TIMEOUT, handler: nil) } }