1- using System . IO ;
1+ using System ;
2+ using System . IO ;
23using System . IO . Pipelines ;
34using System . Threading . Tasks ;
45using Kaitai . Async ;
@@ -8,17 +9,48 @@ namespace Kaitai.Struct.Runtime.Async.Tests
89{
910 public class StreamKaitaiAsyncStreamBaseTests : KaitaiAsyncStreamBaseTests
1011 {
12+ public StreamKaitaiAsyncStreamBaseTests ( ) : base ( false )
13+ {
14+ }
15+
1116 protected override KaitaiAsyncStream Create ( byte [ ] data ) => new KaitaiAsyncStream ( data ) ;
1217 }
1318
1419 public class PipeReaderKaitaiAsyncStreamBaseTests : KaitaiAsyncStreamBaseTests
1520 {
21+ public PipeReaderKaitaiAsyncStreamBaseTests ( ) : base ( false )
22+ {
23+ }
24+
1625 protected override KaitaiAsyncStream Create ( byte [ ] data ) =>
1726 new KaitaiAsyncStream ( PipeReader . Create ( new MemoryStream ( data ) ) ) ;
1827 }
1928
20- public abstract class KaitaiAsyncStreamBaseTests
29+ public class StreamKaitaiAsyncStreamBaseCancelledTests : KaitaiAsyncStreamBaseTests
30+ {
31+ public StreamKaitaiAsyncStreamBaseCancelledTests ( ) : base ( true )
32+ {
33+ }
34+
35+ protected override KaitaiAsyncStream Create ( byte [ ] data ) => new KaitaiAsyncStream ( data ) ;
36+ }
37+
38+ public class PipeReaderKaitaiAsyncStreamBaseCancelledTests : KaitaiAsyncStreamBaseTests
2139 {
40+ public PipeReaderKaitaiAsyncStreamBaseCancelledTests ( ) : base ( true )
41+ {
42+ }
43+
44+ protected override KaitaiAsyncStream Create ( byte [ ] data ) =>
45+ new KaitaiAsyncStream ( PipeReader . Create ( new MemoryStream ( data ) ) ) ;
46+ }
47+
48+ public abstract class KaitaiAsyncStreamBaseTests : CancelableTestsBase
49+ {
50+ protected KaitaiAsyncStreamBaseTests ( bool isTestingCancellation ) : base ( isTestingCancellation )
51+ {
52+ }
53+
2254 protected abstract KaitaiAsyncStream Create ( byte [ ] data ) ;
2355
2456 [ Theory ]
@@ -35,19 +67,22 @@ public abstract class KaitaiAsyncStreamBaseTests
3567 public async Task Eof_Test ( bool shouldBeEof , int streamSize , int readBitsAmount )
3668 {
3769 var kaitaiStreamSUT = Create ( new byte [ streamSize ] ) ;
38- await kaitaiStreamSUT . ReadBitsIntAsync ( readBitsAmount ) ;
39- long positionBeforeIsEof = kaitaiStreamSUT . Pos ;
40-
41- if ( shouldBeEof )
70+ await EvaluateMaybeCancelled ( async ( ) =>
4271 {
43- Assert . True ( kaitaiStreamSUT . IsEof ) ;
44- }
45- else
46- {
47- Assert . False ( kaitaiStreamSUT . IsEof ) ;
48- }
49-
50- Assert . Equal ( positionBeforeIsEof , kaitaiStreamSUT . Pos ) ;
72+ await kaitaiStreamSUT . ReadBitsIntAsync ( readBitsAmount ) ;
73+ long positionBeforeIsEof = kaitaiStreamSUT . Pos ;
74+
75+ if ( shouldBeEof )
76+ {
77+ Assert . True ( kaitaiStreamSUT . IsEof ) ;
78+ }
79+ else
80+ {
81+ Assert . False ( kaitaiStreamSUT . IsEof ) ;
82+ }
83+
84+ Assert . Equal ( positionBeforeIsEof , kaitaiStreamSUT . Pos ) ;
85+ } ) ;
5186 }
5287
5388 [ Theory ]
@@ -57,9 +92,12 @@ public async Task Pos_ByRead_Test(int expectedPos, int readBitsAmount)
5792 {
5893 var kaitaiStreamSUT = Create ( new byte [ 1 ] ) ;
5994
60- await kaitaiStreamSUT . ReadBytesAsync ( readBitsAmount ) ;
95+ await EvaluateMaybeCancelled ( async ( ) =>
96+ {
97+ await kaitaiStreamSUT . ReadBytesAsync ( readBitsAmount ) ;
6198
62- Assert . Equal ( expectedPos , kaitaiStreamSUT . Pos ) ;
99+ Assert . Equal ( expectedPos , kaitaiStreamSUT . Pos ) ;
100+ } ) ;
63101 }
64102
65103 [ Theory ]
@@ -69,9 +107,12 @@ public async Task Pos_BySeek_Test(int expectedPos, int position)
69107 {
70108 var kaitaiStreamSUT = Create ( new byte [ 1 ] ) ;
71109
72- await kaitaiStreamSUT . SeekAsync ( position ) ;
110+ await EvaluateMaybeCancelled ( async ( ) =>
111+ {
112+ await kaitaiStreamSUT . SeekAsync ( position ) ;
73113
74- Assert . Equal ( expectedPos , kaitaiStreamSUT . Pos ) ;
114+ Assert . Equal ( expectedPos , kaitaiStreamSUT . Pos ) ;
115+ } ) ;
75116 }
76117
77118 [ Theory ]
0 commit comments