Ein Projekt das es ermöglicht Beerpong über das Internet von zwei unabhängigen positionen aus zu spielen. Entstehung im Rahmen einer Praktikumsaufgabe im Fach Interaktion.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

stringify.js 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. // Load modules
  2. var Lab = require('lab');
  3. var Qs = require('../');
  4. // Declare internals
  5. var internals = {};
  6. // Test shortcuts
  7. var lab = exports.lab = Lab.script();
  8. var expect = Lab.expect;
  9. var before = lab.before;
  10. var after = lab.after;
  11. var describe = lab.experiment;
  12. var it = lab.test;
  13. describe('#stringify', function () {
  14. it('stringifies a querystring object', function (done) {
  15. expect(Qs.stringify({ a: 'b' })).to.equal('a=b');
  16. expect(Qs.stringify({ a: 1 })).to.equal('a=1');
  17. expect(Qs.stringify({ a: 1, b: 2 })).to.equal('a=1&b=2');
  18. done();
  19. });
  20. it('stringifies a nested object', function (done) {
  21. expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c');
  22. expect(Qs.stringify({ a: { b: { c: { d: 'e' } } } })).to.equal('a%5Bb%5D%5Bc%5D%5Bd%5D=e');
  23. done();
  24. });
  25. it('stringifies an array value', function (done) {
  26. expect(Qs.stringify({ a: ['b', 'c', 'd'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d');
  27. done();
  28. });
  29. it('stringifies a nested array value', function (done) {
  30. expect(Qs.stringify({ a: { b: ['c', 'd'] } })).to.equal('a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d');
  31. done();
  32. });
  33. it('stringifies an object inside an array', function (done) {
  34. expect(Qs.stringify({ a: [{ b: 'c' }] })).to.equal('a%5B0%5D%5Bb%5D=c');
  35. expect(Qs.stringify({ a: [{ b: { c: [1] } }] })).to.equal('a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1');
  36. done();
  37. });
  38. it('stringifies a complicated object', function (done) {
  39. expect(Qs.stringify({ a: { b: 'c', d: 'e' } })).to.equal('a%5Bb%5D=c&a%5Bd%5D=e');
  40. done();
  41. });
  42. it('stringifies an empty value', function (done) {
  43. expect(Qs.stringify({ a: '' })).to.equal('a=');
  44. expect(Qs.stringify({ a: '', b: '' })).to.equal('a=&b=');
  45. expect(Qs.stringify({ a: null })).to.equal('a=');
  46. expect(Qs.stringify({ a: { b: null } })).to.equal('a%5Bb%5D=');
  47. done();
  48. });
  49. it('drops keys with a value of undefined', function (done) {
  50. expect(Qs.stringify({ a: undefined })).to.equal('');
  51. expect(Qs.stringify({ a: { b: undefined, c: null } })).to.equal('a%5Bc%5D=');
  52. done();
  53. });
  54. it('url encodes values', function (done) {
  55. expect(Qs.stringify({ a: 'b c' })).to.equal('a=b%20c');
  56. done();
  57. });
  58. it('stringifies a date', function (done) {
  59. var now = new Date();
  60. var str = 'a=' + encodeURIComponent(now.toISOString());
  61. expect(Qs.stringify({ a: now })).to.equal(str);
  62. done();
  63. });
  64. it('stringifies the weird object from qs', function (done) {
  65. expect(Qs.stringify({ 'my weird field': 'q1!2"\'w$5&7/z8)?' })).to.equal('my%20weird%20field=q1!2%22\'w%245%267%2Fz8)%3F');
  66. done();
  67. });
  68. it('skips properties that are part of the object prototype', function (done) {
  69. Object.prototype.crash = 'test';
  70. expect(Qs.stringify({ a: 'b'})).to.equal('a=b');
  71. expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c');
  72. delete Object.prototype.crash;
  73. done();
  74. });
  75. it('stringifies boolean values', function (done) {
  76. expect(Qs.stringify({ a: true })).to.equal('a=true');
  77. expect(Qs.stringify({ a: { b: true } })).to.equal('a%5Bb%5D=true');
  78. expect(Qs.stringify({ b: false })).to.equal('b=false');
  79. expect(Qs.stringify({ b: { c: false } })).to.equal('b%5Bc%5D=false');
  80. done();
  81. });
  82. it('stringifies buffer values', function (done) {
  83. expect(Qs.stringify({ a: new Buffer('test') })).to.equal('a=test');
  84. expect(Qs.stringify({ a: { b: new Buffer('test') } })).to.equal('a%5Bb%5D=test');
  85. done();
  86. });
  87. it('stringifies an object using an alternative delimiter', function (done) {
  88. expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d');
  89. done();
  90. });
  91. it('doesn\'t blow up when Buffer global is missing', function (done) {
  92. var tempBuffer = global.Buffer;
  93. delete global.Buffer;
  94. expect(Qs.stringify({ a: 'b', c: 'd' })).to.equal('a=b&c=d');
  95. global.Buffer = tempBuffer;
  96. done();
  97. });
  98. });