raspberryGPIOhtmlserver/node_modules/ws/test/Receiver.hixie.test.js
node_modules/ws/test/Receiver.hixie.test.jsRaw
1var assert = require('assert')
2 , expect = require('expect.js')
3 , Receiver = require('../lib/Receiver.hixie');
4require('./hybi-common');
5
6describe('Receiver', function() {
7 it('can parse text message', function() {
8 var p = new Receiver();
9 var packet = '00 48 65 6c 6c 6f ff';
10
11 var gotData = false;
12 p.ontext = function(data) {
13 gotData = true;
14 assert.equal('Hello', data);
15 };
16
17 p.add(getBufferFromHexString(packet));
18 expect(gotData).to.equal(true);
19 });
20
21 it('can parse multiple text messages', function() {
22 var p = new Receiver();
23 var packet = '00 48 65 6c 6c 6f ff 00 48 65 6c 6c 6f ff';
24
25 var gotData = false;
26 var messages = [];
27 p.ontext = function(data) {
28 gotData = true;
29 messages.push(data);
30 };
31
32 p.add(getBufferFromHexString(packet));
33 expect(gotData).to.equal(true);
34 for (var i = 0; i < 2; ++i) {
35 expect(messages[i]).to.equal('Hello');
36 }
37 });
38
39 it('can parse empty message', function() {
40 var p = new Receiver();
41 var packet = '00 ff';
42
43 var gotData = false;
44 p.ontext = function(data) {
45 gotData = true;
46 assert.equal('', data);
47 };
48
49 p.add(getBufferFromHexString(packet));
50 expect(gotData).to.equal(true);
51 });
52
53 it('can parse text messages delivered over multiple frames', function() {
54 var p = new Receiver();
55 var packets = [
56 '00 48',
57 '65 6c 6c',
58 '6f ff 00 48',
59 '65',
60 '6c 6c 6f',
61 'ff'
62 ];
63
64 var gotData = false;
65 var messages = [];
66 p.ontext = function(data) {
67 gotData = true;
68 messages.push(data);
69 };
70
71 for (var i = 0; i < packets.length; ++i) {
72 p.add(getBufferFromHexString(packets[i]));
73 }
74 expect(gotData).to.equal(true);
75 for (var i = 0; i < 2; ++i) {
76 expect(messages[i]).to.equal('Hello');
77 }
78 });
79
80 it('emits an error if a payload doesnt start with 0x00', function() {
81 var p = new Receiver();
82 var packets = [
83 '00 6c ff',
84 '00 6c ff ff',
85 'ff 00 6c ff 00 6c ff',
86 '00',
87 '6c 6c 6f',
88 'ff'
89 ];
90
91 var gotData = false;
92 var gotError = false;
93 var messages = [];
94 p.ontext = function(data) {
95 gotData = true;
96 messages.push(data);
97 };
98 p.onerror = function(reason, code) {
99 gotError = code == true;
100 };
101
102 for (var i = 0; i < packets.length && !gotError; ++i) {
103 p.add(getBufferFromHexString(packets[i]));
104 }
105 expect(gotError).to.equal(true);
106 expect(messages[0]).to.equal('l');
107 expect(messages[1]).to.equal('l');
108 expect(messages.length).to.equal(2);
109 });
110
111 it('can parse close messages', function() {
112 var p = new Receiver();
113 var packets = [
114 'ff 00'
115 ];
116
117 var gotClose = false;
118 var gotError = false;
119 p.onclose = function() {
120 gotClose = true;
121 };
122 p.onerror = function(reason, code) {
123 gotError = code == true;
124 };
125
126 for (var i = 0; i < packets.length && !gotError; ++i) {
127 p.add(getBufferFromHexString(packets[i]));
128 }
129 expect(gotClose).to.equal(true);
130 expect(gotError).to.equal(false);
131 });
132
133 it('can parse binary messages delivered over multiple frames', function() {
134 var p = new Receiver();
135 var packets = [
136 '80 05 48',
137 '65 6c 6c',
138 '6f 80 80 05 48',
139 '65',
140 '6c 6c 6f'
141 ];
142
143 var gotData = false;
144 var messages = [];
145 p.ontext = function(data) {
146 gotData = true;
147 messages.push(data);
148 };
149
150 for (var i = 0; i < packets.length; ++i) {
151 p.add(getBufferFromHexString(packets[i]));
152 }
153 expect(gotData).to.equal(true);
154 for (var i = 0; i < 2; ++i) {
155 expect(messages[i]).to.equal('Hello');
156 }
157 });
158});