@@ -34,3 +34,78 @@ test('Serializing a WebSocket Frame with no data', function(t) {
3434
3535 t . end ( ) ;
3636} ) ;
37+
38+ test ( 'Serializing a WebSocket Frame with 16-bit length payload' , function ( t ) {
39+ t . plan ( 2 ) ;
40+
41+ var maskBytesBuffer = bufferAllocUnsafe ( 4 ) ;
42+ var frameHeaderBuffer = bufferAllocUnsafe ( 10 ) ;
43+
44+ var payload = bufferAllocUnsafe ( 200 ) ;
45+ for ( var i = 0 ; i < payload . length ; i ++ ) {
46+ payload [ i ] = i % 256 ;
47+ }
48+
49+ var frameBytes ;
50+ var frame = new WebSocketFrame ( maskBytesBuffer , frameHeaderBuffer , { } ) ;
51+ frame . fin = true ;
52+ frame . mask = true ;
53+ frame . opcode = 0x02 ; // WebSocketFrame.BINARY
54+ frame . binaryPayload = payload ;
55+ t . doesNotThrow (
56+ function ( ) { frameBytes = frame . toBuffer ( true ) ; } ,
57+ 'should not throw an error'
58+ ) ;
59+
60+ var expected = bufferAllocUnsafe ( 2 + 2 + 4 + payload . length ) ;
61+ expected [ 0 ] = 0x82 ;
62+ expected [ 1 ] = 0xFE ;
63+ expected . writeUInt16BE ( payload . length , 2 ) ;
64+ expected . writeUInt32BE ( 0 , 4 ) ;
65+ payload . copy ( expected , 8 ) ;
66+
67+ t . assert (
68+ bufferEqual ( frameBytes , expected ) ,
69+ 'Generated bytes should be correct'
70+ ) ;
71+
72+ t . end ( ) ;
73+ } ) ;
74+
75+ test ( 'Serializing a WebSocket Frame with 64-bit length payload' , function ( t ) {
76+ t . plan ( 2 ) ;
77+
78+ var maskBytesBuffer = bufferAllocUnsafe ( 4 ) ;
79+ var frameHeaderBuffer = bufferAllocUnsafe ( 10 ) ;
80+
81+ var payload = bufferAllocUnsafe ( 66000 ) ;
82+ for ( var i = 0 ; i < payload . length ; i ++ ) {
83+ payload [ i ] = i % 256 ;
84+ }
85+
86+ var frameBytes ;
87+ var frame = new WebSocketFrame ( maskBytesBuffer , frameHeaderBuffer , { } ) ;
88+ frame . fin = true ;
89+ frame . mask = true ;
90+ frame . opcode = 0x02 ; // WebSocketFrame.BINARY
91+ frame . binaryPayload = payload ;
92+ t . doesNotThrow (
93+ function ( ) { frameBytes = frame . toBuffer ( true ) ; } ,
94+ 'should not throw an error'
95+ ) ;
96+
97+ var expected = bufferAllocUnsafe ( 2 + 8 + 4 + payload . length ) ;
98+ expected [ 0 ] = 0x82 ;
99+ expected [ 1 ] = 0xFF ;
100+ expected . writeUInt32BE ( 0 , 2 ) ;
101+ expected . writeUInt32BE ( payload . length , 6 ) ;
102+ expected . writeUInt32BE ( 0 , 10 ) ;
103+ payload . copy ( expected , 14 ) ;
104+
105+ t . assert (
106+ bufferEqual ( frameBytes , expected ) ,
107+ 'Generated bytes should be correct'
108+ ) ;
109+
110+ t . end ( ) ;
111+ } ) ;
0 commit comments