@@ -72,7 +72,7 @@ QUnit.test('triggers log for non-id3/invalid data', function(assert) {
72
72
assert . deepEqual ( logs , [
73
73
{ level : 'warn' , message : 'Skipping unrecognized metadata packet' } ,
74
74
{ level : 'warn' , message : 'Skipping unrecognized metadata packet' } ,
75
- { level : 'warn' , message : 'Malformed ID3 frame encountered. Skipping metadata parsing.' }
75
+ { level : 'warn' , message : 'Malformed ID3 frame encountered. Skipping remaining metadata parsing.' }
76
76
] , 'logs as expected.' ) ;
77
77
} ) ;
78
78
@@ -518,6 +518,27 @@ QUnit.test('constructs the dispatch type', function(assert) {
518
518
assert . equal ( metadataStream . dispatchType , '1503020100' , 'built the dispatch type' ) ;
519
519
} ) ;
520
520
521
+ QUnit . test ( 'should skip tag frame parsing on malformed frame, preserving previous frames' , function ( assert ) {
522
+ var events = [ ] ,
523
+ validFrame = id3Frame ( 'TIT2' ,
524
+ 0x03 , // utf-8
525
+ stringToCString ( 'sample title' ) ) ,
526
+ malformedFrame = id3Frame ( 'WOAF' ) , // frame with size of 0B
527
+ tag = id3Tag ( validFrame , malformedFrame ) ;
528
+
529
+ metadataStream . on ( 'data' , function ( event ) {
530
+ events . push ( event ) ;
531
+ } ) ;
532
+
533
+ metadataStream . push ( {
534
+ type : 'timed-metadata' ,
535
+ data : new Uint8Array ( tag )
536
+ } )
537
+
538
+ assert . equal ( events . length , 1 , 'parsed 1 tag' )
539
+ assert . equal ( events [ 0 ] . frames . length , 1 , 'parsed one frame' ) ;
540
+ assert . equal ( events [ 0 ] . frames [ 0 ] . key , 'TIT2' ) ;
541
+ } ) ;
521
542
522
543
QUnit . test ( 'can parse PRIV frames in web worker' , function ( assert ) {
523
544
var payload = stringToInts ( 'arbitrary' ) ,
0 commit comments