@@ -4,6 +4,44 @@ import { rejectedSyncPromise, resolvedSyncPromise } from '../../../src/utils/syn
44
55describe ( 'PromiseBuffer' , ( ) => {
66 describe ( 'add()' , ( ) => {
7+ test ( 'enforces limit of promises' , async ( ) => {
8+ const buffer = makePromiseBuffer ( 5 ) ;
9+
10+ const producer1 = vi . fn ( ( ) => new Promise ( resolve => setTimeout ( resolve , 1 ) ) ) ;
11+ const producer2 = vi . fn ( ( ) => new Promise ( resolve => setTimeout ( resolve , 1 ) ) ) ;
12+ const producer3 = vi . fn ( ( ) => new Promise ( resolve => setTimeout ( resolve , 1 ) ) ) ;
13+ const producer4 = vi . fn ( ( ) => new Promise ( resolve => setTimeout ( resolve , 1 ) ) ) ;
14+ const producer5 = vi . fn ( ( ) => new Promise ( resolve => setTimeout ( resolve , 1 ) ) ) ;
15+ const producer6 = vi . fn ( ( ) => new Promise ( resolve => setTimeout ( resolve , 1 ) ) ) ;
16+
17+ void buffer . add ( producer1 ) ;
18+ void buffer . add ( producer2 ) ;
19+ void buffer . add ( producer3 ) ;
20+ void buffer . add ( producer4 ) ;
21+ void buffer . add ( producer5 ) ;
22+ void expect ( buffer . add ( producer6 ) ) . rejects . toThrowError ( ) ;
23+
24+ expect ( producer1 ) . toHaveBeenCalledTimes ( 1 ) ;
25+ expect ( producer2 ) . toHaveBeenCalledTimes ( 1 ) ;
26+ expect ( producer3 ) . toHaveBeenCalledTimes ( 1 ) ;
27+ expect ( producer4 ) . toHaveBeenCalledTimes ( 1 ) ;
28+ expect ( producer5 ) . toHaveBeenCalledTimes ( 1 ) ;
29+ expect ( producer6 ) . not . toHaveBeenCalled ( ) ;
30+
31+ expect ( buffer . $ . length ) . toEqual ( 5 ) ;
32+
33+ await buffer . drain ( ) ;
34+
35+ expect ( buffer . $ . length ) . toEqual ( 0 ) ;
36+
37+ expect ( producer1 ) . toHaveBeenCalledTimes ( 1 ) ;
38+ expect ( producer2 ) . toHaveBeenCalledTimes ( 1 ) ;
39+ expect ( producer3 ) . toHaveBeenCalledTimes ( 1 ) ;
40+ expect ( producer4 ) . toHaveBeenCalledTimes ( 1 ) ;
41+ expect ( producer5 ) . toHaveBeenCalledTimes ( 1 ) ;
42+ expect ( producer6 ) . not . toHaveBeenCalled ( ) ;
43+ } ) ;
44+
745 test ( 'sync promises' , ( ) => {
846 const buffer = makePromiseBuffer ( 1 ) ;
947 let task1 ;
@@ -83,7 +121,7 @@ describe('PromiseBuffer', () => {
83121 expect ( p5 ) . toHaveBeenCalled ( ) ;
84122 } ) ;
85123
86- test ( 'drains all promises with timeout xxx ' , async ( ) => {
124+ test ( 'drains all promises with timeout' , async ( ) => {
87125 const buffer = makePromiseBuffer ( ) ;
88126
89127 const p1 = vi . fn ( ( ) => new Promise ( resolve => setTimeout ( resolve , 2 ) ) ) ;
0 commit comments