@@ -730,30 +730,74 @@ describe('N3Lexer', function () {
730730 } ) ;
731731
732732 describe ( 'passing data after the stream has been finished' , function ( ) {
733- var tokens = [ ] , stream = new EventEmitter ( ) , lexer = new N3Lexer ( ) ;
734- lexer . tokenize ( stream , function ( error , token ) { ! error && tokens . push ( token ) ; } ) ;
735- stream . emit ( 'data' , '<a> ' ) ;
736- stream . emit ( 'end' ) ;
737- stream . emit ( 'data' , '<b> ' ) ;
738- stream . emit ( 'end' ) ;
733+ var tokens = [ ] , error ;
734+ before ( function ( ) {
735+ var stream = new EventEmitter ( ) , lexer = new N3Lexer ( ) ;
736+ lexer . tokenize ( stream , function ( err , token ) {
737+ if ( err )
738+ error = err ;
739+ else
740+ tokens . push ( token ) ;
741+ } ) ;
742+ stream . emit ( 'data' , '<a> ' ) ;
743+ stream . emit ( 'end' ) ;
744+ stream . emit ( 'data' , '<b> ' ) ;
745+ stream . emit ( 'end' ) ;
746+ } ) ;
739747
740748 it ( 'parses only the first chunk (plus EOF)' , function ( ) {
741749 tokens . should . have . length ( 2 ) ;
742750 } ) ;
751+
752+ it ( 'does not emit an error' , function ( ) {
753+ expect ( error ) . to . not . exist ;
754+ } ) ;
743755 } ) ;
744756
745- describe ( 'passing data after an error has occurred' , function ( ) {
746- var tokens = [ ] , stream = new EventEmitter ( ) , lexer = new N3Lexer ( ) ;
747- lexer . tokenize ( stream , function ( error , token ) { ! error && tokens . push ( token ) ; } ) ;
748- stream . emit ( 'data' , '<a> ' ) ;
749- stream . emit ( 'data' , ' error ' ) ;
750- stream . emit ( 'end' ) ;
751- stream . emit ( 'data' , '<b> ' ) ;
752- stream . emit ( 'end' ) ;
757+ describe ( 'passing data after a syntax error' , function ( ) {
758+ var tokens = [ ] , error ;
759+ before ( function ( ) {
760+ var stream = new EventEmitter ( ) , lexer = new N3Lexer ( ) ;
761+ lexer . tokenize ( stream , function ( err , token ) {
762+ if ( err )
763+ error = err ;
764+ else
765+ tokens . push ( token ) ;
766+ } ) ;
767+ stream . emit ( 'data' , '<a> ' ) ;
768+ stream . emit ( 'data' , ' error ' ) ;
769+ stream . emit ( 'end' ) ;
770+ stream . emit ( 'data' , '<b> ' ) ;
771+ stream . emit ( 'end' ) ;
772+ } ) ;
753773
754774 it ( 'parses only the first chunk' , function ( ) {
755775 tokens . should . have . length ( 1 ) ;
756776 } ) ;
777+
778+ it ( 'emits the error' , function ( ) {
779+ expect ( error ) . to . exist ;
780+ expect ( error ) . to . have . property ( 'message' , 'Unexpected "error" on line 1.' ) ;
781+ } ) ;
782+ } ) ;
783+
784+ describe ( 'when the stream errors' , function ( ) {
785+ var tokens = [ ] , error ;
786+ before ( function ( ) {
787+ var stream = new EventEmitter ( ) , lexer = new N3Lexer ( ) ;
788+ lexer . tokenize ( stream , function ( err , token ) {
789+ if ( err )
790+ error = err ;
791+ else
792+ tokens . push ( token ) ;
793+ } ) ;
794+ stream . emit ( 'error' , new Error ( 'my error' ) ) ;
795+ } ) ;
796+
797+ it ( 'passes the error' , function ( ) {
798+ expect ( error ) . to . exist ;
799+ expect ( error ) . to . have . property ( 'message' , 'my error' ) ;
800+ } ) ;
757801 } ) ;
758802
759803 describe ( 'called with a string and without callback' , function ( ) {
0 commit comments