@@ -90,4 +90,45 @@ describe('DelimiterParser', () => {
9090 assert . deepEqual ( spy . getCall ( 1 ) . args [ 0 ] , Buffer . concat ( [ Buffer . from ( [ 0xaa , 0x02 , 0x13 , 0x00 ] ) , Buffer . from ( 'Each and Every One\n' ) ] ) )
9191 assert ( spy . calledTwice )
9292 } )
93+
94+ it ( 'works with multiple delimiters' , ( ) => {
95+ const spy = sinon . spy ( )
96+ const parser = new PacketLengthParser ( { delimiter : [ 0xaa , 0xbb ] , lengthOffset : 2 , packetOverhead : 4 , lengthBytes : 2 } )
97+ parser . on ( 'data' , spy )
98+ parser . write ( Buffer . from ( '\xbb\x01\x0d' ) )
99+ parser . write ( Buffer . from ( '\x00I love hobits\xaa\x02\x13\x00Each ' ) )
100+ parser . write ( Buffer . from ( 'and Every One\n' ) )
101+
102+ assert . deepEqual ( spy . getCall ( 0 ) . args [ 0 ] , Buffer . concat ( [ Buffer . from ( [ 0xbb , 0x01 , 0x0d , 0x00 ] ) , Buffer . from ( 'I love hobits' ) ] ) )
103+ assert . deepEqual ( spy . getCall ( 1 ) . args [ 0 ] , Buffer . concat ( [ Buffer . from ( [ 0xaa , 0x02 , 0x13 , 0x00 ] ) , Buffer . from ( 'Each and Every One\n' ) ] ) )
104+ assert ( spy . calledTwice )
105+ } )
106+
107+ it ( 'works with multibyte delimiters' , ( ) => {
108+ const spy = sinon . spy ( )
109+ const parser = new PacketLengthParser ( { delimiter : [ 0xababba ] , delimiterBytes : 3 , lengthOffset : 3 , packetOverhead : 4 , lengthBytes : 1 } )
110+ parser . on ( 'data' , spy )
111+ parser . write ( Buffer . from ( [ 0xab , 0xab , 0xba , 0x0d ] ) )
112+ parser . write ( Buffer . from ( 'I love hobits' ) )
113+ parser . write ( Buffer . from ( [ 0xab , 0xab , 0xba , 0x13 ] ) )
114+ parser . write ( Buffer . from ( 'Each and Every One\n' ) )
115+
116+ assert . deepEqual ( spy . getCall ( 0 ) . args [ 0 ] , Buffer . concat ( [ Buffer . from ( [ 0xab , 0xab , 0xba , 0x0d ] ) , Buffer . from ( 'I love hobits' ) ] ) )
117+ assert . deepEqual ( spy . getCall ( 1 ) . args [ 0 ] , Buffer . concat ( [ Buffer . from ( [ 0xab , 0xab , 0xba , 0x13 ] ) , Buffer . from ( 'Each and Every One\n' ) ] ) )
118+ assert ( spy . calledTwice )
119+ } )
120+
121+ it ( 'works with multiple multibyte delimiters' , ( ) => {
122+ const spy = sinon . spy ( )
123+ const parser = new PacketLengthParser ( { delimiter : [ 0xababba , 0xbaddad ] , delimiterBytes : 3 , lengthOffset : 3 , packetOverhead : 4 , lengthBytes : 1 } )
124+ parser . on ( 'data' , spy )
125+ parser . write ( Buffer . from ( [ 0xab , 0xab , 0xba , 0x0d ] ) )
126+ parser . write ( Buffer . from ( 'I love hobits' ) )
127+ parser . write ( Buffer . from ( [ 0xba , 0xdd , 0xad , 0x13 ] ) )
128+ parser . write ( Buffer . from ( 'Each and Every One\n' ) )
129+
130+ assert . deepEqual ( spy . getCall ( 0 ) . args [ 0 ] , Buffer . concat ( [ Buffer . from ( [ 0xab , 0xab , 0xba , 0x0d ] ) , Buffer . from ( 'I love hobits' ) ] ) )
131+ assert . deepEqual ( spy . getCall ( 1 ) . args [ 0 ] , Buffer . concat ( [ Buffer . from ( [ 0xba , 0xdd , 0xad , 0x13 ] ) , Buffer . from ( 'Each and Every One\n' ) ] ) )
132+ assert ( spy . calledTwice )
133+ } )
93134} )
0 commit comments