diff --git a/.gitignore b/.gitignore index 8fcf4d1..2f7122e 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,5 @@ DerivedData *.hmap *.ipa *.xcuserstate + +Socket.IO-Test-Server/node_modules/* diff --git a/Socket.IO-Test-Server/TestCases.js b/Socket.IO-Test-Server/TestCases.js new file mode 100644 index 0000000..f0fa660 --- /dev/null +++ b/Socket.IO-Test-Server/TestCases.js @@ -0,0 +1,78 @@ +var assert = require("assert") + +module.exports = { + basicTest: { + assert: function(inputData) { + + }, + returnData: [] + }, + testNull: { + assert: function(inputData) { + assert(!inputData) + }, + returnData: [null] + }, + testBinary: { + assert: function(inputData) { + assert.equal(inputData.toString(), "gakgakgak2") + }, + returnData: [new Buffer("gakgakgak2", "utf-8")] + }, + testArray: { + assert: function(inputData) { + assert.equal(inputData.length, 2) + assert.equal(inputData[0], "test1") + assert.equal(inputData[1], "test2") + }, + returnData: [["test3", "test4"]] + }, + testString: { + assert: function(inputData) { + assert.equal(inputData, "marco") + }, + returnData: ["polo"] + }, + testBool: { + assert: function(inputData) { + assert(!inputData) + }, + returnData: [true] + }, + testInteger: { + assert: function(inputData) { + assert.equal(inputData, 10) + }, + returnData: [20] + }, + testDouble: { + assert: function(inputData) { + assert.equal(inputData, 1.1) + }, + returnData: [1.2] + }, + testJSON: { + 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: [new Buffer("gakgakgak2", "utf-8"), 1]}] + },testUnicode: { + assert: function(inputData) { + assert.equal(inputData, "🚀") + }, + returnData: ["🚄"] + },testMultipleItems: { + assert: function(array, object, number, string, binary) { + assert.equal(array.length, 2) + assert.equal(array[0], "test1") + assert.equal(array[1], "test2") + assert.equal(number, 15) + assert.equal(string, "marco") + assert.equal(binary.toString(), "gakgakgak2") + + }, + returnData: [[1, 2], {test: "bob"}, 25, "polo", new Buffer("gakgakgak2")] + }, +} \ No newline at end of file diff --git a/Socket.IO-Test-Server/acknowledgementEvents.js b/Socket.IO-Test-Server/acknowledgementEvents.js new file mode 100644 index 0000000..a4c2c9d --- /dev/null +++ b/Socket.IO-Test-Server/acknowledgementEvents.js @@ -0,0 +1,10 @@ +function socketCallback(testKey, socket, testCase) { + return function() { + testCase.assert.apply(undefined , arguments) + var emitArguments = testCase.returnData; + var ack = arguments[arguments.length - 1] + ack.apply(socket, emitArguments) + } +} + +module.exports.socketCallback = socketCallback diff --git a/Socket.IO-Test-Server/emitEvents.js b/Socket.IO-Test-Server/emitEvents.js new file mode 100644 index 0000000..14f9ce5 --- /dev/null +++ b/Socket.IO-Test-Server/emitEvents.js @@ -0,0 +1,20 @@ +function socketCallback(testKey, socket, testCase) { + return function() { + testCase.assert.apply(undefined , arguments) + + var emitArguments = addArrays([testKey + "EmitReturn"], testCase.returnData) + socket.emit.apply(socket, emitArguments) + } +} + +function addArrays(firstArray, secondArray) { + var length = secondArray.length + var i; + for(i = 0; i < length; i++) { + firstArray.push(secondArray[i]) + } + + return firstArray; +} + +module.exports.socketCallback = socketCallback \ No newline at end of file diff --git a/Socket.IO-Test-Server/main.js b/Socket.IO-Test-Server/main.js new file mode 100644 index 0000000..ae83f97 --- /dev/null +++ b/Socket.IO-Test-Server/main.js @@ -0,0 +1,13 @@ +var app = require('express')() +var server = app.listen(8080) +var io = require('socket.io')(server) +var acknowledgementsEvents = require("./acknowledgementEvents.js") +var emitEvents = require("./emitEvents.js") +var socketEventRegister = require("./socketEventRegister.js") + +socketEventRegister.register(io, emitEvents.socketCallback, "Emit") +socketEventRegister.register(io, acknowledgementsEvents.socketCallback, "Acknowledgement") + +var nsp = io.of("/swift") +socketEventRegister.register(nsp, emitEvents.socketCallback, "Emit") +socketEventRegister.register(nsp, acknowledgementsEvents.socketCallback, "Acknowledgement") diff --git a/Socket.IO-Test-Server/package.json b/Socket.IO-Test-Server/package.json new file mode 100644 index 0000000..a62aa0b --- /dev/null +++ b/Socket.IO-Test-Server/package.json @@ -0,0 +1,15 @@ +{ + "name": "socket.io-client-swift-test-server", + "version": "0.0.1", + "description": "A simple server to test aginst", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Lukas Schmidt", + "license": "MIT", + "dependencies": { + "express": "^4.13.1", + "socket.io": "^1.3.6" + } +} diff --git a/Socket.IO-Test-Server/socketEventRegister.js b/Socket.IO-Test-Server/socketEventRegister.js new file mode 100644 index 0000000..9e0c208 --- /dev/null +++ b/Socket.IO-Test-Server/socketEventRegister.js @@ -0,0 +1,13 @@ +var testCases = require("./TestCases.js") + +function registerSocketForEvents(ioSocket, socketCallback, testKind) { + ioSocket.on('connection', function(socket) { + var testCase; + for(testKey in testCases) { + testCase = testCases[testKey] + socket.on((testKey + testKind), socketCallback(testKey, socket, testCase)) + } + }) +} + +module.exports.register = registerSocketForEvents \ No newline at end of file