@@ -397,11 +397,95 @@ describe('when calling getTokensAfter', () => {
397397 } ) ;
398398} ) ;
399399
400+ // https://github.com/eslint/eslint/blob/v9.39.1/tests/lib/languages/js/source-code/token-store.js#L594-L673
400401describe ( 'when calling getFirstTokens' , ( ) => {
401- /* oxlint-disable-next-line no-disabled-tests expect-expect */
402- it ( 'is to be implemented' ) ;
403- /* oxlint-disable-next-line no-unused-expressions */
404- getFirstTokens ;
402+ it ( "should retrieve zero tokens from a node's token stream" , ( ) => {
403+ assert . deepStrictEqual (
404+ getFirstTokens ( BinaryExpression , 0 ) . map ( ( token ) => token . value ) ,
405+ [ ] ,
406+ ) ;
407+ } ) ;
408+
409+ it ( "should retrieve one token from a node's token stream" , ( ) => {
410+ assert . deepStrictEqual (
411+ getFirstTokens ( BinaryExpression , 1 ) . map ( ( token ) => token . value ) ,
412+ [ 'a' ] ,
413+ ) ;
414+ } ) ;
415+
416+ it ( "should retrieve more than one token from a node's token stream" , ( ) => {
417+ assert . deepStrictEqual (
418+ getFirstTokens ( BinaryExpression , 2 ) . map ( ( token ) => token . value ) ,
419+ [ 'a' , '*' ] ,
420+ ) ;
421+ } ) ;
422+
423+ it ( "should retrieve all tokens from a node's token stream" , ( ) => {
424+ assert . deepStrictEqual (
425+ getFirstTokens ( BinaryExpression , 9e9 ) . map ( ( token ) => token . value ) ,
426+ [ 'a' , '*' , 'b' ] ,
427+ ) ;
428+ } ) ;
429+
430+ it ( "should retrieve more than one token from a node's token stream with count option" , ( ) => {
431+ assert . deepStrictEqual (
432+ getFirstTokens ( BinaryExpression , { count : 2 } ) . map ( ( token ) => token . value ) ,
433+ [ 'a' , '*' ] ,
434+ ) ;
435+ } ) ;
436+
437+ it ( "should retrieve matched tokens from a node's token stream with filter option" , ( ) => {
438+ assert . deepStrictEqual (
439+ getFirstTokens ( BinaryExpression , ( t ) => t . type === 'Identifier' ) . map ( ( token ) => token . value ) ,
440+ [ 'a' , 'b' ] ,
441+ ) ;
442+ assert . deepStrictEqual (
443+ getFirstTokens ( BinaryExpression , {
444+ filter : ( t ) => t . type === 'Identifier' ,
445+ } ) . map ( ( token ) => token . value ) ,
446+ [ 'a' , 'b' ] ,
447+ ) ;
448+ } ) ;
449+
450+ it ( "should retrieve matched tokens from a node's token stream with filter and count options" , ( ) => {
451+ assert . deepStrictEqual (
452+ getFirstTokens ( BinaryExpression , {
453+ count : 1 ,
454+ filter : ( t ) => t . type === 'Identifier' ,
455+ } ) . map ( ( token ) => token . value ) ,
456+ [ 'a' ] ,
457+ ) ;
458+ } ) ;
459+
460+ it ( "should retrieve all tokens and comments from a node's token stream with includeComments option" , ( ) => {
461+ assert . deepStrictEqual (
462+ getFirstTokens ( BinaryExpression , {
463+ includeComments : true ,
464+ } ) . map ( ( token ) => token . value ) ,
465+ [ 'a' , 'D' , '*' , 'b' ] ,
466+ ) ;
467+ } ) ;
468+
469+ it ( "should retrieve several tokens and comments from a node's token stream with includeComments and count options" , ( ) => {
470+ assert . deepStrictEqual (
471+ getFirstTokens ( BinaryExpression , {
472+ includeComments : true ,
473+ count : 3 ,
474+ } ) . map ( ( token ) => token . value ) ,
475+ [ 'a' , 'D' , '*' ] ,
476+ ) ;
477+ } ) ;
478+
479+ it ( "should retrieve several tokens and comments from a node's token stream with includeComments and count and filter options" , ( ) => {
480+ assert . deepStrictEqual (
481+ getFirstTokens ( BinaryExpression , {
482+ includeComments : true ,
483+ count : 3 ,
484+ filter : ( t ) => t . value !== 'a' ,
485+ } ) . map ( ( token ) => token . value ) ,
486+ [ 'D' , '*' , 'b' ] ,
487+ ) ;
488+ } ) ;
405489} ) ;
406490
407491describe ( 'when calling getFirstToken' , ( ) => {
0 commit comments