| |
| /*! |
| * socket.io-node |
| * Copyright(c) 2011 LearnBoost <dev@learnboost.com> |
| * MIT Licensed |
| */ |
| |
| (function (module, io, should) { |
| |
| module.exports = { |
| |
| 'parse uri': function () { |
| var http = io.util.parseUri('http://google.com') |
| , https = io.util.parseUri('https://www.google.com:80') |
| , query = io.util.parseUri('google.com:8080/foo/bar?foo=bar'); |
| |
| http.protocol.should().eql('http'); |
| http.port.should().eql(''); |
| http.host.should().eql('google.com'); |
| https.protocol.should().eql('https'); |
| https.port.should().eql('80'); |
| https.host.should().eql('www.google.com'); |
| query.port.should().eql('8080'); |
| query.query.should().eql('foo=bar'); |
| query.path.should().eql('/foo/bar'); |
| query.relative.should().eql('/foo/bar?foo=bar'); |
| }, |
| |
| 'unique uri': function () { |
| var protocol = io.util.parseUri('http://google.com') |
| , noprotocol = io.util.parseUri('google.com') |
| , https = io.util.parseUri('https://google.com') |
| , path = io.util.parseUri('https://google.com/google.com/com/?foo=bar'); |
| |
| if ('object' == typeof window) { |
| io.util.uniqueUri(protocol).should().eql('http://google.com:3000'); |
| io.util.uniqueUri(noprotocol).should().eql('http://google.com:3000'); |
| } else { |
| io.util.uniqueUri(protocol).should().eql('http://google.com:80'); |
| io.util.uniqueUri(noprotocol).should().eql('http://google.com:80'); |
| } |
| |
| io.util.uniqueUri(https).should().eql('https://google.com:443'); |
| io.util.uniqueUri(path).should().eql('https://google.com:443'); |
| }, |
| |
| 'chunk query string': function () { |
| io.util.chunkQuery('foo=bar').should().be.a('object'); |
| io.util.chunkQuery('foo=bar').foo.should().eql('bar'); |
| }, |
| |
| 'merge query strings': function () { |
| var base = io.util.query('foo=bar', 'foo=baz') |
| , add = io.util.query('foo=bar', 'bar=foo') |
| |
| base.should().eql('?foo=baz'); |
| add.should().eql('?foo=bar&bar=foo'); |
| |
| io.util.query('','').should().eql(''); |
| io.util.query('foo=bar', '').should().eql('?foo=bar'); |
| io.util.query('', 'foo=bar').should().eql('?foo=bar'); |
| }, |
| |
| 'request': function () { |
| var type = typeof io.util.request(); |
| type.should().eql('object'); |
| }, |
| |
| 'is array': function () { |
| io.util.isArray([]).should().be_true; |
| io.util.isArray({}).should().be_false; |
| io.util.isArray('str').should().be_false; |
| io.util.isArray(new Date).should().be_false; |
| io.util.isArray(true).should().be_false; |
| io.util.isArray(arguments).should().be_false; |
| }, |
| |
| 'merge, deep merge': function () { |
| var start = { |
| foo: 'bar' |
| , bar: 'baz' |
| } |
| , duplicate = { |
| foo: 'foo' |
| , bar: 'bar' |
| } |
| , extra = { |
| ping: 'pong' |
| } |
| , deep = { |
| level1:{ |
| foo: 'bar' |
| , level2: { |
| foo: 'bar' |
| , level3:{ |
| foo: 'bar' |
| , rescursive: deep |
| } |
| } |
| } |
| } |
| // same structure, but changed names |
| , deeper = { |
| foo: 'bar' |
| , level1:{ |
| foo: 'baz' |
| , level2: { |
| foo: 'foo' |
| , level3:{ |
| foo: 'pewpew' |
| , rescursive: deep |
| } |
| } |
| } |
| }; |
| |
| io.util.merge(start, duplicate); |
| |
| start.foo.should().eql('foo'); |
| start.bar.should().eql('bar'); |
| |
| io.util.merge(start, extra); |
| start.ping.should().eql('pong'); |
| start.foo.should().eql('foo'); |
| |
| io.util.merge(deep, deeper); |
| |
| deep.foo.should().eql('bar'); |
| deep.level1.foo.should().eql('baz'); |
| deep.level1.level2.foo.should().eql('foo'); |
| deep.level1.level2.level3.foo.should().eql('pewpew'); |
| }, |
| |
| 'defer': function (next) { |
| var now = +new Date; |
| |
| io.util.defer(function () { |
| ((new Date - now) >= ( io.util.webkit ? 100 : 0 )).should().be_true(); |
| next(); |
| }) |
| }, |
| |
| 'indexOf': function () { |
| var data = ['socket', 2, 3, 4, 'socket', 5, 6, 7, 'io']; |
| io.util.indexOf(data, 'socket', 1).should().eql(4); |
| io.util.indexOf(data, 'socket').should().eql(0); |
| io.util.indexOf(data, 'waffles').should().eql(-1); |
| } |
| |
| }; |
| |
| })( |
| 'undefined' == typeof module ? module = {} : module |
| , 'undefined' == typeof io ? require('socket.io-client') : io |
| , 'undefined' == typeof should ? require('should') : should |
| ); |