@@ -160,5 +160,63 @@ describe("Specific bugs testing", function() {
160160 var encoded = parser . encode ( decoded ) ;
161161 assert . deepEqual ( encoded , Buffer . from ( "01020304050607" , "hex" ) ) ;
162162 } ) ;
163+
164+ it ( "should accept empty array to encode" , function ( ) {
165+ var parser = Parser . start ( ) . array ( "arr" , {
166+ type : "uint8" ,
167+ readUntil : "eof" // Read until end of buffer
168+ } ) ;
169+
170+ var buffer = Buffer . from ( "" , "hex" ) ;
171+ var decoded = parser . parse ( buffer ) ;
172+
173+ assert . deepEqual ( decoded , {
174+ arr : [ ]
175+ } ) ;
176+
177+ var encoded = parser . encode ( decoded ) ;
178+ assert . deepEqual ( encoded , Buffer . from ( "" , "hex" ) ) ;
179+ } ) ;
180+
181+ it ( "should accept empty array to encode and encodeUntil function" , function ( ) {
182+ var parser = Parser . start ( ) . array ( "arr" , {
183+ type : "uint8" ,
184+ readUntil : "eof" , // Read until end of buffer
185+ encodeUntil : function ( item , obj ) {
186+ return false ; // Never stop on content value
187+ }
188+ } ) ;
189+
190+ var buffer = Buffer . from ( "" , "hex" ) ;
191+ var decoded = parser . parse ( buffer ) ;
192+
193+ assert . deepEqual ( decoded , {
194+ arr : [ ]
195+ } ) ;
196+
197+ var encoded = parser . encode ( decoded ) ;
198+ assert . deepEqual ( encoded , Buffer . from ( "" , "hex" ) ) ;
199+ } ) ;
200+
201+ it ( "should accept undefined or null array" , function ( ) {
202+ var parser = Parser . start ( ) . array ( "arr" , {
203+ type : "uint8" ,
204+ readUntil : "eof" // Read until end of buffer
205+ } ) ;
206+
207+ var buffer = Buffer . from ( "" , "hex" ) ;
208+ var decoded = parser . parse ( buffer ) ;
209+
210+ // Decode an empty buffer as an empty array
211+ assert . deepEqual ( decoded , {
212+ arr : [ ]
213+ } ) ;
214+
215+ // Encode undefined, null or empty array as an empty buffer
216+ [ { } , { arr : undefined } , { arr : null } , { arr : [ ] } ] . forEach ( data => {
217+ let encoded = parser . encode ( data ) ;
218+ assert . deepEqual ( encoded , Buffer . from ( "" , "hex" ) ) ;
219+ } ) ;
220+ } ) ;
163221 } ) ;
164222} ) ;
0 commit comments