@@ -2,93 +2,115 @@ import { promisify } from "./promisify.ts";
22import { assert } from "./deps_test.ts" ;
33
44Deno . test ( "promisify()" , async ( t ) => {
5- await t . step ( "keep all results" , async ( ) => {
6- const [ get , resolve ] = promisify < number > ( ) ;
5+ await t . step ( "without forceQueued" , async ( t ) => {
6+ await t . step ( "keep all results" , async ( ) => {
7+ const [ get , resolve ] = promisify < number > ( ) ;
78
8- const pending = get ( ) ;
9- resolve ( 0 ) ;
10- resolve ( 1 ) ;
11- assert ( await pending === 0 ) ;
12- assert ( await get ( ) === 1 ) ;
13- resolve ( 2 ) ;
14- assert ( await get ( ) === 2 ) ;
15- resolve ( 3 ) ;
16- resolve ( 4 ) ;
17- assert ( await get ( ) === 3 ) ;
18- assert ( await get ( ) === 4 ) ;
19- resolve ( 5 ) ;
20- resolve ( 6 ) ;
21- resolve ( 7 ) ;
22- assert ( await get ( ) === 5 ) ;
23- resolve ( 8 ) ;
24- assert ( await get ( ) === 6 ) ;
25- assert ( await get ( ) === 7 ) ;
26- assert ( await get ( ) === 8 ) ;
27- } ) ;
9+ const pending = get ( ) ;
10+ resolve ( 0 ) ;
11+ resolve ( 1 ) ;
12+ assert ( await pending === 0 ) ;
13+ assert ( await get ( ) === 1 ) ;
14+ resolve ( 2 ) ;
15+ assert ( await get ( ) === 2 ) ;
16+ resolve ( 3 ) ;
17+ resolve ( 4 ) ;
18+ assert ( await get ( ) === 3 ) ;
19+ assert ( await get ( ) === 4 ) ;
20+ resolve ( 5 ) ;
21+ resolve ( 6 ) ;
22+ resolve ( 7 ) ;
23+ assert ( await get ( ) === 5 ) ;
24+ resolve ( 8 ) ;
25+ assert ( await get ( ) === 6 ) ;
26+ assert ( await get ( ) === 7 ) ;
27+ assert ( await get ( ) === 8 ) ;
28+ } ) ;
2829
29- await t . step ( "keep nothing" , async ( ) => {
30- const [ get , resolve ] = promisify < number > ( { maxQueued : 0 } ) ;
30+ await t . step ( "keep nothing" , async ( ) => {
31+ const [ get , resolve ] = promisify < number > ( { maxQueued : 0 } ) ;
3132
32- let pending = get ( ) ;
33- resolve ( 1 ) ;
34- assert ( await pending === 1 ) ;
35- resolve ( 2 ) ;
36- resolve ( 3 ) ;
37- pending = get ( ) ;
38- resolve ( 4 ) ;
39- assert ( await pending === 4 ) ;
40- pending = get ( ) ;
41- resolve ( 5 ) ;
42- resolve ( 6 ) ;
43- assert ( await pending === 5 ) ;
44- } ) ;
33+ let pending = get ( ) ;
34+ resolve ( 1 ) ;
35+ assert ( await pending === 1 ) ;
36+ resolve ( 2 ) ;
37+ resolve ( 3 ) ;
38+ pending = get ( ) ;
39+ resolve ( 4 ) ;
40+ assert ( await pending === 4 ) ;
41+ pending = get ( ) ;
42+ resolve ( 5 ) ;
43+ resolve ( 6 ) ;
44+ assert ( await pending === 5 ) ;
45+ } ) ;
46+
47+ await t . step ( "keep the latest result" , async ( ) => {
48+ const [ get , resolve ] = promisify < number > ( { maxQueued : 1 } ) ;
49+
50+ let pending = get ( ) ;
51+ resolve ( 1 ) ;
52+ assert ( await pending === 1 ) ;
53+ resolve ( 2 ) ;
54+ resolve ( 3 ) ;
55+ assert ( await get ( ) === 3 ) ;
56+ resolve ( 4 ) ;
57+ resolve ( 5 ) ;
58+ resolve ( 6 ) ;
59+ assert ( await get ( ) === 6 ) ;
60+ pending = get ( ) ;
61+ resolve ( 7 ) ;
62+ resolve ( 8 ) ;
63+ resolve ( 9 ) ;
64+ assert ( await pending === 7 ) ;
65+ assert ( await get ( ) === 9 ) ;
66+ } ) ;
4567
46- await t . step ( "keep the latest result " , async ( ) => {
47- const [ get , resolve ] = promisify < number > ( { maxQueued : 1 } ) ;
68+ await t . step ( "keep the latest and second latest results " , async ( ) => {
69+ const [ get , resolve ] = promisify < number > ( { maxQueued : 2 } ) ;
4870
49- let pending = get ( ) ;
50- resolve ( 1 ) ;
51- assert ( await pending === 1 ) ;
52- resolve ( 2 ) ;
53- resolve ( 3 ) ;
54- assert ( await get ( ) === 3 ) ;
55- resolve ( 4 ) ;
56- resolve ( 5 ) ;
57- resolve ( 6 ) ;
58- assert ( await get ( ) === 6 ) ;
59- pending = get ( ) ;
60- resolve ( 7 ) ;
61- resolve ( 8 ) ;
62- resolve ( 9 ) ;
63- assert ( await pending === 7 ) ;
64- assert ( await get ( ) === 9 ) ;
71+ resolve ( 1 ) ;
72+ let pending = get ( ) ;
73+ assert ( await pending === 1 ) ;
74+ resolve ( 2 ) ;
75+ resolve ( 3 ) ;
76+ assert ( await get ( ) === 2 ) ;
77+ assert ( await get ( ) === 3 ) ;
78+ resolve ( 4 ) ;
79+ resolve ( 5 ) ;
80+ resolve ( 6 ) ;
81+ assert ( await get ( ) === 5 ) ;
82+ resolve ( 7 ) ;
83+ resolve ( 8 ) ;
84+ assert ( await get ( ) === 7 ) ;
85+ assert ( await get ( ) === 8 ) ;
86+ pending = get ( ) ;
87+ resolve ( 9 ) ;
88+ resolve ( 10 ) ;
89+ resolve ( 11 ) ;
90+ resolve ( 12 ) ;
91+ assert ( await pending === 9 ) ;
92+ assert ( await get ( ) === 11 ) ;
93+ assert ( await get ( ) === 12 ) ;
94+ } ) ;
6595 } ) ;
6696
67- await t . step ( "keep the latest and second latest results" , async ( ) => {
68- const [ get , resolve ] = promisify < number > ( { maxQueued : 2 } ) ;
97+ await t . step ( "with forceQueued" , async ( t ) => {
98+ await t . step ( "keep the latest result" , async ( ) => {
99+ const [ get , resolve ] = promisify < number > ( { maxQueued : 1 } ) ;
69100
70- let pending = get ( ) ;
71- resolve ( 1 ) ;
72- assert ( await pending === 1 ) ;
73- resolve ( 2 ) ;
74- resolve ( 3 ) ;
75- assert ( await get ( ) === 2 ) ;
76- assert ( await get ( ) === 3 ) ;
77- resolve ( 4 ) ;
78- resolve ( 5 ) ;
79- resolve ( 6 ) ;
80- assert ( await get ( ) === 5 ) ;
81- resolve ( 7 ) ;
82- resolve ( 8 ) ;
83- assert ( await get ( ) === 7 ) ;
84- assert ( await get ( ) === 8 ) ;
85- pending = get ( ) ;
86- resolve ( 9 ) ;
87- resolve ( 10 ) ;
88- resolve ( 11 ) ;
89- resolve ( 12 ) ;
90- assert ( await pending === 9 ) ;
91- assert ( await get ( ) === 11 ) ;
92- assert ( await get ( ) === 12 ) ;
101+ resolve ( 1 ) ;
102+ const pending = get ( ) ;
103+ assert ( await pending === 1 ) ;
104+ resolve ( 2 ) ;
105+ resolve ( 20 , { forceQueued : true } ) ;
106+ resolve ( 3 ) ;
107+ resolve ( 4 ) ;
108+ resolve ( 30 , { forceQueued : true } ) ;
109+ resolve ( 40 , { forceQueued : true } ) ;
110+ assert ( await get ( ) === 20 ) ;
111+ assert ( await get ( ) === 30 ) ;
112+ assert ( await get ( ) === 40 ) ;
113+ assert ( await get ( ) === 4 ) ;
114+ } ) ;
93115 } ) ;
94116} ) ;
0 commit comments