@@ -18,7 +18,7 @@ function withContext(callback: (ctx: Context, clock: InstalledClock) => any, con
18
18
}
19
19
20
20
describe ( 'ctx.timer' , ( ) => {
21
- describe ( 'ctx.setTimeout ()' , ( ) => {
21
+ describe ( 'ctx.timeout ()' , ( ) => {
22
22
it ( 'basic support' , withContext ( async ( ctx , clock ) => {
23
23
const callback = mock . fn ( )
24
24
ctx . timeout ( callback , 1000 )
@@ -38,7 +38,7 @@ describe('ctx.timer', () => {
38
38
assert . strictEqual ( callback . mock . calls . length , 0 )
39
39
} ) )
40
40
41
- it ( 'without callback ' , withContext ( async ( ctx , clock ) => {
41
+ it ( 'promise ' , withContext ( async ( ctx , clock ) => {
42
42
const resolve = mock . fn ( )
43
43
const reject = mock . fn ( )
44
44
ctx . timeout ( 1000 ) . then ( resolve , reject )
@@ -55,7 +55,7 @@ describe('ctx.timer', () => {
55
55
} ) )
56
56
} )
57
57
58
- describe ( 'ctx.setInterval ()' , ( ) => {
58
+ describe ( 'ctx.interval ()' , ( ) => {
59
59
it ( 'basic support' , withContext ( async ( ctx , clock ) => {
60
60
const callback = mock . fn ( )
61
61
const dispose = ctx . interval ( callback , 1000 )
@@ -69,7 +69,7 @@ describe('ctx.timer', () => {
69
69
assert . strictEqual ( callback . mock . calls . length , 2 )
70
70
} ) )
71
71
72
- it ( 'without callback (manual dispose )' , withContext ( async ( ctx , clock ) => {
72
+ it ( 'async iterator (manual return )' , withContext ( async ( ctx , clock ) => {
73
73
const callback = mock . fn ( )
74
74
const iterator = ctx . interval ( 1000 )
75
75
async function iterate ( ) {
@@ -92,7 +92,78 @@ describe('ctx.timer', () => {
92
92
assert . strictEqual ( reject . mock . calls . length , 0 )
93
93
} ) )
94
94
95
- it ( 'without callback (context dispose)' , withContext ( async function * ( ctx , clock ) {
95
+ it ( 'async iterator (manual throw)' , withContext ( async ( ctx , clock ) => {
96
+ const callback = mock . fn ( )
97
+ const iterator = ctx . interval ( 1000 )
98
+ async function iterate ( ) {
99
+ for await ( const _ of iterator ) {
100
+ callback ( )
101
+ }
102
+ }
103
+ const resolve = mock . fn ( )
104
+ const reject = mock . fn ( )
105
+ iterate ( ) . then ( resolve , reject )
106
+ assert . strictEqual ( callback . mock . calls . length , 0 )
107
+ await clock . tickAsync ( 1000 )
108
+ assert . strictEqual ( callback . mock . calls . length , 1 )
109
+ await clock . tickAsync ( 1000 )
110
+ assert . strictEqual ( callback . mock . calls . length , 2 )
111
+ iterator . throw ! ( )
112
+ await clock . tickAsync ( 1000 )
113
+ assert . strictEqual ( callback . mock . calls . length , 2 )
114
+ assert . strictEqual ( resolve . mock . calls . length , 0 )
115
+ assert . strictEqual ( reject . mock . calls . length , 1 )
116
+ } ) )
117
+
118
+ it ( 'async iterator (break return)' , withContext ( async ( ctx , clock ) => {
119
+ const callback = mock . fn ( )
120
+ const iterator = ctx . interval ( 1000 )
121
+ async function iterate ( ) {
122
+ let i = 0
123
+ for await ( const _ of iterator ) {
124
+ if ( ++ i > 2 ) break
125
+ callback ( )
126
+ }
127
+ }
128
+ const resolve = mock . fn ( )
129
+ const reject = mock . fn ( )
130
+ iterate ( ) . then ( resolve , reject )
131
+ assert . strictEqual ( callback . mock . calls . length , 0 )
132
+ await clock . tickAsync ( 1000 )
133
+ assert . strictEqual ( callback . mock . calls . length , 1 )
134
+ await clock . tickAsync ( 1000 )
135
+ assert . strictEqual ( callback . mock . calls . length , 2 )
136
+ await clock . tickAsync ( 1000 )
137
+ assert . strictEqual ( callback . mock . calls . length , 2 )
138
+ assert . strictEqual ( resolve . mock . calls . length , 1 )
139
+ assert . strictEqual ( reject . mock . calls . length , 0 )
140
+ } ) )
141
+
142
+ it ( 'async iterator (break throw)' , withContext ( async ( ctx , clock ) => {
143
+ const callback = mock . fn ( )
144
+ const iterator = ctx . interval ( 1000 )
145
+ async function iterate ( ) {
146
+ let i = 0
147
+ for await ( const _ of iterator ) {
148
+ if ( ++ i > 2 ) throw new Error ( 'test' )
149
+ callback ( )
150
+ }
151
+ }
152
+ const resolve = mock . fn ( )
153
+ const reject = mock . fn ( )
154
+ iterate ( ) . then ( resolve , reject )
155
+ assert . strictEqual ( callback . mock . calls . length , 0 )
156
+ await clock . tickAsync ( 1000 )
157
+ assert . strictEqual ( callback . mock . calls . length , 1 )
158
+ await clock . tickAsync ( 1000 )
159
+ assert . strictEqual ( callback . mock . calls . length , 2 )
160
+ await clock . tickAsync ( 1000 )
161
+ assert . strictEqual ( callback . mock . calls . length , 2 )
162
+ assert . strictEqual ( resolve . mock . calls . length , 0 )
163
+ assert . strictEqual ( reject . mock . calls . length , 1 )
164
+ } ) )
165
+
166
+ it ( 'async iterator (context dispose)' , withContext ( async function * ( ctx , clock ) {
96
167
const callback = mock . fn ( )
97
168
const iterator = ctx . interval ( 1000 )
98
169
async function iterate ( ) {
0 commit comments