@@ -10,6 +10,24 @@ import { WASIShim } from "@bytecodealliance/preview2-shim/instantiation";
1010suite ( "stream<T> lowers" , ( ) => {
1111 let esModule , cleanup , instance ;
1212
13+ class ExampleResource {
14+ #id;
15+
16+ dropped = false ;
17+
18+ constructor ( id ) {
19+ this . #id = id ;
20+ }
21+
22+ getId ( ) {
23+ return this . #id;
24+ }
25+
26+ [ Symbol . for ( 'dispose' ) ] ( ) {
27+ this . dropped = true ;
28+ }
29+ }
30+
1331 beforeAll ( async ( ) => {
1432 const name = "stream-rx" ;
1533 const setupRes = await setupAsyncTest ( {
@@ -39,6 +57,9 @@ suite("stream<T> lowers", () => {
3957 beforeEach ( async ( ) => {
4058 instance = await esModule . instantiate ( undefined , {
4159 ...new WASIShim ( ) . getImportObject ( ) ,
60+ "jco:test-components/resources" : {
61+ ExampleResource,
62+ } ,
4263 } ) ;
4364 } ) ;
4465
@@ -390,4 +411,50 @@ suite("stream<T> lowers", () => {
390411 assert . deepEqual ( returnedVals , vals ) ;
391412 } ) ;
392413
414+ test . only ( "example-resource" , async ( ) => {
415+ assert . instanceOf ( instance [ "jco:test-components/use-stream-async" ] . readStreamValuesExampleResourceOwn , AsyncFunction ) ;
416+
417+ let vals = [
418+ new ExampleResource ( 0 ) ,
419+ new ExampleResource ( 1 ) ,
420+ new ExampleResource ( 2 ) ,
421+ ] ;
422+ await instance [ "jco:test-components/use-stream-async" ] . readStreamValuesExampleResourceOwn (
423+ createReadableStreamFromValues ( vals ) ,
424+ ) ;
425+ assert ( vals . every ( r => r . dropped === true ) ) ;
426+ } ) ;
427+
428+ test . skip ( "example-resource#get-id" , async ( ) => {
429+ assert . instanceOf ( instance [ "jco:test-components/use-stream-async" ] . readStreamValuesExampleResourceOwn , AsyncFunction ) ;
430+
431+ let vals = [
432+ new ExampleResource ( 2 ) ,
433+ new ExampleResource ( 1 ) ,
434+ new ExampleResource ( 0 ) ,
435+ ] ;
436+ const returnedVals = await instance [ "jco:test-components/use-stream-async" ] . readStreamValuesExampleResourceOwn (
437+ createReadableStreamFromValues ( vals ) ,
438+ ) ;
439+ assert . deepEqual ( returnedVals , [ 2 , 1 , 0 ] ) ;
440+ } ) ;
441+
442+ test . skip ( "stream<string>" , async ( ) => {
443+ assert . instanceOf ( instance [ "jco:test-components/use-stream-async" ] . readStreamValuesStreamString , AsyncFunction ) ;
444+
445+ let vals = [
446+ createReadableStreamFromValues ( [ "first" , "stream" , "values" ] ) ,
447+ createReadableStreamFromValues ( [ "second" , "stream" , "here" ] ) ,
448+ createReadableStreamFromValues ( [ "third" , "values" , "in stream" ] ) ,
449+ ] ;
450+ const returnedVals = await instance [ "jco:test-components/use-stream-async" ] . readStreamValuesStreamString (
451+ createReadableStreamFromValues ( vals ) ,
452+ ) ;
453+ assert . deepEqual ( returnedVals , [
454+ [ "first" , "stream" , "values" ] ,
455+ [ "second" , "stream" , "here" ] ,
456+ [ "third" , "values" , "in stream" ] ,
457+ ] ) ;
458+ } ) ;
459+
393460} ) ;
0 commit comments